============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined xdr_virNetMessageError() PUSH RBP MOV RBP,RDI PUSH RBX MOV RBX,RSI SUB RSP,0x8 CALL .plt.got:::xdr_int ;bool_t xdr_int(XDR * __xdrs, int * _... TEST EAX,EAX JNZ LAB_002d7370 LAB_002d7365: XOR EAX,EAX LAB_002d7367: ADD RSP,0x8 POP RBX POP RBP RET ?? 66h f ?? 90h LAB_002d7370: LEA RSI,[RBX + 0x4] MOV RDI,RBP CALL .plt.got:::xdr_int ;bool_t xdr_int(XDR * __xdrs, int * _... TEST EAX,EAX JZ LAB_002d7365 LEA RSI,[RBX + 0x8] MOV RDI,RBP CALL .plt:xdr_virNetMessageString ;undefined xdr_virNetMessageString() TEST EAX,EAX JZ LAB_002d7365 LEA RSI,[RBX + 0x10] MOV RDI,RBP CALL .plt.got:::xdr_int ;bool_t xdr_int(XDR * __xdrs, int * _... TEST EAX,EAX JZ LAB_002d7365 LEA RSI,[RBX + 0x18] MOV RDI,RBP CALL .plt:xdr_virNetMessageDomain ;undefined xdr_virNetMessageDomain() TEST EAX,EAX JZ LAB_002d7365 LEA RSI,[RBX + 0x20] MOV RDI,RBP CALL .plt:xdr_virNetMessageString ;undefined xdr_virNetMessageString() TEST EAX,EAX JZ LAB_002d7365 LEA RSI,[RBX + 0x28] MOV RDI,RBP CALL .plt:xdr_virNetMessageString ;undefined xdr_virNetMessageString() TEST EAX,EAX JZ LAB_002d7365 LEA RSI,[RBX + 0x30] MOV RDI,RBP CALL .plt:xdr_virNetMessageString ;undefined xdr_virNetMessageString() TEST EAX,EAX JZ LAB_002d7365 LEA RSI,[RBX + 0x38] MOV RDI,RBP CALL .plt.got:::xdr_int ;bool_t xdr_int(XDR * __xdrs, int * _... TEST EAX,EAX JZ LAB_002d7365 LEA RSI,[RBX + 0x3c] MOV RDI,RBP CALL .plt.got:::xdr_int ;bool_t xdr_int(XDR * __xdrs, int * _... TEST EAX,EAX JZ LAB_002d7365 LEA RSI,[RBX + 0x40] MOV RDI,RBP CALL .plt:xdr_virNetMessageNetwork ;undefined xdr_virNetMessageNetwork() TEST EAX,EAX SETNZ AL MOVZX EAX,AL JMP LAB_002d7367 ?? 66h f Actual src: bool_t xdr_virNetMessageError (XDR *xdrs, virNetMessageError *objp) { if (!xdr_int (xdrs, &objp->code)) return FALSE; if (!xdr_int (xdrs, &objp->domain)) return FALSE; if (!xdr_virNetMessageString (xdrs, &objp->message)) return FALSE; if (!xdr_int (xdrs, &objp->level)) return FALSE; if (!xdr_virNetMessageDomain (xdrs, &objp->dom)) return FALSE; if (!xdr_virNetMessageString (xdrs, &objp->str1)) return FALSE; if (!xdr_virNetMessageString (xdrs, &objp->str2)) return FALSE; if (!xdr_virNetMessageString (xdrs, &objp->str3)) return FALSE; if (!xdr_int (xdrs, &objp->int1)) return FALSE; if (!xdr_int (xdrs, &objp->int2)) return FALSE; if (!xdr_virNetMessageNetwork (xdrs, &objp->net)) return FALSE; return TRUE; } Predicted src: bool_t xdr_xdr_args (XDR *xdrs, struct xdr_args *objp) { register int32_t *buf; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE); if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE); if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE); if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE); if (!xdr_int (xdrs, &objp->status)) return FALSE; if (!xdr_int (xdrs, &objp->status)) return FALSE) ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* SBMap::getLinearValue(unsigned int, unsigned int) * ;************************************************************************************************************************************************************ ;undefined getLinearValue(SBMap * this, uint param_1, uint param_2) ;this SBMap * RDI ;param_1 uint ESI ;param_2 uint EDX ;local_10 undefined8 -10 ;local_14 undefined4 -14 PUSH RBX MOV param_1,param_1 SUB RSP,0x10 MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_10+0x18],RAX XOR EAX,EAX MOV RAX,qword ptr [this + 0x68] MOV this,qword ptr [RAX + param_1*0x8] MOV R11D,dword ptr [this + 0x50] TEST R11D,R11D JNZ LAB_0022c318 MOV R8D,param_2 CMP param_2,dword ptr [this + 0x18] JNC LAB_0022c2f8 MOVZX EBX,byte ptr [this + 0x12] CMP BL,0x2 JA LAB_0022c2f8 LEA param_2=>local_14,[RSP + 0x4] MOV param_1,R8D CALL SBMapItem::getValue ;undefined getValue(SBMapItem * this,... MOV param_2,0x1 MOV ECX,EBX SHL param_2,CL CMP param_2,dword ptr [RSP + local_14+0x18] JZ LAB_0022c320 NOP dword ptr [RAX] LAB_0022c2f8: MOV RAX,qword ptr [RSP + local_10+0x18] SUB RAX,qword ptr FS:[0x28] JNZ LAB_0022c33d ADD RSP,0x10 MOV EAX,R11D POP RBX RET ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_0022c318: XOR R11D,R11D JMP LAB_0022c2f8 ?? 0Fh ?? 1Fh ?? 00h LAB_0022c320: ADD param_2,RAX NOP dword ptr [RAX + RAX*0x1] LAB_0022c328: MOVZX ECX,byte ptr [RAX] SHL R11D,0x8 ADD RAX,0x1 ADD R11D,ECX CMP RAX,param_2 JNZ LAB_0022c328 JMP LAB_0022c2f8 LAB_0022c33d: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() NOP dword ptr CS:[RAX + RAX*0x1] Actual src: SS_UCS4 SBMap::getLinearValue (unsigned int _index, unsigned int position) { return maps[_index]->getLinearValue(position); } Predicted src: uint32_t MapMap::get(uint32_t x, uint32_t y) { uint32_t i; for (i = 0; i < _map.size(); i++) { if (_map[i] == x) { return _map[i]; } } return 0; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined soap_in_PointerTowsrm__CloseSequenceType() PUSH R14 MOV R14,RDI PUSH R13 MOV R13,RCX XOR ECX,ECX PUSH R12 MOV R12,RDX MOV EDX,0x1 PUSH RBP MOV RBP,RSI SUB RSP,0x8 CALL .plt:::soap_element_begin_in ;undefined soap_element_begin_in() TEST EAX,EAX JNZ LAB_00114403 TEST R12,R12 JZ LAB_00114440 LAB_00114374: CMP word ptr [R14 + 0x1f2f0],0x0 MOV qword ptr [R12],0x0 JNZ LAB_00114391 CMP byte ptr [R14 + 0x1de98],0x23 JNZ LAB_001143e0 LAB_00114391: SUB RSP,0x8 MOV RDX,R12 XOR R9D,R9D MOV R8D,0x10 PUSH 0x0 LEA RSI,[R14 + 0x1de98] MOV ECX,0x39 MOV RDI,R14 CALL .plt:::soap_id_lookup ;undefined soap_id_lookup() CMP word ptr [R14 + 0xc65e],0x0 MOV R12,RAX POP RAX POP RDX JNZ LAB_00114418 LAB_001143c7: ADD RSP,0x8 MOV RAX,R12 POP RBP POP R12 POP R13 POP R14 RET ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_001143e0: MOV RDI,R14 CALL .plt:::soap_revert ;undefined soap_revert() MOV RDX,qword ptr [R12] MOV RCX,R13 MOV RSI,RBP MOV RDI,R14 CALL soap_in_wsrm__CloseSequenceType ;undefined soap_in_wsrm__CloseSequenc... MOV qword ptr [R12],RAX TEST RAX,RAX JNZ LAB_001143c7 LAB_00114403: ADD RSP,0x8 XOR R12D,R12D POP RBP MOV RAX,R12 POP R12 POP R13 POP R14 RET ?? 0Fh ?? 1Fh ?? 00h LAB_00114418: MOV RSI,RBP MOV RDI,R14 CALL .plt:::soap_element_end_in ;undefined soap_element_end_in() TEST EAX,EAX JNZ LAB_00114403 ADD RSP,0x8 MOV RAX,R12 POP RBP POP R12 POP R13 POP R14 RET ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00114440: MOV ESI,0x8 MOV RDI,R14 CALL .plt:::soap_malloc ;undefined soap_malloc() MOV R12,RAX TEST RAX,RAX JNZ LAB_00114374 JMP LAB_00114403 ?? 0Fh Actual src: struct wsrm__CloseSequenceType ** SOAP_FMAC4 soap_in_PointerTowsrm__CloseSequenceType(struct soap *soap, const char *tag, struct wsrm__CloseSequenceType **a, const char *type) { (void)type; /* appease -Wall -Werror */ if (soap_element_begin_in(soap, tag, 1, NULL)) return NULL; if (!a) if (!(a = (struct wsrm__CloseSequenceType **)soap_malloc(soap, sizeof(struct wsrm__CloseSequenceType *)))) return NULL; *a = NULL; if (!soap->null && *soap->href!= '#') { soap_revert(soap); if (!(*a = soap_in_wsrm__CloseSequenceType(soap, tag, *a, type))) return NULL; } else { a = (struct wsrm__CloseSequenceType **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_wsrm__CloseSequenceType, sizeof(struct wsrm__CloseSequenceType), 0, NULL); if (soap->body && soap_element_end_in(soap, tag)) return NULL; } return a; } Predicted src: struct srm2__srmPermissionType ** SOAP_FMAC4 soap_in_PointerTosrm2__srmPermissionType(struct soap *soap, const char *tag, struct srm2__srmPermissionType **a, const char *type) { (void)type; /* appease -Wall -Werror */ if (soap_element_begin_in(soap, tag, 1, NULL)) return NULL; if (!a) if (!(a = (struct srm2__srmPermissionType **)soap_malloc(soap, sizeof(struct srm2__srmPermissionType *)))) return NULL; *a = NULL; if (!soap->null && *soap->href!= '#') { soap_revert(soap); if (!(*a = soap_in_srm2__srmPermissionType(soap, tag, *a, type))) return NULL; } else { a = (struct srm2__srmPermissionType **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_srm2__srmPermissionType, sizeof(struct srm2__srmPermissionType), 0, NULL); if (soap->body && soap_element_end_in(soap, tag)) return NULL; } return a; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* Draw_Interpretor::GetDoEcho() const * ;************************************************************************************************************************************************************ ;undefined GetDoEcho(Draw_Interpretor * this) ;this Draw_Interp... RDI MOVZX EAX,byte ptr [this + 0x11] RET ?? 90h Actual src: Standard_Boolean Draw_Interpretor::GetDoEcho () const { return myDoEcho; } Predicted src: vtkGetMacro(Draw_Draw_Draw_Draw, vtkTypeBool); ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined sigbus_hook() MOV ESI,0x13 JMP generic_hook.constprop.0 ;undefined generic_hook.constprop.0() ?? 66h f Actual src: static void sigbus_hook(lua_State *L, lua_Debug *ar) { generic_hook(L, ar, 19); } Predicted src: static void sighook_hook(lua_State *L) { sighookhookhook(L, 1); }