Function at 0x477008
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xa
push 0
push 0
dec ecx
jne 0x477010
push ecx
push ebx
push esi
push edi
xor eax, eax
push ebp
push 0x4772a0
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x48ac44]
mov eax, dword [eax + 0x388]
mov eax, dword [eax + 0x23c]
mov edx, dword [eax]
call dword [edx + 0x44]
or edi, 0xffffffff
mov esi, 0x1a
mov ebx, 0x489938
lea eax, [ebp - 0x34]
mov dl, byte [ebx]
call fcn.00404968
lea eax, [ebp - 0x34]
mov edx, 0x4772bc
call fcn.00404a48
mov eax, dword [ebp - 0x34]
call fcn.00404c40
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 3
jne 0x4771fb
lea eax, [ebp - 0x38]
mov dl, byte [ebx]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x38]
lea eax, [ebp - 0x3c]
call fcn.00402f34
mov edx, 0x4772c0
lea eax, [ebp - 0x3c]
mov cl, 2
call fcn.00402f04
lea edx, [ebp - 0x3c]
lea eax, [ebp - 0xc]
call fcn.004049e4
inc edi
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp - 0x24]
lea edx, [ebp - 0x20]
mov al, byte [ebx]
call fcn.00476490
cmp dword [ebp - 0x20], 0
jne 0x4770f4
call fcn.004758ec
dec eax
jne 0x4770e5
lea eax, [ebp - 0x10]
mov edx, 0x4772cc
call fcn.00404818
jmp 0x4770ff
lea eax, [ebp - 0x10]
mov edx, 0x4772e0
call fcn.00404818
jmp 0x4770ff
lea eax, [ebp - 0x10]
mov edx, dword [ebp - 0x20]
call fcn.00404818
lea eax, [ebp - 0x14]
mov edx, dword [ebp - 0x28]
call fcn.00404818
lea eax, [ebp - 0x18]
mov edx, dword [ebp - 0x30]
call fcn.00404818
lea eax, [ebp - 0x1c]
mov edx, dword [ebp - 0x2c]
call fcn.00404818
call fcn.004758ec
dec eax
jne 0x47716b
push dword [ebp - 0xc]
push 0x4772f4
push dword [ebp - 0x10]
push 0x4772f4
push dword [ebp - 0x14]
push 0x477300
push dword [ebp - 0x18]
lea eax, [ebp - 0x44]
mov edx, 7
call fcn.00404b00
mov edx, dword [ebp - 0x44]
mov eax, dword [0x48ac44]
mov eax, dword [eax + 0x388]
mov eax, dword [eax + 0x23c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x4771ac
push dword [ebp - 0xc]
push 0x4772f4
push dword [ebp - 0x10]
push 0x4772f4
push dword [ebp - 0x14]
push 0x4772f4
push dword [ebp - 0x18]
lea eax, [ebp - 0x48]
mov edx, 7
call fcn.00404b00
mov edx, dword [ebp - 0x48]
mov eax, dword [0x48ac44]
mov eax, dword [eax + 0x388]
mov eax, dword [eax + 0x23c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
lea edx, [ebp - 0x4c]
mov eax, 0x477314
call fcn.0040e0e4
mov eax, dword [ebp - 0x4c]
push eax
lea eax, [ebp - 0x38]
mov dl, byte [ebx]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x38]
lea eax, [ebp - 0x3c]
call fcn.00402f34
mov edx, 0x4772c0
lea eax, [ebp - 0x3c]
mov cl, 2
call fcn.00402f04
lea edx, [ebp - 0x3c]
lea eax, [ebp - 0x50]
call fcn.004049e4
mov edx, dword [ebp - 0x50]
pop eax
call fcn.00404b8c
jne 0x4771fb
mov dword [ebp - 8], edi
inc ebx
dec esi
jne 0x47704c
mov eax, dword [0x48ac44]
mov eax, dword [eax + 0x388]
mov edx, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0xd0]
lea edx, [ebp - 0x54]
mov eax, dword [0x48ac44]
mov eax, dword [eax + 0x388]
mov eax, dword [eax + 0x23c]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
cmp dword [ebp - 0x54], 0
jne 0x477278
call fcn.004758ec
dec eax
jne 0x47725d
mov eax, dword [0x48ac44]
mov eax, dword [eax + 0x388]
mov eax, dword [eax + 0x23c]
mov edx, 0x477328
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x477278
mov eax, dword [0x48ac44]
mov eax, dword [eax + 0x388]
mov eax, dword [eax + 0x23c]
mov edx, 0x477344
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4772a7
lea eax, [ebp - 0x54]
mov edx, 6
call fcn.004047a4
lea eax, [ebp - 0x34]
mov edx, 0xb
call fcn.004047a4
ret