Function at 0x1002d5cb
Capabilities:
Get disk information

Disassembly:
push ebp
lea ebp, [esp - 0x3a0]
sub esp, 0x420
mov eax, dword [0x10084adc]
xor eax, ebp
mov dword [ebp + 0x39c], eax
test byte [0x10157880], 0x10
jne 0x1002d87b
cmp dword [0x10152cdc], 0x10
jae 0x1002d87b
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 [0x101878e8], eax
call esi
push eax
call edi
push str.FindVolumeClose
push ebx
mov dword [0x101878ec], eax
call esi
push eax
call edi
push str.GetVolumePathNamesForVolumeNameA
push ebx
mov dword [0x101878f0], eax
call esi
push eax
call edi
mov esi, dword [0x101878e8]
xor ebx, ebx
mov dword [0x101878e4], eax
cmp esi, ebx
je 0x1002d878
cmp dword [0x101878ec], ebx
je 0x1002d878
cmp dword [0x101878f0], ebx
je 0x1002d878
cmp eax, ebx
je 0x1002d878
mov edi, 0x201
push edi
lea eax, [ebp - 0x6c]
push ebx
push eax
mov dword [ebp - 0x80], ebx
call fcn.10045030
push edi
lea eax, [ebp + 0x198]
push ebx
push eax
call fcn.10045030
push 0x800
push ebx
mov edi, 0x1017dd70
push edi
call fcn.10045030
push 0x400
push ebx
push 0x1017d970
call fcn.10045030
add esp, 0x30
push 0x200
lea eax, [ebp - 0x6c]
push eax
call esi
mov dword [ebp - 0x78], eax
cmp eax, 0xffffffff
je 0x1002d878
cmp eax, ebx
je 0x1002d878
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.10045030
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 [0x101878e4]
lea eax, [ebp + 0x198]
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
cmp dl, bl
jne 0x1002d729
mov edi, dword [ebp - 0x74]
sub eax, ecx
lea eax, [eax + edi + 0x1017d970]
cmp eax, 0x1017db70
jae 0x1002d86f
lea eax, [ebp + 0x198]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1002d750
sub eax, edx
cmp eax, 3
jb 0x1002d83a
lea eax, [ebp + 0x198]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 2
je 0x1002d786
lea eax, [ebp - 0x6c]
push eax
call fcn.1002d310
pop ecx
test al, al
je 0x1002d83a
lea eax, [ebp + 0x198]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1002d78f
sub eax, edx
cmp eax, 3
jbe 0x1002d7d4
lea eax, [ebp + 0x198]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1002d7a6
sub eax, edx
lea ecx, [ebp + 0x198]
dec ecx
cmp byte [ecx + eax], 0x5c
jne 0x1002d7d4
lea eax, [ebp + 0x198]
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
cmp dl, bl
jne 0x1002d7c5
mov edi, dword [ebp - 0x74]
sub eax, esi
mov byte [ecx + eax], bl
lea eax, [ebp + 0x198]
lea edx, [edi + 0x1017d970]
mov esi, edx
mov ecx, eax
sub esi, ecx
mov cl, byte [eax]
mov byte [esi + eax], cl
inc eax
cmp cl, bl
jne 0x1002d7e6
mov esi, dword [ebp - 0x7c]
mov dword [esi], edx
cmp dword [0x1015668c], ebx
je 0x1002d81b
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.100412e2
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 0x1002d82a
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.10045030
add esp, 0xc
push 0x200
lea eax, [ebp - 0x6c]
push eax
push dword [ebp - 0x78]
call dword [0x101878ec]
test eax, eax
je 0x1002d86f
inc dword [ebp - 0x70]
cmp dword [ebp - 0x70], 0x64
jl 0x1002d6f1
push dword [ebp - 0x78]
call dword [0x101878f0]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x39c]
xor ecx, ebp
call fcn.1004501f
add ebp, 0x3a0
leave
ret