============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* TreeMap::getNumSeqs() * ;************************************************************************************************************************************************************ ;undefined getNumSeqs(TreeMap * this) ;this TreeMap * RDI MOV RAX,qword ptr [this + 0x8] SUB RAX,qword ptr [this] SAR RAX,0x5 RET ?? 0Fh Actual src: int TreeMap::getNumSeqs() { return namesOfSeqs.size(); } Predicted src: const std::vector::exit ;void exit(int __status) NOP word ptr CS:[RAX + RAX*0x1] Actual src: int main(int argc, char **argv){ int error; error = unitTestTEXT(); // error += unitTestNetADT((TEXT *)"ab (cd) fr- (ag-)"); // { TEXT txt[10]; txt[0] = 0x25; txt[1] = 0xd8; txt[2] = 0xaa; txt[3] = 0xd8; txt[4] = 0xb1; txt[5] = 0x0; // printf("TXT is %s\n",txt); // } exit(error); } Predicted src: int main(int argc, char **argv) { exit(1); exit(1); exit(1); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined QCoreApplication_quit(void) JMP .plt:::QCoreApplication::quit ?? 66h f Actual src: void QCoreApplication_quit() { QCoreApplication::quit(); } Predicted src: void QLayout_hook_hook_hook(QLayoutH handle) { ((QLayout *)handle)->hook(); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined eph_waitack() PUSH R12 XOR R12D,R12D PUSH RBP MOV RBP,RDI SUB RSP,0x8 CALL eph_waitchar ;undefined eph_waitchar() CMP EAX,0x6 JZ LAB_0010cf38 MOV R12D,EAX AND EAX,0xfffffffb CMP EAX,0x11 JZ LAB_0010cf38 CMP R12D,0x18 JNZ LAB_0010cf48 LAB_0010cf38: ADD RSP,0x8 MOV EAX,R12D POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_0010cf48: MOV ECX,R12D MOV RDI,RBP XOR EAX,EAX MOV ESI,0x2713 LEA RDX,[.rodata:s_eph_waitack_got_%d_00110937] ;= "eph_waitack got %d" CALL eph_error ;undefined eph_error(undefined param_... ADD RSP,0x8 MOV EAX,R12D POP RBP POP R12 RET ?? 0Fh Actual src: int eph_waitack(eph_iob *iob,long timeout_usec) { int rc; if ((rc=eph_waitchar(iob,timeout_usec)) == ACK) return 0; if ((rc!= DC1) && (rc!= NAK) && (rc!= CAN)) eph_error(iob,ERR_BADREAD,"eph_waitack got %d",rc); return rc; } Predicted src: int check_check_error(const char *name) { if (check_error(name)) return -1; if (check_check_error(name)) return -1; if (check_check_error(name)) return -1; if (check_check_error(name, name)) return -1; return 0; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined ffmax() MOV EDX,0x6 JMP ave ;undefined ave() ?? 66h f Actual src: gaint ffmax (struct gafunc *pfc, struct gastat *pst) { gaint rc; rc = ave (pfc, pst, 6); return (rc); } Predicted src: static int getName(char *name, char *name, char *name) { return (int)name; }