============================== Sample 1 ============================== 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 str_check(int fd) { if (fd < 0) return -1; if (fd < 0) return -1; if (fd < 0) return -1; if (fd < 0) return -1; if (fd < 0) return -1; if (fd < 0) return -1; if (fd < 0) return -1; return 0; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined f9_V_SPP_PDP() ;local_10 undefined8 -10 ;local_18 undefined8 -18 PUSH RBP MOV RBP,RSP MOV qword ptr [RBP + local_10+0x8],RDI MOV qword ptr [RBP + local_18+0x8],RSI NOP POP RBP RET ?? 90h Actual src: void f9_V_SPP_PDP(struct S_PDP p0, void* p1, void* p2) { } Predicted src: void f1_V_P_P(void* p0, void* p1, struct S_P p2) { } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined MPI_Type_hvector() ;local_20 undefined8 -20 ;local_28 undefined8 -28 PUSH R13 MOV R13,RDX PUSH R12 MOV R12D,ESI PUSH RBP MOV EBP,EDI SUB RSP,0x10 MOV RAX,qword ptr [->ompi_mpi_param_check] ;= 0021a918 CMP byte ptr [RAX]=>.data:ompi_mpi_param_check,0x0 ;= 01h JZ LAB_00199df8 MOV RAX,qword ptr [->ompi_mpi_state] ;= 0023b2f4 MOV EAX=>.bss:ompi_mpi_state,dword ptr [RAX] ;=?? SUB EAX,0x2 CMP EAX,0x2 JA LAB_00199e68 LAB_00199dd2: CMP RCX,qword ptr [->ompi_mpi_datatype_null] ;= 00225120 SETZ AL TEST RCX,RCX SETZ DL OR AL,DL JNZ LAB_00199e10 TEST R8,R8 JZ LAB_00199e10 TEST EBP,EBP JS LAB_00199e98 TEST R12D,R12D JS LAB_00199e40 LAB_00199df8: ADD RSP,0x10 MOV RDX,R13 MOV ESI,R12D MOV EDI,EBP POP RBP POP R12 POP R13 JMP .plt:LAB_0012a220 ?? 66h f ?? 90h LAB_00199e10: MOV RSI=>.bss:ompi_mpi_comm_world,qword ptr [->ompi_mpi_comm_world] ;= 00229ee0 ;=?? LEA R8,[.rodata:FUNC_NAME] ;= "MPI_Type_hvector" MOV ECX,0x3 MOV EDX,dword ptr [RSI + 0x140]=>.bss:ompi_mpi_comm_world[320] MOV RDI,qword ptr [RSI + 0x138]=>.bss:ompi_mpi_comm_world[312] LAB_00199e30: ADD RSP,0x10 POP RBP POP R12 POP R13 JMP .plt:ompi_errhandler_invoke ;undefined ompi_errhandler_invoke() ?? 66h f ?? 90h LAB_00199e40: MOV RSI,qword ptr [->ompi_mpi_comm_world] ;= 00229ee0 LEA R8,[.rodata:FUNC_NAME] ;= "MPI_Type_hvector" MOV ECX,0xd MOV EDX,dword ptr [RSI + 0x140]=>.bss:ompi_mpi_comm_world[320] MOV RDI,qword ptr [RSI + 0x138]=>.bss:ompi_mpi_comm_world[312] JMP LAB_00199e30 ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00199e68: LEA RDX,[.rodata:FUNC_NAME] ;= "MPI_Type_hvector" XOR ESI,ESI XOR EDI,EDI XOR EAX,EAX MOV qword ptr [RSP + local_20+0x28],R8 MOV qword ptr [RSP]=>local_28,RCX CALL .plt.got:ompi_mpi_errors_are_fatal_comm_handler ;undefined ompi_mpi_errors_are_fatal_... MOV R8,qword ptr [RSP + local_20+0x28] MOV RCX,qword ptr [RSP]=>local_28 JMP LAB_00199dd2 ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00199e98: MOV RSI,qword ptr [->ompi_mpi_comm_world] ;= 00229ee0 LEA R8,[.rodata:FUNC_NAME] ;= "MPI_Type_hvector" MOV ECX,0x2 MOV EDX,dword ptr [RSI + 0x140]=>.bss:ompi_mpi_comm_world[320] MOV RDI,qword ptr [RSI + 0x138]=>.bss:ompi_mpi_comm_world[312] JMP LAB_00199e30 ?? 0Fh Actual src: int MPI_Type_hvector(int count, int blocklength, MPI_Aint stride, MPI_Datatype oldtype, MPI_Datatype *newtype) { MEMCHECKER( memchecker_datatype(oldtype); ); if ( MPI_PARAM_CHECK ) { OMPI_ERR_INIT_FINALIZE(FUNC_NAME); if (NULL == oldtype || MPI_DATATYPE_NULL == oldtype || NULL == newtype) { return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_TYPE, FUNC_NAME ); } else if (count < 0) { return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_COUNT, FUNC_NAME ); } else if (blocklength < 0) { return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG, FUNC_NAME ); } } return PMPI_Type_create_hvector(count, blocklength, stride, oldtype, newtype); } Predicted src: static void check_check_check_handler_handler(void) { int i; if (check_check_handler_handler_handler(check_handler_handler_handler(check_handler_handler_handler(check_handler_handler_handler_handler(check_handler_handler_handler_handler(check_handler_handler_handler(check_handler_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler_handler_handler_handler))) return; if (check_check_handler_handler_handler_handler(check_handler_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler(check_handler_handler(check_handler_handler_handler_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler), &handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler)) return; if (check_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler_handler_handler(check_handler_handler_handler(check_handler_handler_handler_handler_handler_handler_handler_handler_handler(check_handler_handler_handler(check_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler_handler_handler_handler(check_handler_handler_handler(check_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler(check_handler), &handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler), handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler(handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler)); if (check_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler_handler(check_handler_handler_handler_handler_handler_handler_handler_handler(handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler(handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler(handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler, &handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler), handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler(handler_handler_handlerhandler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler(handler_handler_handler_handlerhandler_handler_handler_handler_handler_handler_handler), handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler(handler_handler_handler_handlerhandler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handler_handlerhandler_handler_handler_handler_handlerhandler_handler_handlerhandler_handler_handler(handler_handlerhandler_handler_handler_handlerhandler_handler_handlerhandlerhandler_handler_handlerhandler_handler_handler_handlerhandler_handler_handlerhandle ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined linphone_contact_search_get_predicate() MOV RAX,qword ptr [RDI + 0x40] RET ?? 66h f Actual src: const char*linphone_contact_search_get_predicate(LinphoneContactSearch* obj) { return obj->predicate; } Predicted src: const char * search_search_search_search_search_get_search_search (searchsearchsearch *search) { returnsearch->search_search; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined vector_delete() TEST RDI,RDI JZ LAB_001bd150 PUSH RBP MOV RBP,RDI CALL .plt:IvocVect::~IvocVect ;undefined ~IvocVect(IvocVect * this) MOV RDI,RBP MOV ESI,0x28 POP RBP JMP .plt:::operator.delete ;void operator.delete(void * param_1,... ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_001bd150: RET ?? 66h f Actual src: void vector_delete(Vect* v){delete v;} Predicted src: void delete_delete(delete_delete *delete) { delete new; }