============================== Sample 1 ============================== 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 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined enic_vf_link_update() PUSH RBP LEA RCX,[.rodata:__func__.7] ;= "enic_vf_link_update" PUSH RBX LEA RDX,[.rodata:s_%s_>>_0011fc20] ;= "%s >>\n" MOV RBX,RDI MOV EDI,0x8 PUSH RAX LEA RAX,[.bss:enic_pmd_logtype] ;=?? MOV ESI,dword ptr [RAX]=>.bss:enic_pmd_logtype ;=?? XOR EAX,EAX CALL .plt:::rte_log ;undefined rte_log() MOV RAX,qword ptr [RBX + 0x38] MOV RAX,qword ptr [RAX + 0x60] MOV RBP,qword ptr [RAX + 0x6b8] MOV RDI,qword ptr [RBP + 0x88] CALL enic_link_update ;undefined enic_link_update() MOV RAX,qword ptr [RBP + 0x88] MOV RAX,qword ptr [RAX + 0x38] MOV RAX,qword ptr [RAX + 0x68] MOV RDX,qword ptr [RBX + 0x38] XCHG qword ptr [RDX + 0x68],RAX XOR EAX,EAX POP RDX POP RBX POP RBP RET ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined enic_vf_representor_init() ;local_40 undefined8 -40 PUSH R15 Actual src: static int enic_vf_link_update(struct rte_eth_dev *eth_dev, int wait_to_complete __rte_unused) { struct enic_vf_representor *vf; struct rte_eth_link link; struct enic *pf; ENICPMD_FUNC_TRACE(); vf = eth_dev->data->dev_private; pf = vf->pf; /* * Link status and speed are same as PF. Update PF status and then * copy it to VF. */ enic_link_update(pf->rte_dev); rte_eth_linkstatus_get(pf->rte_dev, &link); rte_eth_linkstatus_set(eth_dev, &link); return 0; } Predicted src: static int linklink_update(struct rte_eth_dev *eth_dev) { struct rte_eth_dev *eth_dev = eth_eth_dev->eth_dev; struct rte_eth_dev *eth_dev = eth_eth_dev->eth_dev; struct rte_eth_dev *eth_dev = eth_dev->eth_dev; struct rte_eth_dev *eth_dev = eth_dev->eth_dev; eth_dev->dev_update(eth_dev); eth_dev->dev_update(eth_dev); eth_dev->dev_update(eth_dev); return 0; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* simple_output::simple_comment(char const*) * ;************************************************************************************************************************************************************ ;undefined simple_comment(simple_output * this, char * param_1) ;this simple_outp... RDI ;param_1 char * RSI PUSH R12 MOV R12,this PUSH RBP MOV RBP,param_1 SUB RSP,0x8 CALL simple_output::flush_last_word ;undefined flush_last_word(simple_out... MOV EAX,dword ptr [R12 + 0xc] TEST EAX,EAX JNZ LAB_00118dd0 LAB_00118d7b: MOV RCX,qword ptr [R12] MOV EDX,0x5 MOV param_1,0x1 LEA this,[.rodata:s__0012b088] ;= " -->\n" CALL .plt:::fwrite ;size_t fwrite(void * __ptr, size_t _... MOV RAX,R12 MOV dword ptr [R12 + 0xc],0x0 ADD RSP,0x8 POP RBP POP R12 RET ?? 90h LAB_00118dd0: MOV param_1,qword ptr [R12] MOV this,0xa CALL .plt:::putc ;int putc(int __c, FILE * __stream) JMP LAB_00118d7b ;************************************************************************************************************************************************************ ;* simple_output::begin_comment(char const*) * ;************************************************************************************************************************************************************ ;undefined begin_comment(simple_output * this, char * param_1) ;this simple_outp... RDI ;param_1 char * RSI PUSH R13 Actual src: simple_output &simple_output::simple_comment(const char *s) { flush_last_word(); if (col!= 0) PUTC('\n', fp); FPUTS("\n", fp); col = 0; return *this; } Predicted src: void output_stream::write(FILE *fp) const { fprintf(fp, "output\n"); output_stream->write(fp); output_stream->write(fp); output_stream->write(fp); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* VERDICTTYPE::TEMPNAMEPLACEHOLDERVALUE(verdicttype) * ;************************************************************************************************************************************************************ ;undefined operator=(VERDICTTYPE * this, verdicttype param_1) ;this VERDICTTYPE * RDI ;param_1 verdicttype ESI CMP param_1,0x4 JA LAB_001a484b MOV dword ptr [this],param_1 MOV RAX,this RET LAB_001a484b: PUSH RAX LEA this,[.rodata:s_Assignment_of_an_invalid_verdict_004b1300] ;= "Assignment of an invalid verdict... XOR EAX,EAX CALL TTCN_error ;undefined TTCN_error(char * param_1,... NOP word ptr [RAX + RAX*0x1] Actual src: VERDICTTYPE& VERDICTTYPE::operator=(verdicttype other_value) { if (!IS_VALID(other_value)) TTCN_error("Assignment of an invalid verdict value (%d).", other_value); verdict_value = other_value; return *this; } Predicted src: boolean PREGEN__RECORD__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OF__OFOF__OF__OF__OFOF__OF__OFOF__OFOF__OFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFOFO ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined CPyDef_default___DefaultPlugin() PUSH R12 XOR ESI,ESI PUSH RBP MOV RBP,RDI SUB RSP,0x8 MOV RAX,qword ptr [->CPyType_default___DefaultPlugin] ;= 015dabc8 MOV RAX=>.bss:CPyType_default___DefaultPlugin,qword ptr [RAX] ;=?? MOV RDI,RAX CALL qword ptr [RAX + 0x130] TEST RAX,RAX JZ LAB_006a5967 MOV R12,RAX LEA RAX,[.bss:default___DefaultPlugin_vtable] ;=?? MOVDQA XMM0,xmmword ptr [.rodata:tuple_undefined_T2II] MOV RSI,RBP MOV qword ptr [R12 + 0x10],RAX=>.bss:default___DefaultPlugin_vtable ;=?? MOV RDI,R12 MOV qword ptr [R12 + 0x18],0x0 MOV qword ptr [R12 + 0x20],0x0 MOVUPS xmmword ptr [R12 + 0x28],XMM0 CALL CPyDef_plugin___Plugin_____init__ ;undefined CPyDef_plugin___Plugin____... CMP AL,0x2 JZ LAB_006a5960 ADD RSP,0x8 MOV RAX,R12 POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 00h LAB_006a5960: SUB qword ptr [R12],0x1 JZ LAB_006a5978 LAB_006a5967: XOR R12D,R12D ADD RSP,0x8 MOV RAX,R12 POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 00h LAB_006a5978: MOV RDI,R12 CALL .plt:_Py_Dealloc ;undefined _Py_Dealloc() ?? EBh ?? E5h ?? 66h f Actual src: PyObject *CPyDef_default___DefaultPlugin(PyObject *cpy_r_options) { PyObject *self = default___DefaultPlugin_setup(CPyType_default___DefaultPlugin); if (self == NULL) return NULL; char res = CPyDef_plugin___Plugin_____init__(self, cpy_r_options); if (res == 2) { Py_DECREF(self); return NULL; } return self; } Predicted src: PyObject *CPyDef_nodes___Plugin_____init__(void) { PyObject *self = CPyDef_nodes___Plugin_____init__(self); if (self == NULL) return NULL; return self; }