Function at 0x4ca018
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 0x4ca31c
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.004c3b78
mov edx, dword [ebp - 4]
mov eax, ebx
call fcn.0045b100
mov eax, dword [ebp - 4]
test eax, eax
je 0x4ca06f
sub eax, 4
mov eax, dword [eax]
cmp eax, 0xf0
jle 0x4ca095
push 0
push 1
push 1
mov eax, dword [0x504e48]
mov eax, dword [eax + 0xb4]
mov cl, 2
xor edx, edx
call fcn.004e11bc
jmp 0x4ca2f4
mov eax, dword [ebp - 4]
test eax, eax
je 0x4ca0a1
sub eax, 4
mov eax, dword [eax]
cmp eax, 2
jl 0x4ca0b2
mov eax, dword [ebp - 4]
cmp word [eax], 0x5c
sete al
jmp 0x4ca0b4
xor eax, eax
test al, al
je 0x4ca0c5
mov eax, dword [ebp - 4]
cmp word [eax + 2], 0x5c
sete al
jmp 0x4ca0c7
xor eax, eax
mov ebx, eax
test bl, bl
je 0x4ca0ef
cmp byte [ebp - 9], 0
jne 0x4ca0ef
push 0
push 1
push 1
mov eax, dword [0x504e48]
mov eax, dword [eax + 0x6c]
mov cl, 2
xor edx, edx
call fcn.004e11bc
jmp 0x4ca2f4
test bl, bl
jne 0x4ca19a
cmp byte [ebp - 0xa], 0
jne 0x4ca104
mov edx, 4
jmp 0x4ca109
mov edx, 3
mov eax, dword [ebp - 4]
test eax, eax
je 0x4ca115
sub eax, 4
mov eax, dword [eax]
cmp edx, eax
jle 0x4ca11d
mov al, 1
jmp 0x4ca151
mov eax, dword [ebp - 4]
movzx edx, word [eax]
mov eax, edx
mov ecx, edx
add ecx, 0xffffff9f
sub cx, 0x1a
jae 0x4ca136
mov eax, edx
and ax, 0xffdf
mov esi, 0x4ca330
cmp ax, 0x100
jae 0x4ca149
movzx eax, al
bt dword [esi], eax
jb 0x4ca14d
xor eax, eax
jmp 0x4ca14f
mov al, 1
xor al, 1
test al, al
je 0x4ca159
mov al, 1
jmp 0x4ca164
mov eax, dword [ebp - 4]
cmp word [eax + 2], 0x3a
setne al
test al, al
je 0x4ca16c
mov al, 1
jmp 0x4ca177
mov eax, dword [ebp - 4]
cmp word [eax + 4], 0x5c
setne al
test al, al
je 0x4ca1ce
push 0
push 1
push 1
mov eax, dword [0x504e48]
mov eax, dword [eax + 0x19c]
mov cl, 2
xor edx, edx
call fcn.004e11bc
jmp 0x4ca2f4
mov eax, dword [ebp - 4]
lea esi, [eax + 4]
mov dx, 0x5c
mov eax, esi
call fcn.0047e9f8
cmp esi, eax
jb 0x4ca1ce
push 0
push 1
push 1
mov eax, dword [0x504e48]
mov eax, dword [eax + 0x19c]
mov cl, 2
xor edx, edx
call fcn.004e11bc
jmp 0x4ca2f4
mov eax, dword [ebp - 4]
call fcn.004c3cc0
test al, al
jne 0x4ca1f2
mov eax, dword [ebp - 4]
call fcn.004c3ce8
test al, al
jne 0x4ca1f2
mov eax, dword [ebp - 4]
call fcn.004c3d28
test al, al
je 0x4ca211
push 0
push 1
push 1
mov eax, dword [0x504e48]
mov eax, dword [eax + 0x18c]
mov cl, 2
xor edx, edx
call fcn.004e11bc
jmp 0x4ca2f4
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, 0x4ca35c
call fcn.0047e870
test eax, eax
je 0x4ca269
push 0
push 1
push 1
lea edx, [ebp - 0x18]
mov eax, 0x4ca35c
call fcn.004c3dac
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.004e11bc
jmp 0x4ca2f4
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.004c9fac
mov eax, dword [ebp - 8]
call fcn.0047eb68
test al, al
jne 0x4ca2ba
push 0
push 1
push 1
mov eax, dword [0x504e48]
mov eax, dword [eax + 0x190]
mov cl, 2
xor edx, edx
call fcn.004e11bc
jmp 0x4ca2f4
test bl, bl
jne 0x4ca2f0
cmp byte [ebp + 8], 0
jne 0x4ca2f0
mov eax, dword [ebp - 8]
call fcn.004064d4
push eax
call sub.kernel32.dll_GetDriveTypeW
cmp eax, 4
jne 0x4ca2f0
push 0
push 1
push 1
mov eax, dword [0x504e48]
mov eax, dword [eax + 0x68]
mov cl, 2
xor edx, edx
call fcn.004e11bc
jmp 0x4ca2f4
mov byte [ebp - 0xb], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4ca323
lea eax, [ebp - 0x20]
mov edx, 5
call fcn.00406440
lea eax, [ebp - 8]
mov edx, 2
call fcn.00406440
ret