============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined erts_get_schedulers_binds() PUSH R13 MOV ESI,0x7 PUSH R12 MOV R12,RDI LEA RDI,[.rodata:s_unbound_0043355b] ;= "unbound" PUSH RBP PUSH RBX SUB RSP,0x8 CALL am_atom_put ;undefined am_atom_put() CMP qword ptr [R12 + 0x78],0x0 MOV RBP,RAX MOV RAX,qword ptr [ERTS_LOW_WRITE:erts_no_schedulers] LEA RSI,[RAX + 0x1] JZ LAB_003025d4 MOV RAX,qword ptr [R12 + 0x58] MOV RBX,qword ptr [R12 + 0x50] MOV RDX,qword ptr [ERTS_LOW_WRITE:erts_no_schedulers] SUB RAX,0x18 CMP RBX,RAX LEA RSI,[RDX + 0x1] CMOVNC RAX,RBX SUB RAX,RBX SAR RAX,0x3 CMP RAX,RSI JNC LAB_00302660 LAB_003025d4: XOR EDX,EDX MOV RDI,R12 CALL erts_heap_alloc ;undefined erts_heap_alloc() MOV RDX,qword ptr [ERTS_LOW_WRITE:erts_no_schedulers] MOV RBX,RAX LAB_003025e8: SHL RDX,0x6 LEA R13,[.bss:cpuinfo_rwmtx] LEA R12,[RBX + 0x2] MOV qword ptr [RBX],RDX MOV RDI=>.bss:cpuinfo_rwmtx,R13 CALL ethr_rwmutex_rlock ;undefined ethr_rwmutex_rlock() CMP qword ptr [ERTS_LOW_WRITE:erts_no_schedulers],0x0 MOV EAX,0x1 MOV RSI,qword ptr [.bss:scheduler2cpu_map] JZ LAB_00302645 NOP dword ptr [RAX + RAX*0x1] LAB_00302620: MOVSXD RDX,dword ptr [RSI + RAX*0x8 + 0x4] MOV RCX,RBP TEST EDX,EDX JS LAB_00302634 SHL RDX,0x4 LEA RCX,[RDX + 0xf] LAB_00302634: MOV qword ptr [RBX + RAX*0x8],RCX ADD RAX,0x1 CMP qword ptr [ERTS_LOW_WRITE:erts_no_schedulers],RAX JNC LAB_00302620 LAB_00302645: MOV RDI=>.bss:cpuinfo_rwmtx,R13 CALL ethr_rwmutex_runlock ;undefined ethr_rwmutex_runlock() ADD RSP,0x8 MOV RAX,R12 POP RBX POP RBP POP R12 POP R13 RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00302660: LEA RAX,[RBX + RSI*0x8] MOV qword ptr [R12 + 0x50],RAX JMP LAB_003025e8 ?? 66h f Actual src: Eterm erts_get_schedulers_binds(Process *c_p) { int ix; ERTS_DECL_AM(unbound); Eterm *hp = HAlloc(c_p, erts_no_schedulers+1); Eterm res = make_tuple(hp); *(hp++) = make_arityval(erts_no_schedulers); erts_rwmtx_rlock(&cpuinfo_rwmtx); for (ix = 1; ix <= erts_no_schedulers; ix++) *(hp++) = (scheduler2cpu_map[ix].bound_id >= 0 ? make_small(scheduler2cpu_map[ix].bound_id) : AM_unbound); erts_rwmtx_runlock(&cpuinfo_rwmtx); return res; } Predicted src: static void * net_get_r(struct rte_eth_dev *eth_dev) { struct rte_eth_dev *eth_dev; struct rte_eth_dev *eth_dev; struct rte_eth_dev *eth_dev; struct rte_eth_dev *eth_dev; eth_dev = rte_eth_eth_dev_get_eth_dev(eth_dev); eth_dev = rte_eth_eth_eth_dev_get_eth_dev(eth_dev); eth_dev = rte_eth_eth_eth_eth_dev_get_eth_dev(eth_dev); eth_dev->eth_dev = ð_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; eth_dev->eth_dev =eth_dev; eth_dev->eth_dev =eth_dev; eth_dev->eth_dev =eth_dev->eth_dev; return(eth_dev); } ============================== 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: struct d_open *d_open(const char *filename) { struct d_open *d; d = g_new0(struct d_open, 1); if (!d) return NULL; d->filename = g_new0(struct d_open, 1); d->filename = filename; d->filename = NULL; return d; } ============================== Sample 3 ============================== 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: virtual bool Get_Draw_Draw() const { return m_Draw; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;void wine_alEffectiv(ALuint eid, ALenum param, ALint * values) ;eid ALuint EDI ;param ALenum ESI ;values ALint * RDX ;local_18 undefined1 -18 ;local_30 undefined1[16] -30 ;local_40 undefined1[16] -40 ;local_50 undefined1[16] -50 ;local_60 undefined1[16] -60 ;local_70 undefined1[16] -70 ;local_80 undefined1[16] -80 ;local_90 undefined1[16] -90 ;local_a0 undefined1[16] -a0 ;local_b0 undefined1[16] -b0 ;local_c0 undefined1[16] -c0 PUSH RBP MOV RBP,RSP PUSH eid MOV eid,ECX PUSH param MOV param,values MOV values,R8 SUB RSP,0xa0 AND RSP,-0x10 MOVAPS xmmword ptr [RSP]=>local_c0,XMM6 MOVAPS xmmword ptr [RSP + local_b0[0]+0xc0],XMM7 MOVAPS xmmword ptr [RSP + local_a0[0]+0xc0],XMM8 MOVAPS xmmword ptr [RSP + local_90[0]+0xc0],XMM9 MOVAPS xmmword ptr [RSP + local_80[0]+0xc0],XMM10 MOVAPS xmmword ptr [RSP + local_70[0]+0xc0],XMM11 MOVAPS xmmword ptr [RSP + local_60[0]+0xc0],XMM12 MOVAPS xmmword ptr [RSP + local_50[0]+0xc0],XMM13 MOVAPS xmmword ptr [RSP + local_40[0]+0xc0],XMM14 MOVAPS xmmword ptr [RSP + local_30[0]+0xc0],XMM15 CALL qword ptr [.bss:alEffectiv] ;= NaP MOVAPS XMM6,xmmword ptr [RSP]=>local_c0 MOVAPS XMM7,xmmword ptr [RSP + local_b0[0]+0xc0] MOVAPS XMM8,xmmword ptr [RSP + local_a0[0]+0xc0] MOVAPS XMM9,xmmword ptr [RSP + local_90[0]+0xc0] MOVAPS XMM10,xmmword ptr [RSP + local_80[0]+0xc0] MOVAPS XMM11,xmmword ptr [RSP + local_70[0]+0xc0] MOVAPS XMM12,xmmword ptr [RSP + local_60[0]+0xc0] MOVAPS XMM13,xmmword ptr [RSP + local_50[0]+0xc0] MOVAPS XMM14,xmmword ptr [RSP + local_40[0]+0xc0] MOVAPS XMM15,xmmword ptr [RSP + local_30[0]+0xc0] LEA RSP=>local_18,[RBP + -0x10] POP param POP eid POP RBP RET ?? 66h f Actual src: static ALvoid CDECL wine_alEffectiv(ALuint eid, ALenum param, const ALint* values) { alEffectiv(eid, param, values); } Predicted src: const char *out(unsigned int id, const char *name) { return id(id, name); } ============================== Sample 5 ============================== 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__OF__OF__OF__OF::operator==(const PREGEN_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_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_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_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_O