Function at 0x470620
Capabilities:
Get disk information

Disassembly:
sub esp, 0x25c
push ebx
push esi
mov esi, dword [esp + 0x268]
push edi
push ebp
push 0x471ff4
push esi
call fcn.00470cc0
add esp, 8
test eax, eax
je 0x470662
mov eax, 2
pop ebp
pop edi
mov dword [0x478c60], eax
pop esi
mov dword [0x478c64], eax
mov eax, 0xffffffff
pop ebx
add esp, 0x25c
ret
cmp byte [esi + 1], 0x3a
jne 0x4706a4
mov al, byte [esi]
test al, al
je 0x470693
cmp byte [esi + 2], 0
jne 0x470693
mov eax, 2
pop ebp
pop edi
mov dword [0x478c60], eax
pop esi
mov dword [0x478c64], eax
mov eax, 0xffffffff
pop ebx
add esp, 0x25c
ret
movsx eax, al
push eax
call fcn.00470da0
add esp, 4
lea ebx, [eax - 0x60]
jmp 0x4706ab
call fcn.00470d60
mov ebx, eax
lea eax, [esp + 0x28]
mov ebp, dword [sym.imp.KERNEL32.dll_FindFirstFileA]
push eax
push esi
call ebp
cmp eax, 0xffffffff
mov edi, eax
jne 0x470782
push 0x471ff0
push esi
call fcn.00470cc0
add esp, 8
test eax, eax
je 0x470763
lea eax, [esp + 0x168]
push 0x104
push esi
push eax
call fcn.00470be0
add esp, 0xc
mov ebp, eax
test ebp, ebp
je 0x470763
mov edi, ebp
mov ecx, 0xffffffff
sub eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 3
je 0x470716
push ebp
call fcn.004709c0
add esp, 4
test eax, eax
je 0x470763
push ebp
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 1
jbe 0x470763
xor eax, eax
mov ebp, dword [esp + 0x274]
mov dword [esp + 0x44], eax
push 0xffffffffffffffff
mov dword [esp + 0x4c], eax
push eax
mov byte [esp + 0x5c], al
push eax
mov dword [esp + 0x34], 0x10
push eax
push 1
push 1
push 0x7bc
call fcn.00455900
add esp, 0x1c
mov dword [ebp + 0x1c], eax
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x20], eax
jmp 0x47090a
mov eax, 2
pop ebp
pop edi
mov dword [0x478c60], eax
pop esi
mov dword [0x478c64], eax
mov eax, 0xffffffff
pop ebx
add esp, 0x25c
ret
lea eax, [esp + 0x20]
lea ecx, [esp + 0x3c]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x470995
lea eax, [esp + 0x10]
lea ecx, [esp + 0x20]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x470995
mov ebp, dword [esp + 0x274]
push 0xffffffffffffffff
mov eax, dword [esp + 0x20]
and eax, 0xffff
push eax
xor eax, eax
mov ax, word [esp + 0x22]
push eax
mov eax, dword [esp + 0x24]
and eax, 0xffff
push eax
xor eax, eax
mov ax, word [esp + 0x26]
push eax
xor eax, eax
mov ax, word [esp + 0x26]
push eax
mov eax, dword [esp + 0x28]
and eax, 0xffff
push eax
call fcn.00455900
add esp, 0x1c
mov dword [ebp + 0x1c], eax
cmp dword [esp + 0x34], 0
jne 0x47080a
cmp dword [esp + 0x38], 0
je 0x47087a
lea eax, [esp + 0x20]
lea ecx, [esp + 0x34]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x47096f
lea eax, [esp + 0x10]
lea ecx, [esp + 0x20]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x47096f
mov eax, dword [esp + 0x1c]
push 0xffffffffffffffff
and eax, 0xffff
push eax
xor eax, eax
mov ax, word [esp + 0x22]
push eax
mov eax, dword [esp + 0x24]
and eax, 0xffff
push eax
xor eax, eax
mov ax, word [esp + 0x26]
push eax
xor eax, eax
mov ax, word [esp + 0x26]
push eax
mov eax, dword [esp + 0x28]
and eax, 0xffff
push eax
call fcn.00455900
add esp, 0x1c
cmp dword [esp + 0x2c], 0
mov dword [ebp + 0x18], eax
jne 0x470890
cmp dword [esp + 0x30], 0
jne 0x470890
mov eax, dword [ebp + 0x1c]
jmp 0x470900
lea eax, [esp + 0x20]
lea ecx, [esp + 0x2c]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x470949
lea eax, [esp + 0x10]
lea ecx, [esp + 0x20]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x470949
mov eax, dword [esp + 0x1c]
push 0xffffffffffffffff
and eax, 0xffff
push eax
xor eax, eax
mov ax, word [esp + 0x22]
push eax
mov eax, dword [esp + 0x24]
and eax, 0xffff
push eax
xor eax, eax
mov ax, word [esp + 0x26]
push eax
xor eax, eax
mov ax, word [esp + 0x26]
push eax
mov eax, dword [esp + 0x28]
and eax, 0xffff
push eax
call fcn.00455900
add esp, 0x1c
push edi
mov dword [ebp + 0x20], eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [esp + 0x28]
push esi
push eax
call fcn.00470540
mov word [ebp + 6], ax
add esp, 8
mov word [ebp + 8], 1
mov eax, dword [esp + 0x48]
dec ebx
mov dword [ebp + 0x14], eax
mov dword [ebp], ebx
xor eax, eax
mov dword [ebp + 0x10], ebx
mov word [ebp + 4], ax
mov word [ebp + 0xc], ax
mov word [ebp + 0xa], ax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x25c
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.00454570
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x25c
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.00454570
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x25c
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.00454570
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x25c
ret