Function at 0x5a5440
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd4
push ebx
xor edx, edx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x20], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x5a5982
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
cmp byte [eax + 0xb0], 0
jne 0x5a5490
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd0]
call fcn.0059ce94
call fcn.004097c8
call fcn.00409f1c
mov eax, dword [ebp - 4]
fstp qword [eax + 0xc0]
wait
jmp 0x5a549f
call fcn.0040b02c
mov eax, dword [ebp - 4]
fstp qword [eax + 0xc0]
wait
mov eax, dword [ebp - 4]
call fcn.005a5a98
test eax, eax
jle 0x5a54f2
mov eax, dword [ebp - 4]
cmp dword [eax + 0xbc], 0
je 0x5a54d9
mov eax, dword [ebp - 4]
cmp byte [eax + 0x2c], 7
je 0x5a54d9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xbc]
call fcn.004032dc
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xbc], edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb8]
call fcn.004032dc
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xb8], edx
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0xd0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
call fcn.0059ea60
test al, al
jne 0x5a55c3
mov eax, dword [ebp - 4]
cmp byte [eax + 0x145], 0
jne 0x5a555b
mov eax, dword [ebp - 4]
cmp word [eax + 0x7e], 0
je 0x5a553c
mov eax, dword [ebp - 4]
lea ecx, [eax + 0x3c]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x80]
call dword [ebx + 0x7c]
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3c], 0
jne 0x5a555b
mov ecx, 0x5a5998
mov dl, 1
mov eax, dword [0x59d528]
call fcn.0040d0bc
call fcn.004038cc
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3c], 1
je 0x5a5574
mov eax, dword [ebp - 4]
cmp byte [eax + 0x145], 0
je 0x5a575f
mov eax, dword [0x84227c]
mov eax, dword [eax]
mov dx, 0xfff5
call fcn.0042b9bc
push ebp
call fcn.005a5044
pop ecx
test al, al
jne 0x5a55b0
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x2c]
mov eax, dword [ebp - 4]
call fcn.005a59ac
mov eax, dword [0x84227c]
mov eax, dword [eax]
xor edx, edx
call fcn.0042b9bc
jmp 0x5a5964
mov eax, dword [0x84227c]
mov eax, dword [eax]
xor edx, edx
call fcn.0042b9bc
jmp 0x5a575f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
movzx eax, word [eax + 8]
mov edx, dword [ebp - 4]
mov dword [edx + 0xcc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
cmp word [eax + 8], 0
jbe 0x5a5653
lea ecx, [ebp - 0x2c]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x24]
mov edx, 3
call fcn.0059d078
mov eax, dword [ebp - 0x2c]
lea edx, [ebp - 0x20]
call fcn.00408fa8
mov eax, dword [ebp - 0x20]
movzx eax, byte [eax]
sub eax, 0x41
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x20]
cmp byte [eax + 1], 0x3a
je 0x5a5628
mov dl, 2
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x5a565d
lea eax, [ebp - 0x20]
call fcn.0059d458
push eax
call sub.KERNEL32.DLL_GetDriveTypeA
cmp eax, 2
jne 0x5a5647
mov dl, 1
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x5a565d
mov dl, 2
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x5a565d
xor edx, edx
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
movzx eax, word [eax + 0xa]
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0xcc]
je 0x5a568b
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
movzx edx, word [eax + 0xa]
inc edx
mov eax, dword [ebp - 4]
call fcn.005a4de0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
mov edx, dword [eax + 0x14]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd0]
xor ecx, ecx
mov ebx, dword [eax]
call dword [ebx + 0xc]
lea edx, [ebp - 0x18]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd0]
mov ecx, 4
mov ebx, dword [eax]
call dword [ebx + 4]
cmp dword [ebp - 0x18], 0x2014b50
je 0x5a5712
mov eax, dword [0x84227c]
mov eax, dword [eax]
mov dx, 0xfff5
call fcn.0042b9bc
push ebp
call fcn.005a5044
pop ecx
test al, al
jne 0x5a5702
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x2c]
mov eax, dword [ebp - 4]
call fcn.005a59ac
mov eax, dword [0x84227c]
mov eax, dword [eax]
xor edx, edx
call fcn.0042b9bc
jmp 0x5a5964
mov eax, dword [0x84227c]
mov eax, dword [eax]
xor edx, edx
call fcn.0042b9bc
jmp 0x5a575f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd0]
mov cx, 1
mov edx, 0xfffffffc
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov cl, 2
mov dl, 1
mov eax, dword [0x59db6c]
call fcn.0059ec18
mov edx, dword [ebp - 4]
mov dword [edx + 0xb8], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb8]
mov byte [eax + 0x18], 7
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb8]
mov edx, dword [ebp - 4]
mov dword [edx + 0xbc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
movzx eax, word [eax + 0xe]
dec eax
test eax, eax
jl 0x5a58d1
inc eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x10], 0
mov dl, 1
mov eax, dword [0x59d9cc]
call fcn.0059dc2c
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc8], 0
jne 0x5a57a7
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x34]
test al, al
jne 0x5a57be
push 0
push 0
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0xd0]
mov eax, dword [ebp - 8]
call fcn.0059e328
jmp 0x5a57d8
mov eax, dword [ebp - 4]
push eax
push 0x5a4f38
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0xd0]
mov eax, dword [ebp - 8]
call fcn.0059e328
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc8], 0
je 0x5a5856
lea ecx, [ebp - 0x14]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb8]
mov edx, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 0x48]
test al, al
je 0x5a5847
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb8]
mov edx, dword [ebp - 0x14]
call fcn.0059b488
mov edx, dword [0x59d9cc]
call fcn.004033c4
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x1c], eax
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x1c]
mov dword [eax + 0x30], edx
mov eax, dword [ebp - 8]
call fcn.004032dc
xor eax, eax
mov dword [ebp - 8], eax
jmp 0x5a5856
mov eax, dword [ebp - 8]
call fcn.004032dc
xor eax, eax
mov dword [ebp - 8], eax
jmp 0x5a58c5
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc8], 0
jne 0x5a5873
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb8]
mov edx, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
cmp word [eax + 8], 0
jbe 0x5a589d
mov eax, dword [ebp - 8]
call fcn.0059e5a4
test al, al
je 0x5a589d
lea ecx, [ebp - 0x2c]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.005a4610
mov eax, dword [ebp - 4]
movzx edx, word [eax + 0x116]
mov eax, dword [ebp - 4]
movzx eax, word [eax + 0x118]
add edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd0]
mov cx, 1
mov ebx, dword [eax]
call dword [ebx + 0xc]
inc dword [ebp - 0x10]
dec dword [ebp - 0x28]
jne 0x5a5780
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
cmp word [eax + 8], 0
jbe 0x5a592c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
call fcn.0059ebfc
test al, al
je 0x5a592c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
movzx eax, word [eax + 8]
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0xcc]
je 0x5a5921
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
movzx edx, word [eax + 8]
inc edx
mov eax, dword [ebp - 4]
call fcn.005a4de0
lea edx, [ebp - 0x2c]
mov eax, dword [ebp - 4]
call fcn.005a47b8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
movzx eax, word [eax + 8]
inc eax
mov edx, dword [ebp - 4]
mov dword [edx + 0x40], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x128]
movzx eax, word [eax + 8]
mov edx, dword [ebp - 4]
mov dword [edx + 0xcc], eax
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x2c]
mov eax, dword [ebp - 4]
call fcn.005a59ac
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5a5989
lea eax, [ebp - 0x2c]
call fcn.00403e74
lea eax, [ebp - 0x20]
call fcn.00403e74
ret