============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined BKE_camera_multiview_model_matrix() PUSH RBP MOV RBP,RCX CALL BKE_camera_multiview_model_matrix_scaled ;undefined BKE_camera_multiview_model... MOV RDI,RBP POP RBP JMP normalize_m4 ;undefined normalize_m4() ?? 66h f Actual src: void BKE_camera_multiview_model_matrix(const RenderData *rd, const Object *camera, const char *viewname, float r_modelmat[4][4]) { BKE_camera_multiview_model_matrix_scaled(rd, camera, viewname, r_modelmat); normalize_m4(r_modelmat); } Predicted src: void BKE_matrix_view_matrix_matrix(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms) { matrix_view_matrix_matrix_matrix_matrix(_ptr, _parms); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined speechd_new() PUSH R12 XOR ECX,ECX XOR EDX,EDX LEA RSI,[.rodata:DAT_00102000] ;= 6Dh m PUSH RBP PUSH RBX MOV RBX,RDI LEA RDI,[.rodata:s_navit_00102005] ;= "navit" CALL .plt:::spd_open ;undefined spd_open() TEST RAX,RAX JZ LAB_001011d0 MOV EDI,0x8 MOV RBP,RAX CALL .plt:g_malloc ;undefined g_malloc() MOV R12,RAX TEST RAX,RAX JZ LAB_001011c3 MOVDQA XMM0,xmmword ptr [.data.rel.ro:speechd_meth] MOV qword ptr [RAX],RBP MOV ESI,0x1 MOV RDI,RBP MOVUPS xmmword ptr [RBX],XMM0 CALL .plt:::spd_set_punctuation ;undefined spd_set_punctuation() LAB_001011c3: MOV RAX,R12 POP RBX POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001011d0: XOR R12D,R12D POP RBX POP RBP MOV RAX,R12 POP R12 RET ?? 0Fh Actual src: static struct speech_priv *speechd_new(struct speech_methods *meth, struct attr **attrs, struct attr *attr) { struct speech_priv *this; SPDConnection *conn; conn = spd_open("navit","main",NULL,SPD_MODE_SINGLE); if (! conn) return NULL; this=g_new(struct speech_priv,1); if (this) { this->conn=conn; *meth=speechd_meth; spd_set_punctuation(conn, SPD_PUNCT_NONE); } return this; } Predicted src: char *f_open(const char *filename) { f_t *f; f = g_new0(f_t, 1); if (!f) return NULL; f->filename = g_new0(f_t, 1); f->filename = g_strdup(filename); return f; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined rpmfiFMode() MOV ESI,0xffffffff TEST RDI,RDI JZ LAB_00141700 MOV ESI,dword ptr [RDI] MOV RDI,qword ptr [RDI + 0x28] LAB_00141700: JMP .plt:rpmfilesFMode ;undefined rpmfilesFMode() ?? 66h f Actual src: RPMFI_ITERFUNC(rpm_mode_t, FMode, i) Predicted src: static void dModeModeModeMode(dModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeModeMod ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined V_FillRect8() PUSH R14 MOVSXD RSI,ESI MOVSXD R14,ECX PUSH R13 PUSH R12 PUSH RBP LEA RBP,[.bss:screens] PUSH RBX MOVSXD RBX,EDI SHL RBX,0x5 LEA RAX,[RBP + RBX*0x1] IMUL EDX,dword ptr [RAX + 0x14]=>.bss:screens[20] MOVSXD RDX,EDX LEA RCX,[RDX + RSI*0x1] ADD RCX,qword ptr [RAX]=>.bss:screens TEST R8D,R8D JZ LAB_001f36cf LEA R12D,[R8 + -0x1] MOVZX R13D,R9B NOP dword ptr [RAX] LAB_001f36b0: MOV RDI,RCX MOV RDX,R14 MOV ESI,R13D CALL .plt:::memset ;void * memset(void * __s, int __c, s... MOV RCX,RAX MOVSXD RAX,dword ptr [RBP + RBX*0x1 + 0x14]=>.bss:screens[20] ADD RCX,RAX SUB R12D,0x1 JNC LAB_001f36b0 LAB_001f36cf: POP RBX POP RBP POP R12 POP R13 POP R14 RET ?? 0Fh Actual src: static void V_FillRect8(int scrn, int x, int y, int width, int height, byte colour) { byte* dest = screens[scrn].data + x + y*screens[scrn].byte_pitch; while (height--) { memset(dest, colour, width); dest += screens[scrn].byte_pitch; } } Predicted src: void Free_f(int x, int y, int w, int h, int w, int h, int h) { int i; for (i = 0; i < w; i++) { for (i = 0; i < w; i++) f[i] = x[i]; } } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined op_80e0_21_ff() PUSH R14 PUSH R13 PUSH R12 LEA R12,[.bss:regs] PUSH RBP MOV EBP,EDI AND EDI,0x7 LEA R14,[R12 + RDI*0x4 + 0x20] PUSH RBX SHR EBP,0x9 MOV dword ptr [.bss:OpcodeFamily],0x3c MOV EAX,dword ptr [R14]=>.bss:regs[32] AND EBP,0x7 LEA R13D,[RAX + -0x2] MOV EDI,R13D CALL qword ptr [.bss:x_get_word] MOV dword ptr [R14],R13D=>.bss:regs[32] MOV EDI,0x2 MOV R13D,dword ptr [R12 + RBP*0x4]=>.bss:regs MOV EBX,EAX MOV EAX,dword ptr [.bss:regs[188]] MOV dword ptr [.bss:regs[184]],EAX CALL get_word_ce020_prefetch_opcode ;undefined get_word_ce020_prefetch_op... MOV word ptr [.bss:regs[104]],AX TEST BX,BX JZ LAB_0094fc80 MOVZX ESI,BX MOV EAX,R13D XOR EDX,EDX DIV ESI CMP EAX,0xffff JA LAB_0094fc60 MOV ECX,EAX XOR ESI,ESI SAR CX,0xf MOVSX ECX,CX SHL ECX,0xf TEST AX,AX SETZ SIL MOVZX ECX,CX SHL EDX,0x10 SHL ESI,0xe OR EDX,EAX OR ECX,ESI MOV dword ptr [R12 + RBP*0x4]=>.bss:regs,EDX MOV dword ptr [.bss:regflags],ECX LAB_0094fc35: MOV EAX,dword ptr [.bss:currprefs[64]] ADD dword ptr [.bss:regs[64]],0x2 TEST EAX,EAX JS LAB_0094fc70 IMUL EDI,dword ptr [.bss:cpucycleunit],0x22 POP RBX POP RBP POP R12 POP R13 POP R14 MOVSXD RDI,EDI JMP qword ptr [.bss:x_do_cycles] ?? 66h f ?? 90h LAB_0094fc60: MOV EDI,R13D CALL setdivuflags ;undefined setdivuflags() JMP LAB_0094fc35 ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_0094fc70: POP RBX POP RBP POP R12 POP R13 POP R14 RET ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_0094fc80: MOV ESI,R13D XOR EDI,EDI CALL divbyzero_special ;undefined divbyzero_special() ADD dword ptr [.bss:regs[64]],0x2 POP RBX MOV EDI,0x5 POP RBP POP R12 POP R13 POP R14 JMP Exception_cpu ;undefined Exception_cpu() ?? 66h f Actual src: void REGPARAM2 op_80e0_21_ff(uae_u32 opcode) { int count_cycles = 0; uae_u32 real_opcode = opcode; uae_u32 srcreg = (real_opcode & 7); uae_u32 dstreg = (real_opcode >> 9) & 7; OpcodeFamily = 60; /* ea H:2,T:2,C:0 fea */ uaecptr srca; srca = m68k_areg(regs, srcreg) - 2; uae_s16 src = x_get_word(srca); m68k_areg(regs, srcreg) = srca; uae_s32 dst = m68k_dreg(regs, dstreg); ipl_fetch(); regs.irc = get_word_ce020_prefetch_opcode(2); /* op H:0,T:0,C:20 */ if (src == 0) { divbyzero_special(0, dst); m68k_incpci(2); Exception_cpu(5); return; } uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src; uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src; if (newv > 0xffff) { setdivuflags((uae_u32)dst, (uae_u16)src); } else { CLEAR_CZNV(); SET_ZFLG(((uae_s16)(newv)) == 0); SET_NFLG(((uae_s16)(newv)) < 0); newv = (newv & 0xffff) | ((uae_u32)rem << 16); m68k_dreg(regs, dstreg) = (newv); } m68k_incpci(2); do_cycles_020_internal(34); return; } Predicted src: void REGPARAM2 op_e8_23_ff(uae_u32 opcode) { int count_cycles = 0; uae_u32 real_opcode = opcode; uae_u32 srcreg = (real_opcode & 7); uae_u32 dstreg = (real_opcode >> 9) & 7; OpcodeFamily = 30; /* ea H:2,T:0,C:0 fea */ uaecptr srca; srca = m68k_areg(regs, srcreg) - areg_byteinc[srcreg]; uae_s8 src = x_get_byte(srca); m68k_areg(regs, srcreg) = srca; uae_s8 dst = m68k_dreg(regs, dstreg); uae_u32 newv = ((uae_u8)(dst)) - ((uae_u8)(src)); int flgs = ((uae_s8)(src)) < 0; int flgo = ((uae_s8)(dst)) < 0; int flgn = ((uae_s8)(newv)) < 0; SET_ZFLG(((uae_s8)(newv)) == 0); SET_VFLG((flgs ^ flgo) & (flgn ^ flgo)); SET_CFLG(((uae_u8)(src)) > ((uae_u8)(dst))); COPY_CARRY(); SET_NFLG(flgn!= 0); ipl_fetch(); regs.irc = get_word_ce030_prefetch_opcode(2); m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); m68k_incpci(2); return; }