============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined AcpiDbGenerateSci() JMP AcpiEvSciDispatch ?? 66h f Actual src: void AcpiDbGenerateSci ( void) { AcpiEvSciDispatch (); } Predicted src: static void Destroy(Widget w, XEvent *event, String *params, Cardinal *num_params, Cardinal *num_params) { (void) w; (void)num_params; (void)num_params; (void)num_params; (void)num_params; (void)num_params; (void)num_params; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined mdjvu_matcher_options_destroy() JMP .plt:::free ?? 66h f Actual src: void mdjvu_matcher_options_destroy(mdjvu_matcher_options_t opt) { FREE((Options *) opt); } Predicted src: void md5_options_destroy(structmd5_options *options) { free(options); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined xfsm_dbus_manager_call_can_restart_sync() PUSH R14 XOR EAX,EAX MOV R14,RDI LEA RDI,[.rodata:DAT_0012e155] ;= 28h ( PUSH R13 MOV R13,RSI PUSH R12 PUSH RBP MOV RBP,RCX PUSH RBX MOV RBX,RDX CALL .plt:::g_variant_new ;undefined g_variant_new() MOV R12,RAX CALL .plt:::g_dbus_proxy_get_type ;undefined g_dbus_proxy_get_type() MOV RDI,R14 MOV RSI,RAX CALL .plt:::g_type_check_instance_cast ;undefined g_type_check_instance_cast() SUB RSP,0x8 MOV R9,RBX XOR ECX,ECX PUSH RBP MOV RDX,R12 MOV RDI,RAX MOV R8D,0xffffffff LEA RSI,[.rodata:s_CanRestart_0012e672] ;= "CanRestart" CALL .plt:::g_dbus_proxy_call_sync ;undefined g_dbus_proxy_call_sync() POP RDX POP RCX MOV RBX,RAX TEST RAX,RAX JZ LAB_0011858d MOV RDI,RAX MOV RDX,R13 LEA RSI,[.rodata:DAT_0012e662] ;= 28h ( XOR EAX,EAX CALL .plt:::g_variant_get ;undefined g_variant_get() MOV RDI,RBX CALL .plt:::g_variant_unref ;undefined g_variant_unref() LAB_0011858d: XOR EAX,EAX TEST RBX,RBX POP RBX POP RBP SETNZ AL POP R12 POP R13 POP R14 RET ?? 66h f Actual src: gboolean xfsm_dbus_manager_call_can_restart_sync ( XfsmDbusManager *proxy, gboolean *out_can_restart, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "CanRestart", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_can_restart); g_variant_unref (_ret); _out: return _ret!= NULL; } Predicted src: gboolean xfsm_manager_call_can_sync ( XfsmManager *proxy, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "can", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret!= NULL; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined IntelGen_HwAddMediaObjectCmdBb_g75() PUSH RBP MOV RBP,RDX PUSH RBX MOV RBX,RSI SUB RSP,0x8 TEST RDI,RDI JZ LAB_00133b08 LAB_001339f5: TEST RBX,RBX JZ LAB_00133ad0 CMP qword ptr [RBX + 0xa8],0x0 JZ LAB_00133af0 LAB_00133a0c: TEST RBP,RBP JZ LAB_00133ab8 LAB_00133a15: CMP dword ptr [RBP + 0x4],0x17 JBE LAB_00133a80 LAB_00133a1b: MOV EDX,dword ptr [RBX + 0x9c] MOV EAX,dword ptr [RBX + 0x98] SUB EAX,EDX CMP EAX,0x17 JLE LAB_00133a98 LAB_00133a2e: MOV RCX,qword ptr [->g_cInit_MEDIA_OBJECT_HEADER_G6] ;= 00165210 MOVSXD RAX,EDX MOV ESI,dword ptr [RBP] ADD EDX,0x18 ADD RAX,qword ptr [RBX + 0xa8] MOVDQU XMM0,xmmword ptr [RCX]=>.rodata:g_cInit_MEDIA_OBJECT_HEADER_G6 MOV RCX,qword ptr [RCX + 0x10]=>.rodata:g_cInit_MEDIA_OBJECT_HEADER_G6[16] AND ESI,0x3f MOV qword ptr [RAX + 0x10],RCX MOV ECX,dword ptr [RBP + 0x4] MOVUPS xmmword ptr [RAX],XMM0 SHR ECX,0x2 SUB ECX,0x2 MOV word ptr [RAX],CX MOVZX ECX,byte ptr [RAX + 0x4] AND ECX,0xffffffc0 OR ECX,ESI MOV byte ptr [RAX + 0x4],CL MOV dword ptr [RBX + 0x9c],EDX ADD RSP,0x8 POP RBX POP RBP RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_00133a80: MOV ESI,0x1 MOV EDI,0x1 CALL .plt:_GENOS_Assert ;undefined _GENOS_Assert() JMP LAB_00133a1b ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00133a98: MOV ESI,0x1 MOV EDI,0x1 CALL .plt:_GENOS_Assert ;undefined _GENOS_Assert() MOV EDX,dword ptr [RBX + 0x9c] JMP LAB_00133a2e ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00133ab8: MOV ESI,0x1 MOV EDI,0x1 CALL .plt:_GENOS_Assert ;undefined _GENOS_Assert() JMP LAB_00133a15 ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_00133ad0: MOV ESI,0x1 MOV EDI,0x1 CALL .plt:_GENOS_Assert ;undefined _GENOS_Assert() CMP qword ptr [RBX + 0xa8],0x0 JNZ LAB_00133a0c NOP dword ptr [RAX] LAB_00133af0: MOV ESI,0x1 MOV EDI,0x1 CALL .plt:_GENOS_Assert ;undefined _GENOS_Assert() JMP LAB_00133a0c ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_00133b08: MOV ESI,0x1 MOV EDI,0x1 CALL .plt:_GENOS_Assert ;undefined _GENOS_Assert() JMP LAB_001339f5 ?? 0Fh Actual src: VOID IntelGen_HwAddMediaObjectCmdBb_g75(PGENHW_HW_INTERFACE pHwInterface, PGENHW_BATCH_BUFFER pBatchBuffer, PGENHW_HW_MEDIAOBJECT_PARAM pParam) { PBYTE pBuffer; PMEDIA_OBJECT_HEADER_G6 pCmd; GENHW_HW_ASSERT(pHwInterface); GENHW_HW_ASSERT(pBatchBuffer); GENHW_HW_ASSERT(pBatchBuffer->pData); GENHW_HW_ASSERT(pParam); GENHW_HW_ASSERT(pParam->dwMediaObjectSize >= sizeof(MEDIA_OBJECT_HEADER_G6)); GENHW_HW_ASSERT((pBatchBuffer->iSize - pBatchBuffer->iCurrent) >= (long)sizeof(MEDIA_OBJECT_HEADER_G6)); pBuffer = pBatchBuffer->pData + pBatchBuffer->iCurrent; pCmd = (PMEDIA_OBJECT_HEADER_G6) pBuffer; *pCmd = g_cInit_MEDIA_OBJECT_HEADER_G6; pCmd->DW0.DWordLength = OP_LENGTH(SIZE_IN_DW(pParam->dwMediaObjectSize)); pCmd->DW1.InterfaceDescriptorOffset = pParam->dwIDOffset; pBatchBuffer->iCurrent += sizeof(MEDIA_OBJECT_HEADER_G6); } Predicted src: static void _G_AddObject(G_GNUC_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_GNUC_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G_UNUSED G ============================== 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_0e8_24_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; CurrentInstrCycles = 12; uaecptr srca; srca = m68k_areg(regs, srcreg); uae_s16 src = x_get_word(srca); uae_s16 dst = m68k_dreg(regs, dstreg); uae_u32 newv = ((uae_u16)(dst)) - ((uae_u16)(src)); int flgs = ((uae_s16)(src)) < 0; int flgo = ((uae_s16)(dst)) < 0; int flgn = ((uae_s16)(newv)) < 0; SET_ZFLG(((uae_s16)(newv)) == 0); SET_VFLG((flgs ^ flgo) & (flgn ^ flgo)); SET_CFLG(((uae_u16)(src)) > ((uae_u16)(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; }