Function at 0x474f30
Capabilities:
Get disk information

Disassembly:
push ebp
lea ebp, [esp - 0xcc]
sub esp, 0xcc
push 0xffffffffffffffff
push 0x50d286
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
mov eax, dword [0x573080]
xor eax, ebp
mov dword [ebp + 0xc8], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 4], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x24], ecx
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
mov dword [ebp - 4], 0
lea eax, [ebp]
push eax
push 0x64
mov dword [ebp - 0x20], 1
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
mov dword [ebp - 0x1c], eax
xor edi, edi
lea ebx, [ebp]
lea ebx, [ebx + edi*2]
push ebx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 3
jne 0x47519c
call fcn.0040d32d
mov ecx, eax
test ecx, ecx
je case.0x4750a2.1
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x52b690
jne 0x4751e9
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
lea esi, [eax + 0x10]
mov dword [ebp - 0x10], esi
mov dword [ebp - 4], 1
test ebx, ebx
je 0x4750c8
test ebx, 0xffff0000
jne 0x4750bd
movzx ebx, bx
mov ecx, ebx
call fcn.0040d433
mov ecx, eax
mov dword [ebp - 0x14], ecx
test ecx, ecx
je 0x4750d7
mov eax, ebx
shr eax, 4
push 6
inc eax
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindResourceW]
test eax, eax
je 0x4750d7
mov ecx, dword [ebp - 0x14]
mov edx, eax
push ebx
call fcn.0040d493
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x4750d7
movzx edx, word [ebx]
mov ecx, 1
mov eax, dword [esi - 8]
sub ecx, dword [esi - 4]
sub eax, edx
or eax, ecx
mov dword [ebp - 0x14], edx
jge 0x47507d
push edx
lea ecx, [ebp - 0x10]
call fcn.0040d6fc
movzx edx, word [ebx]
mov esi, dword [ebp - 0x10]
movzx ecx, dx
lea eax, [ebx + 2]
mov ebx, dword [ebp - 0x14]
push ecx
push eax
push ebx
push esi
call fcn.004dbdc7
add esp, 0x10
cmp eax, 0x50
ja case.0x4750a2.1
movzx eax, byte [eax + 0x475218]
jmp dword [eax*4 + 0x475208]
cmp ebx, dword [esi - 8]
jg case.0x4750a2.20
xor eax, eax
mov dword [esi - 0xc], ebx
mov word [esi + ebx*2], ax
jmp 0x4750d7
push ebx
call fcn.004dbc76
add esp, 4
jmp 0x4750ca
xor eax, eax
push eax
push ebx
lea ecx, [ebp - 0x10]
call fcn.0040d89e
mov esi, dword [ebp - 0x10]
mov dword [ebp - 4], 2
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ecx + 8]
mov edx, dword [ecx + 4]
cmp edx, ebx
jne 0x47513a
mov ecx, dword [ecx]
lea eax, [ebp - 0x10]
cmp eax, ecx
jb 0x475105
lea esi, [ebp - 0x10]
lea eax, [ecx + ebx*4]
cmp esi, eax
mov esi, dword [ebp - 0x10]
jb case.0x4750a2.1
test ebx, ebx
jne 0x475110
mov ebx, 1
jmp 0x47511f
lea ebx, [edx + edx]
test ebx, ebx
js 0x475168
cmp ebx, 0x1fffffff
ja 0x475168
push 4
push ebx
push ecx
call fcn.004de778
add esp, 0xc
test eax, eax
je 0x475168
mov ecx, dword [ebp - 0x18]
mov edx, dword [ecx + 4]
mov dword [ecx + 8], ebx
mov dword [ecx], eax
mov eax, dword [ecx]
lea ebx, [eax + edx*4]
mov dword [ebp - 0x28], ebx
mov byte [ebp - 4], 3
test ebx, ebx
je 0x475161
lea ecx, [esi - 0x10]
mov dword [ebp - 0x14], ebx
call fcn.004070e8
add eax, 0x10
mov dword [ebx], eax
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x18]
mov byte [ebp - 4], 2
inc dword [ecx + 4]
mov dword [ebp - 4], 0
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x47519c
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x52b690
jne 0x4751f0
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, dword [ebp - 0x1c]
cmp edi, eax
jae 0x4751b0
cmp word [ebp + edi*2], 0
je 0x4751b0
inc edi
cmp edi, eax
jb 0x4751a3
inc edi
cmp edi, eax
jb 0x474fb3
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0xc8]
xor ecx, ebp
call fcn.004d5b75
lea esp, [ebp + 0xcc]
pop ebp
ret
push 0x80004005
call fcn.0040d85a
call edx
jmp 0x474fef
call edx
jmp 0x47519c
push 0x8007000e
call fcn.0040d85a
push 0x80070057
call fcn.0040d85a
test eax, 0xf4004750
push ecx
inc edi
add dh, bh
push ecx
inc edi
add bh, bl
push ecx
inc edi
add byte [eax], al
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ecx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [edx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [edx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [eax]
int3