============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined nl80211_update_dh_ie() PUSH R15 MOV R15,RCX PUSH R14 MOVZX R14D,DX PUSH R13 MOV R13,RDI PUSH R12 MOV R12,RSI PUSH RBP PUSH RBX MOV RBX,R8 SUB RSP,0x10 MOVZX ECX,byte ptr [RSI + 0x1] MOVZX EDX,byte ptr [RSI] MOV RBP,qword ptr [RDI] PUSH R14 MOV EDI,0x2 MOVZX EAX,byte ptr [RSI + 0x5] PUSH RAX MOVZX EAX,byte ptr [RSI + 0x4] PUSH RAX MOVZX R9D,byte ptr [RSI + 0x3] XOR EAX,EAX MOVZX R8D,byte ptr [RSI + 0x2] LEA RSI,[.rodata:s_nl80211:_Updating_DH_IE_peer:_%0_003a7ab8] ;= "nl80211: Updating DH IE peer: %02... CALL wpa_printf ;undefined wpa_printf(undefined param... MOV ESI,dword ptr [R13 + 0x10] MOV RDI,qword ptr [R13] XOR EDX,EDX ADD RSP,0x20 MOV ECX,0x87 CALL nl80211_ifindex_msg ;undefined nl80211_ifindex_msg() MOV R13,RAX TEST RAX,RAX JZ LAB_002f5ea8 MOV RCX,R12 MOV EDX,0x6 MOV ESI,0x6 MOV RDI,RAX CALL .plt:::nla_put ;undefined nla_put() TEST EAX,EAX JNZ LAB_002f5ea8 MOV EDX,R14D MOV ESI,0x48 MOV RDI,R13 CALL .plt:::nla_put_u16 ;undefined nla_put_u16() TEST EAX,EAX JNZ LAB_002f5ea8 TEST R15,R15 JZ LAB_002f5e45 MOV RCX,R15 MOV EDX,EBX MOV ESI,0x2a MOV RDI,R13 CALL .plt:::nla_put ;undefined nla_put() TEST EAX,EAX JNZ LAB_002f5ea8 LAB_002f5e45: MOV RDI,qword ptr [RBP] SUB RSP,0x8 MOV RDX,R13 XOR R9D,R9D XOR R8D,R8D XOR ECX,ECX MOV RSI,qword ptr [RDI + 0x40] PUSH 0x0 CALL send_and_recv ;undefined send_and_recv(undefined pa... MOV R12D,EAX POP RAX POP RDX TEST R12D,R12D JNZ LAB_002f5e80 LAB_002f5e6d: ADD RSP,0x8 MOV EAX,R12D POP RBX POP RBP POP R12 POP R13 POP R14 POP R15 RET ?? 90h LAB_002f5e80: MOV EDI,R12D NEG EDI CALL .plt:::strerror ;char * strerror(int __errnum) MOV EDX,R12D MOV EDI,0x2 LEA RSI,[.rodata:s_nl80211:_update_dh_ie_failed_err_003a7b00] ;= "nl80211: update_dh_ie failed err=... MOV RCX,RAX XOR EAX,EAX CALL wpa_printf ;undefined wpa_printf(undefined param... JMP LAB_002f5e6d ?? 0Fh ?? 1Fh ?? 00h LAB_002f5ea8: MOV RDI,R13 MOV R12D,0xffffff97 CALL .plt:::nlmsg_free ;undefined nlmsg_free() JMP LAB_002f5e6d ?? 0Fh Actual src: static int nl80211_update_dh_ie(void *priv, const u8 *peer_mac, u16 reason_code, const u8 *ie, size_t ie_len) { int ret; struct nl_msg *msg; struct i802_bss *bss = priv; struct wpa_driver_nl80211_data *drv = bss->drv; wpa_printf(MSG_DEBUG, "nl80211: Updating DH IE peer: " MACSTR " reason %u", MAC2STR(peer_mac), reason_code); if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_UPDATE_OWE_INFO)) || nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, peer_mac) || nla_put_u16(msg, NL80211_ATTR_STATUS_CODE, reason_code) || (ie && nla_put(msg, NL80211_ATTR_IE, ie_len, ie))) { nlmsg_free(msg); return -ENOBUFS; } ret = send_and_recv_msgs(drv, msg, NULL, NULL, NULL, NULL); if (ret) { wpa_printf(MSG_DEBUG, "nl80211: update_dh_ie failed err=%d (%s)", ret, strerror(-ret)); } return ret; } Predicted src: static int update_msg(struct rte_eth_dev *dev, struct rte_eth_dev *dev, struct rte_eth_dev *dev) { struct rte_eth_dev *dev = dev->dev_private; struct rte_eth_dev *dev = dev->dev_private; struct rte_eth_dev *dev = dev->dev_private; struct rte_eth_dev *dev = dev->dev_private; struct rte_eth_dev *dev = dev->dev_private; if (dev == NULL) { return -1; } if (dev == NULL) { return 0; } dev = dev->dev_private; if (dev == NULL) { return -1; } dev->dev_private = dev->dev_private; dev->dev_private = dev->dev_private; dev->dev_private = dev->dev_private; dev->dev_private = dev->dev_private; dev->dev_private = dev->dev_private; dev->dev_private = dev->dev_private; dev->dev_private = dev->dev_private; dev->dev_private = dev->dev_private; dev->dev_private = dev->dev_private; dev->dev_private = dev->dev_private; dev->dev_private = dev->dev_private; dev->dev_private = dev->dev_private; dev->dev_private = dev->dev_private; return 0; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined Wayland_DeleteDevice() PUSH R12 PUSH RBP MOV RBP,RDI SUB RSP,0x8 MOV R12,qword ptr [RDI + 0x5a8] MOV RDI,qword ptr [R12 + 0x8] TEST RDI,RDI JZ LAB_0020ea92 LEA RAX,[.bss:WAYLAND_wl_display_flush] ;=?? CALL qword ptr [RAX]=>.bss:WAYLAND_wl_display_flush ;=?? LEA RAX,[.bss:WAYLAND_wl_display_disconnect] ;=?? MOV RDI,qword ptr [R12 + 0x8] CALL qword ptr [RAX]=>.bss:WAYLAND_wl_display_disconnect ;=?? LAB_0020ea92: MOV RDI,qword ptr [RBP + 0x2b0] TEST RDI,RDI JZ LAB_0020eaa3 CALL SDL_DestroyMutex_REAL ;undefined SDL_DestroyMutex_REAL() LAB_0020eaa3: MOV RDI,R12 CALL SDL_free_REAL ;undefined SDL_free_REAL() MOV RDI,RBP CALL SDL_free_REAL ;undefined SDL_free_REAL() ADD RSP,0x8 POP RBP POP R12 JMP SDL_WAYLAND_UnloadSymbols ;undefined SDL_WAYLAND_UnloadSymbols() ?? 90h Actual src: static void Wayland_DeleteDevice(SDL_VideoDevice *device) { SDL_VideoData *data = (SDL_VideoData *)device->driverdata; if (data->display) { WAYLAND_wl_display_flush(data->display); WAYLAND_wl_display_disconnect(data->display); } if (device->wakeup_lock) { SDL_DestroyMutex(device->wakeup_lock); } SDL_free(data); SDL_free(device); SDL_WAYLAND_UnloadSymbols(); } Predicted src: static void SDL_SDL_Destroy(void *data) { struct wlr_display *display = data; if (display == NULL) { return; } if (display->display!= NULL) { SDL_free(display->display); display->display = NULL; } if (display->display!= NULL) { free(display->display); display->display = NULL; } if (display->display!= NULL) { free(display->display); display->display = NULL; } free(display); } ============================== Sample 3 ============================== 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 int cmd_clear_cmd(struct cmd_cmd *cmd) { struct 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_free_cmd(cmd->cmd); cmd->cmd = cmd->cmd; cmd_free_cmd(cmd->cmd); cmd->cmd = cmd->cmd; cmd_free_cmd(cmd->cmd); cmd_free_cmd(cmd); return 0; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined _cffi_const_LGLSXP() MOV qword ptr [RDI],0xa XOR EAX,EAX RET ?? 66h f Actual src: static int _cffi_const_LGLSXP(unsigned long long *o) { int n = (LGLSXP) <= 0; *o = (unsigned long long)((LGLSXP) | 0); /* check that LGLSXP is an integer */ if (!_cffi_check_int(*o, n, 10U)) n |= 2; return n; } Predicted src: static int _cffi_const_NCKEY_F(unsigned long long *o) { int n = (NCKEY_F) <= 0; *o = (unsigned long long)((NCKEY_F) | 0); /* check that NCKEY_F is an integer */ return n; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* gkarrays::readsReader::isPairedEnd() * ;************************************************************************************************************************************************************ ;undefined isPairedEnd(readsReader * this) ;this readsReader * RDI MOVZX EAX,byte ptr [this + 0x18] RET ?? 66h f Actual src: bool readsReader::isPairedEnd() { return is_pairedEnd; } Predicted src: bool isReader::isEndEnd() { return m_isEndEnd; }