Function at 0x495d88
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x51
push 0
push 0
dec ecx
jne 0x495d90
push ecx
push ebx
push esi
push edi
mov esi, eax
xor eax, eax
push ebp
push 0x4965c1
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x4161d8]
call fcn.00403510
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0x360]
mov ecx, 0x32
xor edx, edx
call fcn.00489d0c
mov eax, dword [esi + 0x360]
mov ecx, 0x50
mov edx, 1
call fcn.00489d0c
mov eax, dword [esi + 0x360]
mov ecx, 0x50
mov edx, 2
call fcn.00489d0c
xor eax, eax
push ebp
push 0x496554
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x12c]
push eax
push 0x104
call sub.kernel32.dll_GetLogicalDriveStringsA
mov edi, eax
test edi, edi
jns 0x495e1e
add edi, 3
sar edi, 2
test edi, edi
jl 0x495f1b
inc edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 4], 0
lea ebx, [ebp - 0x12c]
lea eax, [ebp - 0x130]
mov dl, byte [ebx]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x130]
lea eax, [ebp - 0x134]
call fcn.00402bc8
lea eax, [ebp - 0x138]
mov dl, byte [ebx + 1]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x138]
lea eax, [ebp - 0x134]
mov cl, 2
call fcn.00402b98
lea edx, [ebp - 0x134]
lea eax, [ebp - 0x13c]
call fcn.00402bc8
lea eax, [ebp - 0x138]
mov dl, byte [ebx + 2]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x138]
lea eax, [ebp - 0x13c]
mov cl, 3
call fcn.00402b98
lea edx, [ebp - 0x13c]
lea eax, [ebp - 0x20]
call fcn.00404578
mov eax, dword [ebp - 0x20]
call fcn.004047d4
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 3
jne 0x495f0c
push dword [ebp - 0x20]
push 0x4965d8
lea edx, [ebp - 0x144]
mov eax, dword [ebp - 4]
add eax, 3
call fcn.0040881c
push dword [ebp - 0x144]
lea eax, [ebp - 0x140]
mov edx, 3
call fcn.00404694
mov edx, dword [ebp - 0x140]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
inc dword [ebp - 4]
add ebx, 4
dec dword [ebp - 0x28]
jne 0x495e3a
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
jle 0x495f50
lea edx, [ebp - 0x148]
mov eax, dword [esi + 0x354]
call fcn.0044120c
mov edx, dword [ebp - 0x148]
mov eax, dword [0x49a2a4]
mov eax, dword [eax]
add eax, 0x314
call fcn.00404368
jmp 0x495fab
push 0x4965e4
lea eax, [ebp - 0x14c]
push eax
mov eax, dword [0x49a2a4]
mov eax, dword [eax]
mov ecx, 0x496600
mov edx, 0x496610
call fcn.00497020
push dword [ebp - 0x14c]
push 0x496624
mov eax, dword [0x49a2a4]
mov eax, dword [eax]
add eax, 0x314
mov edx, 3
call fcn.00404694
mov eax, dword [0x49a2a4]
mov eax, dword [eax]
mov edx, dword [eax + 0x314]
mov eax, dword [esi + 0x354]
call fcn.0044123c
mov eax, dword [esi + 0x360]
mov edx, 5
call fcn.00489cb0
mov eax, dword [esi + 0x360]
xor edx, edx
call fcn.0048a040
xor eax, eax
mov dword [ebp - 8], eax
lea eax, [ebp - 0x12c]
push eax
push 0x104
call sub.kernel32.dll_GetLogicalDriveStringsA
mov edi, eax
test edi, edi
jns 0x495fe7
add edi, 3
sar edi, 2
test edi, edi
jl 0x496328
inc edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 4], 0
lea ebx, [ebp - 0x12c]
lea eax, [ebp - 0x130]
mov dl, byte [ebx]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x130]
lea eax, [ebp - 0x134]
call fcn.00402bc8
lea eax, [ebp - 0x138]
mov dl, byte [ebx + 1]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x138]
lea eax, [ebp - 0x134]
mov cl, 2
call fcn.00402b98
lea edx, [ebp - 0x134]
lea eax, [ebp - 0x13c]
call fcn.00402bc8
lea eax, [ebp - 0x138]
mov dl, byte [ebx + 2]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x138]
lea eax, [ebp - 0x13c]
mov cl, 3
call fcn.00402b98
lea edx, [ebp - 0x13c]
lea eax, [ebp - 0x20]
call fcn.00404578
mov eax, dword [ebp - 0x20]
call fcn.004047d4
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 3
jne 0x49630a
lea eax, [ebp - 0x150]
push eax
lea ecx, [ebp - 0x154]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x1c]
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x154]
mov ecx, 2
mov edx, 5
call fcn.00404834
mov eax, dword [ebp - 0x150]
call fcn.00408958
mov edi, eax
mov eax, edi
call fcn.004090f4
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x158], edx
fild qword [ebp - 0x15c]
fstp qword [ebp - 0x18]
wait
mov eax, edi
call fcn.004090c0
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x158], edx
fild qword [ebp - 0x15c]
fstp qword [ebp - 0x10]
wait
mov edx, dword [ebp - 8]
inc edx
mov eax, dword [esi + 0x360]
call fcn.0048a040
lea eax, [ebp - 0x160]
push eax
lea ecx, [ebp - 0x164]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x1c]
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x164]
mov ecx, 3
mov edx, 1
call fcn.00404834
mov eax, dword [ebp - 0x160]
push eax
mov eax, dword [esi + 0x360]
mov ecx, dword [ebp - 8]
xor edx, edx
call fcn.0048c1cc
fld qword [ebp - 0x18]
fcomp dword [0x496628]
fnstsw ax
sahf
jbe 0x49621f
fld qword [ebp - 0x18]
fdiv dword [0x49662c]
fdiv dword [0x49662c]
fdiv dword [0x49662c]
fstp qword [ebp - 0x18]
wait
fld qword [ebp - 0x18]
fcomp dword [0x496630]
fnstsw ax
sahf
jae 0x4961c8
fld qword [ebp - 0x18]
add esp, 0xfffffff4
fstp xword [esp]
wait
lea ecx, [ebp - 0x264]
mov edx, 2
xor eax, eax
call fcn.00402ed0
lea edx, [ebp - 0x264]
lea eax, [ebp - 0x24]
call fcn.00404578
jmp 0x4961f2
fld qword [ebp - 0x18]
add esp, 0xfffffff4
fstp xword [esp]
wait
lea ecx, [ebp - 0x264]
mov edx, 1
xor eax, eax
call fcn.00402ed0
lea edx, [ebp - 0x264]
lea eax, [ebp - 0x24]
call fcn.00404578
lea eax, [ebp - 0x268]
mov ecx, 0x49663c
mov edx, dword [ebp - 0x24]
call fcn.00404620
mov eax, dword [ebp - 0x268]
push eax
mov eax, dword [esi + 0x360]
mov ecx, dword [ebp - 8]
mov edx, 1
call fcn.0048c1cc
push 0
mov eax, dword [esi + 0x360]
mov ecx, dword [ebp - 8]
mov edx, 3
call fcn.0048c1cc
fld qword [ebp - 0x10]
fcomp dword [0x496628]
fnstsw ax
sahf
jbe 0x4962f0
fld qword [ebp - 0x10]
fdiv dword [0x49662c]
fdiv dword [0x49662c]
fdiv dword [0x49662c]
fstp qword [ebp - 0x10]
wait
fld qword [ebp - 0x10]
fcomp dword [0x496630]
fnstsw ax
sahf
jae 0x496299
fld qword [ebp - 0x10]
add esp, 0xfffffff4
fstp xword [esp]
wait
lea ecx, [ebp - 0x264]
mov edx, 2
xor eax, eax
call fcn.00402ed0
lea edx, [ebp - 0x264]
lea eax, [ebp - 0x24]
call fcn.00404578
jmp 0x4962c3
fld qword [ebp - 0x10]
add esp, 0xfffffff4
fstp xword [esp]
wait
lea ecx, [ebp - 0x264]
mov edx, 1
xor eax, eax
call fcn.00402ed0
lea edx, [ebp - 0x264]
lea eax, [ebp - 0x24]
call fcn.00404578
lea eax, [ebp - 0x26c]
mov ecx, 0x49663c
mov edx, dword [ebp - 0x24]
call fcn.00404620
mov eax, dword [ebp - 0x26c]
push eax
mov eax, dword [esi + 0x360]
mov ecx, dword [ebp - 8]
mov edx, 2
call fcn.0048c1cc
push 0
mov eax, dword [esi + 0x360]
mov ecx, dword [ebp - 8]
mov edx, 4
call fcn.0048c1cc
inc dword [ebp - 8]
jmp 0x496319
mov edx, dword [ebp - 4]
dec edx
mov eax, dword [esi + 0x360]
call fcn.0048a040
inc dword [ebp - 4]
add ebx, 4
dec dword [ebp - 0x28]
jne 0x496003
lea eax, [ebp - 0x270]
push eax
mov eax, dword [0x49a2a4]
mov eax, dword [eax]
mov eax, dword [eax + 0x314]
mov ecx, 3
mov edx, 1
call fcn.00404834
mov eax, dword [ebp - 0x270]
push eax
mov eax, dword [esi + 0x360]
xor edx, edx
call fcn.0048c190
pop edx
mov ecx, dword [eax]
call dword [ecx + 0x54]
mov edi, eax
test edi, edi
jle 0x49653e
mov eax, dword [esi + 0x360]
mov edx, edi
call fcn.0048a028
push 0x496648
lea eax, [ebp - 0x278]
push eax
mov eax, dword [0x49a2a4]
mov eax, dword [eax]
mov ecx, 0x496654
mov edx, 0x496664
call fcn.00497020
push dword [ebp - 0x278]
push 0x496670
lea eax, [ebp - 0x274]
mov edx, 3
call fcn.00404694
mov eax, dword [ebp - 0x274]
push eax
mov ebx, dword [esi + 0x360]
mov ecx, dword [ebx + 0x22c]
mov eax, ebx
mov edx, 3
call fcn.0048c1cc
lea eax, [ebp - 0x27c]
push eax
mov ebx, dword [esi + 0x360]
mov ecx, dword [ebx + 0x22c]
mov eax, ebx
mov edx, 2
call fcn.0048c14c
cmp dword [ebp - 0x27c], 0
je 0x49653e
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x284]
push eax
mov edi, dword [esi + 0x360]
mov ecx, dword [edi + 0x22c]
mov eax, edi
mov edx, 2
call fcn.0048c14c
mov edx, dword [ebp - 0x284]
mov eax, 0x496648
call fcn.00404918
push eax
lea eax, [ebp - 0x288]
push eax
mov ebx, dword [esi + 0x360]
mov ecx, dword [ebx + 0x22c]
mov eax, ebx
mov edx, 2
call fcn.0048c14c
mov eax, dword [ebp - 0x288]
mov edx, 1
pop ecx
call fcn.00404834
mov eax, dword [ebp - 0x280]
call fcn.00409fac
fstp qword [ebp - 0x10]
wait
fld qword [ebp - 0x10]
fcomp dword [0x496628]
fnstsw ax
sahf
jbe 0x49653e
fld xword [0x496674]
fsubr qword [ebp - 0x10]
fcomp dword [0x496630]
fnstsw ax
sahf
jae 0x4964d2
fld xword [0x496674]
fsubr qword [ebp - 0x10]
add esp, 0xfffffff4
fstp xword [esp]
wait
lea ecx, [ebp - 0x264]
mov edx, 2
xor eax, eax
call fcn.00402ed0
lea edx, [ebp - 0x264]
lea eax, [ebp - 0x24]
call fcn.00404578
jmp 0x496502
fld xword [0x496674]
fsubr qword [ebp - 0x10]
add esp, 0xfffffff4
fstp xword [esp]
wait
lea ecx, [ebp - 0x264]
mov edx, 1
xor eax, eax
call fcn.00402ed0
lea edx, [ebp - 0x264]
lea eax, [ebp - 0x24]
call fcn.00404578
push 0x496648
push dword [ebp - 0x24]
push 0x49663c
lea eax, [ebp - 0x28c]
mov edx, 3
call fcn.00404694
mov eax, dword [ebp - 0x28c]
push eax
mov ebx, dword [esi + 0x360]
mov ecx, dword [ebx + 0x22c]
mov eax, ebx
mov edx, 4
call fcn.0048c1cc
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x49655b
mov eax, dword [ebp - 0x1c]
call fcn.00403540
ret