============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined mX11ClipboardDestroy() TEST RDI,RDI JZ LAB_00143770 PUSH RBP MOV RBP,RDI MOV RDI,qword ptr [RDI + 0x8] CALL mFree ;undefined mFree() MOV qword ptr [RBP + 0x8],0x0 MOV RDI,qword ptr [RBP + 0x18] CALL mFree ;undefined mFree() MOV qword ptr [RBP + 0x18],0x0 MOV RDI,RBP MOV dword ptr [RBP],0x0 POP RBP JMP mFree ;undefined mFree() ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00143770: RET ?? 66h f Actual src: void mX11ClipboardDestroy(mX11Clipboard *p) { if(p) { mX11ClipboardFreeDat(p); mFree(p); } } Predicted src: void FreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFreeFre ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* Pattern::canBeEmpty(States const&) const * ;************************************************************************************************************************************************************ ;undefined canBeEmpty(Pattern * this, States * param_1) ;this Pattern * RDI ;param_1 States * RSI MOV RAX,this MOV this,param_1 CMP qword ptr [RAX + 0x20],0x0 JZ LAB_0013fdb0 MOV param_1,qword ptr [RAX + 0x10] JMP Pattern::empty ;undefined empty(States * param_1, ul... ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_0013fdb0: MOV EAX,0x1 RET ?? 66h f Actual src: bool Pattern::canBeEmpty(States const &states) const { return (fixedLength() && length() == 0) or empty(states, d_pair.first); } Predicted src: bool operator==(const std::vector::const_ptr::g_log ;undefined g_log() LAB_005cab5e: ADD RSP,0x10 XOR EAX,EAX POP RBX POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_005cab70: MOVSD XMM1,qword ptr [R12 + 0x8] MOVSD XMM0,qword ptr [R12] MOV RDI,RBP ADD RSP,0x10 POP RBX POP RBP POP R12 JMP gimp_brush_core_solidify_mask ;undefined gimp_brush_core_solidify_m... ?? 0Fh ?? 1Fh ?? 00h LAB_005cab90: MOVSD XMM1,qword ptr [R12 + 0x8] MOVSD XMM0,qword ptr [R12] MOV RDI,RBP ADD RSP,0x10 POP RBX POP RBP POP R12 JMP gimp_brush_core_pressurize_mask ;undefined gimp_brush_core_pressurize... ?? 0Fh ?? 1Fh ?? 00h LAB_005cabb0: MOVSD XMM1,qword ptr [R12 + 0x8] MOVSD XMM0,qword ptr [R12] MOV RDI,RBP ADD RSP,0x10 POP RBX POP RBP POP R12 JMP gimp_brush_core_subsample_mask ;undefined gimp_brush_core_subsample_... ?? 0Fh Actual src: const GimpTempBuf * gimp_brush_core_get_brush_mask (GimpBrushCore *core, const GimpCoords *coords, GimpBrushApplicationMode brush_hardness, gdouble dynamic_force) { const GimpTempBuf *mask; if (dynamic_force <= 0.0) return NULL; mask = gimp_brush_core_transform_mask (core, core->brush); if (! mask) return NULL; switch (brush_hardness) { case GIMP_BRUSH_SOFT: return gimp_brush_core_subsample_mask (core, mask, coords->x, coords->y); break; case GIMP_BRUSH_HARD: return gimp_brush_core_solidify_mask (core, mask, coords->x, coords->y); break; case GIMP_BRUSH_PRESSURE: return gimp_brush_core_pressurize_mask (core, mask, coords->x, coords->y, dynamic_force); break; } g_return_val_if_reached (NULL); } Predicted src: static void gimp_image_get_width_width (GimpView *image, gint *width, gint *width) { g_return_if_fail (GIMP_IS_IMAGE (image)); g_return_if_fail (width!= NULL); g_return_if_fail (width!= NULL); g_return_if_fail (width!= NULL); g_return_if_fail (width!= NULL); g_return_if_fail (width!= NULL); g_return_if_fail (width!= NULL); g_return_if_fail (width!= NULL); g_return_if_fail (width!= NULL); g_return_if_fail (width!= NULL); g_return_if_fail (width!= NULL); g_return_if_fail (width!= NULL); g_return_if_fail (width!= NULL); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined notify_announce_offline() PUSH R15 MOV R15,R8 PUSH R14 PUSH R13 MOV R13,RDX PUSH R12 MOV R12D,ECX PUSH RBP MOV RBP,RDI PUSH RBX MOV RBX,RSI SUB RSP,0x8 MOV R14,qword ptr [RDI + 0x2588] AND byte ptr [RSI + 0x28],0xfe XOR EDI,EDI CALL .plt:::time ;time_t time(time_t * __timer) MOV qword ptr [RBX + 0x20],RAX TEST R12D,R12D JZ LAB_00181648 LAB_00181628: MOV RDI,R13 CALL fe_notify_update ;undefined fe_notify_update() ADD RSP,0x8 XOR EDI,EDI POP RBX POP RBP POP R12 POP R13 POP R14 POP R15 JMP fe_notify_update ;undefined fe_notify_update() ?? 0Fh ?? 1Fh ?? 00h LAB_00181648: MOV RBX,qword ptr [R15 + 0x10] MOV ESI,0x1 MOV RDI,RBP CALL server_get_network ;undefined server_get_network() SUB RSP,0x8 MOV RDX,R13 XOR R9D,R9D PUSH RBX MOV R8,RAX LEA RCX,[RBP + 0x1fc] MOV RSI,R14 MOV EDI,0x6b CALL text_emit ;undefined text_emit(undefined param_... POP RAX POP RDX JMP LAB_00181628 ?? 90h Actual src: static void notify_announce_offline (server * serv, struct notify_per_server *servnot, char *nick, int quiet, const message_tags_data *tags_data) { session *sess; sess = serv->front_session; servnot->ison = FALSE; servnot->lastoff = time (0); if (!quiet) EMIT_SIGNAL_TIMESTAMP (XP_TE_NOTIFYOFFLINE, sess, nick, serv->servername, server_get_network (serv, TRUE), NULL, 0, tags_data->timestamp); fe_notify_update (nick); fe_notify_update (0); } Predicted src: static void on_notify_notify_notify(GtkWidget *widget, gpointer user_data) { struct _notify_notify_notify_notify_notify *notify = user_data; struct _notify_notify_notify_notify_notify *notify = user_data; struct _notify_notify_notify_notify_notify_notify *notify = user_data; struct _notify_notify_notify_notify_notify_notify *notify = user_notify; notify_notify_notify_notify_notify_notify_notify_notify_notify_notify_notify_notify_notify_notify_notify_notify_notify_notify_notify_notify_notify_notify(notify_notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notify_notify_notify_notify, notify_notify_notify_notify_notify_notify_notif ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined linphone_account_creator_set_password() ;local_2c undefined4 -2c PUSH R13 LEA R13,[.rodata:s_assistant_00433c4a] ;= "assistant" PUSH R12 PUSH RBP MOV RBP,RSI PUSH RBX MOV RBX,RDI SUB RSP,0x18 MOV RDI,qword ptr [RDI + 0x40] CALL .plt:linphone_core_get_config ;undefined linphone_core_get_config() MOV ECX,0xffffffff LEA RDX,[.rodata:s_password_min_length_00433c88] ;= "password_min_length" MOV RSI=>.rodata:s_assistant_00433c4a,R13 ;= "assistant" MOV RDI,RAX CALL .plt:linphone_config_get_int ;undefined linphone_config_get_int() MOV RDI,qword ptr [RBX + 0x40] MOVSXD R12,EAX CALL .plt:linphone_core_get_config ;undefined linphone_core_get_config() MOV ECX,0xffffffff LEA RDX,[.rodata:s_password_max_length_00433c9c] ;= "password_max_length" MOV RSI=>.rodata:s_assistant_00433c4a,R13 ;= "assistant" MOV RDI,RAX CALL .plt:linphone_config_get_int ;undefined linphone_config_get_int() TEST RBP,RBP JZ LAB_003aeee0 MOVSXD R13,EAX TEST R12D,R12D JLE LAB_003aee8c MOV RDI,RBP CALL .plt:::strlen ;size_t strlen(char * __s) MOV R8,RAX MOV EAX,0x1 CMP R8,R12 JC LAB_003aeed3 LAB_003aee8c: TEST R13D,R13D JLE LAB_003aeea6 MOV RDI,RBP CALL .plt:::strlen ;size_t strlen(char * __s) MOV R8,RAX MOV EAX,0x2 CMP R8,R13 JA LAB_003aeed3 LAB_003aeea6: MOV RDI,qword ptr [RBX + 0x88] TEST RDI,RDI JZ LAB_003aeec2 CALL .plt.got:::ortp_free ;undefined ortp_free() MOV qword ptr [RBX + 0x88],0x0 LAB_003aeec2: MOV RDI,RBP CALL .plt:::ortp_strdup ;undefined ortp_strdup() MOV qword ptr [RBX + 0x88],RAX XOR EAX,EAX LAB_003aeed3: ADD RSP,0x18 POP RBX POP RBP POP R12 POP R13 RET ?? 66h f ?? 90h LAB_003aeee0: MOV RDI,qword ptr [RBX + 0x88] MOV EAX,0x1 TEST RDI,RDI JZ LAB_003aeed3 MOV dword ptr [RSP + local_2c+0x38],EAX CALL .plt.got:::bctbx_free ;undefined bctbx_free() MOV EAX,dword ptr [RSP + local_2c+0x38] MOV qword ptr [RBX + 0x88],0x0 JMP LAB_003aeed3 ?? 0Fh Actual src: LinphoneAccountCreatorPasswordStatus linphone_account_creator_set_password(LinphoneAccountCreator *creator, const char *password) { int min_length = lp_config_get_int(linphone_core_get_config(creator->core), "assistant", "password_min_length", -1); int max_length = lp_config_get_int(linphone_core_get_config(creator->core), "assistant", "password_max_length", -1); if (!password) { resetField(&creator->password); return LinphoneAccountCreatorPasswordStatusTooShort; } if (min_length > 0 && strlen(password) < (size_t)min_length) { return LinphoneAccountCreatorPasswordStatusTooShort; } else if (max_length > 0 && strlen(password) > (size_t)max_length) { return LinphoneAccountCreatorPasswordStatusTooLong; } set_string(&creator->password, password, FALSE); return LinphoneAccountCreatorPasswordStatusOk; } Predicted src: static int back_config_config_set_config_config_length(const char *name, const char *name) { int ret = -1; if (name == NULL) { return -1; } ret = strlen(name); if (ret == NULL) { return -1; } if (name == NULL) { return -1; } if (name[0] == '\0') { return -1; } if (name[0] == '\0') { *name = '\0'; return -1; } if (name[0]!= '\0') { *name = '\0'; return -1; } if (name[0] == '\0') { *name = '\0'; return -1; } return 0; }