Function at 0x5c6c30
Capabilities:
Get disk information

Disassembly:
push 0xffffffffffffffff
push 0x876781
mov eax, dword fs:[0]
push eax
sub esp, 0x340
mov eax, dword [0x8ce6f4]
xor eax, esp
mov dword [esp + 0x33c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x8ce6f4]
xor eax, esp
push eax
lea eax, [esp + 0x354]
mov dword fs:[0], eax
mov edi, dword [esp + 0x368]
mov ecx, edi
call fcn.004afe70
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x5c6c93
push 0x80004005
call fcn.004a8210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
movzx ecx, word [esp + 0x364]
push ecx
lea edx, [esp + 0x18]
push 0x42e30c
push edx
mov dword [esp + 0x368], 0
call fcn.004aa600
push 0x401fc4
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x30]
push ecx
call fcn.004af3d0
mov eax, dword [eax]
add esp, 0x18
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 5
mov eax, dword [esp + 0x1c]
sete bl
add eax, 0xfffffff0
or esi, 0xffffffff
lea edx, [eax + 0xc]
mov ecx, esi
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5c6d0e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x5c705c
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x42e2e4
lea edx, [esp + 0x1c]
push edx
push ecx
call fcn.004af3d0
add esp, 0xc
call fcn.005c5fa0
mov eax, esp
mov dword [esp + 0x1c], esp
push 0x42e2bc
lea ecx, [esp + 0x1c]
push ecx
push eax
call fcn.004af3d0
add esp, 0xc
call fcn.005c5fa0
mov edx, esp
mov dword [esp + 0x1c], esp
push 0x42e294
lea eax, [esp + 0x1c]
push eax
push edx
call fcn.004af3d0
add esp, 0xc
call fcn.005c5fa0
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x42e26c
lea edx, [esp + 0x1c]
push edx
push ecx
call fcn.004af3d0
add esp, 0xc
call fcn.005c5fa0
mov eax, esp
mov dword [esp + 0x1c], esp
push 0x42e244
lea ecx, [esp + 0x1c]
push ecx
push eax
call fcn.004af3d0
add esp, 0xc
call fcn.005c5fa0
mov edx, esp
mov dword [esp + 0x1c], esp
push 0x42e21c
lea eax, [esp + 0x1c]
push eax
push edx
call fcn.004af3d0
add esp, 0xc
call fcn.005c5fa0
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x42e1f4
lea edx, [esp + 0x1c]
push edx
push ecx
call fcn.004af3d0
add esp, 0xc
call fcn.005c5fa0
mov eax, esp
mov dword [esp + 0x1c], esp
push 0x42e1cc
lea ecx, [esp + 0x1c]
push ecx
push eax
call fcn.004af3d0
add esp, 0xc
call fcn.005c5fa0
add esp, 4
cmp dword [edi + 8], 0
jbe 0x5c6e3e
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x35c], esi
lea edx, [eax + 0xc]
lock xadd dword [edx], esi
dec esi
test esi, esi
jg 0x5c6e34
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 2
jmp 0x5c7082
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x42e19c
lea edx, [esp + 0x1c]
push edx
push ecx
call fcn.004af3d0
add esp, 0xc
call fcn.005c5fa0
add esp, 4
cmp dword [edi + 8], 0
jbe 0x5c6e94
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x35c], esi
lea ecx, [eax + 0xc]
lock xadd dword [ecx], esi
dec esi
test esi, esi
jg 0x5c6e8a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 3
jmp 0x5c7082
push 0x42b60c
lea ecx, [esp + 0x24]
call fcn.004a8f10
lea ecx, [esp + 0x14]
push ecx
push eax
lea edx, [esp + 0x2c]
push edx
mov byte [esp + 0x368], 1
call fcn.004ac680
mov eax, dword [eax]
add esp, 0xc
push 0
push 0x80
push 3
push 0
push 1
push DirectSoundEnumerateW
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebp, eax
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov dword [esp + 0x18], ebp
lea ecx, [eax + 0xc]
mov edx, esi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5c6efd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x35c], 0
lea ecx, [eax + 0xc]
mov edx, esi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5c6f24
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [esp + 0x14]
cmp ebp, esi
je 0x5c7012
push 0
lea ecx, [esp + 0x2c]
push ecx
push 0x324
lea edx, [esp + 0x38]
push edx
push 0
push 0
push 0x24000
push ebp
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x5c700b
movzx esi, byte [esp + 0x2e]
movzx eax, byte [esp + 0x2f]
cmp esi, eax
jg 0x5c7008
lea ebp, [esp + esi*8 + 0x29]
nop
and byte [ebp], 0xf5
mov al, byte [ebp]
and al, 0xf
je 0x5c6f7f
cmp al, 1
jne 0x5c6ff3
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x5c6c89
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
push esi
push ebx
lea ecx, [esp + 0x24]
push 0x42e178
push ecx
mov byte [esp + 0x36c], 2
call fcn.004aa600
add esp, 0x10
lea edx, [esp + 0x1c]
push edx
mov ecx, edi
call fcn.004b34a0
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x35c], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5c6ff3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
movzx ecx, byte [esp + 0x2f]
inc esi
add ebp, 8
cmp esi, ecx
jle 0x5c6f70
mov ebp, dword [esp + 0x18]
or esi, 0xffffffff
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [edi + 8], 0
mov dword [esp + 0x35c], esi
lea eax, [ebx - 0x10]
jbe 0x5c703f
lea edx, [eax + 0xc]
lock xadd dword [edx], esi
dec esi
test esi, esi
jg 0x5c7038
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
jmp 0x5c7082
lea ecx, [eax + 0xc]
lock xadd dword [ecx], esi
dec esi
test esi, esi
jg 0x5c7055
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 4
jmp 0x5c7082
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x35c], esi
lea ecx, [eax + 0xc]
lock xadd dword [ecx], esi
dec esi
test esi, esi
jg 0x5c7080
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x354]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x33c]
xor ecx, esp
call fcn.0080262b
add esp, 0x34c
ret