============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined soundio_get_bytes_per_sample() MOV EAX,0xffffffff CMP EDI,0x12 JA LAB_00107a66 MOV EDI,EDI LEA RAX,[.rodata:CSWTCH.51] MOV EAX=>.rodata:CSWTCH.51,dword ptr [RAX + RDI*0x4]=>DAT_005602d8 LAB_00107a66: RET ?? 66h f Actual src: int soundio_get_bytes_per_sample(enum SoundIoFormat format) { switch (format) { case SoundIoFormatU8: return 1; case SoundIoFormatS8: return 1; case SoundIoFormatS16LE: return 2; case SoundIoFormatS16BE: return 2; case SoundIoFormatU16LE: return 2; case SoundIoFormatU16BE: return 2; case SoundIoFormatS24LE: return 4; case SoundIoFormatS24BE: return 4; case SoundIoFormatU24LE: return 4; case SoundIoFormatU24BE: return 4; case SoundIoFormatS32LE: return 4; case SoundIoFormatS32BE: return 4; case SoundIoFormatU32LE: return 4; case SoundIoFormatU32BE: return 4; case SoundIoFormatFloat32LE: return 4; case SoundIoFormatFloat32BE: return 4; case SoundIoFormatFloat64LE: return 8; case SoundIoFormatFloat64BE: return 8; case SoundIoFormatInvalid: return -1; } return -1; } Predicted src: int sample_get_sample_bytes(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; return fd; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* Konclude::Reasoner::Kernel::Process::CIndividualSaturationProcessNode::setOccurrenceStatisticsCollectingRequired(bool) * ;************************************************************************************************************************************************************ ;undefined setOccurrenceStatisticsCollectingRequired(CIndividualSaturationProcessNode * this, bool param_1) ;this CIndividual... RDI ;param_1 bool SIL MOV byte ptr [this + 0xea],param_1 MOV RAX,this RET ?? 90h Actual src: CIndividualSaturationProcessNode* CIndividualSaturationProcessNode::setOccurrenceStatisticsCollectingRequired(bool collectingRequired) { mOccurrenceStatisticsCollectingRequired = collectingRequired; return this; } Predicted src: CIndividualSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturationSaturatio ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined get_9p_stats_trans() ;local_20 undefined8 -20 ;local_a8 undefined1 -a8 ;local_f8 undefined1 -f8 ;local_100 undefined8 -100 PUSH R13 PUSH R12 PUSH RBP MOV RBP,RDI MOV RDI,RSI SUB RSP,0xf0 MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_20+0x108],RAX LEA RAX,[.rodata:DAT_00259fb7] ;= 4Fh O LEA R12=>local_f8,[RSP + 0x10] LEA R13=>local_a8,[RSP + 0x60] MOV RSI,R12 MOV qword ptr [RSP + local_100+0x108],RAX=>.rodata:DAT_00259fb7 ;= 4Fh O CALL .plt:::dbus_message_iter_init_append ;undefined dbus_message_iter_init_app... LEA RDX=>local_100,[RSP + 0x8] MOV RSI,R13 MOV RDI,RBP CALL arg_ipaddr ;undefined arg_ipaddr() TEST AL,AL JZ LAB_001559d0 MOV ESI,0x1 MOV RDI,R13 CALL get_gsh_client ;undefined get_gsh_client() MOV RBP,RAX TEST RAX,RAX JZ LAB_001559f0 CMP qword ptr [RAX + -0x20],0x0 JZ LAB_001559b8 MOV RDX=>.rodata:DAT_00259fb7,qword ptr [RSP + 0x8] ;= 4Fh O MOV ESI,0x1 MOV RDI,R12 CALL .plt:gsh_dbus_status_reply ;undefined gsh_dbus_status_reply() MOV RDI,qword ptr [RBP + -0x20] MOV RSI,R12 CALL server_dbus_9p_transstats ;undefined server_dbus_9p_transstats() LAB_00155987: MOV RDI,RBP CALL put_gsh_client ;undefined put_gsh_client() LAB_0015598f: MOV RAX,qword ptr [RSP + local_20+0x108] SUB RAX,qword ptr FS:[0x28] JNZ LAB_001559f9 ADD RSP,0xf0 MOV EAX,0x1 POP RBP POP R12 POP R13 RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_001559b8: LEA RDX,[.rodata:s_Client_does_not_have_any_9p_acti_00248578] ;= "Client does not have any 9p activ... XOR ESI,ESI MOV RDI,R12 CALL .plt:gsh_dbus_status_reply ;undefined gsh_dbus_status_reply() JMP LAB_00155987 ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001559d0: MOV RDX=>.rodata:DAT_00259fb7,qword ptr [RSP + 0x8] ;= 4Fh O TEST RDX,RDX JZ LAB_001559f0 LAB_001559da: XOR ESI,ESI MOV RDI,R12 CALL .plt:gsh_dbus_status_reply ;undefined gsh_dbus_status_reply() JMP LAB_0015598f ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_001559f0: LEA RDX,[.rodata:s_Client_IP_address_not_found_002482c7] ;= "Client IP address not found" JMP LAB_001559da LAB_001559f9: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() NOP Actual src: static bool get_9p_stats_trans(DBusMessageIter *args, DBusMessage *reply, DBusError *error) { struct gsh_client *client = NULL; struct server_stats *server_st = NULL; bool success = true; char *errormsg = "OK"; DBusMessageIter iter; dbus_message_iter_init_append(reply, &iter); client = lookup_client(args, &errormsg); if (client == NULL) { success = false; if (errormsg == NULL) errormsg = "Client IP address not found"; } else { server_st = container_of(client, struct server_stats, client); if (server_st->st._9p == NULL) { success = false; errormsg = "Client does not have any 9p activity"; } } gsh_dbus_status_reply(&iter, success, errormsg); if (success) server_dbus_9p_transstats(server_st->st._9p, &iter); if (client!= NULL) put_gsh_client(client); return true; } Predicted src: static void dbus_client_dbus_client_reply(struct ofono_client *client, struct ofono_client *client) { struct ofono_client *client = get_client(client); struct ofono_client *client = get_client(client); if (client == NULL) { return; } if (dbus_message_iter_next(client, &client->client) == 0) { return; } if (g_dbus_message_iter_next(client, &client->client) == 0) { return; } if (g_dbus_message_iter_next(client, &client->client) == 0) { return; } if (g_dbus_message_iter_next(client, &client->client) == 0) { return; } if (g_dbus_message_iter_next(client, &client->client) == 0) { return; } if (g_dbus_message_iter_next(client->client, &client->client) == 0) { return; } return; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined gst_audio_channel_mixer_mix_float_planar_planar() MOVSXD RAX,ECX PUSH R14 PUSH R13 PUSH R12 PUSH RBP PUSH RBX MOV EBX,dword ptr [RDI] MOV R14D,dword ptr [RDI + 0x4] TEST EAX,EAX JLE LAB_00117f1a MOV RBP,RDI LEA R13,[RAX*0x4] MOV R9,RSI XOR EDI,EDI LEA EAX,[R14 + -0x1] MOV R11,RDX PXOR XMM2,XMM2 MOVSXD R10,EBX LEA R12,[0x4 + RAX*0x4] NOP LAB_00117ec0: XOR ESI,ESI TEST R14D,R14D JLE LAB_00117f11 NOP word ptr [RAX + RAX*0x1] LAB_00117ed0: MOVAPS XMM1,XMM2 TEST EBX,EBX JLE LAB_00117eff MOV R8,qword ptr [RBP + 0x8] XOR EAX,EAX MOVAPS XMM1,XMM2 LAB_00117ee0: MOV RCX,qword ptr [R8 + RAX*0x8] MOV RDX,qword ptr [R9 + RAX*0x8] ADD RAX,0x1 MOVSS XMM0,dword ptr [RCX + RSI*0x1] MULSS XMM0,dword ptr [RDX + RDI*0x1] ADDSS XMM1,XMM0 CMP R10,RAX JNZ LAB_00117ee0 LAB_00117eff: MOV RAX,qword ptr [R11 + RSI*0x2] ADD RSI,0x4 MOVSS dword ptr [RAX + RDI*0x1],XMM1 CMP R12,RSI JNZ LAB_00117ed0 LAB_00117f11: ADD RDI,0x4 CMP R13,RDI JNZ LAB_00117ec0 LAB_00117f1a: POP RBX POP RBP POP R12 POP R13 POP R14 RET ?? 66h f Actual src: DEFINE_FLOAT_MIX_FUNC (float, planar, planar); Predicted src: static void gst_audio_channel_channel_channel_count (GObject * object, guint n, guint n, guint n) { guint i; guint i; guint i; for (i = 0; i < n; i++) { for (i = 0; i < n; i++) { gst_audio_channel_channel_channel_index (object, i, i, i, i); } } } ============================== 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_destroy(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; free(cmd); }