Function at 0x1002a1ac
Capabilities:
Get disk information

Disassembly:
push ebp
lea ebp, [esp - 0x3a0]
sub esp, 0x420
mov eax, dword [0x10074bac]
xor eax, ebp
mov dword [ebp + 0x39c], eax
test byte [0x101446a0], 0x10
jne 0x1002a45c
cmp dword [0x10140300], 0x10
jae 0x1002a45c
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push edi
push str.FindFirstVolumeA
mov ebx, str.Kernel32.dll
push ebx
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call edi
push str.FindNextVolumeA
push ebx
mov dword [0x101702fc], eax
call esi
push eax
call edi
push str.FindVolumeClose
push ebx
mov dword [0x10170300], eax
call esi
push eax
call edi
push str.GetVolumePathNamesForVolumeNameA
push ebx
mov dword [0x10170304], eax
call esi
push eax
call edi
mov esi, dword [0x101702fc]
xor ebx, ebx
mov dword [0x101702f8], eax
cmp esi, ebx
je 0x1002a459
cmp dword [0x10170300], ebx
je 0x1002a459
cmp dword [0x10170304], ebx
je 0x1002a459
cmp eax, ebx
je 0x1002a459
mov edi, 0x201
push edi
lea eax, [ebp - 0x6c]
push ebx
push eax
mov dword [ebp - 0x80], ebx
call fcn.10040850
push edi
lea eax, [ebp + 0x198]
push ebx
push eax
call fcn.10040850
push 0x800
push ebx
mov edi, 0x10167b88
push edi
call fcn.10040850
push 0x400
push ebx
push 0x10167788
call fcn.10040850
add esp, 0x30
push 0x200
lea eax, [ebp - 0x6c]
push eax
call esi
mov dword [ebp - 0x78], eax
cmp eax, 0xffffffff
je 0x1002a459
cmp eax, ebx
je 0x1002a459
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x7c], edi
push 0x201
lea eax, [ebp + 0x198]
push ebx
push eax
call fcn.10040850
add esp, 0xc
lea eax, [ebp - 0x80]
push eax
push 0x200
lea eax, [ebp + 0x198]
push eax
lea eax, [ebp - 0x6c]
push eax
call dword [0x101702f8]
lea eax, [ebp + 0x198]
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
cmp dl, bl
jne 0x1002a30a
mov edi, dword [ebp - 0x74]
sub eax, ecx
lea eax, [eax + edi + 0x10167788]
cmp eax, 0x10167988
jae 0x1002a450
lea eax, [ebp + 0x198]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1002a331
sub eax, edx
cmp eax, 3
jb 0x1002a41b
lea eax, [ebp + 0x198]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 2
je 0x1002a367
lea eax, [ebp - 0x6c]
push eax
call fcn.10029f09
pop ecx
test al, al
je 0x1002a41b
lea eax, [ebp + 0x198]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1002a370
sub eax, edx
cmp eax, 3
jbe 0x1002a3b5
lea eax, [ebp + 0x198]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1002a387
sub eax, edx
lea ecx, [ebp + 0x198]
dec ecx
cmp byte [ecx + eax], 0x5c
jne 0x1002a3b5
lea eax, [ebp + 0x198]
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
cmp dl, bl
jne 0x1002a3a6
mov edi, dword [ebp - 0x74]
sub eax, esi
mov byte [ecx + eax], bl
lea eax, [ebp + 0x198]
lea edx, [edi + 0x10167788]
mov esi, edx
mov ecx, eax
sub esi, ecx
mov cl, byte [eax]
mov byte [esi + eax], cl
inc eax
cmp cl, bl
jne 0x1002a3c7
mov esi, dword [ebp - 0x7c]
mov dword [esi], edx
cmp dword [0x101434ac], ebx
je 0x1002a3fc
lea eax, [ebp + 0x198]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
push eax
push dword [esi]
push str.FindVolumn_Path__s__0x_08x_
push ebx
call fcn.1003dfed
add esp, 0x10
add esi, 4
lea eax, [ebp + 0x198]
mov dword [ebp - 0x7c], esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1002a40b
sub eax, edx
lea eax, [edi + eax + 1]
mov dword [ebp - 0x74], eax
push 0x201
lea eax, [ebp - 0x6c]
push ebx
push eax
call fcn.10040850
add esp, 0xc
push 0x200
lea eax, [ebp - 0x6c]
push eax
push dword [ebp - 0x78]
call dword [0x10170300]
test eax, eax
je 0x1002a450
inc dword [ebp - 0x70]
cmp dword [ebp - 0x70], 0x64
jl 0x1002a2d2
push dword [ebp - 0x78]
call dword [0x10170304]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x39c]
xor ecx, ebp
call fcn.1004083f
add ebp, 0x3a0
leave
ret