============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined acb_poly_validate_real_roots() MOV RCX,RDX MOV RDX,qword ptr [RSI + 0x8] MOV RSI,qword ptr [RSI] JMP .plt:LAB_0013a6d0 ?? 90h Actual src: int acb_poly_validate_real_roots(acb_srcptr roots, const acb_poly_t poly, slong prec) { return _acb_poly_validate_real_roots(roots, poly->coeffs, poly->length, prec); } Predicted src: void fmpz_poly_poly_poly_real_poly(fmpz_poly_poly_t poly1, const fmpz_poly_poly_t poly2, const fmpz_poly_poly_t poly2) { _fmpz_poly_poly_poly_poly_poly(poly1, poly2, poly2, poly2, poly2); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined pv_label() ;local_10 undefined8 -10 ;local_20 undefined8 -20 PUSH RBP MOV RBP,RSP SUB RSP,0x20 MOV qword ptr [RBP + local_20+0x8],RDI MOV RAX,qword ptr [RBP + local_20+0x8] MOV RCX,qword ptr [RAX + 0x40] MOV RAX,qword ptr [RBP + local_20+0x8] MOV EDX,0x0 MOV RSI,RCX MOV RDI,RAX CALL lvmcache_info_from_pvid ;undefined lvmcache_info_from_pvid() MOV qword ptr [RBP + local_10+0x8],RAX CMP qword ptr [RBP + local_10+0x8],0x0 JZ LAB_0023faa5 MOV RAX,qword ptr [RBP + local_10+0x8] MOV RDI,RAX CALL lvmcache_get_label ;undefined lvmcache_get_label() JMP LAB_0023fb04 LAB_0023faa5: MOV RAX,qword ptr [RBP + local_20+0x8] MOV RAX,qword ptr [RAX + 0x88] TEST RAX,RAX JZ LAB_0023faff MOV RAX,qword ptr [RBP + local_20+0x8] MOV RAX,qword ptr [RAX + 0x40] TEST RAX,RAX JZ LAB_0023faff MOV RAX,qword ptr [RBP + local_20+0x8] MOV RAX,qword ptr [RAX + 0x40] MOV RDI,RAX CALL dev_name ;undefined dev_name() MOV R9,RAX LEA R8,[.rodata:s_Internal_error:_PV_%s_unexpected_0033ccc0] ;= "Internal error: PV %s unexpectedl... MOV ECX,0xffffffff MOV EDX,0x19f LEA RAX,[.rodata:s_metadata/pv.c_0033cc56] ;= "metadata/pv.c" MOV RSI=>.rodata:s_metadata/pv.c_0033cc56,RAX ;= "metadata/pv.c" MOV EDI,0x3 MOV EAX,0x0 CALL print_log ;undefined print_log(undefined param_... LAB_0023faff: MOV EAX,0x0 LAB_0023fb04: LEAVE RET ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined _add_pe_range() ;local_10 undefined8 -10 ;local_20 undefined8 -20 ;local_28 undefined8 -28 ;local_30 undefined8 -30 ;local_34 undefined4 -34 ;local_38 undefined4 -38 PUSH RBP Actual src: struct label *pv_label(const struct physical_volume *pv) { struct lvmcache_info *info = lvmcache_info_from_pvid((const char *)&pv->id.uuid, pv->dev, 0); if (info) return lvmcache_get_label(info); /* process_each_pv() may create dummy PVs that have no label */ if (pv->vg && pv->dev) log_error(INTERNAL_ERROR "PV %s unexpectedly not in cache.", dev_name(pv->dev)); return NULL; } Predicted src: static void add_label_info(const char *name, const char *name) { if (!name) return; if (name == NULL) return; label_add_label(name, name); label_add_label(name, name); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined ltks_rsp() SUB RSP,0x8 TEST DIL,DIL JZ LAB_001105b8 MOVZX ESI,DIL LEA RDX,[.rodata:s__00131096] ;= "" CMP DIL,0x15 JA LAB_00110598 MOVSXD RAX,ESI LEA RDX,[.data.rel.ro:mgmt_status] MOV RDX=>.data.rel.ro:mgmt_status,qword ptr [RDX + RAX*0x8] LAB_00110598: LEA RDI,[.rodata:DAT_00133660] ;= 01h XOR EAX,EAX CALL bt_shell_printf ;undefined bt_shell_printf(undefined... XOR EDI,EDI ADD RSP,0x8 JMP bt_shell_noninteractive_quit ;undefined bt_shell_noninteractive_qu... ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_001105b8: LEA RDI,[.rodata:s_Long_term_keys_successfully_load_001336a0] ;= "Long term keys successfully loade... XOR EAX,EAX CALL bt_shell_printf ;undefined bt_shell_printf(undefined... XOR EDI,EDI ADD RSP,0x8 JMP bt_shell_noninteractive_quit ;undefined bt_shell_noninteractive_qu... ?? 66h f Actual src: static void ltks_rsp(uint8_t status, uint16_t len, const void *param, void *user_data) { if (status!= 0) error("Load keys failed with status 0x%02x (%s)", status, mgmt_errstr(status)); else print("Long term keys successfully loaded"); bt_shell_noninteractive_quit(EXIT_SUCCESS); } Predicted src: static void status_status_cb (int argc, char **argv) { if (argc!= 2) { if (status_status_status_status (argc, "status_status_status")) status_status_status_status (argc, argv); } else { if (status_status_status_status (argc, "status_status")) status_status_status_status (argc, "status_status_status_status"); } } ============================== 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 gboolean g_entry_init_count (gpointer self) { gboolean result; result = G_TYPE_CHECK_INSTANCE_CAST (self, G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_ENTRY), FALSE); return result; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined newtScrollbarSet() PUSH R12 MOV ECX,EDX PUSH RBP MOV RBP,RDI PUSH RBX MOV R12,qword ptr [RDI + 0x40] MOV EBX,dword ptr [RDI] MOV EAX,dword ptr [R12 + 0xc] TEST EAX,EAX JZ LAB_00109170 SUB EBX,0x3 IMUL EBX,ESI TEST EDX,EDX JNZ LAB_001091b0 LAB_00109162: ADD EBX,0x1 LAB_00109165: CMP dword ptr [R12],EBX JNZ LAB_00109187 LAB_0010916b: POP RBX POP RBP POP R12 RET LAB_00109170: SUB EBX,0x1 IMUL EBX,ESI TEST EDX,EDX JZ LAB_00109165 MOV EAX,EBX CDQ IDIV ECX MOV EBX,EAX CMP dword ptr [R12],EBX JZ LAB_0010916b LAB_00109187: MOV RDI,RBP XOR ESI,ESI CALL sbDrawThumb ;undefined sbDrawThumb() MOV dword ptr [R12],EBX MOV RDI,RBP POP RBX MOV ESI,0x1 POP RBP POP R12 JMP sbDrawThumb ;undefined sbDrawThumb() ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_001091b0: MOV EAX,EBX CDQ IDIV ECX MOV EBX,EAX JMP LAB_00109162 ?? 0Fh Actual src: void newtScrollbarSet(newtComponent co, int where, int total) { struct scrollbar * sb = co->data; int new; if (sb->arrows) new = (where * (co->height - 3)) / (total? total : 1) + 1; else new = (where * (co->height - 1)) / (total? total : 1); if (new!= sb->curr) { sbDrawThumb(co, 0); sb->curr = new; sbDrawThumb(co, 1); } } Predicted src: void SetDrawDrawDrawDrawDrawDraw(DrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDrawDra