Function at 0x403586
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4cc
mov dword [ebp - 0x4b0], eax
mov dword [ebp - 0x49c], eax
lea eax, [ebp - 0x49c]
mov dword [esp + 4], eax
mov dword [esp], 0x431060
call fcn.0040a3bf
mov ebx, eax
mov eax, dword [eax]
mov dword [ebp - 0x4ac], eax
test eax, eax
je 0x40363d
cmp dword [0x42878c], eax
je 0x40363d
mov eax, dword [eax + 8]
test eax, eax
je 0x4035d6
mov eax, dword [eax + 0x40]
jmp 0x4035df
mov eax, dword [ebp - 0x4ac]
mov eax, dword [eax + 4]
mov edx, dword [0x428e24]
cmp edx, eax
je 0x40391e
test byte [0x43154c], 2
je 0x403629
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x4b0]
mov dword [esp], str.Directory__s_cache_invalidated__count__lu___command__lu__n
mov dword [esp + 4], eax
call fcn.00403103
mov dword [esp], 1
call dword [0x428f14]
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov eax, dword [ebp - 0x4ac]
mov eax, dword [eax + 8]
test eax, eax
je 0x40368d
call fcn.0040353f
jmp 0x40368d
mov eax, dword [ebp - 0x4b0]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov dword [esp], 0xc
mov esi, eax
call fcn.00411351
mov dword [ebp - 0x4ac], eax
mov dword [esp + 4], esi
mov eax, dword [ebp - 0x4b0]
mov dword [esp], eax
call fcn.0041a002
mov edi, dword [ebp - 0x4ac]
mov dword [edi], eax
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov dword [esp], 0x431060
call fcn.0040a475
mov eax, dword [ebp - 0x4ac]
xor ecx, ecx
mov edi, dword [ebp - 0x4ac]
mov dword [eax + 8], ecx
mov eax, dword [0x428e24]
mov dword [edi + 4], eax
mov eax, dword [ebp - 0x4b0]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov esi, dword [ebp - 0x4b0]
mov edx, eax
lea eax, [ebp - 0x218]
lea ecx, [edx + 1]
mov edi, eax
lea edx, [eax + edx - 1]
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x216]
cmp byte [ebp - 0x217], 0x3a
cmovne ecx, eax
cmp ecx, edx
jae 0x4036f5
movzx ebx, byte [edx]
cmp word [ebx + ebx + 0x4312c0], 0
jns 0x4036f5
mov byte [edx], 0
dec edx
jmp 0x4036dd
lea edx, [ebp - 0x490]
mov dword [esp], eax
mov dword [esp + 4], edx
call dword [sym.imp.msvcrt.dll__stati64]
test eax, eax
js 0x40391e
lea edx, [ebp - 0x45c]
xor eax, eax
mov ecx, 0x11
mov edi, edx
lea esi, [ebp - 0x460]
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x490]
mov dword [ebp - 0x460], eax
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x4b0]
mov dword [esp], eax
call fcn.0041ce74
mov dword [ebp - 0x4b4], eax
mov dword [ebp - 0x45c], eax
mov eax, dword [ebp - 0x468]
mov dword [ebp - 0x458], eax
mov dword [esp + 4], esi
mov dword [esp], 0x4310a0
call fcn.0040a3bf
mov ebx, dword [eax]
mov dword [ebp - 0x4b8], eax
test ebx, ebx
je 0x403789
cmp dword [0x42878c], ebx
jne 0x403876
mov dword [esp], 0x48
call fcn.00411377
mov ecx, 0x12
mov edi, eax
mov ebx, eax
mov eax, dword [ebp - 0x4b4]
rep movsd dword es:[edi], dword [esi]
lea esi, [ebp - 0x218]
mov dword [esp], eax
call fcn.004114a4
mov dword [ebx + 4], eax
mov eax, dword [ebp - 0x46c]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp - 0x4b4]
mov byte [eax + 3], 0
lea eax, [ebp - 0x4a4]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x4a0]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x4a8]
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x418]
mov dword [esp + 0x1c], 0x200
mov dword [esp + 0x18], esi
mov dword [esp + 8], 0x200
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x4b4]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
mov edx, eax
sub esp, 0x20
mov eax, 4
test edx, edx
je 0x403859
mov dword [esp + 4], 0x42a282
mov dword [esp], esi
call sub.msvcrt.dll_strcmp
mov edx, eax
mov eax, 1
test edx, edx
je 0x403859
mov dword [esp + 4], str.NTFS
mov dword [esp], esi
call sub.msvcrt.dll_strcmp
cmp eax, 1
sbb eax, eax
and eax, 0xfffffffe
add eax, 4
mov dword [ebx + 0x10], eax
mov eax, dword [ebp - 0x4b8]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp], 0x4310a0
call fcn.0040a475
mov eax, dword [ebp - 0x4ac]
mov dword [eax + 8], ebx
mov eax, dword [ebx + 0x40]
cmp eax, dword [0x428e24]
je 0x40391e
test eax, eax
je 0x403899
mov eax, ebx
call fcn.0040353f
mov eax, dword [0x428e24]
mov dword [ebx + 0x40], eax
mov esi, dword [sym.imp.msvcrt.dll__errno]
call esi
xor edx, edx
mov dword [eax], edx
mov eax, dword [ebp - 0x4b0]
mov dword [esp], eax
call fcn.00421304
mov dword [ebx + 0x44], eax
test eax, eax
jne 0x4038d6
call esi
cmp dword [eax], 4
je 0x4038a1
cmp dword [ebx + 0x44], 0
jne 0x4038d6
xor eax, eax
mov dword [ebx + 0x14], eax
jmp 0x40391e
add ebx, 0x14
mov dword [esp + 0x10], 0x4034c8
mov dword [esp + 0xc], 0x403971
mov dword [esp + 8], 0x4030ba
mov dword [esp + 4], 0x6b
mov dword [esp], ebx
call fcn.0040a311
mov eax, dword [0x4310cc]
inc eax
mov dword [0x4310cc], eax
cmp eax, 0xa
jne 0x40391e
mov eax, dword [ebp - 0x4ac]
xor edx, edx
call fcn.00403133
mov eax, dword [ebp - 0x4ac]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret