Function at 0x100ae37d
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x23c
mov dword [ebp - 0x234], 0x94
lea eax, [ebp - 0x234]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
movsx ecx, byte [ebp + 8]
push ecx
push str._c:_
lea edx, [ebp - 0x178]
push edx
call sub.MSVCR70D.dll_sprintf
add esp, 0xc
lea eax, [ebp - 0x178]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 2
je 0x100ae3d7
mov dword [ebp - 0x180], 0
jmp 0x100ae6a0
cmp dword [ebp - 0x224], 2
jne 0x100ae55d
mov dword [ebp - 0x180], 0xb
movsx ecx, byte [ebp + 8]
push ecx
push str.._c:
lea edx, [ebp - 0x178]
push edx
call sub.MSVCR70D.dll_sprintf
add esp, 0xc
push 0
push 0
push 3
push 0
push 3
push 0
lea eax, [ebp - 0x178]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x164], eax
cmp dword [ebp - 0x164], 0xffffffff
je 0x100ae558
push 0
lea ecx, [ebp - 0x168]
push ecx
push 0x138
lea edx, [ebp - 0x138]
push edx
push 0
push 0
push 0x70c00
mov eax, dword [ebp - 0x164]
push eax
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x100ae54b
mov eax, dword [ebp - 0x168]
xor edx, edx
mov ecx, 0x18
div ecx
mov dword [ebp - 0x17c], eax
mov dword [ebp - 0x184], 0
jmp 0x100ae496
mov edx, dword [ebp - 0x184]
add edx, 1
mov dword [ebp - 0x184], edx
mov eax, dword [ebp - 0x184]
cmp eax, dword [ebp - 0x17c]
jge 0x100ae54b
mov ecx, dword [ebp - 0x184]
imul ecx, ecx, 0x18
mov edx, dword [ebp + ecx - 0x130]
mov dword [ebp - 0x238], edx
mov eax, dword [ebp - 0x238]
sub eax, 1
mov dword [ebp - 0x238], eax
cmp dword [ebp - 0x238], 0x15
ja case.0x100ae4e4.3
mov edx, dword [ebp - 0x238]
xor ecx, ecx
mov cl, byte [edx + 0x100ae6ba]
jmp dword [ecx*4 + 0x100ae6aa]
mov eax, dword [ebp - 0x184]
imul eax, eax, 0x18
mov ecx, dword [ebp + eax - 0x130]
mov dword [ebp - 0x180], ecx
mov edx, dword [ebp - 0x17c]
mov dword [ebp - 0x184], edx
jmp case.0x100ae4e4.3
mov eax, dword [ebp - 0x184]
imul eax, eax, 0x18
mov ecx, dword [ebp + eax - 0x130]
mov dword [ebp - 0x180], ecx
jmp case.0x100ae4e4.3
cmp dword [ebp - 0x180], 0xb
jne case.0x100ae4e4.3
mov edx, dword [ebp - 0x184]
imul edx, edx, 0x18
mov eax, dword [ebp + edx - 0x130]
mov dword [ebp - 0x180], eax
jmp 0x100ae487
mov ecx, dword [ebp - 0x164]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x100ae6a0
mov dword [ebp - 0x180], 0xb
push 0
push 0x4000000
push 0
push 0
push 0
push 0
push str..VWIN32
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x164], eax
cmp dword [ebp - 0x164], 0xffffffff
je 0x100ae6a0
mov byte [ebp - 0x160], 0
movsx edx, byte [ebp + 8]
push edx
call sub.MSVCR70D.dll_toupper
add esp, 4
sub eax, 0x40
mov dword [ebp - 0x1a0], eax
lea eax, [ebp - 0x160]
mov dword [ebp - 0x19c], eax
mov dword [ebp - 0x198], 0x860
mov dword [ebp - 0x194], 0x440d
mov dword [ebp - 0x188], 1
push 0
lea ecx, [ebp - 0x168]
push ecx
push 0x1c
lea edx, [ebp - 0x1a0]
push edx
push 0x1c
lea eax, [ebp - 0x1a0]
push eax
push 1
mov ecx, dword [ebp - 0x164]
push ecx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je case.default.0x100ae63a
mov edx, dword [ebp - 0x188]
and edx, 1
test edx, edx
jne case.default.0x100ae63a
mov eax, dword [ebp - 0x15f]
and eax, 0xff
mov dword [ebp - 0x23c], eax
cmp dword [ebp - 0x23c], 9
ja case.default.0x100ae63a
mov ecx, dword [ebp - 0x23c]
jmp dword [ecx*4 + 0x100ae6d0]
mov dword [ebp - 0x180], 6
jmp case.default.0x100ae63a
mov dword [ebp - 0x180], 1
jmp case.default.0x100ae63a
mov dword [ebp - 0x180], 0x16
jmp case.default.0x100ae63a
mov dword [ebp - 0x180], 5
jmp case.default.0x100ae63a
mov dword [ebp - 0x180], 2
jmp case.default.0x100ae63a
mov dword [ebp - 0x180], 3
jmp case.default.0x100ae63a
mov dword [ebp - 0x180], 0xb
mov edx, dword [ebp - 0x164]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x180]
mov esp, ebp
pop ebp
ret
add bl, ch
sbb byte [edx - 0x3e7f07b3], cl
add dword [eax - 0x6a7407b3], ecx
mov ah, 0xfc
invalid