Function at 0x4ca100
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 0x4ca404
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0xb], 0
lea edx, [ebp - 4]
mov eax, ebx
call fcn.0045bef4
lea eax, [ebp - 4]
call fcn.004c3c60
mov edx, dword [ebp - 4]
mov eax, ebx
call fcn.0045bf2c
mov eax, dword [ebp - 4]
test eax, eax
je 0x4ca157
sub eax, 4
mov eax, dword [eax]
cmp eax, 0xf0
jle 0x4ca17d
push 0
push 1
push 1
mov eax, dword [0x508e7c]
mov eax, dword [eax + 0xb4]
mov cl, 2
xor edx, edx
call fcn.004e24d4
jmp 0x4ca3dc
mov eax, dword [ebp - 4]
test eax, eax
je 0x4ca189
sub eax, 4
mov eax, dword [eax]
cmp eax, 2
jl 0x4ca19a
mov eax, dword [ebp - 4]
cmp word [eax], 0x5c
sete al
jmp 0x4ca19c
xor eax, eax
test al, al
je 0x4ca1ad
mov eax, dword [ebp - 4]
cmp word [eax + 2], 0x5c
sete al
jmp 0x4ca1af
xor eax, eax
mov ebx, eax
test bl, bl
je 0x4ca1d7
cmp byte [ebp - 9], 0
jne 0x4ca1d7
push 0
push 1
push 1
mov eax, dword [0x508e7c]
mov eax, dword [eax + 0x6c]
mov cl, 2
xor edx, edx
call fcn.004e24d4
jmp 0x4ca3dc
test bl, bl
jne 0x4ca282
cmp byte [ebp - 0xa], 0
jne 0x4ca1ec
mov edx, 4
jmp 0x4ca1f1
mov edx, 3
mov eax, dword [ebp - 4]
test eax, eax
je 0x4ca1fd
sub eax, 4
mov eax, dword [eax]
cmp edx, eax
jle 0x4ca205
mov al, 1
jmp 0x4ca239
mov eax, dword [ebp - 4]
movzx edx, word [eax]
mov eax, edx
mov ecx, edx
add ecx, 0xffffff9f
sub cx, 0x1a
jae 0x4ca21e
mov eax, edx
and ax, 0xffdf
mov esi, 0x4ca418
cmp ax, 0x100
jae 0x4ca231
movzx eax, al
bt dword [esi], eax
jb 0x4ca235
xor eax, eax
jmp 0x4ca237
mov al, 1
xor al, 1
test al, al
je 0x4ca241
mov al, 1
jmp 0x4ca24c
mov eax, dword [ebp - 4]
cmp word [eax + 2], 0x3a
setne al
test al, al
je 0x4ca254
mov al, 1
jmp 0x4ca25f
mov eax, dword [ebp - 4]
cmp word [eax + 4], 0x5c
setne al
test al, al
je 0x4ca2b6
push 0
push 1
push 1
mov eax, dword [0x508e7c]
mov eax, dword [eax + 0x19c]
mov cl, 2
xor edx, edx
call fcn.004e24d4
jmp 0x4ca3dc
mov eax, dword [ebp - 4]
lea esi, [eax + 4]
mov dx, 0x5c
mov eax, esi
call fcn.004800c4
cmp esi, eax
jb 0x4ca2b6
push 0
push 1
push 1
mov eax, dword [0x508e7c]
mov eax, dword [eax + 0x19c]
mov cl, 2
xor edx, edx
call fcn.004e24d4
jmp 0x4ca3dc
mov eax, dword [ebp - 4]
call fcn.004c3da8
test al, al
jne 0x4ca2da
mov eax, dword [ebp - 4]
call fcn.004c3dd0
test al, al
jne 0x4ca2da
mov eax, dword [ebp - 4]
call fcn.004c3e10
test al, al
je 0x4ca2f9
push 0
push 1
push 1
mov eax, dword [0x508e7c]
mov eax, dword [eax + 0x18c]
mov cl, 2
xor edx, edx
call fcn.004e24d4
jmp 0x4ca3dc
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, 0x4ca444
call fcn.0047ff3c
test eax, eax
je 0x4ca351
push 0
push 1
push 1
lea edx, [ebp - 0x18]
mov eax, 0x4ca444
call fcn.004c3e94
mov edx, dword [ebp - 0x18]
lea ecx, [ebp - 0x14]
mov al, 7
call fcn.00483a48
mov eax, dword [ebp - 0x14]
mov cl, 2
xor edx, edx
call fcn.004e24d4
jmp 0x4ca3dc
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 4]
call fcn.0047fe60
mov eax, dword [ebp - 0x20]
lea edx, [ebp - 0x1c]
call fcn.0047f95c
mov eax, dword [ebp - 0x1c]
lea edx, [ebp - 8]
call fcn.00480150
mov eax, dword [ebp - 8]
call fcn.004ca094
mov eax, dword [ebp - 8]
call fcn.00480234
test al, al
jne 0x4ca3a2
push 0
push 1
push 1
mov eax, dword [0x508e7c]
mov eax, dword [eax + 0x190]
mov cl, 2
xor edx, edx
call fcn.004e24d4
jmp 0x4ca3dc
test bl, bl
jne 0x4ca3d8
cmp byte [ebp + 8], 0
jne 0x4ca3d8
mov eax, dword [ebp - 8]
call fcn.004064d4
push eax
call sub.kernel32.dll_GetDriveTypeW
cmp eax, 4
jne 0x4ca3d8
push 0
push 1
push 1
mov eax, dword [0x508e7c]
mov eax, dword [eax + 0x68]
mov cl, 2
xor edx, edx
call fcn.004e24d4
jmp 0x4ca3dc
mov byte [ebp - 0xb], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4ca40b
lea eax, [ebp - 0x20]
mov edx, 5
call fcn.00406440
lea eax, [ebp - 8]
mov edx, 2
call fcn.00406440
ret