Function at 0x420260
Capabilities:
Get disk information

Disassembly:
push 0xffffffffffffffff
push 0x47ab48
mov eax, dword fs:[0]
push eax
sub esp, 0x40
push ebp
push esi
push edi
mov eax, dword [0x4a9128]
xor eax, esp
push eax
lea eax, [esp + 0x50]
mov dword fs:[0], eax
mov esi, ecx
mov dword [esp + 0x28], esi
call fcn.00434e50
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4202a6
push 0x80004005
call fcn.00401000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x10], eax
lea ecx, [esi + 0x94]
mov dword [esp + 0x58], 0
call fcn.00407900
lea ecx, [esp + 0x2c]
call fcn.004078a0
mov ebp, dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsA]
push 0
push 0
mov byte [esp + 0x60], 1
call ebp
mov edi, eax
lea ecx, [edi + 1]
push ecx
call fcn.0043379c
add esp, 4
mov esi, eax
push esi
push edi
call ebp
mov eax, esi
lea ecx, [eax + 1]
lea esp, [esp]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x420300
sub eax, ecx
mov ebp, eax
call fcn.00434e50
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x420327
push 0x80004005
call fcn.00401000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x14], edi
test ebp, ebp
mov byte [esp + 0x58], 2
jbe 0x420479
test esi, esi
jne 0x42034c
xor eax, eax
jmp 0x42035c
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x420351
sub eax, edx
push eax
push esi
lea ecx, [esp + 0x1c]
call fcn.00401910
mov edi, dword [esp + 0x14]
cmp dword [edi - 0xc], 0
jl 0x4204f1
mov cl, byte [edi]
mov byte [esp + 0x18], cl
mov edx, dword [esp + 0x18]
push edx
call fcn.0040ad80
add esp, 4
test eax, eax
je 0x4203a3
lea esi, [esi + ebp + 1]
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x420395
jmp 0x42046d
cmp dword [edi - 0xc], 0
jl 0x4204f1
mov al, byte [edi]
mov byte [esp + 0x1c], al
mov ecx, dword [esp + 0x1c]
push 0
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.0040b970
push str.mi.dat
push eax
lea eax, [esp + 0x34]
push eax
mov byte [esp + 0x70], 3
call fcn.00401d00
add esp, 0x18
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x5c], 4
call fcn.00401b60
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x58], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420410
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x58], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420435
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], 6
jle 0x42045b
lea edx, [esp + 0x10]
push edx
lea ecx, [esp + 0x30]
call fcn.00408480
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x2c]
push eax
call fcn.00420160
lea esi, [esi + ebp + 1]
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x420464
sub eax, edx
mov ebp, eax
test ebp, ebp
ja 0x420344
push esi
call fcn.00433797
lea eax, [edi - 0x10]
add esp, 4
mov byte [esp + 0x58], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4204a3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x2c]
mov byte [esp + 0x58], 0
call fcn.00407960
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov dword [esp + 0x58], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4204d9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [esp + 0x50]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
add esp, 0x4c
ret
push 0x80070057
call fcn.00401000
int3