Function at 0x66027be4
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x464
push esi
push edi
and dword [ebp - 0x120], 0
and dword [ebp - 0x35c], 0
and dword [ebp - 0x11c], 0
and dword [ebp - 0x248], 0
call fcn.66027f4f
mov dword [ebp - 0x114], eax
mov eax, dword [ebp + 8]
and al, 0xc0
test eax, eax
jne 0x66043e1d
cmp dword [ebp + 8], 0
jne 0x66027c30
mov dword [ebp + 8], 0x21
cmp dword [ebp + 8], 8
je 0x66027c46
push dword [ebp + 0xc]
call fcn.66027f78
test eax, eax
je 0x66043e29
push dword [ebp + 0xc]
lea eax, [ebp - 0x354]
push eax
call fcn.66024e36
push 0
push 0
push 0x105
lea eax, [ebp - 0x108]
push eax
push 0xffffffffffffffff
push dword [ebp + 0xc]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
lea edi, [ebp - 0x108]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [ebp - 0x110], ecx
lea eax, [ebp - 0x108]
mov dword [ebp - 0x124], eax
mov eax, dword [ebp - 0x124]
mov dword [ebp - 0x118], eax
cmp dword [ebp - 0x110], 0
jbe 0x66027d07
mov eax, dword [ebp - 0x118]
movsx ax, byte [eax]
mov word [ebp - 0x128], ax
mov eax, dword [ebp - 0x118]
inc eax
mov dword [ebp - 0x118], eax
mov eax, dword [ebp - 0x110]
dec eax
mov dword [ebp - 0x110], eax
push dword [ebp - 0x128]
call fcn.66025d0f
pop ecx
test eax, eax
jne 0x66043e3c
push dword [ebp - 0x128]
call fcn.66027f88
test eax, eax
jne 0x66027ca2
mov eax, dword [ebp - 0x118]
mov dword [ebp - 0x124], eax
jmp 0x66027ca2
mov eax, dword [ebp - 0x124]
lea ecx, [ebp - 0x108]
sub eax, ecx
mov dword [ebp - 0x110], eax
cmp dword [ebp - 0x110], 0
jbe 0x66027d9d
push 0x2e
lea eax, [ebp - 0x108]
push eax
call fcn.66027fa9
pop ecx
pop ecx
mov dword [ebp - 0x118], eax
lea eax, [ebp - 0x108]
mov dword [ebp - 0x24c], eax
mov eax, dword [ebp - 0x24c]
cmp eax, dword [ebp - 0x124]
jae 0x66027d84
mov eax, dword [ebp - 0x24c]
mov al, byte [eax]
mov byte [ebp - 0x358], al
mov eax, dword [ebp - 0x24c]
inc eax
mov dword [ebp - 0x24c], eax
push dword [ebp - 0x358]
call fcn.66025d0f
pop ecx
test eax, eax
je 0x66027d46
jmp 0x66043e95
mov eax, dword [ebp - 0x110]
lea eax, [ebp + eax - 0x109]
cmp dword [ebp - 0x118], eax
je 0x66043ea7
cmp dword [ebp - 0x110], 0
je 0x66043fc7
movsx eax, byte [ebp - 0x358]
cmp eax, 0x5c
je 0x66043fc7
movsx eax, byte [ebp - 0x358]
cmp eax, 0x2f
je 0x66043fc7
movsx eax, byte [ebp - 0x358]
cmp eax, 0x3a
je 0x66043fc7
mov eax, dword [ebp - 0x114]
cmp dword [eax + 8], 0xffffffff
jne 0x66044058
mov eax, dword [ebp - 0x114]
or dword [eax + 8], 0xffffffff
mov eax, dword [ebp - 0x114]
and dword [eax + 0x10], 0
cmp dword [ebp + 8], 8
je 0x6604406c
lea eax, [ebp - 0x240]
push eax
lea eax, [ebp - 0x108]
push eax
call fcn.66024f03
pop ecx
pop ecx
mov dword [ebp - 0x10c], eax
cmp dword [ebp - 0x10c], 0xffffffff
jne 0x66027e89
cmp dword [ebp - 0x10c], 0xffffffff
jne 0x66027f22
cmp dword [ebp - 0x10c], 0xffffffff
jne 0x6604417f
call fcn.660166dc
cmp dword [eax], 2
jne 0x66044190
push 0x6602f988
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebp - 0x120], eax
push dword [ebp - 0x11c]
call fcn.66028002
cmp dword [ebp - 0x120], 0
je 0x660441b8
mov eax, dword [ebp - 0x120]
pop edi
pop esi
leave
ret 8
and dword [ebp - 0x248], 0
cmp dword [ebp - 0x248], 0
jne 0x66027eb1
mov eax, dword [ebp + 8]
not eax
mov ecx, dword [ebp - 0x240]
and ecx, eax
and ecx, 0x16
test ecx, ecx
jne 0x66044151
cmp dword [ebp - 0x248], 0
jne 0x66027e2c
push 0
push 0
push 0xffffffffffffffff
lea eax, [ebp - 0x22c]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov dword [ebp - 0x244], eax
cmp dword [ebp - 0x244], 0
je 0x66044170
mov eax, dword [ebp - 0x244]
dec eax
push eax
push 0
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
mov dword [ebp - 0x120], eax
push dword [ebp - 0x244]
push dword [ebp - 0x120]
push 0xffffffffffffffff
lea eax, [ebp - 0x22c]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
jmp 0x66027e2c
cmp dword [ebp - 0x248], 0
jne 0x66027e39
mov eax, dword [ebp - 0x114]
mov ecx, dword [ebp + 8]
mov dword [eax + 0xc], ecx
mov eax, dword [ebp - 0x114]
mov ecx, dword [ebp - 0x10c]
mov dword [eax + 8], ecx
jmp 0x66027e65
push 5
call fcn.66028002
jmp 0x66027c23
and byte [ebp - 0x108], 0
and dword [ebp - 0x110], 0
jmp 0x66027c8a
cmp dword [ebp - 0x110], 0
jbe 0x66027cea
mov ax, word [ebp - 0x128]
shl ax, 8
mov word [ebp - 0x128], ax
mov eax, dword [ebp - 0x118]
movsx ax, byte [eax]
mov cx, word [ebp - 0x128]
add cx, ax
mov word [ebp - 0x128], cx
mov eax, dword [ebp - 0x118]
inc eax
mov dword [ebp - 0x118], eax
mov eax, dword [ebp - 0x110]
dec eax
mov dword [ebp - 0x110], eax
jmp 0x66027cea
mov eax, dword [ebp - 0x24c]
inc eax
mov dword [ebp - 0x24c], eax
jmp 0x66027d46
mov eax, dword [ebp - 0x110]
dec eax
mov dword [ebp - 0x110], eax
mov eax, dword [ebp - 0x35c]
inc eax
mov dword [ebp - 0x35c], eax
mov eax, dword [ebp - 0x118]
and byte [eax], 0
push 0x2e
lea eax, [ebp - 0x108]
push eax
call fcn.66027fa9
pop ecx
pop ecx
mov dword [ebp - 0x124], eax
lea eax, [ebp - 0x108]
mov dword [ebp - 0x24c], eax
mov eax, dword [ebp - 0x24c]
movsx eax, byte [eax]
test eax, eax
je 0x66043f33
mov eax, dword [ebp - 0x24c]
mov al, byte [eax]
mov byte [ebp - 0x358], al
mov eax, dword [ebp - 0x24c]
inc eax
mov dword [ebp - 0x24c], eax
push dword [ebp - 0x358]
call fcn.66025d0f
pop ecx
test eax, eax
je 0x66043eec
mov eax, dword [ebp - 0x24c]
inc eax
mov dword [ebp - 0x24c], eax
jmp 0x66043eec
mov eax, dword [ebp - 0x118]
dec eax
cmp dword [ebp - 0x124], eax
jne 0x66043fb9
mov eax, dword [ebp - 0x35c]
inc eax
mov dword [ebp - 0x35c], eax
mov eax, dword [ebp - 0x110]
dec eax
mov dword [ebp - 0x110], eax
cmp dword [ebp - 0x110], 0
jbe 0x66043fb9
lea eax, [ebp - 0x108]
mov dword [ebp - 0x24c], eax
mov eax, dword [ebp - 0x24c]
cmp eax, dword [ebp - 0x124]
jae 0x66043fb9
mov eax, dword [ebp - 0x24c]
mov al, byte [eax]
mov byte [ebp - 0x358], al
mov eax, dword [ebp - 0x24c]
inc eax
mov dword [ebp - 0x24c], eax
push dword [ebp - 0x358]
call fcn.66025d0f
pop ecx
test eax, eax
je 0x66043f71
mov eax, dword [ebp - 0x24c]
inc eax
mov dword [ebp - 0x24c], eax
jmp 0x66043f71
mov eax, dword [ebp - 0x118]
mov byte [eax], 0x2e
jmp 0x66027d9d
xor eax, eax
cmp dword [ebp - 0x35c], 0
setne al
add eax, 3
mov ecx, 0x104
sub ecx, eax
cmp dword [ebp - 0x110], ecx
jbe 0x66043fec
push 5
call fcn.66028002
cmp dword [ebp - 0x35c], 0
jbe 0x66044022
mov eax, dword [ebp - 0x110]
add eax, dword [ebp - 0x35c]
mov dword [ebp - 0x110], eax
mov eax, dword [ebp - 0x110]
mov byte [ebp + eax - 0x108], 0x5c
mov eax, dword [ebp - 0x110]
inc eax
mov dword [ebp - 0x110], eax
mov edi, 0x66053ac8
mov eax, dword [ebp - 0x110]
lea eax, [ebp + eax - 0x108]
mov edx, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov eax, ecx
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x66027dda
mov eax, dword [ebp - 0x114]
push dword [eax + 8]
call fcn.6602eaa6
pop ecx
jmp 0x66027dea
movsx eax, byte [ebp - 0x353]
cmp eax, 0x3a
jne 0x6604407f
and byte [ebp - 0x351], 0
push 0
push 0
push 0
push 0
push 0
push 0x105
lea eax, [ebp - 0x464]
push eax
lea eax, [ebp - 0x354]
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
je 0x6604413b
push 0
push 0
push 0xffffffffffffffff
lea eax, [ebp - 0x464]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov dword [ebp - 0x244], eax
cmp dword [ebp - 0x244], 0
jne 0x660440f8
mov dword [ebp - 0x11c], 0xe
mov eax, dword [ebp - 0x114]
mov ecx, dword [ebp + 8]
mov dword [eax + 0xc], ecx
mov eax, dword [ebp - 0x114]
mov dword [eax + 0x10], 1
jmp 0x66027e65
mov eax, dword [ebp - 0x244]
dec eax
push eax
push 0
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
mov dword [ebp - 0x120], eax
cmp dword [ebp - 0x120], 0
je 0x660440da
push dword [ebp - 0x244]
push dword [ebp - 0x120]
push 0x105
lea eax, [ebp - 0x464]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
jmp 0x660440da
push 0x6602f988
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebp - 0x120], eax
jmp 0x66027e65
lea eax, [ebp - 0x240]
push eax
push dword [ebp - 0x10c]
call fcn.660ee1a6
pop ecx
pop ecx
mov dword [ebp - 0x248], eax
jmp 0x66027e90
mov dword [ebp - 0x11c], 0xe
jmp 0x66027e2c
push dword [ebp - 0x10c]
call fcn.6602eaa6
pop ecx
jmp 0x66027e46
call fcn.660166dc
cmp dword [eax], 0x16
jne 0x660441a9
mov dword [ebp - 0x11c], 0x34
jmp 0x66027e65
mov dword [ebp - 0x11c], 5
jmp 0x66027e65
push 0xe
call fcn.66028002
jmp 0x66027e7d