Function at 0x421080
Capabilities:
Get disk information

Disassembly:
push 0xffffffffffffffff
push 0x4a3101
mov eax, dword fs:[0]
push eax
sub esp, 0x2ac
mov eax, dword [0x4d16b0]
xor eax, esp
mov dword [esp + 0x2a8], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4d16b0]
xor eax, esp
push eax
lea eax, [esp + 0x2c0]
mov dword fs:[0], eax
mov eax, dword [esp + 0x2d0]
mov dword [esp + 0x28], eax
mov eax, dword [str..ScsiN:]
mov dword [esp + 0x2c], ecx
mov ecx, dword [0x4bc410]
mov dword [esp + 0x20], edx
mov edx, dword [0x4bc414]
mov dword [esp + 0x74], eax
mov eax, dword [0x4bc418]
mov dword [esp + 0x78], ecx
mov ecx, dword [0x4bc41c]
mov dword [esp + 0x7c], edx
mov dx, word [0x4bc420]
xor bl, bl
xor edi, edi
mov byte [esp + 0x17], bl
mov word [esp + 0x6c], 0x20
mov word [esp + 0x6e], 0x3a
mov word [esp + 0x70], 0x5c
mov word [esp + 0x72], di
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], ecx
mov word [esp + 0x88], dx
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
xor esi, esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], edi
or ebp, 0xffffffff
test bl, bl
jne 0x42139f
mov ecx, esi
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x24]
test ecx, eax
je 0x42138f
lea eax, [esp + 0x6c]
lea edx, [esi + 0x41]
push eax
mov word [esp + 0x70], dx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 3
je 0x42118a
cmp eax, 6
jne 0x42138f
mov eax, dword [esp + 0x1c]
push edi
push edi
push 3
push edi
push 3
lea ecx, [eax + 0x30]
push 0xc0000000
lea edx, [esp + 0x8c]
add eax, 1
push edx
mov word [esp + 0xa0], cx
mov dword [esp + 0x38], eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, ebp
je 0x42138b
xor ebx, ebx
jmp 0x4211d0
push 0x22d
lea eax, [esp + 0x90]
push edi
push eax
call fcn.004854b0
mov ecx, dword [str.SCSIDISK]
mov edx, dword [0x4bc428]
add esp, 0xc
push edi
lea eax, [esp + 0x34]
push eax
push 0x22d
mov dword [esp + 0x9c], ecx
lea ecx, [esp + 0x98]
push ecx
push 0x3c
mov dword [esp + 0xa8], edx
mov edx, ecx
push edx
push 0x4d008
push esi
mov dword [esp + 0xac], 0x1c
mov dword [esp + 0xb8], 0x2710
mov dword [esp + 0xc4], 0x211
mov dword [esp + 0xbc], 0x1b0501
mov byte [esp + 0xd2], 0xec
mov byte [esp + 0xd4], bl
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x421374
cmp byte [esp + 0xee], 0
je 0x421374
lea eax, [esp + 0xb8]
push eax
lea ecx, [esp + 0x38]
push ecx
mov ecx, 0x13
lea edx, [ecx - 9]
call fcn.004204d0
add esp, 8
mov ecx, dword [esp + 0x28]
push ebp
push edi
push eax
mov dword [esp + 0x2d4], edi
call fcn.00403890
mov dword [esp + 0x2c8], ebp
cmp dword [esp + 0x4c], 0x10
jb 0x4212c0
mov edx, dword [esp + 0x38]
push edx
call fcn.0047f45b
add esp, 4
lea eax, [esp + 0xb8]
push eax
lea ecx, [esp + 0x38]
push ecx
mov ecx, 0x2e
lea edx, [ecx - 0x13]
call fcn.004204d0
add esp, 8
mov ecx, dword [esp + 0x2c]
push ebp
push edi
push eax
mov dword [esp + 0x2d4], 1
call fcn.00403890
mov dword [esp + 0x2c8], ebp
cmp dword [esp + 0x4c], 0x10
jb 0x42130f
mov edx, dword [esp + 0x38]
push edx
call fcn.0047f45b
add esp, 4
lea eax, [esp + 0xb8]
push eax
lea ecx, [esp + 0x54]
push ecx
mov ecx, 0x1a
lea edx, [ecx - 3]
call fcn.004204d0
add esp, 8
mov ecx, dword [esp + 0x20]
push ebp
push edi
push eax
mov dword [esp + 0x2d4], 2
call fcn.00403890
mov dword [esp + 0x2c8], ebp
cmp dword [esp + 0x68], 0x10
jb 0x42135e
mov edx, dword [esp + 0x54]
push edx
call fcn.0047f45b
add esp, 4
mov dword [esp + 0x68], 0xf
mov dword [esp + 0x64], edi
mov byte [esp + 0x54], 0
mov byte [esp + 0x17], 1
add ebx, 1
cmp ebx, 2
jl 0x4211d0
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov bl, byte [esp + 0x17]
mov esi, dword [esp + 0x18]
add esi, 1
cmp esi, 0x20
mov dword [esp + 0x18], esi
jl 0x42114c
mov al, bl
mov ecx, dword [esp + 0x2c0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x2a8]
xor ecx, esp
call fcn.0047f460
add esp, 0x2b8
ret