Function at 0x4fc1dc
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
push edi
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push 0x4fc561
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x5134a0]
mov edx, dword [eax]
call dword [edx + 0x40]
mov eax, esi
call fcn.00478d20
mov edx, eax
mov eax, dword [0x5134a0]
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [0x5134a0]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
je 0x4fc53e
mov eax, dword [0x5134a0]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
jne 0x4fc273
lea edx, [ebp - 0x14]
mov eax, esi
call fcn.0047897c
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x18]
xor edx, edx
mov eax, dword [0x5134a0]
mov edi, dword [eax]
call dword [edi + 0xc]
mov edx, dword [ebp - 0x18]
pop eax
call fcn.00403df8
mov edx, dword [ebp - 0x14]
mov eax, dword [0x50f8e4]
call fcn.00403f00
je 0x4fc53e
mov dl, 1
mov eax, dword [0x410928]
call fcn.00402ec4
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
mov edx, dword [eax]
call dword [edx + 0x40]
mov edx, dword [ebx + 0x644]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 8]
xor eax, eax
mov dword [ebx + 0x648], eax
mov eax, dword [ebx + 0x644]
mov edx, dword [eax]
call dword [edx + 0x40]
mov eax, dword [0x5134a0]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x4fc3c0
inc eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 8], 0
lea ecx, [ebp - 0x14]
mov edx, dword [ebp - 8]
mov eax, dword [0x5134a0]
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x14]
push eax
lea edx, [ebp - 0x18]
mov eax, esi
call fcn.0047897c
mov edx, dword [ebp - 0x18]
lea eax, [ebp - 4]
pop ecx
call fcn.00403e3c
mov edx, dword [ebp - 4]
mov eax, ebx
call fcn.004fc024
test al, al
je 0x4fc34f
lea edx, [ebp - 0x18]
mov eax, esi
call fcn.0047897c
mov eax, dword [ebp - 0x18]
lea edx, [ebp - 0x14]
call fcn.0040999c
mov eax, dword [ebp - 0x14]
call fcn.00403fb4
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 5
jne 0x4fc34f
cmp dword [ebp - 4], 0
je 0x4fc3b4
mov eax, dword [ebp - 4]
call fcn.004096d4
test al, al
je 0x4fc3b4
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x644]
mov ecx, dword [eax]
call dword [ecx + 0x34]
jmp 0x4fc3b4
mov eax, dword [ebp - 4]
call fcn.004f5178
test al, al
je 0x4fc3b4
cmp dword [ebp - 4], 0
je 0x4fc3b4
mov eax, dword [ebp - 4]
call fcn.004096d4
test al, al
je 0x4fc3b4
mov eax, dword [ebp - 4]
call fcn.004f5350
test al, al
jne 0x4fc396
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.0048e77c
test al, al
jne 0x4fc396
mov eax, dword [ebp - 4]
call fcn.004f5268
test al, al
je 0x4fc3a6
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x644]
mov ecx, dword [eax]
call dword [ecx + 0x34]
jmp 0x4fc3b4
mov edx, dword [ebx + 0x644]
mov eax, dword [ebp - 4]
call fcn.004f53b4
inc dword [ebp - 8]
dec dword [ebp - 0x10]
jne 0x4fc2c9
mov eax, dword [ebx + 0x644]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jne 0x4fc3e2
mov edx, dword [ebp - 0xc]
mov eax, dword [ebx + 0x644]
mov ecx, dword [eax]
call dword [ecx + 8]
jmp 0x4fc536
mov eax, dword [ebx + 0x644]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
jne 0x4fc40f
lea ecx, [ebp - 0x14]
xor edx, edx
mov eax, dword [ebx + 0x644]
mov esi, dword [eax]
call dword [esi + 0xc]
mov edx, dword [ebp - 0x14]
mov eax, 0x50f8e4
call fcn.00403bc8
jmp 0x4fc419
mov eax, 0x50f8e4
call fcn.00403b74
mov eax, dword [ebx + 0x3f8]
test byte [eax + 0x94], 4
jne 0x4fc536
mov eax, dword [ebx + 0x644]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
jne 0x4fc44f
xor edx, edx
mov eax, ebx
call fcn.004ff1c0
mov eax, ebx
call fcn.004f5788
jmp 0x4fc536
mov eax, dword [ebp - 0xc]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x4fc526
lea ecx, [ebp - 0x14]
xor edx, edx
mov eax, dword [ebp - 0xc]
mov esi, dword [eax]
call dword [esi + 0xc]
mov eax, dword [ebp - 0x14]
push eax
lea ecx, [ebp - 0x18]
xor edx, edx
mov eax, dword [ebx + 0x644]
mov esi, dword [eax]
call dword [esi + 0xc]
mov edx, dword [ebp - 0x18]
pop eax
call fcn.00403f00
jne 0x4fc526
mov eax, dword [ebx + 0x434]
mov edx, dword [eax + 0x118]
mov eax, 0x4fc578
call fcn.004040d8
mov esi, eax
push 0x4fc584
lea edx, [ebp - 0x18]
mov eax, dword [ebx + 0x648]
inc eax
call fcn.00409300
push dword [ebp - 0x18]
push 0x4fc590
mov eax, dword [ebx + 0x644]
mov edx, dword [eax]
call dword [edx + 0x14]
lea edx, [ebp - 0x1c]
call fcn.00409300
push dword [ebp - 0x1c]
lea eax, [ebp - 0x20]
push eax
mov eax, dword [ebx + 0x434]
mov eax, dword [eax + 0x118]
call fcn.00403df0
mov ecx, eax
inc ecx
sub ecx, esi
mov eax, dword [ebx + 0x434]
mov eax, dword [eax + 0x118]
mov edx, esi
call fcn.00403ff4
push dword [ebp - 0x20]
lea eax, [ebp - 0x14]
mov edx, 5
call fcn.00403eb0
mov edx, dword [ebp - 0x14]
mov eax, dword [ebx + 0x434]
call fcn.004deb34
jmp 0x4fc536
xor edx, edx
mov eax, ebx
call fcn.004ff1c0
mov eax, ebx
call fcn.004f5788
mov eax, dword [ebp - 0xc]
call fcn.00402ef4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4fc568
lea eax, [ebp - 0x20]
mov edx, 4
call fcn.00403b98
lea eax, [ebp - 4]
call fcn.00403b74
ret