Function at 0x1002d448
Capabilities:
Get disk information

Disassembly:
push ebp
lea ebp, [esp - 0x3a0]
sub esp, 0x420
mov eax, dword [0x10083adc]
xor eax, ebp
mov dword [ebp + 0x39c], eax
test byte [0x10156880], 0x10
jne 0x1002d6f8
cmp dword [0x10151cdc], 0x10
jae 0x1002d6f8
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 [0x101868e4], eax
call esi
push eax
call edi
push str.FindVolumeClose
push ebx
mov dword [0x101868e8], eax
call esi
push eax
call edi
push str.GetVolumePathNamesForVolumeNameA
push ebx
mov dword [0x101868ec], eax
call esi
push eax
call edi
mov esi, dword [0x101868e4]
xor ebx, ebx
mov dword [0x101868e0], eax
cmp esi, ebx
je 0x1002d6f5
cmp dword [0x101868e8], ebx
je 0x1002d6f5
cmp dword [0x101868ec], ebx
je 0x1002d6f5
cmp eax, ebx
je 0x1002d6f5
mov edi, 0x201
push edi
lea eax, [ebp - 0x6c]
push ebx
push eax
mov dword [ebp - 0x80], ebx
call fcn.10044b80
push edi
lea eax, [ebp + 0x198]
push ebx
push eax
call fcn.10044b80
push 0x800
push ebx
mov edi, 0x1017cd70
push edi
call fcn.10044b80
push 0x400
push ebx
push 0x1017c970
call fcn.10044b80
add esp, 0x30
push 0x200
lea eax, [ebp - 0x6c]
push eax
call esi
mov dword [ebp - 0x78], eax
cmp eax, 0xffffffff
je 0x1002d6f5
cmp eax, ebx
je 0x1002d6f5
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.10044b80
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 [0x101868e0]
lea eax, [ebp + 0x198]
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
cmp dl, bl
jne 0x1002d5a6
mov edi, dword [ebp - 0x74]
sub eax, ecx
lea eax, [eax + edi + 0x1017c970]
cmp eax, 0x1017cb70
jae 0x1002d6ec
lea eax, [ebp + 0x198]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1002d5cd
sub eax, edx
cmp eax, 3
jb 0x1002d6b7
lea eax, [ebp + 0x198]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 2
je 0x1002d603
lea eax, [ebp - 0x6c]
push eax
call fcn.1002d18d
pop ecx
test al, al
je 0x1002d6b7
lea eax, [ebp + 0x198]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1002d60c
sub eax, edx
cmp eax, 3
jbe 0x1002d651
lea eax, [ebp + 0x198]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1002d623
sub eax, edx
lea ecx, [ebp + 0x198]
dec ecx
cmp byte [ecx + eax], 0x5c
jne 0x1002d651
lea eax, [ebp + 0x198]
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
cmp dl, bl
jne 0x1002d642
mov edi, dword [ebp - 0x74]
sub eax, esi
mov byte [ecx + eax], bl
lea eax, [ebp + 0x198]
lea edx, [edi + 0x1017c970]
mov esi, edx
mov ecx, eax
sub esi, ecx
mov cl, byte [eax]
mov byte [esi + eax], cl
inc eax
cmp cl, bl
jne 0x1002d663
mov esi, dword [ebp - 0x7c]
mov dword [esi], edx
cmp dword [0x1015568c], ebx
je 0x1002d698
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.1004122a
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 0x1002d6a7
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.10044b80
add esp, 0xc
push 0x200
lea eax, [ebp - 0x6c]
push eax
push dword [ebp - 0x78]
call dword [0x101868e8]
test eax, eax
je 0x1002d6ec
inc dword [ebp - 0x70]
cmp dword [ebp - 0x70], 0x64
jl 0x1002d56e
push dword [ebp - 0x78]
call dword [0x101868ec]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x39c]
xor ecx, ebp
call fcn.10044b6f
add ebp, 0x3a0
leave
ret