напрямую, конечно, не получится, но за 10 минут все можно поправить. Вполне возможно, что под остальные архитектуры memcpy() даст не худший результат - попробуй с AVR
для сравнения:
894: fp->fsize = LD_DWORD(&dir[DIR_FileSize]); /* File size */
14AE 905876 mov.b [0x000c+31],0x0000
14B0 905966 mov.b [0x000c+30],0x0004
14B2 905A56 mov.b [0x000c+29],0x0008
14B4 905B46 mov.b [0x000c+28],0x000c
14B6 DD00C8 sl 0x0000,#8,0x0002
14B8 200000 mov.w #0x0,0x0000
14BA FB8182 ze 0x0004,0x0006
14BC 200002 mov.w #0x0,0x0004
14BE 700002 ior.w 0x0000,0x0004,0x0000
14C0 708083 ior.w 0x0002,0x0006,0x0002
14C2 DD2248 sl 0x0008,#8,0x0008
14C4 200005 mov.w #0x0,0x000a
14C6 700004 ior.w 0x0000,0x0008,0x0000
14C8 708085 ior.w 0x0002,0x000a,0x0002
14CA FB8306 ze 0x000c,0x000c
14CC 200007 mov.w #0x0,0x000e
14CE 700006 ior.w 0x0000,0x000c,0x0000
14D0 708087 ior.w 0x0002,0x000e,0x0002
14D2 980550 mov.w 0x0000,[0x0014+10]
14D4 980561 mov.w 0x0002,[0x0014+12]
895:
896: memcpy((BYTE*)&fp->fsize, (BYTE*)&dir[DIR_FileSize], 4);
14D6 4500EA add.w 0x0014,#10,0x0002
14D8 97A90F mov.w [0x001e-48],0x0004
14DA 41007C add.w 0x0004,#28,0x0000
14DC 090003 repeat #3
14DE 7858B0 mov.b [0x0000++],[0x0002++]
14E0 B10041 sub.w 0x0002,#0x4
14E2 B10040 sub.w 0x0000,#0x4