Function at 0x4ca3a8
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 0x4ca6ac
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0xb], 0
lea edx, [ebp - 4]
mov eax, ebx
call fcn.0045aa08
lea eax, [ebp - 4]
call fcn.004c3f30
mov edx, dword [ebp - 4]
mov eax, ebx
call fcn.0045aa40
mov eax, dword [ebp - 4]
test eax, eax
je 0x4ca3ff
sub eax, 4
mov eax, dword [eax]
cmp eax, 0xf0
jle 0x4ca425
push 0
push 1
push 1
mov eax, dword [0x503d30]
mov eax, dword [eax + 0xb4]
mov cl, 2
xor edx, edx
call fcn.004e0ebc
jmp 0x4ca684
mov eax, dword [ebp - 4]
test eax, eax
je 0x4ca431
sub eax, 4
mov eax, dword [eax]
cmp eax, 2
jl 0x4ca442
mov eax, dword [ebp - 4]
cmp word [eax], 0x5c
sete al
jmp 0x4ca444
xor eax, eax
test al, al
je 0x4ca455
mov eax, dword [ebp - 4]
cmp word [eax + 2], 0x5c
sete al
jmp 0x4ca457
xor eax, eax
mov ebx, eax
test bl, bl
je 0x4ca47f
cmp byte [ebp - 9], 0
jne 0x4ca47f
push 0
push 1
push 1
mov eax, dword [0x503d30]
mov eax, dword [eax + 0x6c]
mov cl, 2
xor edx, edx
call fcn.004e0ebc
jmp 0x4ca684
test bl, bl
jne 0x4ca52a
cmp byte [ebp - 0xa], 0
jne 0x4ca494
mov edx, 4
jmp 0x4ca499
mov edx, 3
mov eax, dword [ebp - 4]
test eax, eax
je 0x4ca4a5
sub eax, 4
mov eax, dword [eax]
cmp edx, eax
jle 0x4ca4ad
mov al, 1
jmp 0x4ca4e1
mov eax, dword [ebp - 4]
movzx edx, word [eax]
mov eax, edx
mov ecx, edx
add ecx, 0xffffff9f
sub cx, 0x1a
jae 0x4ca4c6
mov eax, edx
and ax, 0xffdf
mov esi, 0x4ca6c0
cmp ax, 0x100
jae 0x4ca4d9
movzx eax, al
bt dword [esi], eax
jb 0x4ca4dd
xor eax, eax
jmp 0x4ca4df
mov al, 1
xor al, 1
test al, al
je 0x4ca4e9
mov al, 1
jmp 0x4ca4f4
mov eax, dword [ebp - 4]
cmp word [eax + 2], 0x3a
setne al
test al, al
je 0x4ca4fc
mov al, 1
jmp 0x4ca507
mov eax, dword [ebp - 4]
cmp word [eax + 4], 0x5c
setne al
test al, al
je 0x4ca55e
push 0
push 1
push 1
mov eax, dword [0x503d30]
mov eax, dword [eax + 0x19c]
mov cl, 2
xor edx, edx
call fcn.004e0ebc
jmp 0x4ca684
mov eax, dword [ebp - 4]
lea esi, [eax + 4]
mov dx, 0x5c
mov eax, esi
call fcn.0047e338
cmp esi, eax
jb 0x4ca55e
push 0
push 1
push 1
mov eax, dword [0x503d30]
mov eax, dword [eax + 0x19c]
mov cl, 2
xor edx, edx
call fcn.004e0ebc
jmp 0x4ca684
mov eax, dword [ebp - 4]
call fcn.004c4078
test al, al
jne 0x4ca582
mov eax, dword [ebp - 4]
call fcn.004c40a0
test al, al
jne 0x4ca582
mov eax, dword [ebp - 4]
call fcn.004c40e0
test al, al
je 0x4ca5a1
push 0
push 1
push 1
mov eax, dword [0x503d30]
mov eax, dword [eax + 0x18c]
mov cl, 2
xor edx, edx
call fcn.004e0ebc
jmp 0x4ca684
lea eax, [ebp - 0x10]
push eax
mov ecx, 0x7fffffff
mov edx, 3
mov eax, dword [ebp - 4]
call fcn.00406bdc
mov edx, dword [ebp - 0x10]
mov eax, 0x4ca6ec
call fcn.0047e1b0
test eax, eax
je 0x4ca5f9
push 0
push 1
push 1
lea edx, [ebp - 0x18]
mov eax, 0x4ca6ec
call fcn.004c4164
mov edx, dword [ebp - 0x18]
lea ecx, [ebp - 0x14]
mov al, 7
call fcn.004ab530
mov eax, dword [ebp - 0x14]
mov cl, 2
xor edx, edx
call fcn.004e0ebc
jmp 0x4ca684
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 4]
call fcn.0047e0d4
mov eax, dword [ebp - 0x20]
lea edx, [ebp - 0x1c]
call fcn.0047dbd0
mov eax, dword [ebp - 0x1c]
lea edx, [ebp - 8]
call fcn.0047e3c4
mov eax, dword [ebp - 8]
call fcn.004ca33c
mov eax, dword [ebp - 8]
call fcn.0047e4a8
test al, al
jne 0x4ca64a
push 0
push 1
push 1
mov eax, dword [0x503d30]
mov eax, dword [eax + 0x190]
mov cl, 2
xor edx, edx
call fcn.004e0ebc
jmp 0x4ca684
test bl, bl
jne 0x4ca680
cmp byte [ebp + 8], 0
jne 0x4ca680
mov eax, dword [ebp - 8]
call fcn.004064d4
push eax
call sub.kernel32.dll_GetDriveTypeW
cmp eax, 4
jne 0x4ca680
push 0
push 1
push 1
mov eax, dword [0x503d30]
mov eax, dword [eax + 0x68]
mov cl, 2
xor edx, edx
call fcn.004e0ebc
jmp 0x4ca684
mov byte [ebp - 0xb], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4ca6b3
lea eax, [ebp - 0x20]
mov edx, 5
call fcn.00406440
lea eax, [ebp - 8]
mov edx, 2
call fcn.00406440
ret