============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined py_DNS_RPC_SERVER_INFO_LONGHORN_set_dwDsPollingInterval() PUSH RBP MOV RBP,RSI PUSH RBX SUB RSP,0x8 CALL .plt:::_pytalloc_get_ptr ;undefined _pytalloc_get_ptr() TEST RBP,RBP JZ LAB_00119dc7 MOV RBX,RAX MOV RAX,qword ptr [RBP + 0x8] TEST byte ptr [RAX + 0xab],0x1 JZ LAB_00119d70 MOV RDI,RBP CALL .plt:::PyLong_AsUnsignedLongLong ;undefined PyLong_AsUnsignedLongLong() MOV RBP,RAX CALL .plt:::PyErr_Occurred ;undefined PyErr_Occurred() TEST RAX,RAX JNZ LAB_00119d68 MOV ECX,0xffffffff CMP RBP,RCX JA LAB_00119d9a MOV dword ptr [RBX + 0xc4],EBP XOR EAX,EAX LAB_00119d5e: ADD RSP,0x8 POP RBX POP RBP RET ?? 0Fh ?? 1Fh ?? 00h LAB_00119d68: MOV EAX,0xffffffff JMP LAB_00119d5e ?? 90h LAB_00119d70: MOV RAX,qword ptr [->PyLong_Type] ;= 00185210 LEA RSI,[.rodata:s_Expected_type_%s_0016031b] ;= "Expected type %s" MOV RDX,qword ptr [RAX + offset EXTERNAL:::ndr_push_DNS_RPC_SERVER_INFO_LONGHORN >>16] ;=?? MOV RAX,qword ptr [->PyExc_TypeError] ;= 001850d0 MOV RDI,qword ptr [RAX]=>EXTERNAL:PyExc_TypeError ;=?? XOR EAX,EAX CALL .plt:::PyErr_Format ;undefined PyErr_Format() MOV EAX,0xffffffff JMP LAB_00119d5e LAB_00119d9a: MOV RAX,qword ptr [->PyLong_Type] ;= 00185210 MOV R8,RBP LEA RSI,[.rodata:s_Expected_type_%s_within_range_0_-_001521b0] ;= "Expected type %s within range 0 -... MOV RDX,qword ptr [RAX + offset EXTERNAL:::ndr_push_DNS_RPC_SERVER_INFO_LONGHORN >>16] ;=?? MOV RAX,qword ptr [->PyExc_OverflowError] ;= 00185238 MOV RDI,qword ptr [RAX]=>EXTERNAL:PyExc_OverflowError ;=?? XOR EAX,EAX CALL .plt:::PyErr_Format ;undefined PyErr_Format() MOV EAX,0xffffffff JMP LAB_00119d5e LAB_00119dc7: MOV RAX,qword ptr [->PyExc_AttributeError] ;= 00185260 LEA RSI,[.rodata:s_Cannot_delete_NDR_object:_struct_001539e0] ;= "Cannot delete NDR object: struct... MOV RDI,qword ptr [RAX]=>EXTERNAL:PyExc_AttributeError ;=?? XOR EAX,EAX CALL .plt:::PyErr_Format ;undefined PyErr_Format() MOV EAX,0xffffffff JMP LAB_00119d5e ?? 0Fh Actual src: static int py_DNS_RPC_SERVER_INFO_LONGHORN_set_dwDsPollingInterval(PyObject *py_obj, PyObject *value, void *closure) { struct DNS_RPC_SERVER_INFO_LONGHORN *object = (struct DNS_RPC_SERVER_INFO_LONGHORN *)pytalloc_get_ptr(py_obj); if (value == NULL) { PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->dwDsPollingInterval"); return -1; } { const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->dwDsPollingInterval)); if (PyLong_Check(value)) { unsigned long long test_var; test_var = PyLong_AsUnsignedLongLong(value); if (PyErr_Occurred()!= NULL) { return -1; } if (test_var > uint_max) { PyErr_Format(PyExc_OverflowError, "Expected type %s within range 0 - %llu, got %llu",\ PyLong_Type.tp_name, uint_max, test_var); return -1; } object->dwDsPollingInterval = test_var; } else { PyErr_Format(PyExc_TypeError, "Expected type %s",\ PyLong_Type.tp_name); return -1; } } return 0; } Predicted src: static int py_drsuapi_drsuapi_INFO_INFO_set_mode(PyObject *py_obj, PyObject *value, void *closure) { struct drsuapi_INFO_INFO_INFO *object = (struct drsuapi_INFO_INFO_INFO_INFO *)pytalloc_get_ptr(py_obj); if (value == NULL) { PyErr_Format(PyExc_AttributeError, "Cannot delete NDR object: struct object->mode"); return -1; } { const unsigned long long uint_max = ndr_sizeof2uintmax(sizeof(object->mode)); if (PyLong_Check(value)) { unsigned long test_var; test_var = PyLong_AsUnsignedLongLong(value); if (PyErr_Occurred()!= NULL) { return -1; } if (test_var > uint_max) { PyErr_Format(PyExc_OverflowError, "Expected type %s within range 0 - %llu, got %llu",\ PyLong_Type.tp_name, uint_max, test_var); return -1; } object->mode = test_var; } else { PyErr_Format(PyExc_TypeError, "Expected type %llu, got %llu",\ PyLong_Type.tp_name); return -1; } } return 0; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined sqlite3_stmt_readonly() MOV EAX,0x1 TEST RDI,RDI JZ LAB_0083be17 MOVZX EAX,byte ptr [RDI + 0xc6] SHR AL,0x7 MOVZX EAX,AL LAB_0083be17: RET ?? 0Fh ;? -> 00841f0f Actual src: int sqlite3_stmt_readonly(sqlite3_stmt *pStmt){ return pStmt? ((Vdbe*)pStmt)->readOnly : 1; } Predicted src: int64_t64_t sqlite3_unlock(struct sqlite3_context *ctx) { if (!ctx) return 0; return ctx->data[0] ^ ctx->data[1] ^ ctx->data[2] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx->data[3] ^ ctx- ============================== Sample 3 ============================== 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 Is_Is_Is(void) { return (Is_Is_Is_Is(Is_Is_Is()); } ============================== 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: const char* type_type::operator=(const type_type_type type) { if (type == &other_type) return *this; return *this; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined PAINT_OT_vertex_paint() LEA RAX,[.rodata:s_Vertex_Paint_03a79e7d] ;= "Vertex Paint" MOV qword ptr [RDI],RAX=>.rodata:s_Vertex_Paint_03a79e7d ;= "Vertex Paint" LEA RAX,[.rodata:s_PAINT_OT_vertex_paint_03adedf7] ;= "PAINT_OT_vertex_paint" MOV qword ptr [RDI + 0x8],RAX=>.rodata:s_PAINT_OT_vertex_paint_03adedf7 ;= "PAINT_OT_vertex_paint" LEA RAX,[.rodata:s_Paint_a_stroke_in_the_active_ver_03bb3768] ;= "Paint a stroke in the active vert... MOV qword ptr [RDI + 0x18],RAX=>.rodata:s_Paint_a_stroke_in_the_active_ver_03bb3768 ;= "Paint a stroke in the active vert... LEA RAX,[vpaint_invoke] MOV qword ptr [RDI + 0x38],RAX=>vpaint_invoke LEA RAX,[paint_stroke_modal] MOV qword ptr [RDI + 0x48],RAX=>paint_stroke_modal LEA RAX,[vpaint_exec] MOV qword ptr [RDI + 0x28],RAX=>vpaint_exec LEA RAX,[vertex_paint_poll] MOV qword ptr [RDI + 0x50],RAX=>vertex_paint_poll LEA RAX,[vpaint_cancel] MOV qword ptr [RDI + 0x40],RAX=>vpaint_cancel MOV EAX,0x6 MOV word ptr [RDI + 0xd0],AX JMP paint_stroke_operator_properties ;undefined paint_stroke_operator_prop... ?? 0Fh ;? -> 00841f0f Actual src: void PAINT_OT_vertex_paint(wmOperatorType *ot) { /* identifiers */ ot->name = "Vertex Paint"; ot->idname = "PAINT_OT_vertex_paint"; ot->description = "Paint a stroke in the active vertex color layer"; /* api callbacks */ ot->invoke = vpaint_invoke; ot->modal = paint_stroke_modal; ot->exec = vpaint_exec; ot->poll = vertex_paint_poll; ot->cancel = vpaint_cancel; /* flags */ ot->flag = OPTYPE_UNDO | OPTYPE_BLOCKING; paint_stroke_operator_properties(ot); } Predicted src: void PyVTKAddFile_OT_OT_OT_exec(wmOperatorType *ot) { /* identifiers */ ot->name = "Set_OT_exec"; ot->idname = "Set_OT_exec"; /* api callbacks */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* api callbacks */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* flags */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* flags */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* flags */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* flags */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* flags */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* flags */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* flags */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* flags */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* flags */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* flags */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* flags */ ot->poll = OPTYPE_REGISTER | OPTYPE_UNDO; /* flags */ ot->poll = OPTYPE_REGISTER | OPTYPE_REGISTER | OPTYPE_UNDO; }