Function at 0x409eb0
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x47ceb2
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x944
push esi
mov dword [ebp - 0x940], ecx
lea ecx, [ebp - 0x840]
call fcn.0043a8f0
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x90c]
call fcn.00443920
mov dword [ebp - 0x914], eax
mov dword [ebp - 0x910], edx
mov eax, dword [ebp - 0x914]
and eax, 1
mov ecx, dword [ebp - 0x910]
and ecx, 0
mov dword [ebp - 0x948], eax
mov dword [ebp - 0x944], ecx
mov edx, dword [ebp - 0x948]
or edx, dword [ebp - 0x944]
test edx, edx
jne 0x409f78
push 0
push 0x4f
mov ecx, 0x49b760
call fcn.0043d410
push eax
push 0x4a2a0c
push 0x30
mov eax, dword [ebp - 0x940]
push eax
call fcn.00439f20
add esp, 0x10
mov dword [ebp - 0x930], 0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x840]
call fcn.0043a990
mov eax, dword [ebp - 0x930]
jmp 0x40a317
movsx ecx, byte [ebp + 8]
push ecx
push 0x493094
lea edx, [ebp - 0x840]
push edx
call fcn.0043bde0
add esp, 0xc
mov eax, dword [ebp - 0x914]
and eax, 0x80
mov ecx, dword [ebp - 0x910]
and ecx, 0
mov dword [ebp - 0x950], eax
mov dword [ebp - 0x94c], ecx
mov edx, dword [ebp - 0x950]
or edx, dword [ebp - 0x94c]
test edx, edx
je 0x409fcd
mov dword [ebp - 0x92c], VariantCopy
jmp 0x409fd7
mov dword [ebp - 0x92c], 0xc0000000
push 0
push 0
push 3
push 0
push 3
mov eax, dword [ebp - 0x92c]
push eax
push 0
lea ecx, [ebp - 0x840]
call fcn.0043baa0
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x814], eax
cmp dword [ebp - 0x814], 0xffffffff
jne 0x40a066
push 0
lea ecx, [ebp - 0x840]
call fcn.0043baa0
push eax
push 0x50
push 0x49b760
call fcn.0043d430
add esp, 0xc
push eax
push 0x4a2a0c
push 0x30
mov ecx, dword [ebp - 0x940]
push ecx
call fcn.00439f20
add esp, 0x10
mov dword [ebp - 0x934], 0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x840]
call fcn.0043a990
mov eax, dword [ebp - 0x934]
jmp 0x40a317
lea edx, [ebp - 0x810]
mov dword [ebp - 0x10], edx
push 0xc
push 0
lea eax, [ebp - 0x924]
push eax
call fcn.0046fe50
add esp, 0xc
mov byte [ebp - 0x924], 0x43
mov byte [ebp - 0x91d], 8
mov byte [ebp - 0x91c], 0
mov ecx, dword [ebp + 0xc]
mov byte [ecx], 0
lea edx, [ebp - 0x810]
push edx
push 0x800
push 1
lea eax, [ebp - 0x924]
push eax
push 0xc
mov ecx, dword [ebp - 0x814]
push ecx
mov ecx, dword [ebp - 0x940]
call fcn.00409720
cmp eax, 1
jne 0x40a1e9
mov edx, dword [ebp - 0x10]
xor eax, eax
mov al, byte [edx + 3]
mov dword [ebp - 0x928], eax
jmp 0x40a0ee
mov ecx, dword [ebp - 0x928]
sub ecx, 1
mov dword [ebp - 0x928], ecx
mov edx, dword [ebp - 0x10]
xor eax, eax
mov al, byte [edx + 2]
cmp dword [ebp - 0x928], eax
jb 0x40a1e9
mov ecx, dword [ebp - 0x928]
mov edx, dword [ebp - 0x10]
xor eax, eax
mov al, byte [edx + ecx*8 - 3]
and eax, 4
test eax, eax
je 0x40a1e4
mov ecx, dword [ebp - 0x928]
mov edx, dword [ebp - 0x10]
mov eax, dword [edx + ecx*8]
and eax, 0xffff
and eax, 0xffff
and eax, 0xff00
sar eax, 8
mov ecx, dword [ebp - 0x928]
mov edx, dword [ebp - 0x10]
mov ecx, dword [edx + ecx*8]
and ecx, 0xffff
and ecx, 0xffff
and ecx, 0xff
shl ecx, 8
or eax, ecx
and eax, 0xffff
shl eax, 0x10
mov edx, dword [ebp - 0x928]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ecx + edx*8]
shr edx, 0x10
and edx, 0xffff
and edx, 0xffff
and edx, 0xff00
sar edx, 8
mov ecx, dword [ebp - 0x928]
mov esi, dword [ebp - 0x10]
mov ecx, dword [esi + ecx*8]
shr ecx, 0x10
and ecx, 0xffff
and ecx, 0xffff
and ecx, 0xff
shl ecx, 8
or edx, ecx
and edx, 0xffff
or eax, edx
mov dword [ebp - 0x918], eax
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov cl, byte [ebp + 8]
push ecx
mov edx, dword [ebp - 0x918]
push edx
mov eax, dword [ebp - 0x814]
push eax
mov ecx, dword [ebp - 0x940]
call fcn.00409bf3
jmp 0x40a1e9
jmp 0x40a0df
mov ecx, dword [ebp - 0x814]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edx, dword [ebp + 0xc]
movsx eax, byte [edx]
test eax, eax
jne 0x40a2f5
movsx ecx, byte [ebp + 8]
push ecx
push 0x4930fc
lea edx, [ebp - 0x840]
push edx
call fcn.0043bde0
add esp, 0xc
push 0
lea ecx, [ebp - 0x840]
call fcn.0043baa0
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 5
je 0x40a263
movsx eax, byte [ebp + 8]
push eax
push 0x51
push 0x49b760
call fcn.0043d430
add esp, 0xc
push eax
push 0x4a2a0c
push 0x30
mov ecx, dword [ebp - 0x940]
push ecx
call fcn.00439f20
add esp, 0x10
jmp 0x40a2d1
push 1
push 0
push 0
lea ecx, [ebp - 0x840]
call fcn.0043baa0
push eax
mov edx, dword [ebp + 0x10]
xor eax, eax
push eax
push edx
mov ecx, dword [ebp - 0x940]
add ecx, 0x1118
call fcn.00430c20
lea ecx, [ebp - 0x840]
call fcn.0043acd0
movsx ecx, byte [ebp + 8]
push ecx
push 0
lea ecx, [ebp - 0x840]
call fcn.0043baa0
push eax
push 0x52
push 0x49b760
call fcn.0043d430
add esp, 0x10
push eax
push 0x4a2a0c
push 0x30
mov edx, dword [ebp - 0x940]
push edx
call fcn.00439f20
add esp, 0x10
mov dword [ebp - 0x938], 0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x840]
call fcn.0043a990
mov eax, dword [ebp - 0x938]
jmp 0x40a317
mov dword [ebp - 0x93c], 1
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x840]
call fcn.0043a990
mov eax, dword [ebp - 0x93c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
ret 0xc