embryo_swap_16((unsigned short *)len);
_embryo_program_init(Embryo_Program *ep, void *code){   Embryo_Header    *hdr;   Embryo_Func_Stub *fs;   int               i, num;      if ((ep->flags & EMBRYO_FLAG_RELOC)) return 1;   ep->code = (unsigned char *)code;   hdr = (Embryo_Header *)ep->code;#ifdef WORDS_BIGENDIAN   embryo_swap_32((unsigned int *)&hdr->size);   embryo_swap_16((unsigned short *)&hdr->magic);   embryo_swap_16((unsigned short *)&hdr->flags);   embryo_swap_16((unsigned short *)&hdr->defsize);   embryo_swap_32((unsigned int *)&hdr->cod);   embryo_swap_32((unsigned int *)&hdr->dat);   embryo_swap_32((unsigned int *)&hdr->hea);   embryo_swap_32((unsigned int *)&hdr->stp);   embryo_swap_32((unsigned int *)&hdr->cip);   embryo_swap_32((unsigned int *)&hdr->publics);   embryo_swap_32((unsigned int *)&hdr->natives);   embryo_swap_32((unsigned int *)&hdr->libraries);   embryo_swap_32((unsigned int *)&hdr->pubvars);   embryo_swap_32((unsigned int *)&hdr->tags);   embryo_swap_32((unsigned int *)&hdr->nametable);#endif      if (hdr->magic != EMBRYO_MAGIC) return 0;   if ((hdr->file_version < MIN_FILE_VERSION) ||      (hdr->ep_version > CUR_FILE_VERSION)) return 0;   if ((hdr->defsize != sizeof(Embryo_Func_Stub)) &&       (hdr->defsize != (2 * sizeof(unsigned int)))) return 0;   if (hdr->defsize == (2 * sizeof(unsigned int)))     {	unsigned short *len;		len = (unsigned short*)((unsigned char*)ep->code + hdr->nametable);	if (*len > sNAMEMAX) return 0;     }   if (hdr->stp <= 0) return 0;   if ((hdr->flags & EMBRYO_FLAG_COMPACT)) return 0;      /* also align all addresses in the public function, public variable and */   /* public tag tables */   fs = GETENTRY(hdr, publics, 0);   num = NUMENTRIES(hdr, publics, natives);   for (i = 0; i < num; i++)     {	embryo_swap_32(&(fs->address));	fs = (Embryo_Func_Stub *)((unsigned char *)fs + hdr->defsize);     }      fs = GETENTRY(hdr, pubvars, 0);   num = NUMENTRIES(hdr, pubvars, tags);   for (i = 0; i < num; i++)     {	embryo_swap_32(&(fs->address));	fs = (Embryo_Func_Stub *)((unsigned char *)fs + hdr->defsize);     }      fs = GETENTRY(hdr, tags, 0);   num = NUMENTRIES(hdr, tags, nametable);   for (i = 0; i < num; i++)     {	embryo_swap_32(&(fs->address));	fs = (Embryo_Func_Stub *)((unsigned char *)fs + hdr->defsize);     }   ep->flags = EMBRYO_FLAG_RELOC;      /* init native api for handling floating point - default in embryo */   _embryo_fp_init(ep);   return 1;}