#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>

int main(int argc, char *argv[])
{
  unsigned char *buf;
  int  fp;
  int  size, header, datasize, i;

  buf = malloc(65536);

  fp = open(argv[1], O_RDONLY);
  size = read(fp, buf, 65536);
  close(fp);

  for(i=0; i<size; i++) {
    if ((buf[i] == 0x64) &&
	(buf[i+1] == 0x61) &&
	(buf[i+2] == 0x74) &&
	(buf[i+3] == 0x61)) {
      datasize =
	(int)buf[i+4] +
	(((int)buf[i+5]) << 8) +
	(((int)buf[i+6]) << 16) +
	(((int)buf[i+7]) << 24);
      header = i + 8;
      break;
    }
  }

  fp = open("output.dat", O_RDWR|O_CREAT, S_IRWXU);
  i = write(fp, &buf[header], datasize);
  close(fp);


  return(0);
}
