Function at 0x4ac648
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
mov ecx, 6
push 0
push 0
dec ecx
jne 0x4ac650
push ecx
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x4ac975
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0x15], 0
mov byte [0x4b3d19], 0
mov byte [0x4b3d18], 1
xor eax, eax
push ebp
push 0x4ac6e3
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [0x4b3d2c], 0x44
lea eax, [ebp - 0x1c]
mov dl, byte [0x4b3d2c]
call fcn.00404514
lea eax, [ebp - 0x1c]
mov edx, 0x4ac98c
call fcn.004045f4
mov eax, dword [ebp - 0x1c]
call fcn.004047ec
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 2
jne 0x4ac6ca
mov byte [ebp - 0x15], 1
jmp 0x4ac6d9
inc byte [0x4b3d2c]
cmp byte [0x4b3d2c], 0x5b
jne 0x4ac696
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4ac6ed
cmp byte [ebp - 0x15], 1
jne 0x4ac917
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x344]
mov dl, 1
call fcn.00449c80
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x348]
xor edx, edx
call fcn.00449c80
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x34c]
mov edx, 0x4ac998
call fcn.00449d90
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x330]
call fcn.00449d60
mov edx, dword [ebp - 0x20]
mov eax, 0x4b3d28
call fcn.00404380
mov eax, dword [0x4b2c1c]
mov byte [eax], 0x2d
call fcn.0040a194
fstp qword [ebp - 0x10]
wait
xor eax, eax
mov dword [0x4b3d14], eax
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.004adc8c
lea eax, [ebp - 0x24]
mov dl, byte [0x4b3d2c]
call fcn.00404514
mov edx, dword [ebp - 0x24]
mov eax, 0x4b3d10
mov ecx, 0x4ac98c
call fcn.00404638
mov eax, dword [0x4b3d10]
call fcn.004ab5d0
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x338]
mov eax, dword [eax + 0x26c]
call fcn.00436a18
xor eax, eax
push ebp
push 0x4ac7df
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x28]
mov ecx, 0x4ac9ac
mov edx, dword [0x4b3d10]
call fcn.00404638
mov eax, dword [ebp - 0x28]
call fcn.004ab8fc
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4ac7e9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x394]
mov edx, dword [eax]
call dword [edx + 0xc8]
test al, al
jne 0x4ac94a
cmp dword [ebp - 0x14], 0
jle 0x4ac94a
mov eax, dword [0x4b3d28]
call fcn.00408b08
test al, al
jne 0x4ac829
mov eax, dword [0x4b3d28]
call fcn.0040290c
call fcn.0040286c
xor eax, eax
push ebp
push 0x4ac851
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [0x4b3d1c]
mov eax, dword [0x4b3d28]
call fcn.00408b40
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4ac85b
push dword [0x4b3d28]
push 0x4ac9b8
lea edx, [ebp - 0x2c]
mov al, byte [0x4b3d2c]
call fcn.004ab198
push dword [ebp - 0x2c]
mov eax, 0x4b3d28
mov edx, 3
call fcn.004046ac
mov eax, dword [0x4b3d28]
call fcn.00408b08
test al, al
jne 0x4ac8a2
mov eax, dword [0x4b3d28]
call fcn.0040290c
call fcn.0040286c
push dword [0x4b3d28]
push 0x4ac9b8
push 0x4ac9c4
push dword [ebp - 0xc]
push dword [ebp - 0x10]
lea eax, [ebp - 0x30]
call fcn.0040adcc
push dword [ebp - 0x30]
push 0x4ac9d4
lea edx, [ebp - 0x34]
mov eax, dword [ebp - 0x14]
call fcn.00408610
push dword [ebp - 0x34]
push 0x4ac9e4
mov eax, 0x4b3d28
mov edx, 7
call fcn.004046ac
mov eax, dword [0x4b3d28]
call fcn.00408b08
test al, al
jne 0x4ac94a
mov eax, dword [0x4b3d28]
call fcn.0040290c
call fcn.0040286c
xor ecx, ecx
mov dl, 1
mov eax, dword [0x4aa5a0]
call fcn.0041aba0
jmp 0x4ac94a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x344]
xor edx, edx
call fcn.00449c80
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x348]
mov dl, 1
call fcn.00449c80
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x34c]
mov edx, 0x4ac9f0
call fcn.00449d90
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4ac97c
lea eax, [ebp - 0x34]
mov edx, 5
call fcn.00404350
lea eax, [ebp - 0x20]
call fcn.0040432c
lea eax, [ebp - 0x1c]
call fcn.0040432c
ret