Function at 0x464e87
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x238
mov eax, dword [0x52efc0]
mov esi, dword [ebp + 0xc]
lea edi, [esp + 0x28]
mov ecx, edi
xor eax, ebp
mov dword [esp + 0x230], eax
push esi
call fcn.00402d2c
push edi
call fcn.004647b8
add esp, 4
cmp byte [edi + 0xb], 0
mov ebx, eax
jns 0x464ed0
push dword [esp + 0x28]
call fcn.004aeac6
add esp, 4
test bl, bl
mov bl, 1
jne 0x465127
mov eax, dword [ebp + 8]
lea edi, [esp + 0x18]
xor ecx, ecx
mov dword [edi + 4], ecx
mov dword [edi], ecx
mov dword [edi + 8], ecx
push edi
push eax
call fcn.004649d0
add esp, 8
test al, al
je 0x464f4a
lea edi, [esp + 8]
mov ecx, edi
push esi
call fcn.00402d2c
movzx eax, byte [edi + 0xb]
mov ecx, dword [edi]
test al, al
mov edx, eax
jns 0x464f17
mov edx, dword [esp + 0xc]
mov edi, ecx
cmp word [edi + edx*2 - 2], 0x5c
jne 0x464f99
lea eax, [esp + 0x14]
dec edx
lea esi, [esp + 8]
lea ecx, [esp + 0x28]
push eax
push edx
push 0
push esi
call fcn.004282dc
cmp byte [esi + 0xb], 0
js 0x464f51
mov word [esp + 8], 0
mov byte [esp + 0x13], 0
jmp 0x464f7d
xor ebx, ebx
jmp 0x465115
mov eax, dword [esp + 8]
mov word [eax], 0
mov dword [esp + 0xc], 0
cmp byte [esp + 0x13], 0
jns 0x464f7d
push dword [esp + 8]
call fcn.004aeac6
add esp, 4
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x30]
movsd xmm0, qword [esp + 0x28]
mov dword [esp + 0x10], eax
movsd qword [esp + 8], xmm0
mov al, byte [esp + 0x13]
mov ecx, dword [esp + 8]
test al, al
lea eax, [esp + 8]
cmovs eax, ecx
xor ecx, ecx
cmp byte [esp + 0x23], cl
jns 0x464fb0
mov ecx, dword [esp + 0x18]
jmp 0x464fb4
lea ecx, [esp + 0x18]
push eax
push ecx
call fcn.004cb915
add esp, 8
test eax, eax
je 0x465029
lea edi, [esp + 8]
mov ecx, edi
mov edx, edi
call fcn.00464cca
mov ecx, edi
mov ebx, eax
call fcn.00464d8b
test al, al
jne 0x465030
test bl, bl
je 0x465030
lea esi, [esp + 0x28]
xor eax, eax
lea ecx, [esp + 0x18]
mov edx, esi
mov dword [esi + 4], eax
mov dword [esi], eax
mov dword [esi + 8], eax
call fcn.00464dca
test al, al
je 0x46504e
xor eax, eax
cmp byte [esp + 0x13], al
jns 0x465009
mov edi, dword [esp + 8]
lea esi, [esp + 0x28]
cmp byte [esi + 0xb], al
mov eax, esi
jns 0x465018
mov eax, dword [esp + 0x28]
push edi
push eax
call fcn.004cb915
add esp, 8
test eax, eax
sete bl
jmp 0x465050
mov bl, 1
jmp 0x4650fe
xor ebx, ebx
test al, al
je 0x4650fe
cmp byte [esp + 0x13], 0
mov dword [esp + 4], ebx
mov dword [esp], ebx
jns 0x46506b
mov eax, dword [esp + 8]
jmp 0x46506f
xor ebx, ebx
cmp byte [esi + 0xb], 0
jns 0x4650fe
push dword [esp + 0x28]
call fcn.004aeac6
add esp, 4
jmp 0x4650fe
lea eax, [esp + 8]
mov eax, dword [eax]
mov ecx, esp
lea edx, [esp + 0x28]
mov dword [ecx], eax
push 0x104
push edx
push ecx
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
mov edi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
test edi, edi
jne 0x465099
mov bl, 1
cmp eax, 5
je 0x4650fe
xor ebx, ebx
cmp edi, 2
jb 0x4650fe
cmp edi, 0x104
je 0x4650fe
lea eax, [esp + 0x28]
push eax
call fcn.004cf81e
add esp, 4
mov edi, eax
movzx eax, byte [esp + 0x13]
test al, al
jns 0x4650c4
mov eax, dword [esp + 0xc]
lea ecx, [edi + eax - 2]
movzx eax, byte [esp + 0x23]
test al, al
mov edx, eax
jns 0x4650d7
mov edx, dword [esp + 0x1c]
cmp ecx, edx
jne 0x4650fc
test al, al
jns 0x4650e5
mov eax, dword [esp + 0x18]
jmp 0x4650e9
lea eax, [esp + 0x18]
push edi
lea ecx, [esp + 0x2c]
push ecx
push eax
call fcn.004cbcb1
add esp, 0xc
test eax, eax
je 0x46513f
xor ebx, ebx
cmp byte [esp + 0x13], 0
jns 0x465111
push dword [esp + 8]
call fcn.004aeac6
add esp, 4
lea edi, [esp + 0x18]
cmp byte [edi + 0xb], 0
jns 0x465127
push dword [esp + 0x18]
call fcn.004aeac6
add esp, 4
mov ecx, dword [esp + 0x230]
xor ecx, ebp
call fcn.004aeb01
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor ecx, ecx
cmp byte [esp + 0x13], cl
jns 0x46514d
mov eax, dword [esp + 8]
jmp 0x465151
lea eax, [esp + 8]
add eax, 4
cmp byte [esp + 0x23], cl
jns 0x465160
mov ecx, dword [esp + 0x18]
jmp 0x465164
lea ecx, [esp + 0x18]
lea ecx, [ecx + edi*2]
push eax
push ecx
call fcn.004cb915
add esp, 8
test eax, eax
sete bl
jmp 0x4650fe