============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined lex_get_error(undefined param_1, undefined param_2, undefined param_3, undefined param_4, undefined param_5, undefined param_6, undefined1 param_7) ;param_1 undefined DIL ;param_2 undefined SIL ;param_3 undefined DL ;param_4 undefined CL ;param_5 undefined R8B ;param_6 undefined R9B ;param_7 undefined1 8 ;local_18 undefined1[16] -18 ;local_28 undefined1[16] -28 ;local_38 undefined1[16] -38 ;local_48 undefined1[16] -48 ;local_58 undefined1[16] -58 ;local_68 undefined1[16] -68 ;local_78 undefined1[16] -78 ;local_88 undefined1[16] -88 ;local_90 undefined8 -90 ;local_98 undefined8 -98 ;local_a0 undefined8 -a0 ;local_a8 undefined8 -a8 ;local_b8 undefined1 -b8 ;local_c0 undefined8 -c0 ;local_c8 undefined8 -c8 ;local_d0 undefined8 -d0 ;local_d4 undefined4 -d4 ;local_d8 undefined4 -d8 PUSH RBP MOV R10,param_2 MOV RBP,param_1 SUB RSP,0xd0 MOV qword ptr [RSP + local_a8+0xd8],param_3 MOV qword ptr [RSP + local_a0+0xd8],param_4 MOV qword ptr [RSP + local_98+0xd8],param_5 MOV qword ptr [RSP + local_90+0xd8],param_6 TEST AL,AL JZ LAB_0014aefd MOVAPS xmmword ptr [RSP + local_88[0]+0xd8],XMM0 MOVAPS xmmword ptr [RSP + local_78[0]+0xd8],XMM1 MOVAPS xmmword ptr [RSP + local_68[0]+0xd8],XMM2 MOVAPS xmmword ptr [RSP + local_58[0]+0xd8],XMM3 MOVAPS xmmword ptr [RSP + local_48[0]+0xd8],XMM4 MOVAPS xmmword ptr [RSP + local_38[0]+0xd8],XMM5 MOVAPS xmmword ptr [RSP + local_28[0]+0xd8],XMM6 MOVAPS xmmword ptr [RSP + local_18[0]+0xd8],XMM7 LAB_0014aefd: MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_c0+0xd8],RAX XOR EAX,EAX LEA RAX=>param_7,[RSP + 0xe0] MOV param_1,RBP MOV param_5,RSP MOV qword ptr [RSP + local_d0+0xd8],RAX LEA RAX=>local_b8,[RSP + 0x20] MOV param_4,R10 MOV qword ptr [RSP + local_c8+0xd8],RAX MOV RAX,qword ptr [RBP + 0x68] SUB RAX,qword ptr [RBP + 0x70] MOV dword ptr [RSP]=>local_d8,0x10 LEA param_2,[RAX + -0x1] MOV dword ptr [RSP + local_d4+0xd8],0x30 MOV param_3,param_2 CALL lex_source_error_valist ;undefined lex_source_error_valist() MOV param_1,RBP CALL lex_source_pop_front ;undefined lex_source_pop_front() MOV RAX,qword ptr [RSP + local_c0+0xd8] SUB RAX,qword ptr FS:[0x28] JNZ LAB_0014af6f ADD RSP,0xd0 POP RBP RET LAB_0014af6f: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() NOP dword ptr CS:[RAX + RAX*0x1] Actual src: static void PRINTF_FORMAT (2, 3) lex_get_error (struct lex_source *src, const char *format,...) { va_list args; int n; va_start (args, format); n = deque_count (&src->deque) - 1; lex_source_error_valist (src, n, n, format, args); lex_source_pop_front (src); va_end (args); } Predicted src: void pop_source_pop_error (const char *format,...) { va_list args; va_start (args, format); pop_source_pop_error (format, args); va_end (args); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined LzmaEnc_SetProps() ;local_10 undefined8 -10 ;local_18 undefined8 -18 ;local_28 undefined1[16] -28 ;local_38 undefined1[16] -38 ; 00128944 ;local_48 undefined1[16] -48 PUSH RBX MOV RBX,RDI SUB RSP,0x40 MOVDQU XMM0,xmmword ptr [RSI] MOVDQU XMM1,xmmword ptr [RSI + 0x10] MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_10+0x48],RAX XOR EAX,EAX MOVDQU XMM2,xmmword ptr [RSI + 0x20] MOV RAX,qword ptr [RSI + 0x30] MOV RDI,RSP MOVAPS xmmword ptr [RSP]=>local_48,XMM0 MOV qword ptr [RSP + local_18+0x48],RAX MOVAPS xmmword ptr [RSP + local_38[0]+0x48],XMM1 MOVAPS xmmword ptr [RSP + local_28[0]+0x48],XMM2 CALL LzmaEncProps_Normalize ;undefined LzmaEncProps_Normalize() CMP dword ptr [RSP + local_38[0]+0x48],0x8 MOV EAX,0x5 JG LAB_001289d0 CMP dword ptr [RSP + local_38[4]+0x48],0x4 MOV RSI,qword ptr [RSP + local_38[0]+0x48] JG LAB_001289d0 MOV EDX,dword ptr [RSP + local_38[8]+0x48] CMP EDX,0x4 JG LAB_001289d0 MOV ECX,dword ptr [RSP + local_48[4]+0x48] CMP ECX,0x60000000 JA LAB_001289d0 MOV EAX,dword ptr [RSP + local_28[0]+0x48] MOV dword ptr [RBX + 0xac],ECX MOV ECX,0x111 MOV dword ptr [RBX + 0x68],EDX MOV EDX,dword ptr [RSP + local_38[12]+0x48] CMP EAX,ECX MOV qword ptr [RBX + 0x60],RSI CMOVA EAX,ECX MOV ECX,0x5 CMP EAX,ECX CMOVC EAX,ECX MOV ECX,dword ptr [RSP + local_28[4]+0x48] MOV dword ptr [RBX + 0x44],EAX XOR EAX,EAX TEST EDX,EDX SETZ AL MOV dword ptr [RBX + 0x80],EAX TEST ECX,ECX JZ LAB_00128998 MOV EDX,dword ptr [RSP + local_28[8]+0x48] MOV byte ptr [RBX + 0x701],0x1 MOV EAX,0x2 CMP EDX,0x1 JLE LAB_001289a4 CMP EDX,0x3 MOV EAX,0x4 CMOVLE EAX,EDX JMP LAB_001289a4 ?? 0Fh ?? 1Fh ?? 00h LAB_00128998: MOV byte ptr [RBX + 0x701],0x0 MOV EAX,0x4 LAB_001289a4: MOV dword ptr [RBX + 0x73c],EAX MOV EAX,dword ptr [RSP + local_28[12]+0x48] MOV dword ptr [RBX + 0x71c],EAX MOV EAX,dword ptr [RSP + local_18+0x48] MOV dword ptr [RBX + 0x84],EAX XOR EAX,EAX CMP dword ptr [RSP + local_18+0x4c],0x1 SETG AL MOV dword ptr [RBX + 0x8c],EAX XOR EAX,EAX LAB_001289d0: MOV RDX,qword ptr [RSP + local_10+0x48] SUB RDX,qword ptr FS:[0x28] JNZ LAB_001289e6 ADD RSP,0x40 POP RBX RET LAB_001289e6: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() NOP dword ptr [RAX + RAX*0x1] Actual src: SRes LzmaEnc_SetProps(CLzmaEncHandle pp, const CLzmaEncProps *props2) { CLzmaEnc *p = (CLzmaEnc *)pp; CLzmaEncProps props = *props2; LzmaEncProps_Normalize(&props); if (props.lc > LZMA_LC_MAX || props.lp > LZMA_LP_MAX || props.pb > LZMA_PB_MAX || props.dictSize > ((UInt64)1 << kDicLogSizeMaxCompress) || props.dictSize > kMaxHistorySize) return SZ_ERROR_PARAM; p->dictSize = props.dictSize; { unsigned fb = props.fb; if (fb < 5) fb = 5; if (fb > LZMA_MATCH_LEN_MAX) fb = LZMA_MATCH_LEN_MAX; p->numFastBytes = fb; } p->lc = props.lc; p->lp = props.lp; p->pb = props.pb; p->fastMode = (props.algo == 0); p->matchFinderBase.btMode = (Byte)(props.btMode? 1 : 0); { UInt32 numHashBytes = 4; if (props.btMode) { if (props.numHashBytes < 2) numHashBytes = 2; else if (props.numHashBytes < 4) numHashBytes = props.numHashBytes; } p->matchFinderBase.numHashBytes = numHashBytes; } p->matchFinderBase.cutValue = props.mc; p->writeEndMark = props.writeEndMark; #ifndef _7ZIP_ST /* if (newMultiThread!= _multiThread) { ReleaseMatchFinder(); _multiThread = newMultiThread; } */ p->multiThread = (props.numThreads > 1); #endif return SZ_OK; } Predicted src: int __pmSet_Set_Set(pmSet *pm, const char *buf, int len) { pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm->pm; pmSet *pm =pm->pm; pmSet *pm =pm->pm->pm; pmSet *pm =pm->pm->pm; pmSet *pm =pm->pm->pm; pmSet *pm =pm->pm->pm; pmSet *pm =pm->pm->pm; pmSet *pm =pm->pm->pm; pmSet *pm =pm->pm->pm; pmSet *pm =pm->pm->pm; pmSet *pm =pm->pm->pm; pmSet *pm =pm->pm->pm; pm->pm->pm =pm->pm->pm; pm->pm->pm =pm->pm->pm; pm->pm->pm->pm =pm->pm->pm->pm; pm->pm->pm->pm =pm->pm->pm->pm->pm->pm; pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->pm->p ============================== Sample 3 ============================== 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 QmlManager::disconnect() { d->disconnect(); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* ExecutiveRebuildAllObjectDist(PyMOLGlobals*) * ;************************************************************************************************************************************************************ ;undefined ExecutiveRebuildAllObjectDist(PyMOLGlobals * param_1) ;param_1 PyMOLGlobals * RDI PUSH R12 PUSH RBP MOV RBP,param_1 PUSH RBX MOV R12,qword ptr [param_1 + 0xd8] MOV RBX,qword ptr [R12 + 0x58] TEST RBX,RBX JZ LAB_0049328f NOP dword ptr [RAX + RAX*0x1] LAB_00493270: MOV EAX,dword ptr [RBX] TEST EAX,EAX JNZ LAB_00493283 MOV param_1,qword ptr [RBX + 0x108] CMP dword ptr [param_1 + 0x10],0x4 JZ LAB_004932a0 LAB_00493283: MOV RBX,qword ptr [RBX + 0x110] TEST RBX,RBX JNZ LAB_00493270 LAB_0049328f: POP RBX MOV param_1,RBP POP RBP POP R12 JMP SceneInvalidate ;undefined SceneInvalidate(PyMOLGloba... ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_004932a0: MOV ESI,0xffffffff CALL ObjectDistInvalidateRep ;undefined ObjectDistInvalidateRep(Ob... CMP qword ptr [R12 + 0x58],0x0 JNZ LAB_00493283 POP RBX MOV param_1,RBP POP RBP POP R12 JMP SceneInvalidate ;undefined SceneInvalidate(PyMOLGloba... ?? 66h f Actual src: void ExecutiveRebuildAllObjectDist(PyMOLGlobals * G) { CExecutive *I = G->Executive; SpecRec *rec = NULL; while(ListIterate(I->Spec, rec, next)) { if(rec->type == cExecObject) { if(rec->obj->type == cObjectMeasurement) { ObjectDistInvalidateRep((ObjectDist *) rec->obj, cRepAll); } } } SceneInvalidate(G); } Predicted src: void DeleteObject(Object *object) { int i; for (i = 0; i < object->count; i++) { if (object->data[i]!= NULL) continue; for (i = 0; i < object->count; i++) { if (object->data[i]!= NULL) { DeleteObject(object->data[i]); object->data[i] = NULL; } } } } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined Ligature_find_N() LEA EAX,[RDI + -0x132] CMP EAX,0x11044 JA LAB_001ce84d PUSH RBX MOV EBX,EDI CMP EDI,0xffff JBE LAB_001ce7f0 CMP EDI,0x10f26 JBE LAB_001ce7cc MOV ECX,0x3 XOR ESI,ESI LEA RDI,[.rodata:ligature32] NOP word ptr [RAX + RAX*0x1] LAB_001ce7a8: CMP RCX,RSI JBE LAB_001ce7cc LAB_001ce7ad: LEA RDX,[RCX + RSI*0x1] SHR RDX,1 LEA RAX,[RDX*0x4] ; FWD[2,0]: 0045e44c,0045e450 CMP dword ptr [RDI + RDX*0x4]=>.rodata:ligature32[4],EBX JA LAB_001ce7d8 JZ LAB_001ce7e0 LEA RSI,[RDX + 0x1] CMP RCX,RSI JA LAB_001ce7ad LAB_001ce7cc: MOV EAX,0xffffffff POP RBX RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001ce7d8: MOV RCX,RDX JMP LAB_001ce7a8 ?? 0Fh ?? 1Fh ?? 00h LAB_001ce7e0: SAR RAX,0x2 POP RBX ADD EAX,0x1ff RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001ce7f0: CALL .plt:ffUnicodeUtype ;undefined ffUnicodeUtype() TEST EAX,0x20000000 JZ LAB_001ce7cc MOV R8D,EBX MOV ECX,0x1ff XOR ESI,ESI LEA RDI,[.rodata:ligature16] CMP EBX,0xfefc JA LAB_001ce7cc NOP dword ptr [RAX] LAB_001ce818: CMP RCX,RSI JBE LAB_001ce7cc LAB_001ce81d: LEA RAX,[RCX + RSI*0x1] MOV RDX,RAX AND RAX,-0x2 SHR RDX,1 ; FWD[2,0]: 0045e65e,0045e75e CMP R8W,word ptr [RDI + RDX*0x2]=>.rodata:ligature16[510] JC LAB_001ce840 JZ LAB_001ce848 LEA RSI,[RDX + 0x1] CMP RCX,RSI JA LAB_001ce81d JMP LAB_001ce7cc ?? 90h LAB_001ce840: MOV RCX,RDX JMP LAB_001ce818 ?? 0Fh ?? 1Fh ?? 00h LAB_001ce848: SAR RAX,1 POP RBX RET LAB_001ce84d: MOV EAX,0xffffffff RET ?? 66h f Actual src: int Ligature_find_N(uint32 uCode) { uint16 uCode16, *p16; uint32 *p32; int n=-1; if ( uCode < FF_ligature16FIRST || uCode > FF_ligature32LAST || \ ((uCode < FF_UTYPE_MAXC) && (isligorfrac(uCode)==0)) ) return( -1 ); if ( uCode <= FF_ligature16LAST ) { uCode16 = uCode; p16 = (uint16 *)(bsearch(&uCode16, ligature16, FF_ligatureTOTAL16, \ sizeof(uint16), compare_codepoints16)); if ( p16 ) n = p16 - ligature16; } else if ( uCode >= FF_ligature32FIRST ) { p32 = (uint32 *)(bsearch(&uCode, ligature32, FF_ligatureTOTAL32, \ sizeof(uint32), compare_codepoints32)); if ( p32 ) n = p32 - ligature32 + FF_ligatureTOTAL16; } return( n ); } Predicted src: int find_int16(const char *s, int16_t n) { int16_t i; for (i = 0; i < n; i++) { if ((s[i] & (1 << i))) return i; } return -1; }