============================== Sample 1 ============================== 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 X_X_X_X_X_X_X_X_X_X_XX_X_XX_XX_XX_XX_XX_XXX_XX_XXX_XXXX_XXX_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined fcml_tf_env_memory_alloc_handler_counter() ADD dword ptr [.bss:counter],0x1 JMP qword ptr [.bss:default_alloc] ?? 0Fh Actual src: fcml_ptr fcml_tf_env_memory_alloc_handler_counter( fcml_usize size ) { counter += 1; return default_alloc( size ); } Predicted src: void alloc_handler_handler(void) { alloc_handler = 1; alloc_handler = 1; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* Mus_IsPlaying() * ;************************************************************************************************************************************************************ ;undefined Mus_IsPlaying(void) SUB RSP,0x8 CALL App_AudioSystem ;undefined App_AudioSystem(void) ADD RSP,0x8 MOV RDI,RAX JMP AudioSystem::musicIsPlaying ;undefined musicIsPlaying(AudioSystem... ?? 66h f Actual src: bool Mus_IsPlaying() { #ifdef __CLIENT__ return App_AudioSystem().musicIsPlaying(); #else return false; #endif } Predicted src: void Is_Is_Is_Is() { Is_Is_Is_Is_Is_Is(); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined emile_cipher_init() CMP byte ptr [.bss:_emile_cipher_inited],0x0 ;=?? MOV EAX,0x1 JZ LAB_00103710 RET ?? 90h LAB_00103710: SUB RSP,0x8 CALL _emile_cipher_init ;undefined _emile_cipher_init() TEST AL,AL JZ LAB_00103729 MOV byte ptr [.bss:_emile_cipher_inited],0x1 ;=?? MOV EAX,0x1 LAB_00103729: ADD RSP,0x8 RET ?? 66h f Actual src: Eina_Bool emile_cipher_init(void) { if (_emile_cipher_inited) return EINA_TRUE; if (!_emile_cipher_init()) return EINA_FALSE; _emile_cipher_inited = EINA_TRUE; return EINA_TRUE; } Predicted src: int _ecore_init_init(void) { if (_ecore_init_state) _ecore_init_state(); return _ecore_init_state; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined mlx5_destroy_wq() PUSH R12 PUSH RBP PUSH RBX MOV RBX,RDI CALL .plt:::ibv_cmd_destroy_wq ;undefined ibv_cmd_destroy_wq() MOV R12D,EAX TEST EAX,EAX JZ LAB_0015cff0 MOV EAX,R12D POP RBX POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_0015cff0: MOV RDI,qword ptr [RBX + 0x18] MOV ECX,dword ptr [RDI + 0x1c0] TEST ECX,ECX JNZ LAB_0015d0b0 MOV EDX,dword ptr [RDI + 0x1bc] TEST EDX,EDX JNZ LAB_0015d0e0 MOV dword ptr [RDI + 0x1bc],0x1 LAB_0015d01a: MOV RDI,qword ptr [RBX + 0x18] MOV ESI,dword ptr [RBX + -0x4] XOR EDX,EDX CALL __mlx5_cq_clean ;undefined __mlx5_cq_clean() MOV RDI,qword ptr [RBX + 0x18] MOV EAX,dword ptr [RDI + 0x1c0] TEST EAX,EAX JNZ LAB_0015d0c8 MOV dword ptr [RDI + 0x1bc],0x0 LAB_0015d044: MOV RAX,qword ptr [RBX] MOV ESI,dword ptr [RBX + -0x4] LEA RBP,[RBX + -0x8] LEA RDI,[RAX + -0x140] CALL mlx5_clear_uidx ;undefined mlx5_clear_uidx() MOV RAX,qword ptr [RBX] MOV RDX,qword ptr [RBX + 0x10] MOVZX ECX,byte ptr [RBX + 0x138] MOV RSI,qword ptr [RBX + 0x130] LEA RDI,[RAX + -0x140] CALL mlx5_free_db ;undefined mlx5_free_db() MOV RAX,qword ptr [RBX] LEA RSI,[RBX + 0x98] LEA RDI,[RAX + -0x140] CALL mlx5_free_actual_buf ;undefined mlx5_free_actual_buf() MOV RDI,qword ptr [RBX + 0xe0] CALL .plt:::free ;void free(void * __ptr) MOV RDI,RBP CALL .plt:::free ;void free(void * __ptr) MOV EAX,R12D POP RBX POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 00h LAB_0015d0b0: ADD RDI,0x1b8 CALL .plt:::pthread_spin_lock ;int pthread_spin_lock(pthread_spinlo... JMP LAB_0015d01a ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_0015d0c8: ADD RDI,0x1b8 CALL .plt:::pthread_spin_unlock ;int pthread_spin_unlock(pthread_spin... JMP LAB_0015d044 ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_0015d0e0: MOV RAX,qword ptr [->stderr] ;= 00176490 MOV EDX,0x89 MOV ESI,0x1 LEA RDI,[.rodata:s_***_ERROR:_multithreading_violat_00162098] ;= "*** ERROR: multithreading violati... MOV RCX,qword ptr [RAX]=>EXTERNAL:stderr ;=?? CALL .plt:::fwrite ;size_t fwrite(void * __ptr, size_t _... CALL .plt:::abort ;void abort(void) NOP dword ptr CS:[RAX + RAX*0x1] Actual src: int mlx5_destroy_wq(struct ibv_wq *wq) { struct mlx5_rwq *rwq = to_mrwq(wq); int ret; ret = ibv_cmd_destroy_wq(wq); if (ret) return ret; mlx5_spin_lock(&to_mcq(wq->cq)->lock); __mlx5_cq_clean(to_mcq(wq->cq), rwq->rsc.rsn, NULL); mlx5_spin_unlock(&to_mcq(wq->cq)->lock); mlx5_clear_uidx(to_mctx(wq->context), rwq->rsc.rsn); mlx5_free_db(to_mctx(wq->context), rwq->db, wq->pd, rwq->custom_db); mlx5_free_rwq_buf(rwq, wq->context); free(rwq); return 0; } Predicted src: static void cmd_cmd_cmd_destroy(struct cmd_cmd *cmd) { struct cmd_cmd *cmd; struct cmd_cmd *cmd; struct cmd_cmd_cmd *cmd; struct cmd_cmd_cmd *cmd; cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd = cmd->cmd; cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd->cmd = cmd; cmd->cmd = cmd; cmd->cmd = cmd; cmd->cm