Function at 0x407f44
Capabilities:
Get disk information

Disassembly:
mov al, byte [0x440820]
sub esp, 0x484
push ebx
mov ebx, ecx
push ebp
push esi
mov esi, edx
push edi
cmp al, 0xff
jne 0x407f6a
call fcn.0040ec1b
test eax, eax
setne al
mov byte [0x440820], al
test al, al
je 0x407f7c
push esi
push ebx
call fcn.0041fea9
pop ecx
pop ecx
jmp 0x408206
test ebx, ebx
je 0x4081f8
test esi, esi
je 0x4081f8
push 0x437518
push ebx
call fcn.0041f63e
pop ecx
pop ecx
test eax, eax
je 0x407fad
call fcn.0041ff2d
mov dword [eax], 2
jmp 0x408203
xor ecx, ecx
cmp word [ebx + 2], 0x3a
jne 0x407fd3
movzx eax, word [ebx]
test ax, ax
je 0x407fc4
cmp word [ebx + 4], cx
je 0x407f9d
push eax
call fcn.00420009
movzx ebp, ax
pop ecx
sub ebp, 0x60
jmp 0x407fda
call fcn.00420049
mov ebp, eax
lea eax, [esp + 0x30]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov edi, eax
cmp edi, 0xffffffff
jne 0x4080ba
push 0x437520
push ebx
call fcn.0041f63e
pop ecx
pop ecx
test eax, eax
jne 0x408063
push ecx
lea eax, [esp + 0x284]
mov edx, 0x104
push eax
mov ecx, ebx
call fcn.00407e52
pop ecx
pop ecx
test eax, eax
je 0x408063
lea ecx, [esp + 0x280]
xor edi, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, di
jne 0x408029
sub ecx, edx
sar ecx, 1
jne 0x40804a
lea ecx, [esp + 0x280]
call fcn.00407f1f
test eax, eax
je 0x408063
lea ecx, [esp + 0x280]
push ecx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
xor ecx, ecx
inc ecx
cmp eax, ecx
ja 0x407f9d
xor eax, eax
mov dword [esp + 0x30], 0x10
mov dword [esp + 0x4c], eax
lea edi, [esp + 0x10]
mov dword [esp + 0x50], eax
lea ecx, [esp + 0x10]
mov word [esp + 0x5c], ax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov eax, 0x7bc
mov word [esp + 0x10], ax
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.00417931
mov dword [esi + 0x24], eax
mov dword [esi + 0x20], eax
mov dword [esi + 0x28], eax
jmp 0x4081a2
cmp dword [esp + 0x44], 0
jne 0x4080cc
cmp dword [esp + 0x48], 0
jne 0x4080cc
xor eax, eax
jmp 0x408105
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x48]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x4081e2
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x4081e2
lea ecx, [esp + 0x20]
call fcn.00417931
cmp dword [esp + 0x3c], 0
mov dword [esi + 0x24], eax
jne 0x408118
cmp dword [esp + 0x40], 0
jne 0x408118
jmp 0x408151
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x4081e2
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x4081e2
lea ecx, [esp + 0x20]
call fcn.00417931
cmp dword [esp + 0x34], 0
mov dword [esi + 0x20], eax
jne 0x408167
cmp dword [esp + 0x38], 0
jne 0x408167
mov eax, dword [esi + 0x24]
jmp 0x408198
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x4081e2
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x4081e2
lea ecx, [esp + 0x20]
call fcn.00417931
push edi
mov dword [esi + 0x28], eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ecx, dword [esp + 0x30]
mov edx, ebx
call fcn.00408211
xor ecx, ecx
mov word [esi + 6], ax
inc ecx
xor eax, eax
add eax, dword [esp + 0x50]
mov word [esi + 8], cx
mov ecx, dword [esp + 0x4c]
push 0
pop edi
adc ecx, edi
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 0x408206
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.0041fef7
pop ecx
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
jmp 0x408203
call fcn.0041ff2d
mov dword [eax], 0x16
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x484
ret