Function at 0x4ca014
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 0x4ca318
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0xb], 0
lea edx, [ebp - 4]
mov eax, ebx
call fcn.0045b0c8
lea eax, [ebp - 4]
call fcn.004c3b74
mov edx, dword [ebp - 4]
mov eax, ebx
call fcn.0045b100
mov eax, dword [ebp - 4]
test eax, eax
je 0x4ca06b
sub eax, 4
mov eax, dword [eax]
cmp eax, 0xf0
jle 0x4ca091
push 0
push 1
push 1
mov eax, dword [0x505e7c]
mov eax, dword [eax + 0xb4]
mov cl, 2
xor edx, edx
call fcn.004e23e8
jmp 0x4ca2f0
mov eax, dword [ebp - 4]
test eax, eax
je 0x4ca09d
sub eax, 4
mov eax, dword [eax]
cmp eax, 2
jl 0x4ca0ae
mov eax, dword [ebp - 4]
cmp word [eax], 0x5c
sete al
jmp 0x4ca0b0
xor eax, eax
test al, al
je 0x4ca0c1
mov eax, dword [ebp - 4]
cmp word [eax + 2], 0x5c
sete al
jmp 0x4ca0c3
xor eax, eax
mov ebx, eax
test bl, bl
je 0x4ca0eb
cmp byte [ebp - 9], 0
jne 0x4ca0eb
push 0
push 1
push 1
mov eax, dword [0x505e7c]
mov eax, dword [eax + 0x6c]
mov cl, 2
xor edx, edx
call fcn.004e23e8
jmp 0x4ca2f0
test bl, bl
jne 0x4ca196
cmp byte [ebp - 0xa], 0
jne 0x4ca100
mov edx, 4
jmp 0x4ca105
mov edx, 3
mov eax, dword [ebp - 4]
test eax, eax
je 0x4ca111
sub eax, 4
mov eax, dword [eax]
cmp edx, eax
jle 0x4ca119
mov al, 1
jmp 0x4ca14d
mov eax, dword [ebp - 4]
movzx edx, word [eax]
mov eax, edx
mov ecx, edx
add ecx, 0xffffff9f
sub cx, 0x1a
jae 0x4ca132
mov eax, edx
and ax, 0xffdf
mov esi, 0x4ca32c
cmp ax, 0x100
jae 0x4ca145
movzx eax, al
bt dword [esi], eax
jb 0x4ca149
xor eax, eax
jmp 0x4ca14b
mov al, 1
xor al, 1
test al, al
je 0x4ca155
mov al, 1
jmp 0x4ca160
mov eax, dword [ebp - 4]
cmp word [eax + 2], 0x3a
setne al
test al, al
je 0x4ca168
mov al, 1
jmp 0x4ca173
mov eax, dword [ebp - 4]
cmp word [eax + 4], 0x5c
setne al
test al, al
je 0x4ca1ca
push 0
push 1
push 1
mov eax, dword [0x505e7c]
mov eax, dword [eax + 0x19c]
mov cl, 2
xor edx, edx
call fcn.004e23e8
jmp 0x4ca2f0
mov eax, dword [ebp - 4]
lea esi, [eax + 4]
mov dx, 0x5c
mov eax, esi
call fcn.0047e9f8
cmp esi, eax
jb 0x4ca1ca
push 0
push 1
push 1
mov eax, dword [0x505e7c]
mov eax, dword [eax + 0x19c]
mov cl, 2
xor edx, edx
call fcn.004e23e8
jmp 0x4ca2f0
mov eax, dword [ebp - 4]
call fcn.004c3cbc
test al, al
jne 0x4ca1ee
mov eax, dword [ebp - 4]
call fcn.004c3ce4
test al, al
jne 0x4ca1ee
mov eax, dword [ebp - 4]
call fcn.004c3d24
test al, al
je 0x4ca20d
push 0
push 1
push 1
mov eax, dword [0x505e7c]
mov eax, dword [eax + 0x18c]
mov cl, 2
xor edx, edx
call fcn.004e23e8
jmp 0x4ca2f0
lea eax, [ebp - 0x10]
push eax
mov ecx, 0x7fffffff
mov edx, 3
mov eax, dword [ebp - 4]
call fcn.00406bec
mov edx, dword [ebp - 0x10]
mov eax, 0x4ca358
call fcn.0047e870
test eax, eax
je 0x4ca265
push 0
push 1
push 1
lea edx, [ebp - 0x18]
mov eax, 0x4ca358
call fcn.004c3da8
mov edx, dword [ebp - 0x18]
lea ecx, [ebp - 0x14]
mov al, 7
call fcn.004abb3c
mov eax, dword [ebp - 0x14]
mov cl, 2
xor edx, edx
call fcn.004e23e8
jmp 0x4ca2f0
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 4]
call fcn.0047e794
mov eax, dword [ebp - 0x20]
lea edx, [ebp - 0x1c]
call fcn.0047e290
mov eax, dword [ebp - 0x1c]
lea edx, [ebp - 8]
call fcn.0047ea84
mov eax, dword [ebp - 8]
call fcn.004c9fa8
mov eax, dword [ebp - 8]
call fcn.0047eb68
test al, al
jne 0x4ca2b6
push 0
push 1
push 1
mov eax, dword [0x505e7c]
mov eax, dword [eax + 0x190]
mov cl, 2
xor edx, edx
call fcn.004e23e8
jmp 0x4ca2f0
test bl, bl
jne 0x4ca2ec
cmp byte [ebp + 8], 0
jne 0x4ca2ec
mov eax, dword [ebp - 8]
call fcn.004064d4
push eax
call sub.kernel32.dll_GetDriveTypeW
cmp eax, 4
jne 0x4ca2ec
push 0
push 1
push 1
mov eax, dword [0x505e7c]
mov eax, dword [eax + 0x68]
mov cl, 2
xor edx, edx
call fcn.004e23e8
jmp 0x4ca2f0
mov byte [ebp - 0xb], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4ca31f
lea eax, [ebp - 0x20]
mov edx, 5
call fcn.00406440
lea eax, [ebp - 8]
mov edx, 2
call fcn.00406440
ret