Function at 0x6c944230
Capabilities:
Get disk information
Get process heap flags

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0x48
mov eax, dword [ecx + 0xc]
mov edi, dword [ecx + 8]
mov esi, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [ebp - 0x2c], eax
mov ebx, dword [ecx + 0x10]
cmp edi, 0xa
ja case.default.0x6c94425e
jmp dword [edi*4 + 0x6c948840]
mov eax, 2
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x14
mov dword [esp + 0xc], 0
mov dword [esp + 8], str.Wine_Driver
mov dword [esp + 4], str.MCI_audio_CD_driver__
mov dword [esp], 0
call sym._MessageBoxA_16
sub esp, 0x10
lea esp, [ebp - 0x10]
mov eax, 1
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x14
test ebx, ebx
je 0x6c9449b0
mov dword [esp + 8], 0x4c
mov dword [esp + 4], 8
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
sub esp, 0xc
mov esi, eax
test eax, eax
je 0x6c944514
mov edi, dword [section..bss]
test edi, edi
je 0x6c9449c0
mov eax, dword [ebx]
mov dword [esi], eax
mov dword [esp + 4], esi
mov dword [esp], eax
call sym._mciSetDriverData_8
lea eax, [esi + 0x34]
mov dword [ebx + 8], 0xffff
sub esp, 8
mov dword [ebx + 0xc], 0x204
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_InitializeCriticalSection]
mov eax, dword [esi + 0x34]
sub esp, 4
mov dword [eax + 0x18], str._private_tmp_game_porting_toolkit_20240316_16507_xzjwx8_wine_dlls_mcicda_mcicda.c:_WINE_MCICDAUDIO.cs
mov eax, dword [ebx]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x14
mov dword [esp], esi
call sym._mciGetDriverData_4
sub esp, 4
mov ebx, eax
test eax, eax
jne 0x6c9443a0
xor eax, eax
cmp esi, 0xffffffff
sete al
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x14
cmp esi, 0xffffffff
je case.0x6c944393.2063
lea eax, [edi - 0x801]
cmp eax, 0x55
ja case.0x6c944393.2064
jmp dword [eax*4 + 0x6c94886c]
mov eax, dword [eax + 0x34]
mov dword [eax + 0x18], 0
lea eax, [ebx + 0x34]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_DeleteCriticalSection]
sub esp, 4
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
mov dword [esp + 4], 0
mov dword [esp], esi
call sym._mciSetDriverData_8
sub esp, 8
jmp 0x6c944369
test byte [0x6c946018], 8
jne 0x6c944b8c
mov dword [esp + 0x10], ebx
mov eax, dword [ebp - 0x2c]
mov dword [esp + 8], edi
mov dword [esp + 0xc], eax
mov dword [esp + 4], edx
mov dword [esp], esi
call sym._DefDriverProc_20
sub esp, 0x14
jmp 0x6c94426d
test byte [0x6c946018], 8
jne 0x6c944b5f
mov eax, 0x105
jmp 0x6c94426d
and edx, 0x184
mov esi, 0x2140001
jne 0x6c944976
mov esi, 0x2040204
cmp ecx, 4
je 0x6c944976
test al, 4
je case.0x6c944393.2063
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], str.Unsupported__lx_devCaps_item_n
mov dword [esp + 8], str.MCICDA_GetDevCaps
mov dword [esp + 4], 0x6c946018
mov dword [esp], 2
call sym._wine_dbg_log.constprop.0
lea esi, [esi]
mov eax, 0x112
jmp 0x6c94426d
test byte [0x6c946018], 2
je 0x6c94443d
mov dword [esp + 0xc], str.Shouldnt_receive_a_MCI_OPEN_or_CLOSE_message_n
mov dword [esp + 8], str.MCICDA_DriverProc
mov dword [esp + 4], 0x6c946018
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x6c94443d
mov eax, esi
call sym._MCICDA_GetOpenDrv
mov edi, eax
test byte [0x6c946018], 8
jne 0x6c944a47
test edi, edi
je 0x6c9449fb
xor ecx, ecx
mov edx, 2
mov eax, esi
call dbg.MCICDA_Stop
sub dword [edi + 4], 1
je 0x6c944ca4
test ebx, ebx
je 0x6c944514
test byte [ebp - 0x2c], 1
jne 0x6c94451b
xor eax, eax
jmp 0x6c94426d
mov ebx, dword [ebx]
mov esi, dword [edi + 0xc]
xor eax, eax
xchg dword [edi + 0x10], eax
test eax, eax
jne 0x6c944cf2
movzx ebx, bx
mov dword [esp + 8], 1
mov dword [esp + 4], esi
mov dword [esp], ebx
call sym._mciDriverNotify_12
xor eax, eax
sub esp, 0xc
jmp 0x6c94426d
mov eax, esi
call sym._MCICDA_GetOpenDrv
mov edi, eax
test byte [0x6c946018], 8
jne 0x6c944ab7
test edi, edi
je 0x6c9449fb
mov eax, dword [edi + 0x1c]
test eax, eax
je 0x6c944bf5
mov dword [esp + 4], 0
mov eax, dword [edi + 0x20]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_WaitForSingleObject]
sub esp, 8
test eax, eax
je 0x6c94450a
mov eax, dword [edi + 0x30]
mov edx, dword [eax]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x30]
sub esp, 0x10
test eax, eax
jns 0x6c94450a
mov eax, 0x106
jmp 0x6c94426d
mov edx, dword [ebp - 0x2c]
mov ecx, ebx
mov eax, esi
call dbg.MCICDA_Status
jmp 0x6c94426d
mov eax, esi
call sym._MCICDA_GetOpenDrv
mov edi, eax
test byte [0x6c946018], 8
jne 0x6c944a0f
test edi, edi
je 0x6c9449fb
test dword [ebp - 0x2c], 0x100
jne 0x6c944bcd
test dword [ebp - 0x2c], 0x200
jne 0x6c944bbf
test ebx, ebx
je 0x6c944a05
test dword [ebp - 0x2c], 0x400
je 0x6c94465a
mov edx, dword [ebx + 4]
cmp edx, 2
je 0x6c944d9a
cmp edx, 0xa
je 0x6c944d61
mov eax, 0x125
test edx, edx
jne 0x6c94426d
test byte [0x6c946018], 8
jne 0x6c944ec1
mov dword [edi + 0x14], edx
test dword [ebp - 0x2c], 0x800
je 0x6c94450e
test byte [0x6c946018], 8
je 0x6c94450e
mov eax, dword [ebx + 8]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0xc], str.SET_AUDIO__lX__lx_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.MCICDA_Set
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6c94450e
mov eax, esi
call sym._MCICDA_GetOpenDrv
mov edi, eax
test byte [0x6c946018], 8
jne 0x6c944a7f
test edi, edi
je 0x6c9449fb
lea esi, [edi + 0x10]
xor eax, eax
xchg dword [esi], eax
test eax, eax
jne 0x6c944c85
mov edx, dword [edi + 0x1c]
test edx, edx
je 0x6c944cb8
mov dword [esp + 4], 0
mov eax, dword [edi + 0x20]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_WaitForSingleObject]
sub esp, 8
test eax, eax
je 0x6c944714
mov eax, dword [edi + 0x30]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 0x48]
sub esp, 4
test eax, eax
js 0x6c9445c4
test ebx, ebx
je 0x6c944514
test byte [ebp - 0x2c], 1
je 0x6c944514
mov ebx, dword [ebx]
mov edi, dword [edi + 0xc]
xor eax, eax
xchg dword [esi], eax
test eax, eax
jne 0x6c944e56
movzx ebx, bx
mov dword [esp + 8], 1
mov dword [esp + 4], edi
mov dword [esp], ebx
call sym._mciDriverNotify_12
xor eax, eax
sub esp, 0xc
jmp 0x6c94426d
mov edx, dword [ebp - 0x2c]
mov ecx, ebx
mov eax, esi
call dbg.MCICDA_Stop
jmp 0x6c94426d
mov dword [esp], esi
call sym._mciGetDriverData_4
sub esp, 4
mov edi, eax
test byte [0x6c946018], 8
jne 0x6c944aef
test ebx, ebx
je 0x6c944a05
mov eax, 0x101
test edi, edi
je 0x6c94426d
mov eax, dword [ebx + 4]
mov edx, dword [edi + 4]
mov dword [ebp - 0x30], eax
test edx, edx
jle 0x6c944bde
mov esi, dword [edi + 8]
mov eax, 0x123
test esi, esi
je 0x6c94426d
test dword [ebp - 0x2c], 0x100
je 0x6c94426d
add edx, 1
mov dword [edi + 4], edx
mov edx, dword [ebp - 0x2c]
test dh, 2
je 0x6c944c2f
movzx eax, byte [0x6c946018]
and dh, 8
jne 0x6c944e0f
test al, 8
jne 0x6c944e21
mov eax, dword [ebx + 0xc]
movzx esi, word [eax]
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_isalpha]
test eax, eax
je 0x6c944d20
mov dword [esp], esi
lea esi, [ebp - 0x28]
call dword [sym.imp.ucrtbase.dll_toupper]
mov word [ebp - 0x26], 0x3a
mov edx, eax
mov word [ebp - 0x28], ax
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x24], 0x5c
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_GetDriveTypeW]
push ecx
cmp eax, 5
jne 0x6c944d20
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x30]
mov dword [edi + 0x14], 2
mov dword [edi + 0xc], eax
mov dword [ebp - 0x28], 0x5c005c
mov dword [ebp - 0x24], 0x5c002e
mov word [ebp - 0x20], dx
mov dword [ebp - 0x1e], 0x3a
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0x80000000
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_CreateFileW]
mov dword [edi + 0x18], eax
sub esp, 0x1c
cmp eax, 0xffffffff
je 0x6c944e9b
test byte [ebp - 0x2c], 1
je 0x6c944514
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x30]
mov dword [esp + 4], eax
movzx eax, word [ebx]
mov dword [esp], eax
call sym._mciDriverNotify_12
xor eax, eax
sub esp, 0xc
jmp 0x6c94426d
mov edx, dword [ebp - 0x2c]
mov ecx, ebx
mov eax, esi
call dbg.MCICDA_Seek
jmp 0x6c94426d
mov edx, dword [ebp - 0x2c]
mov ecx, ebx
mov eax, esi
call dbg.MCICDA_Play
jmp 0x6c94426d
mov dword [esp], esi
call sym._mciGetDriverData_4
sub esp, 4
mov edi, eax
test byte [0x6c946018], 8
jne 0x6c944b27
test ebx, ebx
je 0x6c944a05
mov eax, 0x101
test edi, edi
je 0x6c94426d
movzx eax, byte [0x6c946018]
mov edx, eax
and edx, 8
test dword [ebp - 0x2c], 0x100
je 0x6c944d0e
test dl, dl
jne 0x6c944d2a
mov ecx, dword [ebx + 8]
cmp ecx, 9
ja 0x6c944466
mov edx, 1
mov esi, 0x2130000
shl edx, cl
test edx, 0x26a
je 0x6c944447
mov dword [ebx + 4], esi
test al, 8
jne 0x6c944de2
test byte [ebp - 0x2c], 1
jne 0x6c944db1
mov eax, 0x10000
jmp 0x6c94426d
mov edx, dword [ebp - 0x2c]
mov ecx, ebx
mov eax, esi
call dbg.MCICDA_Info
jmp 0x6c94426d
mov eax, 0xffffffff
jmp 0x6c94426d
mov dword [esp], 0x6c948618
call dword [sym.imp.kernel32.dll_LoadLibraryA]
mov dword [section..bss], eax
sub esp, 4
test eax, eax
je 0x6c944308
mov dword [esp + 4], str.DirectSoundCreate
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0x6c949004], eax
sub esp, 8
jmp 0x6c944308
mov eax, 0x101
jmp 0x6c94426d
mov eax, 0x129
jmp 0x6c94426d
mov dword [esp + 0x18], ebx
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.__04X___08lX___p___n
mov dword [esp + 8], str.MCICDA_Set
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6c9445f5
mov dword [esp + 0x18], ebx
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.__04X___08lX___p___n
mov dword [esp + 8], str.MCICDA_Close
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6c9444ea
mov dword [esp + 0x18], ebx
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.__04X___08lX___p___n
mov dword [esp + 8], str.MCICDA_Pause
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6c9446c1
mov dword [esp + 0x18], ebx
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.__04X___08lX___p___n
mov dword [esp + 8], str.MCICDA_Resume
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6c944564
mov dword [esp + 0x18], ebx
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.__04X___08lX___p___n
mov dword [esp + 8], 0x6c948ae8
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6c944783
mov dword [esp + 0x18], ebx
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.__04X___08lX___p___n
mov dword [esp + 8], str.MCICDA_GetDevCaps
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6c94491c
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.Unsupported_command__0x_x__n
mov dword [esp + 8], str.MCICDA_DriverProc
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6c94443d
mov dword [ebp - 0x30], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.Sending_msg__0x_x__to_default_driver_proc_n
mov dword [esp + 8], str.MCICDA_DriverProc
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov edx, dword [ebp - 0x30]
jmp 0x6c944405
xor edx, edx
mov eax, esi
call sym._MCICDA_SetDoor.isra.0
jmp 0x6c944617
mov edx, 1
mov eax, esi
call sym._MCICDA_SetDoor.isra.0
jmp 0x6c94460a
mov eax, dword [ebp - 0x2c]
mov dword [edi + 4], 1
and eax, 0x100
mov dword [edi + 8], eax
jmp 0x6c9447cc
lea edx, [ebp - 0x28]
mov eax, dword [edi + 0x18]
mov dword [esp + 8], 0
xor ecx, ecx
mov dword [esp + 0xc], edx
mov edx, 0x24010
mov dword [esp + 4], 0
mov dword [esp], 0
call sym._device_io.constprop.0
test eax, eax
jne 0x6c94450a
jmp 0x6c9445c4
mov dword [ebp - 0x28], 0x3a0041
lea esi, [ebp - 0x28]
mov dword [ebp - 0x24], 0x5c
jmp 0x6c944c59
movzx eax, word [ebp - 0x28]
add eax, 1
mov word [ebp - 0x28], ax
cmp ax, 0x5a
ja 0x6c944c77
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_GetDriveTypeW]
sub esp, 4
cmp eax, 5
jne 0x6c944c48
movzx edx, word [ebp - 0x28]
test dx, dx
jne 0x6c94483f
mov eax, 0x10a
sub dword [edi + 4], 1
jmp 0x6c94426d
mov dword [esp + 8], 4
mov edx, dword [edi + 0xc]
mov dword [esp], eax
mov dword [esp + 4], edx
call sym._mciDriverNotify_12
sub esp, 0xc
jmp 0x6c9446d8
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 4
jmp 0x6c94450a
lea edx, [ebp - 0x28]
mov eax, dword [edi + 0x18]
mov dword [esp + 8], 0
xor ecx, ecx
mov dword [esp + 0xc], edx
mov edx, 0x2400c
mov dword [esp + 4], 0
mov dword [esp], 0
call sym._device_io.constprop.0
test eax, eax
jne 0x6c944714
jmp 0x6c9445c4
mov dword [esp + 8], 2
mov dword [esp + 4], esi
mov dword [esp], eax
call sym._mciDriverNotify_12
sub esp, 0xc
jmp 0x6c94452d
test dl, dl
jne 0x6c944e72
mov eax, 0x111
jmp 0x6c94426d
mov eax, 0x128
jmp 0x6c944c7c
mov eax, dword [ebx + 8]
mov dword [esp + 0xc], str.MCI_GETDEVCAPS_ITEM_dwItem_08lX__n
mov dword [esp + 8], str.MCICDA_GetDevCaps
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
movzx eax, byte [0x6c946018]
jmp 0x6c944952
test byte [0x6c946018], 8
je 0x6c944657
mov dword [esp + 0xc], str.MCI_FORMAT_TMSF___n
mov dword [esp + 8], str.MCICDA_Set
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov edx, dword [ebx + 4]
jmp 0x6c944657
test byte [0x6c946018], 8
je 0x6c944657
mov dword [esp + 0xc], str.MCI_FORMAT_MSF___n
jmp 0x6c944d76
mov ebx, dword [ebx]
mov esi, dword [edi + 0xc]
xor eax, eax
xchg dword [edi + 0x10], eax
test eax, eax
jne 0x6c944ea5
movzx ebx, bx
mov dword [esp + 8], 1
mov dword [esp + 4], esi
mov dword [esp], ebx
call sym._mciDriverNotify_12
sub esp, 0xc
jmp 0x6c94498b
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], str.lpParms__dwReturn_08lX__n
mov dword [esp + 8], str.MCICDA_GetDevCaps
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6c944981
test al, 4
jne 0x6c944ece
mov eax, 0x11c
jmp 0x6c944c7c
mov eax, dword [ebx + 0xc]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0xc], str.MCI_OPEN_ELEMENT_element_name:__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0x6c948ae8
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6c9447f0
mov dword [esp + 8], 2
mov dword [esp + 4], edi
mov dword [esp], eax
call sym._mciDriverNotify_12
sub esp, 0xc
jmp 0x6c944737
mov dword [esp + 0xc], str.No_GetDevCaps_Item___n
mov dword [esp + 8], str.MCICDA_GetDevCaps
mov dword [esp + 4], 0x6c946018
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x6c944d16
mov eax, 0x123
jmp 0x6c944c7c
mov dword [esp + 8], 2
mov dword [esp + 4], esi
mov dword [esp], eax
call sym._mciDriverNotify_12
sub esp, 0xc
jmp 0x6c944dc3
mov dword [esp + 0xc], str.MCI_FORMAT_MILLISECONDS___n
jmp 0x6c944d76
mov eax, dword [ebx + 0xc]
mov dword [esp + 0xc], str.MCI_OPEN_ELEMENT_ID__p__Abort_n
mov dword [esp + 8], 0x6c948ae8
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x6c946018
mov dword [esp], 2
call sym._wine_dbg_log.constprop.0
jmp 0x6c944e17