Function at 0x40c709
Capabilities:
Get disk information

Disassembly:
mov al, byte [0x4459b8]
sub esp, 0x48c
push ebx
push ebp
push esi
mov esi, edx
push edi
mov edi, ecx
cmp al, 0xff
jne 0x40c72f
call fcn.004125c0
test eax, eax
setne al
mov byte [0x4459b8], al
test al, al
je 0x40c741
push esi
push edi
call fcn.00421697
pop ecx
pop ecx
jmp 0x40c9f1
test edi, edi
je 0x40c9e3
test esi, esi
je 0x40c9e3
push 0x43e3ac
push edi
call fcn.00420afd
pop ecx
pop ecx
test eax, eax
je 0x40c772
call fcn.0042171b
mov dword [eax], 2
jmp 0x40c9ee
xor ecx, ecx
cmp word [edi + 2], 0x3a
jne 0x40c798
movzx eax, word [edi]
test ax, ax
je 0x40c789
cmp word [edi + 4], cx
je 0x40c762
push eax
call fcn.004217f7
movzx ebp, ax
pop ecx
sub ebp, 0x60
jmp 0x40c79f
call fcn.00421837
mov ebp, eax
lea eax, [esp + 0x38]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x40c887
push 0x43e3b4
push edi
call fcn.00420afd
pop ecx
pop ecx
test eax, eax
jne 0x40c81d
push ecx
lea eax, [esp + 0x28c]
mov edx, 0x104
push eax
mov ecx, edi
call fcn.0040c613
pop ecx
pop ecx
test eax, eax
je 0x40c81d
lea eax, [esp + 0x288]
push eax
call fcn.0041f9f9
pop ecx
test eax, eax
jne 0x40c804
lea ecx, [esp + 0x288]
call fcn.0040c6e4
test eax, eax
je 0x40c81d
lea ecx, [esp + 0x288]
push ecx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
xor ecx, ecx
inc ecx
cmp eax, ecx
ja 0x40c762
and dword [esp + 0x54], 0
xor eax, eax
and dword [esp + 0x58], 0
push 0x10
pop ecx
push ecx
push eax
mov word [esp + 0x6c], ax
lea eax, [esp + 0x18]
push eax
mov dword [esp + 0x44], ecx
call fcn.00419d10
mov eax, 0x7bc
lea ecx, [esp + 0x1c]
mov word [esp + 0x1c], ax
add esp, 0xc
xor eax, eax
inc eax
mov word [esp + 0x12], ax
mov word [esp + 0x16], ax
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
call fcn.004125f6
mov ecx, edx
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], edx
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], ecx
mov dword [esi + 0x30], eax
mov dword [esi + 0x34], ecx
jmp 0x40c98f
cmp dword [esp + 0x4c], 0
mov ecx, dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
mov eax, dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], eax
jne 0x40c8bb
cmp dword [esp + 0x50], 0
jne 0x40c8bb
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
jmp 0x40c8f2
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x50]
push eax
call ecx
test eax, eax
je 0x40c9cd
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x14]
push eax
call dword [esp + 0x28]
test eax, eax
je 0x40c9cd
lea ecx, [esp + 0x28]
call fcn.004125f6
mov ecx, dword [esp + 0x24]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], edx
cmp dword [esp + 0x44], 0
jne 0x40c906
cmp dword [esp + 0x48], 0
je 0x40c939
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x48]
push eax
call ecx
test eax, eax
je 0x40c9cd
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x14]
push eax
call dword [esp + 0x28]
test eax, eax
je 0x40c9cd
lea ecx, [esp + 0x28]
call fcn.004125f6
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], edx
cmp dword [esp + 0x3c], 0
jne 0x40c955
cmp dword [esp + 0x40], 0
jne 0x40c955
mov eax, dword [esi + 0x28]
mov edx, dword [esi + 0x2c]
jmp 0x40c982
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x40]
push eax
call dword [esp + 0x2c]
test eax, eax
je 0x40c9cd
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x14]
push eax
call dword [esp + 0x28]
test eax, eax
je 0x40c9cd
lea ecx, [esp + 0x28]
call fcn.004125f6
mov dword [esi + 0x30], eax
push ebx
mov dword [esi + 0x34], edx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ecx, dword [esp + 0x38]
mov edx, edi
call fcn.0040c9fc
xor ecx, ecx
mov word [esi + 6], ax
inc ecx
xor eax, eax
add eax, dword [esp + 0x58]
mov word [esi + 8], cx
mov ecx, dword [esp + 0x54]
adc ecx, 0
mov dword [esi + 0x18], eax
xor eax, eax
mov dword [esi + 0x1c], ecx
mov word [esi + 4], ax
mov dword [esi + 0xa], eax
lea eax, [ebp - 1]
mov dword [esi], eax
mov dword [esi + 0x10], eax
xor eax, eax
jmp 0x40c9f1
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.004216e5
pop ecx
push ebx
call dword [sym.imp.KERNEL32.dll_FindClose]
jmp 0x40c9ee
call fcn.0042171b
mov dword [eax], 0x16
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48c
ret