Function at 0x41c190
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x358
mov eax, dword [0x46e818]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push dword [ebp + 8]
mov esi, 0xffff
call fcn.00446c6a
movzx eax, ax
add esp, 4
mov dword [ebp - 0x354], eax
lea eax, [ebp - 0x34c]
mov dword [ebp - 0x34c], 0x114
push eax
call dword [0x46f0b8]
mov eax, dword [ebp - 0x33c]
cmp eax, 1
jne 0x41c32d
mov eax, dword [ebp - 0x354]
xor edi, edi
movsx eax, al
push eax
call fcn.00446faf
add esp, 4
mov byte [ebp - 0x34d], al
push edi
push 0x4000000
push edi
push edi
push edi
push edi
push str..VWIN32
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebx, eax
cmp ebx, 0xffffffff
je case.0x41c2c6.8
movsx eax, byte [ebp - 0x34d]
xorps xmm0, xmm0
sub eax, 0x40
mov dword [ebp - 0x218], edi
mov dword [ebp - 0x210], eax
lea eax, [ebp - 0x238]
push edi
mov dword [ebp - 0x20c], eax
lea eax, [ebp - 0x358]
push eax
push 0x1c
lea eax, [ebp - 0x210]
mov word [ebp - 0x214], di
push eax
push 0x1c
push eax
push 1
push ebx
movups xmmword [ebp - 0x238], xmm0
mov dword [ebp - 0x208], 0x860
movups xmmword [ebp - 0x228], xmm0
mov dword [ebp - 0x204], 0x440d
mov dword [ebp - 0x1f8], 1
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x41c2a7
test byte [ebp - 0x1f8], 1
mov eax, 1
cmove edi, eax
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test edi, edi
je case.0x41c2c6.8
movzx eax, byte [ebp - 0x237]
cmp eax, 9
ja case.0x41c2c6.8
jmp dword [eax*4 + 0x41c49c]
mov esi, 0x21
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00442e5e
mov esp, ebp
pop ebp
ret
mov esi, 0x20
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00442e5e
mov esp, ebp
pop ebp
ret
mov esi, 0x22
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00442e5e
mov esp, ebp
pop ebp
ret
mov esi, 1
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00442e5e
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne case.0x41c2c6.8
mov eax, dword [ebp - 0x354]
movzx eax, ax
push eax
lea eax, [ebp - 0x14]
push str.._c:
push eax
call fcn.00415400
add esp, 0xc
lea eax, [ebp - 0x14]
push 0
push 0
push 3
push 0
push 2
push 0
push eax
call dword [0x46f068]
mov ebx, eax
cmp ebx, 0xffffffff
je case.0x41c2c6.8
xor edi, edi
push 0
lea eax, [ebp - 0x358]
mov ecx, 0x70c00
push eax
push 0x1e0
lea eax, [ebp - 0x1f4]
test edi, edi
push eax
push 0
push 0
mov eax, 0x2d0c00
cmovne eax, ecx
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x41c3b1
cmp dword [ebp - 0x358], 0
ja 0x41c3b9
inc edi
cmp edi, 2
jge case.0x41c3cc.11
jmp 0x41c374
mov eax, dword [ebp - 0x1ec]
dec eax
cmp eax, 0x11
ja case.0x41c3cc.11
movzx eax, byte [eax + 0x41c4d0]
jmp dword [eax*4 + 0x41c4c4]
mov esi, 0x21
jmp case.0x41c3cc.11
mov esi, 0x20
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp esi, 0xffff
jne case.default.0x41c41f
mov eax, dword [ebp - 0x354]
movzx eax, ax
push eax
lea eax, [ebp - 0x14]
push str._c:_
push eax
call fcn.00415400
add esp, 0xc
lea eax, [ebp - 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
add eax, 0xfffffffe
cmp eax, 4
ja case.default.0x41c41f
jmp dword [eax*4 + 0x41c4e4]
xor esi, esi
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00442e5e
mov esp, ebp
pop ebp
ret
mov esi, 0x100
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00442e5e
mov esp, ebp
pop ebp
ret
mov esi, 9
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00442e5e
mov esp, ebp
pop ebp
ret
mov esi, 5
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00442e5e
mov esp, ebp
pop ebp
ret
mov esi, 0x30
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00442e5e
mov esp, ebp
pop ebp
ret