============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined dvb_channel_list_real_foreach() PUSH R13 MOV R13,RDX PUSH R12 MOV R12,RSI PUSH RBP MOV RDI,qword ptr [RDI + 0x20] CALL .plt:::gee_iterable_iterator ;undefined gee_iterable_iterator() MOV RSI,R12 MOV RDX,R13 MOV RDI,RAX MOV RBP,RAX CALL .plt:::gee_traversable_foreach ;undefined gee_traversable_foreach() MOV R12D,EAX TEST RBP,RBP JZ LAB_00151b05 MOV RDI,RBP CALL .plt.got:::g_object_unref ;undefined g_object_unref() LAB_00151b05: MOV EAX,R12D POP RBP POP R12 POP R13 RET ?? 66h f Actual src: static gboolean dvb_channel_list_real_foreach (GeeTraversable* base, GeeForallFunc f, void* f_target) { DVBChannelList * self; gboolean result = FALSE; GeeHashMap* _tmp0_ = NULL; GeeIterator* _tmp1_ = NULL; GeeIterator* _tmp2_ = NULL; GeeForallFunc _tmp3_ = NULL; void* _tmp3__target = NULL; gboolean _tmp4_ = FALSE; gboolean _tmp5_ = FALSE; self = (DVBChannelList*) base; _tmp0_ = self->channels; _tmp1_ = gee_iterable_iterator ((GeeIterable*) _tmp0_); _tmp2_ = _tmp1_; _tmp3_ = f; _tmp3__target = f_target; _tmp4_ = gee_traversable_foreach ((GeeTraversable*) _tmp2_, _tmp3_, _tmp3__target); _tmp5_ = _tmp4_; _g_object_unref0 (_tmp2_); result = _tmp5_; return result; } Predicted src: static gboolean gee_list_real_foreach (GObject* base, GAsyncResult* _res_, gpointer self) { gboolean result; gboolean result = FALSE; g_return_val_if_fail (IS_LIST (self), FALSE); result = gee_object_ref0 (self); if (result!= NULL) { return result; } return result; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined polypolygon_print() AND EDI,0xffff JZ LAB_001444e4 PUSH R15 LEA R15,[.rodata:s__Polygon[%d]:_0016b860] ;= " Polygon[%d]: " PUSH R14 MOV R14D,EDI PUSH R13 XOR R13D,R13D PUSH R12 MOV R12,RSI PUSH RBP MOV RBP,RDX PUSH RBX SUB RSP,0x8 NOP dword ptr [RAX] LAB_00144490: XOR EAX,EAX MOV EDX,R13D MOV RSI=>.rodata:s__Polygon[%d]:_0016b860,R15 ;= " Polygon[%d]: " MOV EDI,0x1 CALL .plt:::__printf_chk ;undefined __printf_chk() CMP word ptr [R12],0x0 JZ LAB_001444c8 XOR EBX,EBX NOP dword ptr [RAX] LAB_001444b0: MOV EDI,dword ptr [RBP] ADD EBX,0x1 ADD RBP,0x4 CALL .plt:point16_print ;undefined point16_print() MOVZX EAX,word ptr [R12] CMP EAX,EBX JG LAB_001444b0 LAB_001444c8: ADD R13D,0x1 ADD R12,0x2 CMP R13D,R14D JNZ LAB_00144490 ADD RSP,0x8 POP RBX POP RBP POP R12 POP R13 POP R14 POP R15 RET LAB_001444e4: RET ?? 66h f Actual src: void polypolygon_print( uint16_t nPolys, const uint16_t *aPolyCounts, const char *Points ){ int i,j; U_POINT16 pt; for(i=0; i.bss:ScQApp,qword ptr [RAX] ;=?? MOV this,qword ptr [RAX + 0x68] JMP .plt:::QObject::disconnect ;undefined disconnect(QObject * param... ?? 66h f Actual src: void ResourceManager::downloadLicenseFinished() { disconnect(ScQApp->dlManager(), SIGNAL(finished()), this, SLOT(downloadLicenseFinished())); } Predicted src: void FontManager::disconnect(void) { d->disconnect(); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* ONScripter::brCommand() * ;************************************************************************************************************************************************************ ;undefined brCommand(ONScripter * this) ;this ONScripter * RDI PUSH R12 MOV ESI,0x1 PUSH RBP PUSH RBX MOV RBX,this CALL ONScripter::enterTextDisplayMode ;undefined enterTextDisplayMode(ONScr... LEA this,[RBX + 0xcb8] CALL FontInfo::newLine ;undefined newLine(FontInfo * this) MOV RBX,qword ptr [RBX + 0xbf8] MOVSXD RDX,dword ptr [RBX + 0x1c] MOV this,dword ptr [RBX + 0x18] CMP EDX,this JGE LAB_00124540 MOV RBP,qword ptr [RBX + 0x10] LAB_00124523: LEA EAX,[RDX + 0x1] MOV dword ptr [RBX + 0x1c],EAX MOV EAX,0x2 MOV byte ptr [RBP + RDX*0x1],0xa POP RBX POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00124540: ADD this,this MOVSXD this,this CALL .plt:::operator.new[] ;void * operator.new[](ulong param_1) MOV R12,qword ptr [RBX + 0x10] MOVSXD RDX,dword ptr [RBX + 0x18] MOV this,RAX MOV RBP,RAX MOV RSI,R12 CALL .plt:::memcpy ;void * memcpy(void * __dest, void *... MOV this,R12 CALL .plt:::operator.delete[] ;void operator.delete[](void * param_1) MOV qword ptr [RBX + 0x10],RBP MOVSXD RDX,dword ptr [RBX + 0x1c] SHL dword ptr [RBX + 0x18],1 JMP LAB_00124523 ?? 90h Actual src: int ONScripter::brCommand() { enterTextDisplayMode(); sentence_font.newLine(); current_page->add( 0x0a ); return RET_CONTINUE; } Predicted src: void CommandCommand::text() { if (m_text) { m_text = m_text; m_text = m_text; } else { m_text = m_text; } m_text = m_text; m_text = m_text; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined sock_dealloc() ;local_10 undefined8 -10 PUSH RBP MOV RBP,RSP SUB RSP,0x10 MOV qword ptr [RBP + local_10+0x8],RDI MOV RAX,qword ptr [RBP + local_10+0x8] MOV EAX,dword ptr [RAX + 0x20] CMP EAX,-0x1 JZ LAB_0035dbfc MOV RAX,qword ptr [RBP + local_10+0x8] MOV EAX,dword ptr [RAX + 0x20] MOV EDI,EAX CALL .plt:::close ;int close(int __fd) LAB_0035dbfc: MOV RAX,qword ptr [RBP + local_10+0x8] MOV RAX,qword ptr [RAX + 0x40] TEST RAX,RAX JZ LAB_0035dc15 MOV RAX,qword ptr [RBP + local_10+0x8] MOV RDI,RAX CALL PyObject_ClearWeakRefs ;undefined PyObject_ClearWeakRefs() LAB_0035dc15: MOV RAX,qword ptr [RBP + local_10+0x8] MOV RAX,qword ptr [RAX + 0x18] MOV RDX,qword ptr [RAX + 0x150] MOV RAX,qword ptr [RBP + local_10+0x8] MOV RDI,RAX CALL RDX NOP LEAVE RET ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined sock_repr() ;local_10 undefined8 -10 ;local_218 undefined1 -218 ;local_220 undefined8 -220 ;local_230 undefined8 -230 PUSH RBP Actual src: static void sock_dealloc(PySocketSockObject *s) { if (s->sock_fd!= -1) (void) SOCKETCLOSE(s->sock_fd); if (s->weakreflist!= NULL) PyObject_ClearWeakRefs((PyObject *)s); Py_TYPE(s)->tp_free((PyObject *)s); } Predicted src: static void close(void *data) { struct data *data = data; if (data->fd!= 0) { close(data->fd); close(data->fd); } close(data->fd); }