============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* CBufferObject::GetFd() * ;************************************************************************************************************************************************************ ;undefined GetFd(CBufferObject * this) ;this CBufferObje... RDI MOV EAX,dword ptr [this + 0x8] RET ?? 66h f Actual src: int CBufferObject::GetFd() { return m_fd; } Predicted src: int CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined gst_audio_channel_mixer_mix_float_planar_planar() MOVSXD RAX,ECX PUSH R14 PUSH R13 PUSH R12 PUSH RBP PUSH RBX MOV EBX,dword ptr [RDI] MOV R14D,dword ptr [RDI + 0x4] TEST EAX,EAX JLE LAB_00117f1a MOV RBP,RDI LEA R13,[RAX*0x4] MOV R9,RSI XOR EDI,EDI LEA EAX,[R14 + -0x1] MOV R11,RDX PXOR XMM2,XMM2 MOVSXD R10,EBX LEA R12,[0x4 + RAX*0x4] NOP LAB_00117ec0: XOR ESI,ESI TEST R14D,R14D JLE LAB_00117f11 NOP word ptr [RAX + RAX*0x1] LAB_00117ed0: MOVAPS XMM1,XMM2 TEST EBX,EBX JLE LAB_00117eff MOV R8,qword ptr [RBP + 0x8] XOR EAX,EAX MOVAPS XMM1,XMM2 LAB_00117ee0: MOV RCX,qword ptr [R8 + RAX*0x8] MOV RDX,qword ptr [R9 + RAX*0x8] ADD RAX,0x1 MOVSS XMM0,dword ptr [RCX + RSI*0x1] MULSS XMM0,dword ptr [RDX + RDI*0x1] ADDSS XMM1,XMM0 CMP R10,RAX JNZ LAB_00117ee0 LAB_00117eff: MOV RAX,qword ptr [R11 + RSI*0x2] ADD RSI,0x4 MOVSS dword ptr [RAX + RDI*0x1],XMM1 CMP R12,RSI JNZ LAB_00117ed0 LAB_00117f11: ADD RDI,0x4 CMP R13,RDI JNZ LAB_00117ec0 LAB_00117f1a: POP RBX POP RBP POP R12 POP R13 POP R14 RET ?? 66h f Actual src: DEFINE_FLOAT_MIX_FUNC (float, planar, planar); Predicted src: static void gst_gst_float_float_float_float_float (gpointer data, gpointer data, gpointer user_data) { guint i; guint i; guint i; guint i; guint i; for (i = 0; i < data; i++) { for (i = 0; i < data[i]; i++) { for (i = 0; i < data[i]; i++) data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i] = data[i]; data[i] = data[i]; data[i] = data[i] = data[i]; data[i] = data[i]; data[i] = data[i]; data[i] = data[i] = data[i]; data[i] = data[i] = data[i] = data[i] = data[i]; } } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* Py::PythonExtensionBase::str() * ;************************************************************************************************************************************************************ ;undefined str(void) ;local_20 undefined8 -20 ;local_30 undefined1 -30 ;local_40 undefined8 -40 PUSH R12 MOV EDI,0x1 PUSH RBP PUSH RBX SUB RSP,0x30 MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_20+0x48],RAX XOR EAX,EAX LEA RBP=>local_40,[RSP + 0x8] CALL .plt:::__cxa_allocate_exception ;undefined __cxa_allocate_exception() LEA RSI,[.rodata:s_Extension_object_missing_impleme_002426d8] ;= "Extension object missing implemen... MOV RDI,RBP MOV R12,RAX ;try { // try from 0017feba to 0017febe has its CatchHandler @ 0017ff00 LAB_0017feba: CALL std::__cxx11::basic_string,std::allocator>::basic_string ;undefined basic_string(char * param_... ;} // end try from 0017feba to 0017febe MOV RDI,RBP LEA RBX=>local_30,[RSP + 0x18] ;try { // try from 0017fec7 to 0017fecb has its CatchHandler @ 0017feec LAB_0017fec7: CALL Py::RuntimeError::RuntimeError ;undefined RuntimeError(RuntimeError... ;} // end try from 0017fec7 to 0017fecb MOV RDI=>local_40,qword ptr [RSP + 0x8] CMP RDI,RBX JZ LAB_0017fedb CALL .plt:::operator.delete ;void operator.delete(void * param_1) LAB_0017fedb: MOV RSI=>.data.rel.ro:Py::RuntimeError::typeinfo,qword ptr [->Py::RuntimeError::typeinfo] ;= 002a5cd8 ;= 00293fb8 XOR EDX,EDX MOV RDI,R12 LAB_0017fee7: CALL .plt:::__cxa_throw ;undefined __cxa_throw() ;catch() {... } // from try @ 0017fec7 with catch @ 0017feec LAB_0017feec: MOV RBP,RAX MOV RDI,qword ptr [RSP + 0x8] CMP RDI,RBX JZ LAB_0017ff03 CALL .plt:::operator.delete ;void operator.delete(void * param_1) JMP LAB_0017ff03 ;catch() {... } // from try @ 0017feba with catch @ 0017ff00 LAB_0017ff00: MOV RBP,RAX LAB_0017ff03: MOV RDI,R12 CALL .plt:::__cxa_free_exception ;undefined __cxa_free_exception() MOV RDI,RBP CALL .plt:::_Unwind_Resume ;undefined _Unwind_Resume() NOP Actual src: Py::Object PythonExtensionBase::str() { missing_method( str ); return Py::None(); } Predicted src: PyObject * _wrap_PyNs3RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined LineStyleAlphaModifier_DistanceFromObject_expanded_get() MOV RAX,qword ptr [RDI + 0x10] MOV EAX,dword ptr [RAX + 0x58] SHR EAX,1 AND EAX,0x1 RET ?? 0Fh Actual src: bool LineStyleAlphaModifier_DistanceFromObject_expanded_get(PointerRNA *ptr) { LineStyleAlphaModifier_DistanceFromObject *data = (LineStyleAlphaModifier_DistanceFromObject *)(ptr->data); return (((data->modifier.flags) & 2)!= 0); } Predicted src: int pySettings_use_get(PointerRNA *ptr) { bSettings *data = (bSettings *)(ptr->data); return (int)(data->flag); } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined parser_isexpr() ;local_10 undefined8 -10 ;local_14 undefined4 -14 ;local_20 undefined8 -20 ;local_28 undefined8 -28 ;local_30 undefined8 -30 PUSH RBP MOV RBP,RSP SUB RSP,0x30 MOV qword ptr [RBP + local_20+0x8],RDI MOV qword ptr [RBP + local_28+0x8],RSI MOV qword ptr [RBP + local_30+0x8],RDX MOV qword ptr [RBP + local_10+0x8],0x0 MOV RAX,qword ptr [RBP + local_20+0x8] TEST RAX,RAX JNZ LAB_00102ebc LEA RDX=>local_20,[RBP + -0x18] MOV RSI,qword ptr [RBP + local_30+0x8] MOV RAX,qword ptr [RBP + local_28+0x8] MOV R9,RDX LEA R8,[.data:PyST_Type] LEA RDX,[.data:keywords.4] MOV RCX=>.data:keywords.4,RDX LEA RDX,[.rodata:s_O!:isexpr_0010d2cc] ;= "O!:isexpr" MOV RDI,RAX MOV EAX,0x0 CALL .plt:PyArg_ParseTupleAndKeywords ;undefined PyArg_ParseTupleAndKeywords() MOV dword ptr [RBP + local_14+0x8],EAX JMP LAB_00102ee5 LAB_00102ebc: MOV RSI,qword ptr [RBP + local_30+0x8] MOV RAX,qword ptr [RBP + local_28+0x8] LEA RDX,[.data:keywords.4[8]] MOV RCX=>.data:keywords.4[8],RDX LEA RDX,[.rodata:s_:isexpr_0010d2d6] ;= ":isexpr" MOV RDI,RAX MOV EAX,0x0 CALL .plt:PyArg_ParseTupleAndKeywords ;undefined PyArg_ParseTupleAndKeywords() MOV dword ptr [RBP + local_14+0x8],EAX LAB_00102ee5: CMP dword ptr [RBP + local_14+0x8],0x0 JZ LAB_00102f37 MOV RAX,qword ptr [RBP + local_20+0x8] MOV EAX,dword ptr [RAX + 0x28] CMP EAX,0x1 JNZ LAB_00102f00 MOV RAX,qword ptr [->_Py_TrueStruct] ;= 00112170 JMP LAB_00102f07 LAB_00102f00: MOV RAX,qword ptr [->_Py_ZeroStruct] ;= 00112020 LAB_00102f07: ; FWD[3,0]: Stack[-0x10],00112020,00112170 MOV qword ptr [RBP + local_10+0x8],RAX=>EXTERNAL:_Py_TrueStruct ;=?? MOV RAX,qword ptr [->_Py_RefTotal] ;= 00112178 MOV RAX=>EXTERNAL:_Py_RefTotal,qword ptr [RAX] ;=?? LEA RDX,[RAX + 0x1] MOV RAX,qword ptr [->_Py_RefTotal] ;= 00112178 MOV qword ptr [RAX]=>EXTERNAL:_Py_RefTotal,RDX ;=?? MOV RAX,qword ptr [RBP + local_10+0x8] ; FWD[2,0]: 00112030,00112180 MOV RAX,qword ptr [RAX + 0x10]=>EXTERNAL:PyDict_New ;=?? LEA RDX,[RAX + 0x1] MOV RAX,qword ptr [RBP + local_10+0x8] ; FWD[2,0]: 00112030,00112180 MOV qword ptr [RAX + 0x10]=>EXTERNAL:PyDict_New,RDX ;=?? LAB_00102f37: ; FWD[3,0]: Stack[-0x10],00112020,00112170 MOV RAX=>EXTERNAL:_Py_TrueStruct,qword ptr [RBP + local_10+0x8] ;=?? LEAVE RET ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined parser_issuite() ;local_10 undefined8 -10 ;local_14 undefined4 -14 ;local_20 undefined8 -20 ;local_28 undefined8 -28 ;local_30 undefined8 -30 PUSH RBP Actual src: static PyObject* parser_isexpr(PyST_Object *self, PyObject *args, PyObject *kw) { PyObject* res = 0; int ok; static char *keywords[] = {"ast", NULL}; if (self == NULL) ok = PyArg_ParseTupleAndKeywords(args, kw, "O!:isexpr", keywords, &PyST_Type, &self); else ok = PyArg_ParseTupleAndKeywords(args, kw, ":isexpr", &keywords[1]); if (ok) { /* Check to see if the ST represents an expression or not. */ res = (self->st_type == PyST_EXPR)? Py_True : Py_False; Py_INCREF(res); } return (res); } Predicted src: static PyObject * is_is_type(PyObject *self, PyObject *args) { PyObject *self = NULL; static const char *args[] = { "is_type", "is_type", "is_type", NULL }; if (!PyArg_ParseTuple(args, "is_type", &args, &args, &args, &args)) { return NULL; } Py_INCREF(Py_None); Py_INCREF(Py_None); Py_INCREF(Py_None); return Py_None; }