Function at 0x404550
Capabilities:
Get disk information
Manipulate console buffer

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x254
mov eax, dword [0x418008]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x4157e8
call fcn.00405cae
add esp, 4
call fcn.004061c0
call dword [sym.imp.kernel32.dll_GetLogicalDrives]
mov edi, dword [sym.imp.kernel32.dll_GetDriveTypeW]
mov ebx, eax
mov dword [ebp - 0x250], 0
mov esi, 0x1f
mov eax, 1
mov ecx, esi
shl eax, cl
test ebx, eax
je 0x40462a
lea ecx, [esi + 0x41]
mov word [ebp - 0x230], cx
xor ecx, ecx
push 0x200
push ecx
lea edx, [ebp - 0x228]
push edx
mov dword [ebp - 0x22e], 0x5c003a
mov word [ebp - 0x22a], cx
call fcn.0040b800
add esp, 0xc
lea eax, [ebp - 0x230]
push eax
call edi
cmp eax, 3
jne 0x40462a
push 0x415850
lea ecx, [ebp - 0x230]
push ecx
call dword [sym.imp.shlwapi.dll_PathAppendW]
test eax, eax
je 0x40462a
xor eax, eax
mov dword [ebp - 0x254], eax
mov dword [ebp - 0x24c], eax
lea edx, [ebp - 0x24c]
push edx
lea eax, [ebp - 0x254]
push eax
lea eax, [ebp - 0x230]
call fcn.00404490
add esp, 8
test eax, eax
jne 0x404633
dec esi
jns 0x404595
jmp 0x40467b
cmp byte [ebp + 8], 0
mov eax, dword [ebp - 0x254]
mov ecx, dword [ebp - 0x24c]
mov byte [ecx + eax], 0
mov dword [ebp - 0x250], eax
je 0x404663
push 0x415868
push eax
call fcn.00405fb4
add esp, 8
mov dword [ebp - 0x250], eax
cmp dword [ebp - 0x250], 0
je 0x40467b
mov edx, dword [ebp - 0x250]
push edx
call fcn.00405cae
add esp, 4
push 0x415874
call fcn.00405cae
xor eax, eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], eax
mov word [ebp - 8], ax
lea eax, [ebp - 0x28]
push eax
push 0x41589c
call fcn.00405f97
add esp, 0xc
push 0
push 0
push 1
push 0
call dword [sym.imp.kernel32.dll_CreateEventW]
mov esi, eax
lea ecx, [ebp - 0x28]
push esi
push ecx
call fcn.00401f30
add esp, 8
push 0
push esi
call dword [sym.imp.kernel32.dll_WaitForSingleObject]
test eax, eax
jne 0x4047bd
mov ebx, dword [sym.imp.kernel32.dll_GetStdHandle]
xor edx, edx
mov dword [ebp - 0x24c], edx
mov edi, edx
push 0x4158a0
call fcn.00405cae
add esp, 4
call fcn.004061c0
push 0xfffffffffffffff5
call ebx
lea ecx, [ebp - 0x248]
mov esi, eax
push ecx
push esi
call dword [sym.imp.kernel32.dll_GetConsoleScreenBufferInfo]
movsx eax, word [ebp - 0x246]
movsx ecx, word [ebp - 0x248]
imul eax, ecx
lea edx, [ebp - 0x24c]
push edx
push edi
push eax
push 0x20
push esi
call dword [sym.imp.kernel32.dll_FillConsoleOutputCharacterW]
push edi
push esi
call dword [sym.imp.kernel32.dll_SetConsoleCursorPosition]
mov eax, dword [ebp - 0x250]
test eax, eax
je 0x404756
push eax
call fcn.00405cae
add esp, 4
push 0x415874
call fcn.00405cae
xor eax, eax
lea edx, [ebp - 0x28]
push edx
push 0x41589c
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], eax
mov word [ebp - 8], ax
call fcn.00405f97
add esp, 0xc
push 0
push 0
push 1
push 0
call dword [sym.imp.kernel32.dll_CreateEventW]
mov esi, eax
lea eax, [ebp - 0x28]
push esi
push eax
call fcn.00401f30
add esp, 8
push 0
push esi
call dword [sym.imp.kernel32.dll_WaitForSingleObject]
test eax, eax
je 0x4046f2
push 0x4158c8
call fcn.00405cae
add esp, 4
call fcn.004061c0
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00405c9f
mov esp, ebp
pop ebp
ret