Function at 0x46c320
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffec8
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x138], ebx
mov dword [ebp - 0x134], ebx
mov dword [ebp - 0x130], ebx
mov dword [ebp - 0x12c], ebx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 8]
call fcn.00404c00
mov eax, dword [ebp + 8]
call fcn.00404c00
xor eax, eax
push ebp
push 0x46c88d
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0xd], 0
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.0046ccbc
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.0046ccd0
xor edx, edx
push ebp
push 0x46c843
push dword fs:[edx]
mov dword fs:[edx], esp
xor edx, edx
push ebp
push 0x46c7e4
push dword fs:[edx]
mov dword fs:[edx], esp
lea eax, [ebp - 0x20]
call fcn.00404740
mov edx, dword [ebp + 8]
mov eax, 0x46c8a8
call fcn.00404d54
test eax, eax
jle 0x46c3dc
mov al, byte [0x46c8ac]
push eax
lea eax, [ebp - 0x20]
push eax
xor ecx, ecx
mov edx, 0x46c8a8
mov eax, dword [ebp + 8]
call fcn.0040e39c
mov byte [ebp - 0x19], 0
mov eax, dword [ebp - 4]
call fcn.0046cbac
test al, al
je 0x46c49a
lea eax, [ebp - 0x14]
push eax
mov ecx, 0x1c
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.0046ca44
cmp dword [ebp - 0x14], 0
je 0x46c416
lea eax, [ebp - 0x14]
mov edx, 0x46c8b8
call fcn.00404a18
push 0
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x128], eax
mov byte [ebp - 0x124], 0xb
lea ecx, [ebp - 0x128]
mov edx, 0x46c8c4
mov eax, dword [ebp - 4]
call fcn.0046b8ec
cmp dword [ebp - 0x14], 0
je 0x46c49a
mov eax, dword [ebp - 0x14]
call fcn.004092c0
test al, al
je 0x46c49a
push dword [ebp - 0x14]
push 0x46c8e4
mov eax, dword [ebp - 0xc]
cmp eax, 4
jbe 0x46c462
call fcn.00403940
push dword [eax*4 + 0x475060]
lea eax, [ebp - 0x18]
mov edx, 3
call fcn.00404ad0
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 0x20]
push eax
push 0
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 4]
call fcn.0046b900
test al, al
je 0x46c49a
mov byte [ebp - 0xd], 1
mov byte [ebp - 0x19], 1
cmp byte [ebp - 0x19], 0
jne 0x46c55c
lea edx, [ebp - 0x14]
mov eax, 0x46c8f0
call fcn.0040ebb4
cmp dword [ebp - 0x14], 0
je 0x46c4c3
mov eax, dword [ebp - 0x14]
call fcn.004092c0
test al, al
jne 0x46c4ea
push 0xffffffffffffffff
lea ecx, [ebp - 0x128]
mov edx, 0x46c908
mov eax, dword [ebp - 4]
call fcn.0046b8ec
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
call fcn.00404228
jmp 0x46c84a
push dword [ebp - 0x14]
push 0x46c8e4
mov eax, dword [ebp - 0xc]
cmp eax, 4
jbe 0x46c4ff
call fcn.00403940
push dword [eax*4 + 0x475060]
lea eax, [ebp - 0x18]
mov edx, 3
call fcn.00404ad0
push 0
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x128], eax
mov byte [ebp - 0x124], 0xb
lea ecx, [ebp - 0x128]
mov edx, 0x46c948
mov eax, dword [ebp - 4]
call fcn.0046b8ec
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 0x20]
push eax
push 0
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 4]
call fcn.0046b900
test al, al
je 0x46c55c
mov byte [ebp - 0xd], 1
mov byte [ebp - 0x19], 1
cmp byte [ebp - 0x19], 0
jne 0x46c5eb
lea edx, [ebp - 0x14]
mov eax, 0x46c964
call fcn.0040ebb4
push 0
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x128], eax
mov byte [ebp - 0x124], 0xb
lea ecx, [ebp - 0x128]
mov edx, 0x46c97c
mov eax, dword [ebp - 4]
call fcn.0046b8ec
cmp dword [ebp - 0x14], 0
je 0x46c5eb
push dword [ebp - 0x14]
push 0x46c8e4
mov eax, dword [ebp - 0xc]
cmp eax, 4
jbe 0x46c5b3
call fcn.00403940
push dword [eax*4 + 0x475060]
lea eax, [ebp - 0x18]
mov edx, 3
call fcn.00404ad0
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 0x20]
push eax
push 0
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 4]
call fcn.0046b900
test al, al
je 0x46c5eb
mov byte [ebp - 0xd], 1
mov byte [ebp - 0x19], 1
cmp byte [ebp - 0x19], 0
je 0x46c603
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
call fcn.00404228
jmp 0x46c84a
lea eax, [ebp - 0x120]
xor ecx, ecx
mov edx, pe_nt_image_headers32
call fcn.004031a4
lea eax, [ebp - 0x120]
push eax
push pe_nt_image_headers32
call sub.kernel32.dll_GetLogicalDriveStringsA
mov esi, eax
lea ebx, [ebp - 0x120]
test esi, esi
jbe 0x46c7da
push 0
mov dword [ebp - 0x128], ebx
mov byte [ebp - 0x124], 6
lea ecx, [ebp - 0x128]
mov edx, 0x46c99c
mov eax, dword [ebp - 4]
call fcn.0046b8ec
mov al, byte [ebx]
add al, 0xbd
sub al, 0x18
jae 0x46c778
push ebx
call sub.kernel32.dll_GetDriveTypeA
mov edi, eax
push 0
mov dword [ebp - 0x128], edi
mov byte [ebp - 0x124], 0
lea ecx, [ebp - 0x128]
mov edx, 0x46c9b8
mov eax, dword [ebp - 4]
call fcn.0046b8ec
mov eax, edi
add eax, 0xfffffffe
sub eax, 2
jb 0x46c6a2
dec eax
sub eax, 2
jae 0x46c778
cmp byte [ebp - 0x19], 0
jne 0x46c778
mov eax, edi
add eax, 0xfffffffe
sub eax, 2
jb 0x46c6c0
dec eax
sub eax, 2
jae 0x46c778
push 0
mov dword [ebp - 0x128], ebx
mov byte [ebp - 0x124], 6
lea ecx, [ebp - 0x128]
mov edx, 0x46c9d4
mov eax, dword [ebp - 4]
call fcn.0046b8ec
mov dl, byte [ebx]
mov eax, dword [ebp - 4]
call fcn.0046ca98
test al, al
je 0x46c763
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 0x20]
push eax
push 0
lea eax, [ebp - 0x12c]
mov edx, ebx
call fcn.00404948
lea eax, [ebp - 0x12c]
mov edx, dword [ebp - 0xc]
cmp edx, 4
jbe 0x46c71a
call fcn.00403940
mov edx, dword [edx*4 + 0x475060]
call fcn.00404a18
mov edx, dword [ebp - 0x12c]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.0046b900
test al, al
je 0x46c778
mov eax, edi
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x130]
call fcn.00408e94
mov edx, dword [ebp - 0x130]
mov eax, dword [ebp - 4]
add eax, 4
call fcn.00404794
mov byte [ebp - 0xd], 1
jmp 0x46c7da
push 0xffffffffffffffff
lea ecx, [ebp - 0x128]
mov edx, 0x46ca08
mov eax, dword [ebp - 4]
call fcn.0046b8ec
mov eax, esi
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x134]
mov edx, ebx
call fcn.00404948
mov eax, dword [ebp - 0x134]
call fcn.00404a10
add eax, 1
jno 0x46c7a0
call fcn.00403948
cdq
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
test edx, edx
je 0x46c7b3
call fcn.00403940
mov esi, eax
lea eax, [ebp - 0x138]
mov edx, ebx
call fcn.00404948
mov eax, dword [ebp - 0x138]
call fcn.00404a10
add ebx, eax
add ebx, 1
test esi, esi
ja 0x46c636
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x46c82d
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46c84a
mov eax, dword [ebp - 4]
call fcn.0046cd38
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46c894
lea eax, [ebp - 0x138]
mov edx, 4
call fcn.00404764
lea eax, [ebp - 0x20]
call fcn.00404740
lea eax, [ebp - 0x18]
mov edx, 2
call fcn.00404764
lea eax, [ebp - 8]
call fcn.00404740
lea eax, [ebp + 8]
call fcn.00404740
ret