Function at 0x4ca090
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
push eax
mov eax, 0x15
add esp, 0xfffff004
push eax
dec eax
jne 0x4ca099
mov eax, dword [ebp - 4]
add esp, 0xfffffc40
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x4ca5ee
push dword fs:[eax]
mov dword fs:[eax], esp
xor edx, edx
push ebp
push 0x4ca4df
push dword fs:[edx]
mov dword fs:[edx], esp
xor eax, eax
mov dword [ebp - 0xc], eax
imul eax, dword [ebp - 0xc], 0xb
mov edx, dword [ebp - 4]
xor ecx, ecx
mov dword [edx + eax*8 + 0x6d288], ecx
mov edx, dword [ebp - 4]
mov dword [edx + eax*8 + 0x6d290], 0xffffffff
mov edx, dword [ebp - 4]
xor ecx, ecx
mov dword [edx + eax*8 + 0x6d294], ecx
mov edx, dword [ebp - 4]
mov dword [edx + eax*8 + 0x6d298], 0
mov dword [edx + eax*8 + 0x6d29c], 0
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0x1a
jne 0x4ca0e1
xor eax, eax
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
add eax, eax
lea eax, [eax + eax*4]
mov edx, dword [ebp - 4]
mov dword [edx + eax*8 + 0x5168], 0xffffffff
mov edx, dword [ebp - 4]
mov dword [edx + eax*8 + 0x5178], 0xffffffff
mov edx, dword [ebp - 4]
xor ecx, ecx
mov dword [edx + eax*8 + 0x516c], ecx
mov edx, dword [ebp - 4]
xor ecx, ecx
mov dword [edx + eax*8 + 0x5174], ecx
mov edx, dword [ebp - 4]
xor ecx, ecx
mov dword [edx + eax*8 + 0x5170], ecx
mov edx, dword [ebp - 4]
xor ecx, ecx
mov dword [edx + eax*8 + 0x517c], ecx
mov edx, dword [ebp - 4]
mov dword [edx + eax*8 + 0x51a8], 0
mov dword [edx + eax*8 + 0x51ac], 0
mov edx, dword [ebp - 4]
mov dword [edx + eax*8 + 0x51b0], 0xffffffff
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0x1a
jne 0x4ca132
xor eax, eax
mov dword [ebp - 0xc], eax
xor ebx, ebx
imul edi, dword [ebp - 0xc], 0x7d0
mov eax, dword [ebp - 4]
lea eax, [eax + edi*8]
mov esi, ebx
add esi, esi
lea esi, [esi + esi*4]
mov dword [eax + esi*8 + 0x5988], 0xffffffff
mov eax, dword [ebp - 4]
lea eax, [eax + edi*8]
mov dword [eax + esi*8 + 0x5998], 0xffffffff
mov eax, dword [ebp - 4]
lea eax, [eax + edi*8]
xor edx, edx
mov dword [eax + esi*8 + 0x598c], edx
mov eax, dword [ebp - 4]
lea eax, [eax + edi*8]
xor edx, edx
mov dword [eax + esi*8 + 0x5994], edx
mov eax, dword [ebp - 4]
lea eax, [eax + edi*8]
xor edx, edx
mov dword [eax + esi*8 + 0x5990], edx
imul eax, dword [ebp - 0xc], 0x7d0
mov edx, dword [ebp - 4]
lea eax, [edx + eax*8]
cmp dword [eax + esi*8 + 0x599c], 0
je 0x4ca25a
imul eax, dword [ebp - 0xc], 0x7d0
mov edx, dword [ebp - 4]
lea eax, [edx + eax*8]
mov edx, ebx
add edx, edx
lea edx, [edx + edx*4]
mov eax, dword [eax + edx*8 + 0x599c]
mov edx, 0x2000
call fcn.004027c8
mov eax, dword [ebp - 4]
lea eax, [eax + edi*8]
xor edx, edx
mov dword [eax + esi*8 + 0x599c], edx
mov eax, dword [ebp - 4]
lea eax, [eax + edi*8]
mov dword [eax + esi*8 + 0x59c8], 0
mov dword [eax + esi*8 + 0x59cc], 0
mov eax, dword [ebp - 4]
lea eax, [eax + edi*8]
mov dword [eax + esi*8 + 0x59d0], 0xffffffff
inc ebx
cmp ebx, 0xc8
jne 0x4ca1c1
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0x1a
jne 0x4ca1bf
xor eax, eax
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x18]
mov edx, dword [ebp - 0xc]
add edx, 0x41
call fcn.00404b48
lea eax, [ebp - 0x18]
mov edx, 0x4ca604
call fcn.00404c28
mov eax, dword [ebp - 0x18]
call fcn.00404e18
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 3
jne 0x4ca3e7
lea eax, [ebp - 0x1c]
mov edx, dword [ebp - 0xc]
add edx, 0x41
call fcn.00404b48
lea eax, [ebp - 0x1c]
mov edx, 0x4ca610
call fcn.00404c28
mov eax, dword [ebp - 0x1c]
call fcn.0040962c
test al, al
je 0x4ca3e7
lea eax, [ebp - 0x20]
imul esi, dword [ebp - 0xc], 0xb
mov edx, dword [ebp - 4]
lea edx, [edx + esi*8 + 0x6d2a0]
call fcn.00404bc4
mov eax, dword [ebp - 0x20]
mov edx, 0x42
call fcn.00409498
mov ebx, eax
test ebx, ebx
jg 0x4ca34c
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + esi*8 + 0x6d288], edx
jmp 0x4ca3e7
mov eax, dword [ebp - 4]
lea edx, [eax + esi*8 + 0x6d290]
mov ecx, 0x10
mov eax, ebx
call fcn.00409520
imul esi, dword [ebp - 0xc], 0xb
mov eax, dword [ebp - 4]
mov edx, dword [eax + esi*8 + 0x6d29c]
mov eax, dword [eax + esi*8 + 0x6d298]
mov ecx, dword [ebp - 4]
cmp edx, dword [ecx + 0x14]
jne 0x4ca391
cmp eax, dword [ecx + 0x10]
jne 0x4ca391
mov eax, dword [ebp - 4]
cmp dword [eax + esi*8 + 0x6d294], 0
ja 0x4ca3d9
mov eax, dword [ebp - 4]
mov dword [eax + esi*8 + 0x6d290], 0xffffffff
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + esi*8 + 0x6d294], edx
mov eax, dword [ebp - 4]
mov dword [eax + esi*8 + 0x6d298], 0
mov dword [eax + esi*8 + 0x6d29c], 0
mov eax, ebx
call fcn.004095bc
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + esi*8 + 0x6d288], edx
jmp 0x4ca3e7
mov eax, dword [ebp - 4]
mov dword [eax + esi*8 + 0x6d288], 0xffffffff
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0x1a
jne 0x4ca2b5
lea edx, [ebp - 0x153c4]
mov eax, dword [0x595bec]
mov eax, dword [eax]
call fcn.004c9888
mov eax, dword [ebp - 0x153c4]
dec eax
test eax, eax
jl 0x4ca4d5
inc eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0xc], 0
xor ebx, ebx
lea edx, [ebp - 0x153c4]
mov eax, dword [0x595bec]
mov eax, dword [eax]
call fcn.004c9888
imul eax, dword [ebp - 0xc], 0x1a2
lea eax, [ebp + eax*8 - 0x153c4]
cmp dword [eax + ebx*4 + 0x28], 0
je 0x4ca4bf
imul eax, ebx, 0xb
mov edx, dword [ebp - 4]
cmp dword [edx + eax*8 + 0x6d288], 0
je 0x4ca4bf
imul esi, ebx, 0xb
mov eax, dword [ebp - 4]
mov ecx, dword [eax + esi*8 + 0x6d290]
test ecx, ecx
jl 0x4ca4bf
imul eax, ebx, 0xb
mov edx, dword [ebp - 4]
mov eax, ecx
cdq
push edx
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + esi*8 + 0x6d294]
xor edx, edx
cmp edx, dword [esp + 4]
jne 0x4ca490
cmp eax, dword [esp]
pop edx
pop eax
jbe 0x4ca4bf
jmp 0x4ca494
pop edx
pop eax
jle 0x4ca4bf
imul edx, ebx, 0xb
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + edx*8 + 0x6d290]
mov eax, dword [ebp - 0xc]
add eax, eax
lea eax, [eax + eax*4]
mov ecx, dword [ebp - 4]
mov dword [ecx + eax*8 + 0x5168], edx
mov edx, dword [ebp - 4]
mov dword [edx + eax*8 + 0x5170], ebx
jmp 0x4ca4c9
inc ebx
cmp ebx, 0x1a
jne 0x4ca422
inc dword [ebp - 0xc]
dec dword [ebp - 0x14]
jne 0x4ca420
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4ca4e9
lea edx, [ebp - 0x153c4]
mov eax, dword [0x595bec]
mov eax, dword [eax]
call fcn.004c9888
mov eax, dword [ebp - 0x153c4]
dec eax
test eax, eax
jl 0x4ca5d3
inc eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0xc], 0
xor edx, edx
push ebp
push 0x4ca5a2
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0xc]
mov eax, dword [eax + edx*4 + 0x6db78]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0xc]
xor ecx, ecx
mov dword [eax + edx*4 + 0x6db78], ecx
cmp dword [ebp - 0x10], 0
je 0x4ca598
mov edi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + 0x68]
mov dword [ebp - 0x10], eax
xor ebx, ebx
mov eax, dword [edi + ebx*4 + 4]
test eax, eax
je 0x4ca580
mov esi, eax
xor eax, eax
mov dword [edi + ebx*4 + 4], eax
test esi, esi
je 0x4ca580
mov eax, esi
mov esi, dword [esi + 0x80]
mov edx, 0x84
call fcn.004027c8
test esi, esi
jne 0x4ca56a
inc ebx
cmp ebx, 0x19
jne 0x4ca556
mov edx, 0x6c
mov eax, edi
call fcn.004027c8
cmp dword [ebp - 0x10], 0
jne 0x4ca548
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4ca5ac
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.004cc1b8
mov ecx, eax
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.004cd160
inc dword [ebp - 0xc]
dec dword [ebp - 0x14]
jne 0x4ca515
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4ca5f5
lea eax, [ebp - 0x20]
mov edx, 3
call fcn.0040498c
ret