Function at 0x515d6c
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push ebx
push esi
mov byte [ebp - 0xa], cl
mov byte [ebp - 9], dl
mov ebx, eax
xor eax, eax
push ebp
push 0x516071
push dword fs:[eax]
mov dword fs:[eax], esp
nop
mov byte [ebp - 0xb], 0
lea edx, [ebp - 4]
mov eax, ebx
call fcn.00489b40
lea eax, [ebp - 4]
call fcn.0050f8a8
mov edx, dword [ebp - 4]
mov eax, ebx
call fcn.00489b78
mov eax, dword [ebp - 4]
test eax, eax
je 0x515dc4
sub eax, 4
mov eax, dword [eax]
cmp eax, 0xf0
jle 0x515dea
push 0
push 1
push 1
mov eax, dword [0x55a2a4]
mov eax, dword [eax + 0xb4]
mov cl, 2
xor edx, edx
call fcn.0052f704
jmp 0x516049
mov eax, dword [ebp - 4]
test eax, eax
je 0x515df6
sub eax, 4
mov eax, dword [eax]
cmp eax, 2
jl 0x515e07
mov eax, dword [ebp - 4]
cmp word [eax], 0x5c
sete al
jmp 0x515e09
xor eax, eax
test al, al
je 0x515e1a
mov eax, dword [ebp - 4]
cmp word [eax + 2], 0x5c
sete al
jmp 0x515e1c
xor eax, eax
mov ebx, eax
test bl, bl
je 0x515e44
cmp byte [ebp - 9], 0
jne 0x515e44
push 0
push 1
push 1
mov eax, dword [0x55a2a4]
mov eax, dword [eax + 0x6c]
mov cl, 2
xor edx, edx
call fcn.0052f704
jmp 0x516049
test bl, bl
jne 0x515eef
cmp byte [ebp - 0xa], 0
jne 0x515e59
mov edx, 4
jmp 0x515e5e
mov edx, 3
mov eax, dword [ebp - 4]
test eax, eax
je 0x515e6a
sub eax, 4
mov eax, dword [eax]
cmp edx, eax
jle 0x515e72
mov al, 1
jmp 0x515ea6
mov eax, dword [ebp - 4]
movzx edx, word [eax]
mov eax, edx
mov ecx, edx
add ecx, 0xffffff9f
sub cx, 0x1a
jae 0x515e8b
mov eax, edx
and ax, 0xffdf
mov esi, 0x516084
cmp ax, 0x100
jae 0x515e9e
movzx eax, al
bt dword [esi], eax
jb 0x515ea2
xor eax, eax
jmp 0x515ea4
mov al, 1
xor al, 1
test al, al
je 0x515eae
mov al, 1
jmp 0x515eb9
mov eax, dword [ebp - 4]
cmp word [eax + 2], 0x3a
setne al
test al, al
je 0x515ec1
mov al, 1
jmp 0x515ecc
mov eax, dword [ebp - 4]
cmp word [eax + 4], 0x5c
setne al
test al, al
je 0x515f23
push 0
push 1
push 1
mov eax, dword [0x55a2a4]
mov eax, dword [eax + 0x19c]
mov cl, 2
xor edx, edx
call fcn.0052f704
jmp 0x516049
mov eax, dword [ebp - 4]
lea esi, [eax + 4]
mov dx, 0x5c
mov eax, esi
call fcn.004bc0f4
cmp esi, eax
jb 0x515f23
push 0
push 1
push 1
mov eax, dword [0x55a2a4]
mov eax, dword [eax + 0x19c]
mov cl, 2
xor edx, edx
call fcn.0052f704
jmp 0x516049
mov eax, dword [ebp - 4]
call fcn.0050f9f4
test al, al
jne 0x515f47
mov eax, dword [ebp - 4]
call fcn.0050fa1c
test al, al
jne 0x515f47
mov eax, dword [ebp - 4]
call fcn.0050fa60
test al, al
je 0x515f66
push 0
push 1
push 1
mov eax, dword [0x55a2a4]
mov eax, dword [eax + 0x18c]
mov cl, 2
xor edx, edx
call fcn.0052f704
jmp 0x516049
lea eax, [ebp - 0x10]
push eax
mov ecx, 0x7fffffff
mov edx, 3
mov eax, dword [ebp - 4]
call fcn.00407fa0
mov edx, dword [ebp - 0x10]
mov eax, 0x5160b0
call fcn.004bbf6c
test eax, eax
je 0x515fbe
push 0
push 1
push 1
lea edx, [ebp - 0x18]
mov eax, 0x5160b0
call fcn.0050fae4
mov edx, dword [ebp - 0x18]
lea ecx, [ebp - 0x14]
mov al, 7
call fcn.004f2c88
mov eax, dword [ebp - 0x14]
mov cl, 2
xor edx, edx
call fcn.0052f704
jmp 0x516049
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 4]
call fcn.004bbe90
mov eax, dword [ebp - 0x20]
lea edx, [ebp - 0x1c]
call fcn.004bb98c
mov eax, dword [ebp - 0x1c]
lea edx, [ebp - 8]
call fcn.004bc180
mov eax, dword [ebp - 8]
call fcn.00515d00
mov eax, dword [ebp - 8]
call fcn.004bc2a4
test al, al
jne 0x51600f
push 0
push 1
push 1
mov eax, dword [0x55a2a4]
mov eax, dword [eax + 0x190]
mov cl, 2
xor edx, edx
call fcn.0052f704
jmp 0x516049
test bl, bl
jne 0x516045
cmp byte [ebp + 8], 0
jne 0x516045
mov eax, dword [ebp - 8]
call fcn.00407854
push eax
call sub.kernel32.dll_GetDriveTypeW
cmp eax, 4
jne 0x516045
push 0
push 1
push 1
mov eax, dword [0x55a2a4]
mov eax, dword [eax + 0x68]
mov cl, 2
xor edx, edx
call fcn.0052f704
jmp 0x516049
mov byte [ebp - 0xb], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x516078
lea eax, [ebp - 0x20]
mov edx, 5
call fcn.004077c0
lea eax, [ebp - 8]
mov edx, 2
call fcn.004077c0
ret