============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined AcpiDbGenerateSci() JMP AcpiEvSciDispatch ?? 66h f Actual src: void AcpiDbGenerateSci ( void) { AcpiEvSciDispatch (); } Predicted src: static void DeleteProc(Widget w, XEvent *event, String *params, Cardinal *num_params, Cardinal *num_params) { (void)w; (void)params; (void)num_params; (void)num_params; (void)num_params; (void)num_params; (void)num_params; (void)num_params; (void)num_params; } ============================== Sample 2 ============================== 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: static void mFree(mWidget *p) { mFree(p); mFree(p); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* strcasestr_len(char const*, int, char const*) * ;************************************************************************************************************************************************************ ;undefined strcasestr_len(char * param_1, int param_2, char * param_3) ;param_1 char * RDI ;param_2 int ESI ;param_3 char * RDX PUSH R15 PUSH R14 MOV R14,param_1 MOV param_1,param_3 PUSH R13 MOV R13,param_3 PUSH R12 PUSH RBP MOVSXD RBP,param_2 PUSH RBX SUB RSP,0x8 CALL .plt:::strlen ;size_t strlen(char * __s) CMP RBP,RAX JL LAB_00135e08 MOV R15,RAX SUB RBP,RAX JS LAB_00135e08 XOR EBX,EBX JMP LAB_00135dd9 LAB_00135dd0: ADD RBX,0x1 CMP RBP,RBX JL LAB_00135e08 LAB_00135dd9: LEA R12,[R14 + RBX*0x1] MOV param_3,R15 MOV param_1,R13 MOV param_2,R12 CALL .plt:::g_ascii_strncasecmp ;undefined g_ascii_strncasecmp() TEST EAX,EAX JNZ LAB_00135dd0 LAB_00135def: ADD RSP,0x8 MOV RAX,R12 POP RBX POP RBP POP R12 POP R13 POP R14 POP R15 RET ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00135e08: XOR R12D,R12D JMP LAB_00135def ?? 0Fh Actual src: char *strcasestr_len(const char *haystack, int haystack_len, const char *needle) { gssize needle_len = (gssize)strlen(needle); int i; if (needle_len > haystack_len) return NULL; i = 0; while (i <= haystack_len - needle_len) { if (g_ascii_strncasecmp(needle, haystack + i, needle_len) == 0) return (char *)haystack + i; i++; } return NULL; } Predicted src: gchar * g_utf8_len (const gchar *str, int len) { gchar *p; int len; len = strlen (str); if (len < 0) return NULL; len = strlen (str); while (len > 0) { p = g_ascii_len (p, len); if (p == NULL) return NULL; } return p; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined get_cursor_from_program() ;local_48 undefined1 -48 ;local_4c undefined4 -4c PUSH R13 PUSH R12 PUSH RBP MOV RBP,RDI PUSH RBX MOV RBX,RSI SUB RSP,0x38 MOV RAX,qword ptr [.bss:cobglobptr] ;=?? MOV RAX,qword ptr [RAX + 0x8] TEST RAX,RAX JZ LAB_001451d8 MOV R12,qword ptr [RAX + 0x48] TEST R12,R12 JZ LAB_001451d8 MOV RAX,qword ptr [R12 + 0x10] TEST byte ptr [RAX],0x10 JNZ LAB_001451f0 MOV R13,qword ptr [R12] MOV EAX,R13D AND EAX,0xfffffffd CMP EAX,0x4 JNZ LAB_00145228 MOV RSI,qword ptr [R12 + 0x8] MOVSXD RDX,R13D LEA RDI=>local_48,[RSP + 0x10] MOV ECX,0x20 ADD R13D,0x1 CALL .plt:::__memcpy_chk ;undefined __memcpy_chk() MOVSXD R13,R13D LEA RDX=>local_4c,[RSP + 0xc] LEA RSI,[.rodata:s_%d_0014e6af+17] ;= "%d" MOV RDI,RAX XOR EAX,EAX MOV byte ptr [RSP + R13*0x1 + 0x10],0x0 CALL .plt:::__isoc99_sscanf ;undefined __isoc99_sscanf() TEST EAX,EAX JZ LAB_00145228 MOV EAX,dword ptr [RSP + local_4c+0x58] CMP qword ptr [R12],0x4 MOVSXD RDX,EAX JZ LAB_00145202 LAB_001451a2: IMUL RDX,RDX,0x10624dd3 MOV ECX,EAX SAR ECX,0x1f SAR RDX,0x26 SUB EDX,ECX LEA ECX,[RDX + -0x1] IMUL EDX,EDX,0x3e8 SUB EAX,EDX SUB EAX,0x1 LAB_001451c2: MOV dword ptr [RBP],ECX MOV dword ptr [RBX],EAX ADD RSP,0x38 POP RBX POP RBP POP R12 POP R13 RET ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001451d8: MOV dword ptr [RBP],0xffffffff MOV dword ptr [RBX],0xffffffff ADD RSP,0x38 POP RBX POP RBP POP R12 POP R13 RET LAB_001451f0: MOV RDI,R12 CALL .plt:cob_get_int ;undefined cob_get_int() CMP qword ptr [R12],0x4 MOVSXD RDX,EAX JNZ LAB_001451a2 LAB_00145202: IMUL RDX,RDX,0x51eb851f MOV ECX,EAX SAR ECX,0x1f SAR RDX,0x25 SUB EDX,ECX LEA ECX,[RDX + -0x1] IMUL EDX,EDX,0x64 SUB EAX,EDX SUB EAX,0x1 JMP LAB_001451c2 ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00145228: MOV EDI,0x3 CALL .plt:cob_fatal_error ;undefined cob_fatal_error() NOP dword ptr CS:[RAX + RAX*0x1] Actual src: static void get_cursor_from_program (int *line, int *column) { if (COB_MODULE_PTR && COB_MODULE_PTR->cursor_pos) { cob_field *cursor_field = COB_MODULE_PTR->cursor_pos; int cursor_pos; if (COB_FIELD_IS_NUMERIC (cursor_field)) { cursor_pos = cob_get_int (cursor_field); } else { char buff[32]; int maxsize = cursor_field->size; /* LCOV_EXCL_START */ if (unlikely (maxsize!= 4 && maxsize!= 6)) { cob_fatal_error (COB_FERROR_CODEGEN); } /* LCOV_EXCL_STOP */ memcpy (buff, cursor_field->data, maxsize); buff[maxsize + 1] = 0; if (unlikely (!sscanf (buff, "%d", &cursor_pos))) { cob_fatal_error (COB_FERROR_CODEGEN); } } if (cursor_field->size == 4) { *line = (cursor_pos / 100) - 1; *column = (cursor_pos % 100) - 1; } else { *line = (cursor_pos / 1000) - 1; *column = (cursor_pos % 1000) - 1; } } else { *column = *line = -1; } } Predicted src: static int get_cursor(int argc, char **argv) { char **argv; int ret; int ret; if (!argv[0]) return -1; argv[0] = argv[0]; argv[1] = argv[1]; argv[2] = argv[2]; argv[3] = argv[3]; argv[4] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5] = argv[5]; argv[5] = argv[5]; argv[5] = argv[5] = argv[5]; argv[5] = argv[5] = argv[5]; argv[5] = arg ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* ResourceManager::downloadLicenseFinished() * ;************************************************************************************************************************************************************ ;undefined downloadLicenseFinished(ResourceManager * this) ;this ResourceMan... RDI LEA RAX,[.bss:ScQApp] ;=?? MOV RDX,this LEA RCX,[.rodata:s_1downloadLicenseFinished()_00f70b32] ;= "1downloadLicenseFinished()" LEA RSI,[.rodata:s_2finished()_00f3e05a] ;= "2finished()" MOV RAX=>.bss:ScQApp,qword ptr [RAX] ;=?? MOV this,qword ptr [RAX + 0x68] JMP .plt:::QObject::disconnect ;undefined disconnect(QObject * param... ?? 66h f Actual src: void ResourceManager::downloadLicenseFinished() { disconnect(ScQApp->dlManager(), SIGNAL(finished()), this, SLOT(downloadLicenseFinished())); } Predicted src: void QtManager::disconnect() { d->disconnect(); }