============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* Pattern::canBeEmpty(States const&) const * ;************************************************************************************************************************************************************ ;undefined canBeEmpty(Pattern * this, States * param_1) ;this Pattern * RDI ;param_1 States * RSI MOV RAX,this MOV this,param_1 CMP qword ptr [RAX + 0x20],0x0 JZ LAB_0013fdb0 MOV param_1,qword ptr [RAX + 0x10] JMP Pattern::empty ;undefined empty(States * param_1, ul... ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_0013fdb0: MOV EAX,0x1 RET ?? 66h f Actual src: bool Pattern::canBeEmpty(States const &states) const { return (fixedLength() && length() == 0) or empty(states, d_pair.first); } Predicted src: bool is(const std::string& name) const { if (name!= name) { return true; } return true; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined sigar_nfs_client_v3_get() LEA RDI,[.rodata:s_/proc/net/rpc/nfs_001293f2] ;= "/proc/net/rpc/nfs" JMP sigar_nfs_v3_get ;undefined sigar_nfs_v3_get() ?? 0Fh Actual src: int sigar_nfs_client_v3_get(sigar_t *sigar, sigar_nfs_client_v3_t *nfs) { return sigar_nfs_v3_get(PROC_FS_ROOT "net/rpc/nfs", (sigar_nfs_v3_t *)nfs); } Predicted src: static void get_status(void) { status_status_status(status_status); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;double _nrrdUnaryOpAcos(double __x) ;__x double XMM0_Qa JMP .plt:::acos ?? 66h f Actual src: static double _nrrdUnaryOpAcos(double a) {return acos(a);} Predicted src: static double _cffi_d_d_d_d(double x0, double x1, double x2, double x2) { return x0; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* s_CouldNotLoadFileMessage(XAP_Frame*, char const*, int) * ;************************************************************************************************************************************************************ ;undefined s_CouldNotLoadFileMessage(XAP_Frame * param_1, char * param_2, int param_3) ;param_1 XAP_Frame * RDI ;param_2 char * RSI ;param_3 int EDX ADD param_3,0x137 MOV R8,param_2 MOV param_2,0x3f5 CMP param_3,0xa JA LAB_0010ee9d LEA RAX,[.rodata:CSWTCH.122] MOV param_2,dword ptr [RAX + param_3*0x4]=>.rodata:CSWTCH.122 LAB_0010ee9d: XOR ECX,ECX XOR param_3,param_3 JMP .plt:LAB_0010b670 ?? 66h f Actual src: XAP_Dialog_MessageBox::tAnswer s_CouldNotLoadFileMessage(XAP_Frame * pFrame, const char * pNewFile, UT_Error errorCode) { XAP_String_Id String_id; switch (errorCode) { case -301: String_id = AP_STRING_ID_MSG_IE_FileNotFound; break; case -302: String_id = AP_STRING_ID_MSG_IE_NoMemory; break; case -303: String_id = AP_STRING_ID_MSG_IE_UnsupportedType; //AP_STRING_ID_MSG_IE_UnknownType; break; case -304: String_id = AP_STRING_ID_MSG_IE_BogusDocument; break; case -305: String_id = AP_STRING_ID_MSG_IE_CouldNotOpen; break; case -306: String_id = AP_STRING_ID_MSG_IE_CouldNotWrite; break; case -307: String_id = AP_STRING_ID_MSG_IE_FakeType; break; case -311: String_id = AP_STRING_ID_MSG_IE_UnsupportedType; break; default: String_id = AP_STRING_ID_MSG_ImportError; } return pFrame->showMessageBox(String_id, XAP_Dialog_MessageBox::b_O, XAP_Dialog_MessageBox::a_OK, pNewFile); } Predicted src: void XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined sdl_mixer_init() SUB RSP,0x8 MOVZX EAX,byte ptr [.bss:is_audio_initialized] ;=?? TEST AL,AL JZ LAB_0017987e CMP byte ptr [.bss:audio_open],0x0 ;=?? JZ LAB_0017989d LAB_00179879: ADD RSP,0x8 RET LAB_0017987e: LEA RCX,[.rodata:__PRETTY_FUNCTION__.16] ;= "sdl_mixer_init" MOV EDX,0x2b5 LEA RSI,[.rodata:s_c_utils.c_00253f10] ;= "c_utils.c" LEA RDI,[.rodata:s_is_audio_initialized_00253fd8] ;= "is_audio_initialized" CALL .plt:::__assert_fail ;void __assert_fail(char * __assertio... LAB_0017989d: MOV ECX,0x1000 MOV EDX,0x2 MOV ESI,0x8010 MOV EDI,0xac44 CALL .plt:::Mix_OpenAudio ;undefined Mix_OpenAudio() TEST EAX,EAX JNZ LAB_001798c3 MOV byte ptr [.bss:audio_open],0x1 ;=?? JMP LAB_00179879 LAB_001798c3: MOV byte ptr [.bss:audio_open],0x0 ;=?? LEA RDI,[.rodata:s_Unable_to_open_audio!_00253fed] ;= "Unable to open audio!\r" CALL .plt:::puts ;int puts(char * __s) JMP LAB_00179879 ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined play_mod() PUSH RBP Actual src: void sdl_mixer_init(void) { static const Uint16 audio_format = AUDIO_S16; static const int audio_channels = 2; static const int audio_buffers = 4096; //printf ("sdl_mixer_init called, is_audio_initialized=%d, audio_open=%d\r\n", is_audio_initialized, audio_open); assert (is_audio_initialized); //assert (!audio_open); if (audio_open) /* avoid double initialization */ return; if (Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers)) { audio_open = 0; printf("Unable to open audio!\r\n"); } else { audio_open = 1; } } Predicted src: void init_init (void) { if (is_is_is_is) { if (is_is_is_is_is) { if (is_is_is_is_is_is) { if (is_is_is_is_is_is) { } } else { if (is_is_is_is_is_is) { if (is_is_is_is_is_is) { if (is_is_is_is) { } } else { } } } }