============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined glXGetCurrentReadDrawable() SUB RSP,0x8 LEA RDI,[.got:PTR_001407b0] ;= 00000000 CALL .plt:::__tls_get_addr ;undefined __tls_get_addr() MOV RAX,qword ptr [RAX + 0x10] ADD RSP,0x8 RET ?? 0Fh Actual src: GLXDrawable glXGetCurrentReadDrawable(void) { return tsdata.read_drawable; } Predicted src: static PyObject *py_get_data(PyObject *self, PyObject *args) { return Py_INCREF(Py_None); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* Mus_IsPlaying() * ;************************************************************************************************************************************************************ ;undefined Mus_IsPlaying(void) SUB RSP,0x8 CALL App_AudioSystem ;undefined App_AudioSystem(void) ADD RSP,0x8 MOV RDI,RAX JMP AudioSystem::musicIsPlaying ;undefined musicIsPlaying(AudioSystem... ?? 66h f Actual src: bool Mus_IsPlaying() { #ifdef __CLIENT__ return App_AudioSystem().musicIsPlaying(); #else return false; #endif } Predicted src: bool Object::IsObject(void) { return (m_obj.empty() == 0); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined _cffi_f_ncplane_greyscale() ;local_20 undefined1 -20 ;local_30 undefined8 -30 ;local_38 undefined8 -38 ;local_40 undefined8 -40 PUSH RBP MOV RBP,RSP PUSH R13 PUSH R12 LEA R13=>local_40,[RBP + -0x38] MOV R12,RSI PUSH RBX MOV RDX,R13 SUB RSP,0x28 MOV RDI,qword ptr [.data:_cffi_types[200]] MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RBP + local_30+0x8],RAX XOR EAX,EAX MOV qword ptr [RBP + local_38+0x8],0x0 CALL qword ptr [.bss:_cffi_exports[184]] TEST RAX,RAX JZ LAB_00142f48 MOV RCX,RAX XOR EAX,EAX CMP RCX,0x280 JBE LAB_00142f28 LAB_00142e96: LEA R8=>local_38,[RBP + -0x30] MOV RDX,R13 MOV RSI,R12 MOV qword ptr [RBP + local_40+0x8],RAX MOV RDI,qword ptr [.data:_cffi_types[200]] CALL _cffi_convert_array_argument ;undefined _cffi_convert_array_argume... TEST EAX,EAX JS LAB_00142f70 MOV RBX,qword ptr [RBP + local_38+0x8] CALL .plt:PyEval_SaveThread ;undefined PyEval_SaveThread() MOV R12,RAX CALL qword ptr [.bss:_cffi_exports[104]] MOV RDI,qword ptr [RBP + local_40+0x8] CALL .plt:ncplane_greyscale ;undefined ncplane_greyscale() CALL qword ptr [.bss:_cffi_exports[112]] MOV RDI,R12 CALL .plt:PyEval_RestoreThread ;undefined PyEval_RestoreThread() TEST RBX,RBX JZ LAB_00142f00 NOP word ptr CS:[RAX + RAX*0x1] LAB_00142ef0: MOV RDI,RBX MOV RBX,qword ptr [RBX] CALL .plt:PyObject_Free ;undefined PyObject_Free() TEST RBX,RBX JNZ LAB_00142ef0 LAB_00142f00: MOV RAX=>EXTERNAL:_Py_NoneStruct,qword ptr [->_Py_NoneStruct] ;= 001807f8 ;=?? ADD qword ptr [RAX]=>EXTERNAL:_Py_NoneStruct,0x1 ;=?? LAB_00142f0b: MOV RDX,qword ptr [RBP + local_30+0x8] SUB RDX,qword ptr FS:[0x28] JNZ LAB_00142f74 LEA RSP=>local_20,[RBP + -0x18] POP RBX POP R12 POP R13 POP RBP RET ?? 0Fh ?? 1Fh ?? 00h LAB_00142f28: LEA RAX,[RCX + 0x17] AND RAX,-0x10 SUB RSP,RAX LEA RAX,[RSP + 0xf] AND RAX,-0x10 JMP LAB_00142e96 ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00142f48: CALL .plt:PyEval_SaveThread ;undefined PyEval_SaveThread() MOV R12,RAX CALL qword ptr [.bss:_cffi_exports[104]] MOV RDI,qword ptr [RBP + local_40+0x8] CALL .plt:ncplane_greyscale ;undefined ncplane_greyscale() CALL qword ptr [.bss:_cffi_exports[112]] MOV RDI,R12 CALL .plt:PyEval_RestoreThread ;undefined PyEval_RestoreThread() JMP LAB_00142f00 ?? 90h LAB_00142f70: XOR EAX,EAX JMP LAB_00142f0b LAB_00142f74: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() NOP dword ptr [RAX] Actual src: static PyObject * _cffi_f_ncplane_greyscale(PyObject *self, PyObject *arg0) { struct ncplane * x0; Py_ssize_t datasize; struct _cffi_freeme_s *large_args_free = NULL; datasize = _cffi_prepare_pointer_call_argument( _cffi_type(25), arg0, (char **)&x0); if (datasize!= 0) { x0 = ((size_t)datasize) <= 640? (struct ncplane *)alloca((size_t)datasize) : NULL; if (_cffi_convert_array_argument(_cffi_type(25), arg0, (char **)&x0, datasize, &large_args_free) < 0) return NULL; } Py_BEGIN_ALLOW_THREADS _cffi_restore_errno(); { ncplane_greyscale(x0); } _cffi_save_errno(); Py_END_ALLOW_THREADS (void)self; /* unused */ if (large_args_free!= NULL) _cffi_free_array_arguments(large_args_free); Py_INCREF(Py_None); return Py_None; } Predicted src: static PyObject *py_array_array(PyObject *self, PyObject *args) { PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; PyObject *py_obj; py_obj; PyObject *py_obj; PyObject *py_obj; py_obj = py_obj; py_obj = py_obj; PyObject *py_obj; PyObject *py_obj; py_obj = py_obj; py_obj = py_obj; py_obj = py_obj; py_obj = py_obj; py_obj = py_obj; py_obj = py_obj; if (py_obj == NULL) { py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj; } py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj_obj = obj_obj = obj_obj; py_obj = obj_obj; py_obj = obj ============================== Sample 4 ============================== 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: void new_new (void) { g_return_if_fail (0!= NULL); g_return_if_fail (1!= NULL); g_return_if_fail (1!= NULL); g_object_set (G_OBJECT (1), NULL); } ============================== 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 str_str(char *str) { str_str_str(str, str, str); }