Function at 0x660281d3
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.6602853e
mov dword [ebp - 0x114], eax
mov eax, dword [ebp + 8]
and al, 0xc0
test eax, eax
jne 0x66043b71
cmp dword [ebp + 8], 0
jne 0x6602821f
mov dword [ebp + 8], 0x21
cmp dword [ebp + 8], 8
je 0x66028235
push dword [ebp + 0xc]
call fcn.66028567
test eax, eax
je 0x66043b7d
push dword [ebp + 0xc]
lea eax, [ebp - 0x354]
push eax
call fcn.660253ec
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 0x660282f6
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.660262c5
pop ecx
test eax, eax
jne 0x66043b90
push dword [ebp - 0x128]
call fcn.66028577
test eax, eax
jne 0x66028291
mov eax, dword [ebp - 0x118]
mov dword [ebp - 0x124], eax
jmp 0x66028291
mov eax, dword [ebp - 0x124]
lea ecx, [ebp - 0x108]
sub eax, ecx
mov dword [ebp - 0x110], eax
cmp dword [ebp - 0x110], 0
jbe 0x6602838c
push 0x2e
lea eax, [ebp - 0x108]
push eax
call fcn.66028598
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 0x66028373
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.660262c5
pop ecx
test eax, eax
je 0x66028335
jmp 0x66043be9
mov eax, dword [ebp - 0x110]
lea eax, [ebp + eax - 0x109]
cmp dword [ebp - 0x118], eax
je 0x66043bfb
cmp dword [ebp - 0x110], 0
je 0x66043d1b
movsx eax, byte [ebp - 0x358]
cmp eax, 0x5c
je 0x66043d1b
movsx eax, byte [ebp - 0x358]
cmp eax, 0x2f
je 0x66043d1b
movsx eax, byte [ebp - 0x358]
cmp eax, 0x3a
je 0x66043d1b
mov eax, dword [ebp - 0x114]
cmp dword [eax + 8], 0xffffffff
jne 0x66043dac
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 0x66043dc0
lea eax, [ebp - 0x240]
push eax
lea eax, [ebp - 0x108]
push eax
call fcn.660254b9
pop ecx
pop ecx
mov dword [ebp - 0x10c], eax
cmp dword [ebp - 0x10c], 0xffffffff
jne 0x66028478
cmp dword [ebp - 0x10c], 0xffffffff
jne 0x66028511
cmp dword [ebp - 0x10c], 0xffffffff
jne 0x66043ed3
call fcn.660168b4
cmp dword [eax], 2
jne 0x66043ee4
push 0x6602f9a8
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebp - 0x120], eax
push dword [ebp - 0x11c]
call fcn.660285f1
cmp dword [ebp - 0x120], 0
je 0x66043f0c
mov eax, dword [ebp - 0x120]
pop edi
pop esi
leave
ret 8
and dword [ebp - 0x248], 0
cmp dword [ebp - 0x248], 0
jne 0x660284a0
mov eax, dword [ebp + 8]
not eax
mov ecx, dword [ebp - 0x240]
and ecx, eax
and ecx, 0x16
test ecx, ecx
jne 0x66043ea5
cmp dword [ebp - 0x248], 0
jne 0x6602841b
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 0x66043ec4
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 0x6602841b
cmp dword [ebp - 0x248], 0
jne 0x66028428
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 0x66028454
push 5
call fcn.660285f1
jmp 0x66028212
and byte [ebp - 0x108], 0
and dword [ebp - 0x110], 0
jmp 0x66028279
cmp dword [ebp - 0x110], 0
jbe 0x660282d9
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 0x660282d9
mov eax, dword [ebp - 0x24c]
inc eax
mov dword [ebp - 0x24c], eax
jmp 0x66028335
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.66028598
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 0x66043c87
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.660262c5
pop ecx
test eax, eax
je 0x66043c40
mov eax, dword [ebp - 0x24c]
inc eax
mov dword [ebp - 0x24c], eax
jmp 0x66043c40
mov eax, dword [ebp - 0x118]
dec eax
cmp dword [ebp - 0x124], eax
jne 0x66043d0d
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 0x66043d0d
lea eax, [ebp - 0x108]
mov dword [ebp - 0x24c], eax
mov eax, dword [ebp - 0x24c]
cmp eax, dword [ebp - 0x124]
jae 0x66043d0d
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.660262c5
pop ecx
test eax, eax
je 0x66043cc5
mov eax, dword [ebp - 0x24c]
inc eax
mov dword [ebp - 0x24c], eax
jmp 0x66043cc5
mov eax, dword [ebp - 0x118]
mov byte [eax], 0x2e
jmp 0x6602838c
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 0x66043d40
push 5
call fcn.660285f1
cmp dword [ebp - 0x35c], 0
jbe 0x66043d76
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, 0x660538e0
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 0x660283c9
mov eax, dword [ebp - 0x114]
push dword [eax + 8]
call fcn.6602ea9a
pop ecx
jmp 0x660283d9
movsx eax, byte [ebp - 0x353]
cmp eax, 0x3a
jne 0x66043dd3
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 0x66043e8f
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 0x66043e4c
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 0x66028454
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 0x66043e2e
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 0x66043e2e
push 0x6602f9a8
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebp - 0x120], eax
jmp 0x66028454
lea eax, [ebp - 0x240]
push eax
push dword [ebp - 0x10c]
call fcn.660ef746
pop ecx
pop ecx
mov dword [ebp - 0x248], eax
jmp 0x6602847f
mov dword [ebp - 0x11c], 0xe
jmp 0x6602841b
push dword [ebp - 0x10c]
call fcn.6602ea9a
pop ecx
jmp 0x66028435
call fcn.660168b4
cmp dword [eax], 0x16
jne 0x66043efd
mov dword [ebp - 0x11c], 0x34
jmp 0x66028454
mov dword [ebp - 0x11c], 5
jmp 0x66028454
push 0xe
call fcn.660285f1
jmp 0x6602846c