============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined hdy_gtk_window_toggle_maximized() PUSH RBP MOV RBP,RDI CALL .plt:::gtk_window_is_maximized ;undefined gtk_window_is_maximized() MOV RDI,RBP TEST EAX,EAX JZ LAB_00114a20 POP RBP JMP .plt:LAB_00111140 ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00114a20: POP RBP JMP .plt:LAB_00111ce0 ?? 66h f Actual src: void hdy_gtk_window_toggle_maximized (GtkWindow *window) { if (gtk_window_is_maximized (window)) gtk_window_unmaximize (window); else gtk_window_maximize (window); } Predicted src: void gtk_window_is_visible (GtkWidget *widget) { if (gtk_window_is_visible (widget)) gtk_window_is_visible (widget); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* ClpSolve::setSpecialOption(int, int, int) * ;************************************************************************************************************************************************************ ;undefined setSpecialOption(ClpSolve * this, int param_1, int param_2, int param_3) ;this ClpSolve * RDI ;param_1 int ESI ;param_2 int EDX ;param_3 int ECX MOVSXD param_1,param_1 MOV dword ptr [this + param_1*0x4 + 0xc],param_2 MOV dword ptr [this + param_1*0x4 + 0x28],param_3 RET ?? 0Fh Actual src: void ClpSolve::setSpecialOption(int which, int value, int extraInfo) { options_[which] = value; extraInfo_[which] = extraInfo; } Predicted src: void setOptionOption(int i, int i, int i) { i[i] = i; i[i] = i; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* CL_CommandLine_Generic::next() * ;************************************************************************************************************************************************************ ;undefined next(CL_CommandLine_Generic * this) ;this CL_CommandL... RDI MOV RDX,qword ptr [this + 0x48] MOV RAX,qword ptr [this + 0x58] CMP RAX,RDX JZ LAB_0014f790 ADD RAX,0x28 CMP RDX,RAX MOV qword ptr [this + 0x58],RAX SETNZ AL RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_0014f790: MOV RDX,qword ptr [this + 0x40] CMP RAX,RDX MOV qword ptr [this + 0x58],RDX SETNZ AL RET ?? 90h Actual src: bool CL_CommandLine_Generic::next() { if (current_option == parsed_options.end()) { (current_option = parsed_options.begin()); return current_option!= parsed_options.end(); } else { return (++current_option)!= parsed_options.end(); } } Predicted src: bool Command::next_next_next() { if (next_ == NULL) return false; return true; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined sidebar_init_entry() ;local_20 undefined8 -20 ;local_28 undefined8 -28 PUSH R12 PUSH RBP SUB RSP,0x18 MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_20+0x28],RAX XOR EAX,EAX MOV EAX,dword ptr [.bss:sidebar__unit_init_count] MOV qword ptr [RSP]=>local_28,0x0 LEA EDX,[RAX + 0x1] MOV dword ptr [.bss:sidebar__unit_init_count],EDX TEST EAX,EAX JZ LAB_003dc170 LAB_003dc152: MOV RAX,qword ptr [RSP + local_20+0x28] SUB RAX,qword ptr FS:[0x28] JNZ LAB_003dc1ab ADD RSP,0x18 POP RBP POP R12 RET ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_003dc170: MOV R12,RSP MOV RBP,RDI MOV RDI,R12 CALL unit_init_entry ;undefined unit_init_entry() MOV RSI,qword ptr [RSP]=>local_28 TEST RSI,RSI JZ LAB_003dc198 LAB_003dc187: MOV RDI,RBP CALL .plt:::g_propagate_error ;undefined g_propagate_error() JMP LAB_003dc152 ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_003dc198: MOV RDI,R12 CALL sidebar_init ;undefined sidebar_init() MOV RSI,qword ptr [RSP]=>local_28 TEST RSI,RSI JNZ LAB_003dc187 JMP LAB_003dc152 LAB_003dc1ab: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined sidebar_terminate_entry() MOV EAX,dword ptr [.bss:sidebar__unit_init_count] Actual src: void sidebar_init_entry (GError** error) { gint _tmp0_; GError* _inner_error0_ = NULL; _tmp0_ = sidebar__unit_init_count; sidebar__unit_init_count = _tmp0_ + 1; if (_tmp0_!= 0) { return; } unit_init_entry (&_inner_error0_); if (G_UNLIKELY (_inner_error0_!= NULL)) { g_propagate_error (error, _inner_error0_); return; } sidebar_init (&_inner_error0_); if (G_UNLIKELY (_inner_error0_!= NULL)) { g_propagate_error (error, _inner_error0_); return; } } Predicted src: static void g_error_init (G_GNUC_UNUSED gpointer self) { gboolean _tmp0_ = FALSE; g_return_if_fail (G_IS_FILE (self)); _tmp0_ = _tmp0_; if (_tmp1_!= NULL) { _tmp2_ = _tmp2_; _tmp3_ = _tmp3_; } else { _tmp4_ = FALSE; } if (_tmp4_!= NULL) { if (_tmp4_!= NULL) { _tmp5_ = TRUE; } else { _tmp5_ = TRUE; } } } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined gth_tag_new_loop() PUSH RBX MOV RBX,RDI MOV EDI,0x18 CALL .plt:::g_malloc0 ;undefined g_malloc0() MOV EDX,dword ptr [RBX] MOV qword ptr [RAX + 0x8],RBX MOV dword ptr [RAX],EDX POP RBX RET ?? 0Fh Actual src: GthTag * gth_tag_new_loop (GthLoop *loop) { GthTag *tag; tag = g_new0 (GthTag, 1); tag->type = loop->type; if (loop->type == GTH_TAG_FOR_EACH_IN_RANGE) tag->value.range_loop = (GthRangeLoop *) loop; else tag->value.loop = loop; return tag; } Predicted src: void gth_tag_new (Gthtag *tag) { tag->priv = g_new0 (Gthtag, 1); tag->priv->tag = NULL; }