============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined txn_body_cleanup_txn_changes() MOV R8,RDI MOV RCX,qword ptr [RSI + 0x10] MOV RDI,qword ptr [RSI + 0x8] MOV RDX,RSI MOV RSI,qword ptr [R8] JMP .plt:LAB_00109bc0 ?? 66h f Actual src: static svn_error_t * txn_body_cleanup_txn_changes(void *baton, trail_t *trail) { const char *key = *(const char **)baton; return svn_fs_bdb__changes_delete(trail->fs, key, trail, trail->pool); } Predicted src: static void do_body_body_cleanup(void *arg, void *arg) { struct _do_body_body *body = arg; struct _do_body_body *body = arg; do_body_body_cleanup(body->body, &body->body->body); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined mp_rshd() TEST ESI,ESI JLE LAB_00191b00 PUSH RBP MOV RBP,RDI PUSH RBX SUB RSP,0x8 MOV R9D,dword ptr [RDI] CMP R9D,ESI JLE LAB_00191b08 MOV RDI,qword ptr [RDI + 0x10] MOV EBX,R9D MOVSXD RAX,ESI SUB EBX,ESI LEA R8,[RDI + RAX*0x8] TEST EBX,EBX JLE LAB_00191b18 MOVSXD RCX,EBX XOR EAX,EAX NOP LAB_00191ab0: MOV RDX,qword ptr [R8 + RAX*0x8] MOV qword ptr [RDI + RAX*0x8],RDX ADD RAX,0x1 CMP RCX,RAX JNZ LAB_00191ab0 LEA RDI,[RDI + RCX*0x8] CMP R9D,EBX JLE LAB_00191af0 MOV EAX,EBX LAB_00191acc: LEA EDX,[R9 + -0x1] SUB EDX,EAX ADD EAX,0x1 CMP R9D,EAX LEA RDX,[0x8 + RDX*0x8] MOV EAX,0x8 CMOVL RDX,RAX XOR ESI,ESI CALL .plt:::memset ;void * memset(void * __s, int __c, s... LAB_00191af0: MOV dword ptr [RBP],EBX ADD RSP,0x8 POP RBX POP RBP RET ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00191b00: RET ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00191b08: ADD RSP,0x8 POP RBX POP RBP JMP .plt:mp_zero ;undefined mp_zero() ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00191b18: XOR EAX,EAX JMP LAB_00191acc ?? 0Fh Actual src: void mp_rshd (mp_int * a, int b) { int x; /* if b <= 0 then ignore it */ if (b <= 0) { return; } /* if b > used then simply zero it and return */ if (a->used <= b) { mp_zero (a); return; } { mp_digit *bottom, *top; /* shift the digits down */ /* bottom */ bottom = a->dp; /* top [offset into digits] */ top = a->dp + b; /* this is implemented as a sliding window where * the window is b-digits long and digits from * the top of the window are copied to the bottom * * e.g. b-2 | b-1 | b0 | b1 | b2 |... | bb | ----> /\ | ----> \-------------------/ ----> */ for (x = 0; x < (a->used - b); x++) { *bottom++ = *top++; } /* zero the top digits */ for (; x < a->used; x++) { *bottom++ = 0; } } /* remove excess digits */ a->used -= b; } Predicted src: int mp_zero(mp_int *a, mp_int *b) { int i, j; mp_int *b; b = a[0]; b[1] = b[1]; b[2] = b[2]; b[3] = b[3]; for (i = 0; i < i; i++) b[i] = a[i]; return i; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined gimp_draw_tool_add_sample_point() PUSH R14 PUSH R13 PUSH R12 PUSH RBP SUB RSP,0x8 TEST RDI,RDI JZ LAB_00252220 MOV RBP,RDI MOV R12D,ESI MOV R13D,EDX MOV R14D,ECX CALL gimp_draw_tool_get_type ;undefined gimp_draw_tool_get_type() MOV RSI,RAX MOV RAX,qword ptr [RBP] TEST RAX,RAX JZ LAB_002521c6 CMP qword ptr [RAX],RSI JZ LAB_002521d2 LAB_002521c6: MOV RDI,RBP CALL .plt:::g_type_check_instance_is_a ;undefined g_type_check_instance_is_a() TEST EAX,EAX JZ LAB_00252220 LAB_002521d2: MOV RDI,qword ptr [RBP + 0x178] CALL gimp_display_get_shell ;undefined gimp_display_get_shell() MOV ECX,R14D MOV EDX,R13D MOV ESI,R12D MOV R8D,0x1 MOV RDI,RAX CALL gimp_canvas_sample_point_new ;undefined gimp_canvas_sample_point_n... MOV RDI,RBP MOV R12,RAX MOV RSI,RAX CALL gimp_draw_tool_add_item ;undefined gimp_draw_tool_add_item() MOV RDI,R12 CALL .plt.got:::g_object_unref ;undefined g_object_unref() ADD RSP,0x8 MOV RAX,R12 POP RBP POP R12 POP R13 POP R14 RET ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00252220: LEA RDX,[.rodata:s_GIMP_IS_DRAW_TOOL_(draw_tool)_00674a44] ;= "GIMP_IS_DRAW_TOOL (draw_tool)" LEA RSI,[.rodata:__func__.10] ;= "gimp_draw_tool_add_sample_point" XOR R12D,R12D LEA RDI,[.rodata:s_Gimp-Tools_0064f9c7] ;= "Gimp-Tools" CALL .plt:::g_return_if_fail_warning ;undefined g_return_if_fail_warning() ADD RSP,0x8 MOV RAX,R12 POP RBP POP R12 POP R13 POP R14 RET ?? 0Fh Actual src: GimpCanvasItem * gimp_draw_tool_add_sample_point (GimpDrawTool *draw_tool, gint x, gint y, gint index) { GimpCanvasItem *item; g_return_val_if_fail (GIMP_IS_DRAW_TOOL (draw_tool), NULL); item = gimp_canvas_sample_point_new (gimp_display_get_shell (draw_tool->display), x, y, index, TRUE); gimp_draw_tool_add_item (draw_tool, item); g_object_unref (item); return item; } Predicted src: static gboolean gimp_tool_draw_item_draw_draw (GimpTool *tool, GimpTool *tool) { g_return_val_if_fail (GIMP_IS_TOOL (tool), FALSE); g_return_val_if_fail (GIMP_IS_TOOL (tool), FALSE); gimp_tool_draw_item_draw (GIMP_TOOL (tool)->draw_item, gimp_tool_draw_item_draw, gimp_tool_draw_item_draw); return TRUE; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined vala_ccode_control_flow_module_real_visit_if_statement() TEST RSI,RSI JZ LAB_00171e90 PUSH R13 PUSH R12 MOV R12,RDI PUSH RBP MOV RBP,RSI CALL .plt:vala_ccode_base_module_get_ccode ;undefined vala_ccode_base_module_get... MOV RDI,RBP MOV R13,RAX CALL .plt:::vala_if_statement_get_condition ;undefined vala_if_statement_get_cond... MOV RDI,RAX CALL .plt:vala_get_cvalue ;undefined vala_get_cvalue() MOV RDI,R13 MOV RSI,RAX CALL .plt:vala_ccode_function_open_if ;undefined vala_ccode_function_open_if() MOV RDI,RBP CALL .plt:::vala_if_statement_get_true_statement ;undefined vala_if_statement_get_true... MOV RSI,R12 MOV RDI,RAX CALL .plt:::vala_code_node_emit ;undefined vala_code_node_emit() MOV RDI,RBP CALL .plt:::vala_if_statement_get_false_statement ;undefined vala_if_statement_get_fals... TEST RAX,RAX JZ LAB_00171e7a MOV RDI,R12 CALL .plt:vala_ccode_base_module_get_ccode ;undefined vala_ccode_base_module_get... MOV RDI,RAX CALL .plt:vala_ccode_function_add_else ;undefined vala_ccode_function_add_el... MOV RDI,RBP CALL .plt:::vala_if_statement_get_false_statement ;undefined vala_if_statement_get_fals... MOV RSI,R12 MOV RDI,RAX CALL .plt:::vala_code_node_emit ;undefined vala_code_node_emit() LAB_00171e7a: MOV RDI,R12 CALL .plt:vala_ccode_base_module_get_ccode ;undefined vala_ccode_base_module_get... POP RBP POP R12 MOV RDI,RAX POP R13 JMP .plt:vala_ccode_function_close ;undefined vala_ccode_function_close() ?? 90h LAB_00171e90: LEA RDX,[.rodata:s_stmt_!=_NULL_0020d2df+5] ;= "stmt!= NULL" LEA RSI,[.rodata:__func__.0] ;= "vala_ccode_control_flow_module_re... LEA RDI,[.rodata:s_vala-ccodegen_001f501d] ;= "vala-ccodegen" JMP .plt:::g_return_if_fail_warning ;undefined g_return_if_fail_warning() ?? 66h f Actual src: static void vala_ccode_control_flow_module_real_visit_if_statement (ValaCodeVisitor* base, ValaIfStatement* stmt) { ValaCCodeControlFlowModule * self; ValaCCodeFunction* _tmp0_; ValaCCodeFunction* _tmp1_; ValaExpression* _tmp2_; ValaExpression* _tmp3_; ValaCCodeExpression* _tmp4_; ValaBlock* _tmp5_; ValaBlock* _tmp6_; ValaBlock* _tmp7_; ValaBlock* _tmp8_; ValaCCodeFunction* _tmp13_; ValaCCodeFunction* _tmp14_; self = (ValaCCodeControlFlowModule*) base; g_return_if_fail (stmt!= NULL); _tmp0_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self); _tmp1_ = _tmp0_; _tmp2_ = vala_if_statement_get_condition (stmt); _tmp3_ = _tmp2_; _tmp4_ = vala_get_cvalue (_tmp3_); vala_ccode_function_open_if (_tmp1_, _tmp4_); _tmp5_ = vala_if_statement_get_true_statement (stmt); _tmp6_ = _tmp5_; vala_code_node_emit ((ValaCodeNode*) _tmp6_, (ValaCodeGenerator*) self); _tmp7_ = vala_if_statement_get_false_statement (stmt); _tmp8_ = _tmp7_; if (_tmp8_!= NULL) { ValaCCodeFunction* _tmp9_; ValaCCodeFunction* _tmp10_; ValaBlock* _tmp11_; ValaBlock* _tmp12_; _tmp9_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self); _tmp10_ = _tmp9_; vala_ccode_function_add_else (_tmp10_); _tmp11_ = vala_if_statement_get_false_statement (stmt); _tmp12_ = _tmp11_; vala_code_node_emit ((ValaCodeNode*) _tmp12_, (ValaCodeGenerator*) self); } _tmp13_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self); _tmp14_ = _tmp13_; vala_ccode_function_close (_tmp14_); } Predicted src: static void vala_ccode_module_real_open_function (ValaCodeNode* base, ValaModule* base) { ValaModule* self; ValaModule* _tmp0_; ValaModule* _tmp1_; ValaModule* _tmp2_; ValaModule* _tmp3_; ValaModule* _tmp4_; ValaModule* _tmp5_; ValaModule* _tmp5_; ValaModule* _tmp6_; ValaModule* _tmp6_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; ValaModule* _tmp7_; Vala_tmp7_; Vala_tmp7_tmp7_ = vala_ccode_node_get_name ((ValaModule*) base, (ValaModule*) base); _tmp7_ = vala_ccode_node_get_name ((ValaModule*) base, (ValaModule*) base); _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = vala_ccode_node_get_real_get_module ((ValaModule*) _tmp7_); _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = vala_ccode_node_get_real_get_code (_tmp7_); _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = vala_ccode_node_get_get_code (_tmp7_); _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = _tmp7_; _tmp7_ = vala_ccode_node_get_code (_tmp7_); _tmp7_ = vala_module ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined __pyx_pw_7skimage_5graph_4heap_10BinaryHeap_21__reduce_cython__() PUSH R12 MOV R12,qword ptr [.bss:__pyx_tuple__4] ;=?? PUSH RBP MOV RBP,qword ptr [.bss:__pyx_builtin_TypeError] ;=?? PUSH RBX MOV RAX,qword ptr [RBP + 0x8] MOV RBX,qword ptr [RAX + 0x80] TEST RBX,RBX JZ LAB_0010b070 LEA RDI,[.rodata:s__while_calling_a_Python_object_0010c118] ;= " while calling a Python object" CALL .plt:Py_EnterRecursiveCall ;undefined Py_EnterRecursiveCall() TEST EAX,EAX JNZ LAB_0010b088 XOR EDX,EDX MOV RDI,RBP MOV RSI,R12 CALL RBX MOV RBP,RAX CALL .plt:Py_LeaveRecursiveCall ;undefined Py_LeaveRecursiveCall() TEST RBP,RBP JZ LAB_0010b090 LAB_0010b029: MOV RDI,RBP MOV R12D,0x10c7 CALL __Pyx_Raise.constprop.0 ;undefined __Pyx_Raise.constprop.0() SUB qword ptr [RBP],0x1 JZ LAB_0010b060 LAB_0010b03e: MOV ESI,R12D LEA RCX,[.rodata:s_stringsource_0010dd6b] ;= "stringsource" MOV EDX,0x2 LEA RDI,[.rodata:s_skimage.graph.heap.BinaryHeap.___0010c738] ;= "skimage.graph.heap.BinaryHeap.__r... CALL __Pyx_AddTraceback ;undefined __Pyx_AddTraceback() POP RBX XOR EAX,EAX POP RBP POP R12 RET LAB_0010b060: MOV RDI,RBP CALL .plt:_Py_Dealloc ;undefined _Py_Dealloc() JMP LAB_0010b03e ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_0010b070: MOV RDI,RBP XOR EDX,EDX MOV RSI,R12 CALL .plt:PyObject_Call ;undefined PyObject_Call() MOV RBP,RAX TEST RAX,RAX JNZ LAB_0010b029 NOP dword ptr [RAX] LAB_0010b088: MOV R12D,0x10c3 JMP LAB_0010b03e LAB_0010b090: CALL .plt:PyErr_Occurred ;undefined PyErr_Occurred() TEST RAX,RAX JNZ LAB_0010b088 MOV RAX,qword ptr [->PyExc_SystemError] ;= 00113018 LEA RSI,[.rodata:s_NULL_result_without_error_in_PyO_0010c2f8] ;= "NULL result without error in PyOb... MOV RDI,qword ptr [RAX]=>EXTERNAL:PyExc_SystemError ;=?? CALL .plt:PyErr_SetString ;undefined PyErr_SetString() JMP LAB_0010b088 ?? 66h f Actual src: static PyObject *__pyx_pw_7skimage_5graph_4heap_10BinaryHeap_21__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_7skimage_5graph_4heap_10BinaryHeap_20__reduce_cython__(((struct __pyx_obj_7skimage_5graph_4heap_BinaryHeap *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } Predicted src: static PyObject *__pyx_pw_5uamqp_7c_uamqp_7c_uamqp_7c__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_5uamqp_7c_uamqp_7c_uamqp_7c__setstate_cython__(((struct __pyx_obj_5uamqp_7c_uamqp_c *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; }