Function at 0x407bd1
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
mov eax, dword [ebp + 8]
push ebx
xor ebx, ebx
push esi
mov dword [eax], ebx
push edi
lea eax, [ebp - 0xc]
push eax
mov dword [ebp - 8], ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0xc], ebx
call fcn.00408150
test eax, eax
jns 0x407c2c
xor eax, eax
inc eax
lea esi, [ebp - 0xc]
call fcn.00408c55
mov edi, eax
cmp edi, ebx
jge 0x407c2c
push 0x404394
push edi
call fcn.004089ba
pop ecx
pop ecx
jmp 0x407e74
push dword [ebp - 0xc]
push 0x4043c0
push 1
call fcn.00408939
add esp, 0xc
mov eax, 0x9d
lea esi, [ebp - 8]
call fcn.00408c55
mov edi, eax
cmp edi, ebx
jge 0x407c5b
push 0x4043d8
jmp 0x407e5d
push dword [ebp - 8]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
mov esi, 0x9c
push esi
call ebx
mov dword [ebp - 0x20], eax
test eax, eax
jne 0x407c9e
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
test edi, edi
jle 0x407c8d
and edi, 0xffff
or edi, 0x80070000
test edi, edi
js 0x407c94
mov edi, 0x80004005
push 0x404408
jmp 0x407e5d
cmp eax, esi
jbe 0x407cb9
inc eax
lea esi, [ebp - 8]
call fcn.00408c55
mov edi, eax
test edi, edi
js 0x407c51
push dword [ebp - 8]
push dword [ebp - 0x20]
call ebx
mov esi, dword [ebp - 8]
cmp word [esi], 0
je 0x407ddd
push esi
call dword [sym.imp.USER32.dll_CharUpperW]
push esi
push 0x404428
push 1
call fcn.00408939
movzx eax, word [esi]
add esp, 0xc
push eax
push dword [ebp - 0xc]
call fcn.004196e6
pop ecx
pop ecx
push esi
test eax, eax
je 0x407d04
push 0x404444
push 1
call fcn.00408939
add esp, 0xc
jmp 0x407db0
lea ebx, [ebp - 0x18]
call fcn.00407e8f
mov edi, eax
test edi, edi
js 0x407de4
cmp dword [ebp - 0x18], 0
jne 0x407d24
push esi
push 0x4044a0
jmp 0x407cf5
mov ecx, esi
call fcn.00407b16
push esi
test al, al
jne 0x407d37
push 0x4044e8
jmp 0x407cf5
call fcn.00407f6b
mov edi, eax
test edi, edi
js 0x407deb
cmp edi, 1
jne 0x407d53
push esi
push 0x404560
jmp 0x407cf5
xor eax, eax
lea edi, [ebp - 0x24]
stosd dword es:[edi], eax
lea edi, [ebp - 0x44]
stosd dword es:[edi], eax
lea edi, [ebp - 0x3c]
stosd dword es:[edi], eax
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x24]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
test eax, eax
je 0x407db0
cmp dword [ebp - 0x18], 2
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
jne 0x407d9b
cmp eax, dword [ebp - 0x30]
jb 0x407d9b
ja 0x407d90
cmp ecx, dword [ebp - 0x34]
jbe 0x407d9b
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x14], esi
jmp 0x407db0
cmp eax, dword [ebp - 0x28]
jb 0x407db0
ja 0x407da7
cmp ecx, dword [ebp - 0x2c]
jbe 0x407db0
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x10], esi
mov eax, esi
lea edx, [eax + 2]
xor edi, edi
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x407db7
sub eax, edx
sar eax, 1
lea esi, [esi + eax*2 + 2]
cmp word [esi], di
jne 0x407cc6
cmp dword [ebp - 0x10], edi
jne 0x407df2
cmp dword [ebp - 0x14], edi
jne 0x407df2
push 0x404598
jmp 0x407e58
push 0x404480
jmp 0x407e5d
push 0x404528
jmp 0x407e5d
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
cmp dword [ebp - 0x28], eax
jb 0x407e30
ja 0x407e04
cmp dword [ebp - 0x2c], ecx
jbe 0x407e30
push dword [ebp - 0x10]
push 0x4045c0
push 1
call fcn.00408939
add esp, 0xc
push dword [ebp - 0x10]
mov ecx, dword [ebp + 8]
xor eax, eax
call fcn.00408cef
mov edi, eax
test edi, edi
jns 0x407e65
push 0x4045f8
jmp 0x407e5d
cmp dword [ebp - 0x30], eax
jb 0x407e53
ja 0x407e3c
cmp dword [ebp - 0x34], ecx
jbe 0x407e53
push dword [ebp - 0x14]
push 0x404628
push 1
call fcn.00408939
add esp, 0xc
push dword [ebp - 0x14]
jmp 0x407e19
push 0x404664
mov edi, 0x80070070
push edi
call fcn.004089ba
pop ecx
pop ecx
xor ebx, ebx
cmp dword [ebp - 8], ebx
je 0x407e74
push dword [ebp - 8]
call fcn.004092c3
cmp dword [ebp - 0xc], ebx
je 0x407e81
push dword [ebp - 0xc]
call fcn.004092c3
mov eax, edi
pop edi
pop esi
pop ebx
leave
ret 0xc