Function at 0x5fb6e0
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 [0x73d1f0]
xor ecx, ecx
mov byte [esp + 0x1f], al
mov cl, ah
cmp cl, 1
je 0x5fb731
pop edi
pop esi
pop ebp
mov eax, 0x80000a04
pop ebx
add esp, 0x180
ret
test al, al
mov byte [esp + 0x18], 0
jbe 0x5fb983
mov ebp, dword [esp + 0x18]
push 0
lea edx, [esp + 0x5c]
push ebp
push edx
call fcn.005fb530
lea eax, [esp + 0x64]
push eax
call dword [0x73d1f4]
mov esi, eax
mov al, byte [esp + 0x69]
add esp, 0x10
test al, al
jne 0x5fb777
push 1
call dword [sym.imp.kernel32.dll_Sleep]
mov al, byte [esp + 0x59]
test al, al
je 0x5fb767
cmp esi, 1
jne 0x5fb967
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.005fb550
lea ecx, [esp + 0x3c]
push ecx
call dword [0x73d1f4]
mov edi, eax
mov al, byte [esp + 0x41]
add esp, 0x10
test al, al
jne 0x5fb7cc
push 1
call dword [sym.imp.kernel32.dll_Sleep]
mov al, byte [esp + 0x31]
test al, al
je 0x5fb7bc
cmp edi, 1
jne 0x5fb948
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.005fb2e0
mov al, byte [0x73d1a1]
add esp, 0x18
cmp al, 1
jne 0x5fb935
mov al, byte [esp + 0x94]
cmp al, 0x15
je 0x5fb840
cmp al, 5
je 0x5fb840
cmp al, 4
jne 0x5fb935
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.005fbb60
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 0x5fb97f
mov ebp, dword [esp + 0x18]
inc ebx
cmp ebx, 7
mov dword [esp + 0x14], ebx
jl 0x5fb798
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x198]
cmp edx, eax
mov edi, edx
jge 0x5fb983
mov al, byte [esp + 0x18]
mov cl, byte [esp + 0x1f]
inc al
cmp al, cl
mov byte [esp + 0x18], al
jb 0x5fb73e
jmp 0x5fb983
mov edi, dword [esp + 0x10]
xor eax, eax
test edi, edi
jle 0x5fbb4f
mov esi, dword [esp + 0x194]
lea ecx, [esi + 0x10]
mov dword [esp + 0x18], ecx
cmp byte [ecx], 0x3f
je 0x5fb9b5
inc eax
add ecx, 0x7c
cmp eax, edi
jl 0x5fb99b
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x180
ret
mov eax, dword [0x7327ac]
test eax, eax
je 0x5fba67
call dword [0x73d17c]
test eax, eax
jge 0x5fb9dc
pop edi
pop esi
pop ebp
mov eax, 0x80000b00
pop ebx
add esp, 0x180
ret
lea eax, [esp + 0xf8]
push eax
call dword [0x73d178]
add esp, 4
xor eax, eax
mov byte [esp + eax + 0x3c], al
inc eax
cmp eax, 0x1a
jl 0x5fb9ef
lea ecx, [esp + 0x3c]
push ecx
call dword [0x73d174]
add esp, 4
add esi, 0x11
mov ebx, edi
lea edx, [esp + 0x2c]
lea eax, [esi - 0x11]
push edx
push eax
call fcn.005fb5e0
add esp, 8
test eax, eax
jne 0x5fba4a
mov cl, byte [esp + 0x2c]
cmp byte [esp + eax + 0x3c], cl
je 0x5fba33
inc eax
cmp eax, 0x1a
jl 0x5fba25
jmp 0x5fba4a
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 0x5fba0c
lea ecx, [esp + 0xf8]
push ecx
call dword [0x73d174]
add esp, 4
call dword [0x73d180]
mov ebp, 0x41
lea edx, [esp + 0x3c]
xor ebx, ebx
sub ebp, edx
mov dword [esp + 0x14], ebp
jmp 0x5fba7e
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 0x5fbacd
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 0x5fbac9
inc eax
add ecx, 0x7c
cmp eax, edi
jl 0x5fbab7
jmp 0x5fbacd
add al, 0x80
mov byte [esi], al
inc ebx
cmp ebx, 0x1a
jl 0x5fba7a
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x14], 0
cmp byte [ebp], 0x3f
jne 0x5fbb3f
mov al, byte [ebp + 1]
lea ebx, [ebp + 1]
test al, al
mov edi, 1
je 0x5fbb3b
mov esi, ebx
xor eax, eax
mov al, byte [esi]
cmp byte [esp + eax - 5], 1
jne 0x5fbb05
inc edi
inc esi
jmp 0x5fbb1a
mov ecx, 0x1f
lea edx, [esi + 1]
sub ecx, edi
push ecx
push edx
push esi
call fcn.00637f30
add esp, 0xc
cmp byte [esi], 0
jne 0x5fbaf6
cmp edi, 2
jne 0x5fbb3b
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 0x5fbadf
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x180
ret