Function at 0x42a479
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x57
push 0
push 0
dec ecx
jne 0x42a2e0
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], edx
mov ebx, eax
lea eax, [ebp - 0x28c]
mov edx, dword [0x4290c4]
call fcn.00405490
xor eax, eax
push ebp
push 0x42a7e0
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x14]
mov edx, ebx
call fcn.00404950
mov dl, 1
mov eax, dword [0x415990]
call fcn.00403ab4
mov dword [ebp - 0x24], eax
xor eax, eax
push ebp
push 0x42a772
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 0x14], 0
je 0x42a34f
mov eax, dword [ebp - 0x14]
mov edx, 0x42a7f8
call fcn.00404ce0
jne 0x42a49f
call sub.kernel32.dll_GetLogicalDrives
mov edi, eax
xor esi, esi
mov eax, esi
cmp eax, 0x1f
ja 0x42a362
bt edi, eax
jae 0x42a490
mov ebx, esi
add bl, 0x61
lea eax, [ebp - 0x290]
mov edx, ebx
call fcn.00404aa0
lea eax, [ebp - 0x290]
mov edx, 0x42a804
call fcn.00404b9c
mov eax, dword [ebp - 0x290]
call fcn.00404d94
push eax
call sub.kernel32.dll_GetDriveTypeA
mov byte [ebp - 5], al
mov eax, ebx
call fcn.004032ec
mov ebx, eax
lea eax, [ebp - 0x298]
mov edx, ebx
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x298]
lea eax, [ebp - 0x29c]
call fcn.00403450
mov edx, 0x42a808
lea eax, [ebp - 0x29c]
mov cl, 2
call fcn.00403420
lea edx, [ebp - 0x29c]
lea eax, [ebp - 0x294]
call fcn.00404b1c
mov edx, dword [ebp - 0x294]
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor edx, edx
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor eax, eax
mov al, byte [ebp - 5]
cmp eax, 6
ja case.0x42a40b.0
jmp dword [eax*4 + 0x42a412]
mov edx, 0x42a814
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x42a486
mov edx, 0x42a824
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x42a486
mov edx, 0x42a834
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x42a486
mov edx, 0x42a844
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x42a486
mov edx, 0x42a854
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x42a486
mov edx, 0x42a864
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor edx, edx
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
inc esi
cmp esi, 0x1a
jne 0x42a358
jmp 0x42a751
lea ecx, [ebp - 0x2a0]
mov edx, 0x42a874
mov eax, dword [ebp - 0x14]
call fcn.0042a1c0
mov eax, dword [ebp - 0x2a0]
lea ecx, [ebp - 0x28c]
mov edx, 0x3f
call fcn.00429690
test eax, eax
jne 0x42a751
xor eax, eax
push ebp
push 0x42a74a
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x284]
and eax, 0x10
cmp eax, 0x10
jne 0x42a5c2
mov eax, dword [ebp - 0x280]
mov edx, 0x42a87c
call fcn.00405278
je 0x42a71e
mov eax, dword [ebp - 0x280]
mov edx, 0x42a884
call fcn.00405278
je 0x42a71e
lea eax, [ebp - 0x2a8]
mov edx, dword [ebp - 0x280]
call fcn.00404b5c
mov edx, dword [ebp - 0x2a8]
lea ecx, [ebp - 0x2a4]
mov eax, dword [ebp - 0x14]
call fcn.0042a1c0
mov eax, dword [ebp - 0x2a4]
call fcn.00429e0c
test al, al
jne 0x42a563
lea eax, [ebp - 0x280]
lea edx, [ebp - 0x40]
mov ecx, 0xe
call fcn.00405120
lea eax, [ebp - 0x2ac]
mov edx, dword [ebp - 0x280]
call fcn.00404b5c
mov edx, dword [ebp - 0x2ac]
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor edx, edx
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 0x284]
and eax, 0x400
cmp eax, 0x400
jne 0x42a5b0
mov edx, 0x42a894
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x42a6b9
mov edx, 0x42a8a4
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
jmp 0x42a6b9
mov edx, dword [ebp - 0x280]
mov eax, 0x42a8b0
call fcn.004053d8
test eax, eax
jle 0x42a5e9
lea eax, [ebp - 0x280]
lea edx, [ebp - 0x40]
mov ecx, 0xe
call fcn.00405120
lea eax, [ebp - 0x2b0]
mov edx, dword [ebp - 0x280]
call fcn.00404b5c
mov eax, dword [ebp - 0x2b0]
lea edx, [ebp - 0x10]
call fcn.0040b8ac
mov eax, dword [ebp - 0x10]
call fcn.00404b94
mov ebx, eax
lea eax, [ebp - 0x2b4]
push eax
mov eax, dword [ebp - 0x280]
call fcn.0040515c
mov ecx, eax
sub ecx, ebx
mov edx, 1
mov eax, dword [ebp - 0x280]
call fcn.004052fc
mov edx, dword [ebp - 0x2b4]
lea eax, [ebp - 0xc]
call fcn.00404b5c
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov edx, dword [ebp - 0x10]
mov eax, 0x42a8bc
call fcn.00404ed8
dec eax
jne 0x42a673
lea eax, [ebp - 0x10]
mov ecx, 1
mov edx, 1
call fcn.00404e34
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 0x258]
xor edx, edx
mov edx, eax
xor eax, eax
push edx
push eax
mov eax, dword [ebp - 0x254]
xor edx, edx
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
push edx
push eax
lea eax, [ebp - 0x2b8]
call fcn.0040b048
mov edx, dword [ebp - 0x2b8]
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor eax, eax
push ebp
push 0x42a6e0
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x28c]
call fcn.0040bc4c
fstp qword [ebp - 0x20]
wait
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x42a6ff
push dword [ebp - 0x1c]
push dword [ebp - 0x20]
lea eax, [ebp - 0x2bc]
call fcn.0040e098
mov edx, dword [ebp - 0x2bc]
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x38]
lea eax, [ebp - 0x28c]
call fcn.00429590
test eax, eax
je 0x42a4de
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x42a751
lea eax, [ebp - 0x28c]
call fcn.00429574
ret
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x42a779
mov eax, dword [ebp - 0x24]
call fcn.00403ae4
ret