Function at 0x420c16
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x124
mov eax, dword [0x51a448]
xor eax, ebp
mov dword [ebp - 4], eax
push edi
mov edi, ecx
mov dword [ebp - 0x110], edi
mov eax, dword [edi + 0x12c]
cmp eax, 2
je 0x420c42
cmp eax, 0x33
jne 0x420c58
test byte [edi + 0x130], 1
je 0x420c58
cmp dword [edi + 0x138], 0xffffffff
je 0x420f03
push ebx
push esi
push 0x118
push 8
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov esi, dword [sym.imp.KERNEL32.dll_HeapAlloc]
push eax
call esi
mov ebx, eax
test ebx, ebx
je 0x420f01
push 0x2000
push 8
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call esi
mov esi, eax
test esi, esi
je 0x420eed
call fcn.0040a6a4
mov eax, dword [edi + 0x12c]
mov ecx, dword [edi + 0x130]
mov dl, byte [edi + 0x128]
mov dword [esi + 8], edi
mov dword [ebx], eax
mov dword [ebp - 0x124], eax
lea eax, [esi + 0xc]
mov dword [ebx + 4], ecx
mov byte [ebx + 8], 0
and dword [eax], 0
push eax
push dword [edi + 0xc]
mov dword [ebp - 0x118], ecx
mov byte [ebp - 0x105], dl
call dword [sym.imp.KERNEL32.dll_ProcessIdToSessionId]
test eax, eax
lea eax, [esi + 0xc]
je 0x420ce5
cmp dword [eax], 0
jne 0x420cef
mov ecx, eax
call fcn.0048dd30
lea eax, [esi + 0xc]
mov ecx, dword [eax]
lea edx, [esi + 0x10]
call fcn.0048de60
test eax, eax
je 0x420d13
cmp dword [esi + 0x10], 0
je 0x420d13
mov ecx, dword [esi + 0xc]
lea eax, [esi + 0x18]
mov edx, eax
mov dword [esi + 0x14], eax
call fcn.0048df20
mov ah, byte [ebp - 0x105]
mov cl, ah
mov al, ah
sub al, 0x20
sub cl, 0x61
movzx edx, al
cmp cl, 0x19
movzx eax, ah
cmova edx, eax
movsx eax, dl
sub eax, 0x41
mov dword [ebp - 0x120], edx
cmp eax, 0x19
jbe 0x420dc8
push 2
pop eax
mov dword [ebp - 0x10c], 0x5c3a43
mov dword [ebp - 0x114], eax
add al, 0x41
mov byte [ebp - 0x10c], al
lea eax, [ebp - 0x10c]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
mov dword [ebp - 0x11c], eax
cmp eax, 2
je 0x420d7b
cmp eax, 5
jne 0x420db0
push 0x100
xor ecx, ecx
lea eax, [ebp - 0x104]
push eax
push ecx
push ecx
push ecx
push ecx
push ecx
lea eax, [ebp - 0x10c]
mov byte [ebp - 0x104], cl
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
jne 0x420db0
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 5
je 0x420df4
mov eax, dword [ebp - 0x114]
inc eax
mov dword [ebp - 0x114], eax
cmp eax, 0x1a
jb 0x420d56
mov edx, dword [ebp - 0x120]
xor eax, eax
movsx ecx, dl
inc eax
sub ecx, 0x41
shl eax, cl
mov dword [ebx + 0x10c], eax
mov eax, dword [ebp - 0x124]
cmp eax, 7
jne 0x420e08
mov ecx, dword [ebp - 0x118]
test cl, 4
je 0x420e04
push 2
pop edi
jmp 0x420e28
mov al, byte [ebp - 0x10c]
mov byte [edi + 0x128], al
mov dl, al
jmp 0x420dc8
xor edi, edi
jmp 0x420e28
cmp eax, 2
je 0x420e16
cmp eax, 0x33
jne 0x420edd
mov ecx, dword [ebp - 0x118]
test cl, 1
je 0x420edd
xor edi, edi
inc edi
mov dword [esi], edi
mov dword [esi + 4], 0x78
mov dword [ebx + 0x110], edi
cmp eax, 2
je 0x420e41
cmp eax, 0x33
jne 0x420e46
test cl, 1
jne 0x420e8a
imul eax, edi, 0x50
cmp dword [eax + 0x51e904], 0
jne 0x420e8a
cmp dword [eax + 0x51e918], 0
jne 0x420e64
cmp dword [eax + 0x51e924], 0
je 0x420e8a
lea eax, [ebp - 0x11c]
push eax
push 0
push ebx
push 0x4283c4
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
je 0x420e8a
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor ebx, ebx
push 0
call fcn.004c8af7
pop ecx
mov ecx, eax
sub eax, dword [edi*4 + 0x52f5e0]
mov dword [ebp - 0x11c], ecx
cmp eax, 2
jb 0x420ed7
mov dword [edi*4 + 0x52f5e0], ecx
mov ecx, dword [esi]
imul eax, ecx, 0x50
cmp dword [eax + 0x51e928], 0
je 0x420ec4
mov ecx, esi
call fcn.00425ece
mov ecx, dword [esi]
imul eax, ecx, 0x50
cmp dword [eax + 0x51e92c], 0
je 0x420ed7
mov ecx, esi
call fcn.00425b9e
mov edi, dword [ebp - 0x110]
push esi
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
test ebx, ebx
je 0x420f01
push ebx
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
pop esi
pop ebx
mov ecx, edi
call fcn.0041e227
mov ecx, dword [ebp - 4]
xor eax, eax
xor ecx, ebp
inc eax
pop edi
call fcn.0049d307
leave
ret