Function at 0x46a410
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4fe1fd
mov eax, dword fs:[0]
push eax
sub esp, 0xf0
mov eax, dword [0x550070]
xor eax, ebp
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0xc4], 0
mov eax, dword [ebp + 0xc]
push eax
lea ecx, [ebp - 0x9c]
call fcn.004050b0
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x98]
call fcn.00403790
mov byte [ebp - 4], 1
push 0x51b22c
lea ecx, [ebp - 0xb4]
call fcn.004050b0
mov byte [ebp - 4], 2
lea ecx, [ebp - 0xa0]
call fcn.00403790
mov byte [ebp - 4], 3
cmp dword [ebp + 0x10], 0
je 0x46a5b3
push 3
lea ecx, [ebp - 0xd0]
push ecx
lea ecx, [ebp - 0x9c]
call fcn.00427c80
mov dword [ebp - 0xc8], eax
mov edx, dword [ebp - 0xc8]
mov dword [ebp - 0xcc], edx
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0xcc]
push eax
lea ecx, [ebp - 0x98]
call fcn.00410ec0
mov byte [ebp - 4], 3
lea ecx, [ebp - 0xd0]
call fcn.004036f0
lea ecx, [ebp - 0x98]
call fcn.004038a0
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
mov dword [ebp - 0xd4], eax
cmp dword [ebp - 0xd4], 4
je 0x46a508
jmp 0x46a5ae
lea ecx, [ebp - 0x98]
push ecx
call fcn.0046a370
add esp, 4
test eax, eax
jne 0x46a520
jmp 0x46a5ae
push 0x51b240
lea ecx, [ebp - 0x98]
call fcn.00451080
push 3
lea edx, [ebp - 0xe0]
push edx
lea ecx, [ebp - 0x9c]
call fcn.00451040
mov dword [ebp - 0xd8], eax
mov eax, dword [ebp - 0xd8]
mov dword [ebp - 0xdc], eax
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0xdc]
mov edx, dword [ecx]
push edx
mov eax, dword [ebp - 0x98]
push eax
mov ecx, dword [ebp - 0xb4]
push ecx
push 0x51b244
lea edx, [ebp - 0xa0]
push edx
call fcn.0040e1d0
add esp, 0x14
mov byte [ebp - 4], 3
lea ecx, [ebp - 0xe0]
call fcn.004036f0
lea eax, [ebp - 0xa0]
push eax
lea ecx, [ebp - 0x9c]
call fcn.00410ec0
xor ecx, ecx
jne 0x46a4fa
jmp 0x46a875
lea ecx, [ebp - 0x94]
call fcn.00406c20
mov byte [ebp - 4], 6
push 0x8000
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
mov dword [ebp - 0xf8], eax
push 0x200
lea ecx, [ebp - 0x94]
call fcn.00473960
lea ecx, [ebp - 0x94]
call fcn.004038a0
push eax
push 0x200
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov dword [ebp - 0xfc], eax
lea ecx, [ebp - 0x94]
call fcn.004038a0
mov dword [ebp - 0xa4], eax
mov dword [ebp - 0xc0], 0
lea ecx, [ebp - 0xb4]
call fcn.00403ae0
mov dword [ebp - 0xbc], eax
mov edx, dword [ebp - 0xbc]
push edx
lea ecx, [ebp - 0xb4]
call fcn.004038a0
push eax
lea ecx, [ebp - 0x9c]
call fcn.004038a0
push eax
call fcn.004de740
add esp, 0xc
test eax, eax
jne 0x46a671
mov eax, dword [ebp - 0xbc]
push eax
push 0
lea ecx, [ebp - 0x9c]
call fcn.00470a50
mov ecx, dword [ebp - 0xa4]
mov dword [ebp - 0xa8], ecx
mov edx, dword [ebp - 0xa8]
add edx, 2
mov dword [ebp - 0xe4], edx
mov eax, dword [ebp - 0xa8]
mov cx, word [eax]
mov word [ebp - 0xb6], cx
add dword [ebp - 0xa8], 2
cmp word [ebp - 0xb6], 0
jne 0x46a68c
mov edx, dword [ebp - 0xa8]
sub edx, dword [ebp - 0xe4]
sar edx, 1
mov dword [ebp - 0xe8], edx
je 0x46a835
mov eax, dword [ebp - 0xa4]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
mov dword [ebp - 0xec], eax
cmp dword [ebp - 0xec], 4
je 0x46a6e8
jmp 0x46a7ca
mov ecx, dword [ebp - 0xa4]
push ecx
lea ecx, [ebp - 0x98]
call fcn.00406270
lea edx, [ebp - 0x98]
push edx
call fcn.0046a370
add esp, 4
test eax, eax
jne 0x46a712
jmp 0x46a7ca
push 0x51b254
lea ecx, [ebp - 0x98]
call fcn.00451080
lea ecx, [ebp - 0x98]
call fcn.00403ae0
mov dword [ebp - 0xb0], eax
mov eax, dword [ebp - 0xb0]
push eax
lea ecx, [ebp - 0x98]
call fcn.004038a0
push eax
lea ecx, [ebp - 0x9c]
call fcn.004038a0
push eax
call fcn.004de740
add esp, 0xc
test eax, eax
jne 0x46a7c2
mov ecx, dword [ebp - 0xb0]
cmp ecx, dword [ebp - 0xc0]
jbe 0x46a7c2
lea edx, [ebp - 0x9c]
push edx
lea ecx, [ebp - 0xa0]
call fcn.00410ec0
mov eax, dword [ebp - 0xb0]
push eax
push 0
lea ecx, [ebp - 0xa0]
call fcn.00470a50
push 0x51b258
lea ecx, [ebp - 0xa0]
call fcn.00451080
mov ecx, dword [ebp - 0xa4]
push ecx
push 0
lea ecx, [ebp - 0xa0]
call fcn.0042c3b0
mov edx, dword [ebp - 0xb0]
mov dword [ebp - 0xc0], edx
xor eax, eax
jne 0x46a6c7
mov ecx, dword [ebp - 0xa4]
mov dword [ebp - 0xac], ecx
mov edx, dword [ebp - 0xac]
add edx, 2
mov dword [ebp - 0xf0], edx
mov eax, dword [ebp - 0xac]
mov cx, word [eax]
mov word [ebp - 0xb8], cx
add dword [ebp - 0xac], 2
cmp word [ebp - 0xb8], 0
jne 0x46a7e5
mov edx, dword [ebp - 0xac]
sub edx, dword [ebp - 0xf0]
sar edx, 1
mov dword [ebp - 0xf4], edx
mov eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xa4]
lea edx, [ecx + eax*2 + 2]
mov dword [ebp - 0xa4], edx
jmp 0x46a671
mov eax, dword [ebp - 0xf8]
push eax
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
lea ecx, [ebp - 0xa0]
call fcn.004037d0
movzx ecx, al
test ecx, ecx
jne 0x46a866
lea edx, [ebp - 0xa0]
push edx
lea ecx, [ebp - 0x9c]
call fcn.00410ec0
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x94]
call fcn.004739d0
lea eax, [ebp - 0x9c]
push eax
mov ecx, dword [ebp + 8]
call fcn.0040e000
mov ecx, dword [ebp - 0xc4]
or ecx, 1
mov dword [ebp - 0xc4], ecx
mov byte [ebp - 4], 2
lea ecx, [ebp - 0xa0]
call fcn.004036f0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0xb4]
call fcn.004036f0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x98]
call fcn.004036f0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x9c]
call fcn.004036f0
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004d181f
mov esp, ebp
pop ebp
ret