Function at 0x4ac060
Capabilities:
Get disk information

Disassembly:
sub esp, 0x180
push ebx
push ebp
push esi
push edi
xor edi, edi
mov byte [esp + 0x24], 0x12
mov byte [esp + 0x25], 0
mov byte [esp + 0x26], 0
mov byte [esp + 0x27], 0
mov byte [esp + 0x28], 0x28
mov byte [esp + 0x29], 0
mov dword [esp + 0x10], edi
call dword [0x5fe870]
xor ecx, ecx
mov byte [esp + 0x1f], al
mov cl, ah
cmp cl, 1
je 0x4ac0b1
pop edi
pop esi
pop ebp
mov eax, 0x80000a04
pop ebx
add esp, 0x180
ret
test al, al
mov byte [esp + 0x18], 0
jbe 0x4ac303
mov ebp, dword [esp + 0x18]
push 0
lea edx, [esp + 0x5c]
push ebp
push edx
call fcn.004abeb0
lea eax, [esp + 0x64]
push eax
call dword [0x5fe874]
mov esi, eax
mov al, byte [esp + 0x69]
add esp, 0x10
test al, al
jne 0x4ac0f7
push 1
call dword [sym.imp.kernel32.dll_Sleep]
mov al, byte [esp + 0x59]
test al, al
je 0x4ac0e7
cmp esi, 1
jne 0x4ac2e7
mov edx, dword [esp + 0x194]
mov ecx, edi
shl ecx, 5
xor ebx, ebx
sub ecx, edi
mov dword [esp + 0x14], ebx
lea esi, [edx + ecx*4 + 0xc]
push ebx
lea eax, [esp + 0x34]
push ebp
push eax
call fcn.004abed0
lea ecx, [esp + 0x3c]
push ecx
call dword [0x5fe874]
mov edi, eax
mov al, byte [esp + 0x41]
add esp, 0x10
test al, al
jne 0x4ac14c
push 1
call dword [sym.imp.kernel32.dll_Sleep]
mov al, byte [esp + 0x31]
test al, al
je 0x4ac13c
cmp edi, 1
jne 0x4ac2c8
and ebp, 0xff
xor eax, eax
mov ecx, 0x19
lea edi, [esp + 0x94]
shl ebp, 0x10
push eax
lea edx, [esp + 0x98]
rep stosd dword es:[edi], eax
push 0x28
or ebp, ebx
push edx
lea eax, [esp + 0x30]
push 6
lea ecx, [esp + 0x124]
shl ebp, 8
push eax
push ecx
mov dword [esp + 0x12c], ebp
call fcn.004abc60
mov al, byte [0x5fe821]
add esp, 0x18
cmp al, 1
jne 0x4ac2b5
mov al, byte [esp + 0x94]
cmp al, 0x15
je 0x4ac1c0
cmp al, 5
je 0x4ac1c0
cmp al, 4
jne 0x4ac2b5
mov dword [esi - 4], 1
mov dword [esi], 0
mov ecx, 8
xor eax, eax
lea edi, [esi + 4]
mov dword [esi - 8], 0
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x62]
lea edx, [esi - 0xc]
lea eax, [esi + 0x24]
push edx
mov dword [edx], ebp
mov dword [eax], ecx
mov ecx, dword [esp + 0x6a]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x6e]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x72]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x76]
lea eax, [esi + 0x34]
mov dword [esi + 0x34], ecx
mov ecx, dword [esp + 0x7a]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x7e]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x82]
mov dword [eax + 0xc], ecx
lea ecx, [esi + 0x44]
mov edi, ecx
xor eax, eax
mov dword [edi], eax
mov dword [edi + 4], eax
mov dword [edi + 8], eax
mov dword [edi + 0xc], eax
lea eax, [esi + 0x54]
mov ebx, eax
xor edi, edi
mov dword [ebx], edi
mov dword [ebx + 4], edi
mov dword [ebx + 8], edi
mov dword [ebx + 0xc], edi
mov dword [ebx + 0x10], edi
lea edi, [esi + 0x68]
mov ebp, edi
xor ebx, ebx
mov dword [ebp], ebx
mov dword [ebp + 4], ebx
mov ebx, dword [esp + 0xa0]
mov dword [ecx], ebx
mov ebx, dword [esp + 0xa4]
mov dword [ecx + 4], ebx
mov ecx, dword [esp + 0xa8]
mov dword [eax], ecx
mov ecx, dword [esp + 0xac]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0xb0]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0xb4]
mov dword [eax + 0xc], ecx
mov eax, dword [esp + 0xb8]
mov dword [edi], eax
call fcn.004ac4e0
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
add esp, 4
inc ecx
mov dword [esp + 0x10], ecx
add esi, 0x7c
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x198]
cmp ecx, eax
jge 0x4ac2ff
mov ebp, dword [esp + 0x18]
inc ebx
cmp ebx, 7
mov dword [esp + 0x14], ebx
jl 0x4ac118
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x198]
cmp edx, eax
mov edi, edx
jge 0x4ac303
mov al, byte [esp + 0x18]
mov cl, byte [esp + 0x1f]
inc al
cmp al, cl
mov byte [esp + 0x18], al
jb 0x4ac0be
jmp 0x4ac303
mov edi, dword [esp + 0x10]
xor eax, eax
test edi, edi
jle 0x4ac4cf
mov esi, dword [esp + 0x194]
lea ecx, [esi + 0x10]
mov dword [esp + 0x18], ecx
cmp byte [ecx], 0x3f
je 0x4ac335
inc eax
add ecx, 0x7c
cmp eax, edi
jl 0x4ac31b
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x180
ret
mov eax, dword [0x5f3ff4]
test eax, eax
je 0x4ac3e7
call dword [0x5fe810]
test eax, eax
jge 0x4ac35c
pop edi
pop esi
pop ebp
mov eax, 0x80000b00
pop ebx
add esp, 0x180
ret
lea eax, [esp + 0xf8]
push eax
call dword [0x5fe80c]
add esp, 4
xor eax, eax
mov byte [esp + eax + 0x3c], al
inc eax
cmp eax, 0x1a
jl 0x4ac36f
lea ecx, [esp + 0x3c]
push ecx
call dword [0x5fe808]
add esp, 4
add esi, 0x11
mov ebx, edi
lea edx, [esp + 0x2c]
lea eax, [esi - 0x11]
push edx
push eax
call fcn.004abf60
add esp, 8
test eax, eax
jne 0x4ac3ca
mov cl, byte [esp + 0x2c]
cmp byte [esp + eax + 0x3c], cl
je 0x4ac3b3
inc eax
cmp eax, 0x1a
jl 0x4ac3a5
jmp 0x4ac3ca
add al, 0x41
mov ecx, 7
mov byte [esi - 1], al
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, dword [esp + 0x10]
add esi, 0x7c
dec ebx
jne 0x4ac38c
lea ecx, [esp + 0xf8]
push ecx
call dword [0x5fe808]
add esp, 4
call dword [0x5fe814]
mov ebp, 0x41
lea edx, [esp + 0x3c]
xor ebx, ebx
sub ebp, edx
mov dword [esp + 0x14], ebp
jmp 0x4ac3fe
mov ebp, dword [esp + 0x14]
mov al, bl
lea esi, [esp + ebx + 0x3c]
lea ecx, [esp + 0x20]
add al, 0x41
push ecx
mov byte [esi], 0
mov byte [esp + 0x24], al
mov byte [esp + 0x25], 0x3a
mov byte [esp + 0x26], 0x5c
mov byte [esp + 0x27], 0
call dword [sym.imp.kernel32.dll_GetDriveTypeA]
cmp eax, 5
jne 0x4ac44d
mov ecx, dword [esp + 0x18]
xor eax, eax
mov byte [esi], 1
add ebp, esi
xor edx, edx
mov dl, byte [ecx]
cmp edx, ebp
je 0x4ac449
inc eax
add ecx, 0x7c
cmp eax, edi
jl 0x4ac437
jmp 0x4ac44d
add al, 0x80
mov byte [esi], al
inc ebx
cmp ebx, 0x1a
jl 0x4ac3fa
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x14], 0
cmp byte [ebp], 0x3f
jne 0x4ac4bf
mov al, byte [ebp + 1]
lea ebx, [ebp + 1]
test al, al
mov edi, 1
je 0x4ac4bb
mov esi, ebx
xor eax, eax
mov al, byte [esi]
cmp byte [esp + eax - 5], 1
jne 0x4ac485
inc edi
inc esi
jmp 0x4ac49a
mov ecx, 0x1f
lea edx, [esi + 1]
sub ecx, edi
push ecx
push edx
push esi
call fcn.004e7a00
add esp, 0xc
cmp byte [esi], 0
jne 0x4ac476
cmp edi, 2
jne 0x4ac4bb
mov cl, byte [esp + 0x14]
mov al, byte [ebx]
add cl, 0x80
xor edx, edx
mov dl, al
mov byte [ebp], al
mov byte [ebx], 0
mov byte [esp + edx - 5], cl
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
add ebp, 0x7c
inc eax
cmp eax, edi
mov dword [esp + 0x14], eax
jl 0x4ac45f
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x180
ret