Function at 0x420367
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x90
push ebx
push esi
push edi
push 9
pop eax
mov dword [ebp - 0x3c], eax
xor edi, edi
mov dword [ebp - 0x38], eax
mov esi, edx
mov dword [ebp - 0x34], eax
mov bl, cl
mov dword [ebp - 0x30], eax
mov dword [ebp - 4], edi
jmp 0x42039b
mov eax, dword [ebp - 4]
mov dword [ebp + eax*4 - 0x44], 0x62fd
inc dword [ebp - 4]
cmp dword [ebp - 4], 2
jl 0x42038d
xor ecx, ecx
inc ecx
mov dword [ebp - 0x30], ecx
cmp dword [ebp - 0x30], edi
jl 0x4204b7
mov dword [ebp - 0x2c], 0xffffffff
mov dword [ebp - 0x28], 0xffffffff
mov dword [ebp - 0x24], 0xffffffff
mov dword [ebp - 0x20], 0xffffffff
mov dword [ebp - 0x14], 0x4d07ddbf
mov dword [ebp - 0x20], ecx
cmp dword [ebp - 0x20], edi
jl 0x4204ae
push 4
lea ecx, [ebp - 0x80]
call fcn.00413c51
push 1
lea ecx, [ebp - 0x74]
call fcn.00413c51
mov dword [ebp - 0x14], edi
mov dword [ebp - 4], edi
jmp 0x42040b
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x80]
mov dword [eax + ecx*4], 1
inc dword [ebp - 4]
cmp dword [ebp - 4], 4
jl 0x4203fb
mov dword [ebp - 4], edi
jmp 0x420426
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x74]
mov dword [eax + ecx*4], 0xbbd18838
inc dword [ebp - 4]
cmp dword [ebp - 4], 1
jl 0x420416
mov eax, dword [ebp - 0x20]
cmp dword [ebp + eax*4 - 0x44], edi
je 0x42046c
mov eax, dword [ebp - 0x20]
xor edx, edx
mov ecx, dword [ebp + eax*4 - 0x44]
mov eax, dword [ebp - 0x74]
mov dword [eax], ecx
mov eax, dword [ebp - 0x30]
cmp eax, ecx
mov eax, dword [ebp - 0x80]
mov ecx, 0xbfb66feb
setge dl
mov dword [eax + 4], ecx
xor eax, eax
cmp edx, ecx
setle al
imul eax, eax, 0xce3d
test eax, eax
je 0x42046c
xor edx, edx
inc edx
jmp 0x42046e
mov edx, edi
mov eax, dword [ebp - 0x20]
xor ecx, ecx
mov eax, dword [ebp + eax*4 - 0x44]
cmp edx, eax
mov eax, dword [ebp - 0x30]
sete cl
mov eax, dword [ebp + eax*4 - 0x44]
sub eax, ecx
jne 0x42048c
cmp dword [ebp - 0x20], edi
je 0x42048f
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x14], edi
lea ecx, [ebp - 0x74]
call fcn.00413d23
lea ecx, [ebp - 0x80]
call fcn.00413d23
dec dword [ebp - 0x20]
jns 0x4203df
xor ecx, ecx
inc ecx
dec dword [ebp - 0x30]
jns 0x4203b0
test bl, bl
je 0x4206c3
xor ebx, ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0xc], 0xb5cabfc3
mov dword [ebp - 4], ebx
jmp 0x4204f6
mov byte [ebp - 5], bl
cmp byte [ebp - 5], bl
je 0x4204f3
push ebx
push 0x1015
push ebx
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
dec dword [ebp - 4]
cmp dword [ebp - 4], 0xffffffea
jg 0x4204d0
push 3
mov dword [ebp - 4], ebx
pop edi
jmp 0x4205d7
mov dword [ebp - 0x10], 0xffffffff
lea ecx, [ebp - 0x68]
push 2
call fcn.00413c51
mov dword [ebp - 0xc], ebx
jmp 0x42052a
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x68]
or dword [eax + ecx*4], 0xffffffff
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], 2
jl 0x42051d
mov dword [ebp - 0x10], ebx
cmp dword [ebp - 0x10], 0xfffffff6
jge 0x4205cc
xor esi, esi
inc esi
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x68]
mov dword [eax], ecx
mov dword [ebp - 0xc], ebx
jmp 0x4205ba
mov dword [ebp - 0x14], 0x66a92721
mov byte [ebp - 5], bl
cmp byte [ebp - 5], bl
je 0x420575
push ebx
push ebx
push 0x1a78
push 0x2127
push ebx
call dword [sym.imp.USER32.dll_InsertMenuW]
mov dword [ebp - 0x14], esi
cmp dword [ebp - 0x14], ebx
jl 0x4205b7
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x18], esi
cmp dword [ebp - 0x18], ebx
jl 0x4205b2
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x1c], esi
cmp dword [ebp - 0x1c], ebx
jl 0x4205ad
mov byte [ebp - 5], bl
cmp byte [ebp - 5], bl
je 0x4205a8
push 0xeb4
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
dec dword [ebp - 0x1c]
jns 0x420593
dec dword [ebp - 0x18]
jns 0x420588
dec dword [ebp - 0x14]
jns 0x42057d
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], esi
jle 0x420553
dec dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0xfffffff6
jl 0x420540
lea ecx, [ebp - 0x68]
call fcn.00413d23
inc dword [ebp - 4]
cmp dword [ebp - 4], edi
jge 0x420507
push edi
lea ecx, [ebp - 0x50]
call fcn.00413c51
mov dword [ebp - 4], 8
mov eax, 0x64ce34aa
mov dword [ebp - 0x14], 0x6753f3ac
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x10], ebx
jmp 0x420629
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x50]
mov dword [eax + ecx*4], 0xb9b55bb2
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], edi
jl 0x420619
mov dword [ebp - 4], 2
cmp dword [ebp - 4], ebx
jl 0x4206b1
mov dword [ebp - 0x10], 0xf0bc5021
xor edx, edx
mov dword [ebp - 0x18], 9
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 4]
cmp ecx, eax
setle dl
xor eax, eax
test edx, edx
setg al
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
mov esi, dword [ebp - 4]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x50]
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + ecx*4]
mov dword [edx + esi*4], eax
xor edx, edx
cmp eax, 1
mov eax, dword [ebp - 0x18]
setge dl
xor ecx, ecx
cmp edx, eax
setge cl
add ecx, dword [ebp - 0x90]
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x50]
cmp dword [eax + ecx*4], ebx
jne 0x4206b1
dec dword [ebp - 4]
jns 0x42063a
lea ecx, [ebp - 0x50]
call fcn.00413d23
mov eax, dword [ebp + 8]
mov eax, dword [eax]
jmp 0x42086b
mov dword [ebp - 0xc], 0x6e54ee87
mov dword [ebp - 4], ecx
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], 4
mov eax, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], 0x4d1878ab
mov eax, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
sub eax, 0xf2b29949
neg eax
sbb eax, eax
inc eax
cmp eax, 0x7b1c2a2c
jne 0x420712
mov edx, edi
cmp dword [ebp - 0xc], edi
je 0x420714
mov edx, ecx
mov eax, dword [ebp - 4]
xor ecx, ecx
cmp edx, eax
setg cl
mov dword [ebp - 4], ecx
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
mov eax, dword [ebp - 4]
cmp dword [ebp - 4], 0x322e
jge 0x420743
cmp dword [ebp - 0xc], edi
je 0x420743
xor ecx, ecx
inc ecx
jmp 0x420745
mov ecx, edi
xor eax, eax
test ecx, ecx
sete al
sub eax, dword [ebp - 4]
neg eax
sbb eax, eax
xor edx, edx
inc eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
cmp ecx, eax
mov eax, dword [ebp - 0xc]
setle dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [ebp - 0xc]
setg cl
xor ebx, ebx
cmp ecx, eax
setg bl
xor edx, edx
sub ebx, dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp ebx, eax
mov eax, dword [ebp - 0xc]
setne dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0xc]
setge cl
add eax, 0x60e7
add eax, ecx
cmp eax, 0xfffb
sbb eax, eax
neg eax
neg edx
sbb edx, edx
inc edx
sub edx, eax
mov eax, dword [ebp - 0xc]
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, eax
setg cl
xor ebx, ebx
mov dword [ebp - 4], ecx
cmp dword [ebp - 4], ebx
je 0x420814
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x1c], 0x33196add
cmp dword [ebp - 0x18], ebx
je 0x4207ef
mov dword [ebp - 0x1c], 0x70f
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x1c], eax
jmp 0x42080c
mov dword [ebp - 0xc], ebx
jmp 0x420806
mov byte [ebp - 5], bl
cmp byte [ebp - 5], bl
je 0x420803
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
dec dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0xffffffe6
jl 0x4207f4
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x14], eax
jmp 0x420830
mov dword [ebp - 0x10], ebx
jmp 0x420827
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0x5c], 0x4f7bc72e
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 2
jl 0x420819
dec dword [ebp - 0x58]
mov dword [ebp - 0x10], ebx
jmp 0x420843
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0x54], 0x13638ecf
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 1
jl 0x420835
mov byte [ebp - 5], bl
cmp byte [ebp - 5], bl
je 0x420866
push ebx
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [esi]
mov dword [ebp - 0x54], ebx
pop edi
pop esi
mov dword [eax], ebx
pop ebx
mov esp, ebp
pop ebp
ret