Function at 0x103c821
Capabilities:
Enumerate disk volumes

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x248
mov eax, dword [0x111027c]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
xor ecx, ecx
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x228], eax
mov dword [ebp - 0x248], esi
mov dword [ebp - 0x238], edi
mov dword [ebp - 0x214], ecx
mov dword [ebp - 0x224], ecx
mov dword [ebp - 0x21c], ecx
mov byte [ebp - 0x21d], cl
mov dword [ebp - 0x22c], ecx
mov dword [ebp - 0x234], ecx
mov eax, dword [0x111024c]
mov ebx, 0x111024c
cmp eax, ebx
je 0x103c8ab
test dword [eax + 0x1c], 0x200
je 0x103c8ab
cmp byte [eax + 0x19], 4
jb 0x103c8ab
push 0x1003928
push 0x36
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.0101894a
xor ecx, ecx
mov dword [ebp - 0x244], 0x100396c
mov dword [ebp - 0x240], 0x1111850
mov byte [ebp - 0x23c], 0
cmp esi, ecx
jne 0x103c8d4
mov edi, 0x80004003
jmp 0x103ce42
mov dword [esi], ecx
cmp edi, ecx
je 0x103c8ca
mov ecx, dword [ebp - 0x228]
and dword [edi], 0
call fcn.0103be56
mov edi, eax
test edi, edi
jl 0x103ce42
push dword [0x1111870]
call fcn.0107dd0d
test al, al
je 0x103c91b
push 4
pop ecx
mov edi, 0x1007124
mov esi, 0x1111874
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
mov byte [ebp - 0x20d], 1
je 0x103c922
mov byte [ebp - 0x20d], 0
lea eax, [ebp - 0x234]
push eax
lea eax, [ebp - 0x22c]
push eax
call fcn.01082c8e
test eax, eax
jge 0x103c962
mov ecx, dword [0x111024c]
cmp ecx, ebx
je 0x103c962
test byte [ecx + 0x1c], 1
je 0x103c962
cmp byte [ecx + 0x19], 3
jb 0x103c962
push eax
push 0x1003928
push 0x37
push dword [ecx + 0x14]
push dword [ecx + 0x10]
call fcn.01019fa8
mov esi, 0x104
push esi
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstVolumeW]
mov edi, eax
mov dword [ebp - 0x230], edi
cmp edi, 0xffffffff
jne 0x103c9cb
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov eax, dword [0x111024c]
cmp eax, ebx
je 0x103c9b2
test byte [eax + 0x1c], 1
je 0x103c9b2
cmp byte [eax + 0x19], 2
jb 0x103c9b2
push esi
push 0x1003928
push 0x38
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.01019fa8
test esi, esi
jg 0x103c9bd
mov edi, esi
jmp 0x103ce42
and esi, 0xffff
or esi, 0x80070000
jmp 0x103c9b6
inc dword [ebp - 0x214]
push esi
lea eax, [ebp - 0x20c]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_FindNextVolumeW]
test eax, eax
jne 0x103c9cb
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
cmp esi, 0x12
jne 0x103cdf2
push edi
call dword [sym.imp.KERNEL32.dll_FindVolumeClose]
cmp byte [ebp - 0x20d], 0
je 0x103ca0b
inc dword [ebp - 0x214]
mov eax, dword [ebp - 0x214]
imul eax, eax, 0x58
push eax
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov dword [ebp - 0x21c], eax
test eax, eax
jne 0x103ca2f
mov edi, 0x8007000e
jmp 0x103ce42
mov ecx, dword [ebp - 0x214]
imul ecx, ecx, 0x58
push ecx
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
cmp byte [ebp - 0x20d], 0
je 0x103cb3c
cmp dword [ebp - 0x214], 0
ja 0x103ca6e
push 0x1003e54
push 0x39e
push 0x1003938
call fcn.0107b644
mov esi, dword [ebp - 0x21c]
push 0x1111850
xor bl, bl
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x228]
mov eax, dword [eax + 0x40]
mov byte [ebp - 0x23c], 1
test eax, eax
je 0x103caea
push esi
push eax
call fcn.010fde16
mov edi, eax
test edi, edi
jge 0x103cade
mov eax, dword [0x111024c]
cmp eax, 0x111024c
je 0x103ce42
test byte [eax + 0x1c], 1
je 0x103ce42
cmp byte [eax + 0x19], 2
jb 0x103ce42
push edi
push 0x1003928
push 0x3a
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.01019fa8
jmp 0x103ce42
mov dword [ebp - 0x224], 1
mov bl, 1
lea ecx, [ebp - 0x244]
call fcn.01037a16
test bl, bl
jne 0x103cb3c
push esi
push 1
push 0
call fcn.01039be5
test eax, eax
jge 0x103cb36
mov ecx, dword [0x111024c]
cmp ecx, 0x111024c
je 0x103cb3c
test byte [ecx + 0x1c], 1
je 0x103cb3c
cmp byte [ecx + 0x19], 3
jb 0x103cb3c
push eax
push 0x1003928
push 0x3b
push dword [ecx + 0x14]
push dword [ecx + 0x10]
call fcn.01019fa8
jmp 0x103cb3c
inc dword [ebp - 0x224]
push 0x104
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstVolumeW]
mov dword [ebp - 0x230], eax
cmp eax, 0xffffffff
jne 0x103cb92
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov eax, dword [0x111024c]
cmp eax, 0x111024c
je 0x103c9b2
test byte [eax + 0x1c], 1
je 0x103c9b2
cmp byte [eax + 0x19], 2
jb 0x103c9b2
push esi
push 0x1003928
push 0x3c
jmp 0x103c9a7
mov eax, dword [ebp - 0x224]
imul eax, eax, 0x58
mov dword [ebp - 0x228], eax
lea eax, [ebp - 0x21d]
push eax
lea eax, [ebp - 0x20c]
push eax
call fcn.010f62fd
mov dword [ebp - 0x218], eax
test eax, eax
jge 0x103cbca
and dword [ebp - 0x218], 0
jmp 0x103ccef
cmp byte [ebp - 0x21d], 0
je 0x103ccef
mov esi, dword [ebp - 0x214]
cmp dword [ebp - 0x224], esi
jb 0x103cc3a
add esi, 8
mov eax, esi
imul eax, eax, 0x58
push eax
push dword [ebp - 0x21c]
call dword [sym.imp.ole32.dll_CoTaskMemRealloc]
mov edi, eax
test edi, edi
je 0x103cd44
mov eax, dword [ebp - 0x214]
mov ecx, esi
sub ecx, eax
imul eax, eax, 0x58
imul ecx, ecx, 0x58
push ecx
add eax, edi
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
mov dword [ebp - 0x214], esi
mov dword [ebp - 0x21c], edi
cmp dword [ebp - 0x224], esi
jae 0x103cd8c
mov eax, dword [ebp - 0x228]
mov ecx, dword [ebp - 0x21c]
lea ebx, [eax + ecx]
push ebx
push 0
lea eax, [ebp - 0x20c]
push eax
call fcn.01039be5
mov dword [ebp - 0x218], eax
test eax, eax
jge 0x103ccb8
cmp eax, 0x8007000e
je 0x103ce30
mov eax, dword [0x111024c]
cmp eax, 0x111024c
je 0x103cbbe
test dword [eax + 0x1c], 0x200
je 0x103cbbe
cmp byte [eax + 0x19], 3
jb 0x103cbbe
lea ecx, [ebp - 0x20c]
push ecx
push dword [ebp - 0x218]
push 0x1003928
push 0x3d
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.01019471
jmp 0x103cbbe
mov esi, dword [ebp - 0x22c]
test esi, esi
je 0x103cce2
mov edi, dword [ebx + 0x48]
test edi, edi
je 0x103cce2
mov eax, dword [ebp - 0x234]
cmp ax, word [ebx + 0x44]
jne 0x103cce2
movzx ecx, ax
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x103cce2
or dword [ebx + 0x40], 2
inc dword [ebp - 0x224]
add dword [ebp - 0x228], 0x58
push 0x104
lea eax, [ebp - 0x20c]
push eax
push dword [ebp - 0x230]
call dword [sym.imp.KERNEL32.dll_FindNextVolumeW]
test eax, eax
jne 0x103cba1
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
cmp esi, 0x12
jne 0x103cdd0
mov esi, dword [ebp - 0x224]
xor edi, edi
cmp esi, edi
jne 0x103cd53
cmp dword [ebp - 0x21c], edi
je 0x103cd9b
push dword [ebp - 0x21c]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
xor eax, eax
jmp 0x103cdb8
mov dword [ebp - 0x218], 0x8007000e
jmp 0x103ce30
cmp esi, dword [ebp - 0x214]
jbe 0x103cd9b
mov eax, dword [0x111024c]
cmp eax, 0x111024c
je 0x103cd8c
test byte [eax + 0x1c], 1
je 0x103cd8c
cmp byte [eax + 0x19], 2
jb 0x103cd8c
push dword [ebp - 0x214]
push esi
push 0x1003928
push 0x3f
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.01083f04
mov dword [ebp - 0x218], 0x8000ffff
jmp 0x103ce30
push edi
push esi
push dword [ebp - 0x21c]
call fcn.010d81b1
cmp eax, edi
mov dword [ebp - 0x218], eax
jl 0x103ce30
mov eax, dword [ebp - 0x21c]
mov ecx, dword [ebp - 0x248]
mov dword [ecx], esi
mov ecx, dword [ebp - 0x238]
mov dword [ecx], eax
mov dword [ebp - 0x21c], edi
jmp 0x103ce30
mov eax, dword [0x111024c]
cmp eax, 0x111024c
je 0x103ce1a
test byte [eax + 0x1c], 1
je 0x103ce1a
cmp byte [eax + 0x19], 2
jb 0x103ce1a
push esi
push 0x1003928
push 0x3e
jmp 0x103ce0f
mov eax, dword [0x111024c]
cmp eax, ebx
je 0x103ce1a
test byte [eax + 0x1c], 1
je 0x103ce1a
cmp byte [eax + 0x19], 2
jb 0x103ce1a
push esi
push 0x1003928
push 0x39
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.01019fa8
test esi, esi
jle 0x103ce2a
and esi, 0xffff
or esi, 0x80070000
mov dword [ebp - 0x218], esi
push dword [ebp - 0x230]
call dword [sym.imp.KERNEL32.dll_FindVolumeClose]
mov edi, dword [ebp - 0x218]
lea eax, [ebp - 0x214]
push eax
lea eax, [ebp - 0x21c]
push eax
call fcn.010fe1b1
cmp dword [ebp - 0x22c], 0
je 0x103ce71
push dword [ebp - 0x22c]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
and dword [ebp - 0x22c], 0
test edi, edi
jge 0x103cea0
mov eax, dword [0x111024c]
cmp eax, 0x111024c
je 0x103cecd
test byte [eax + 0x1c], 1
je 0x103cea5
cmp byte [eax + 0x19], 2
jb 0x103cea5
push edi
push 0x1003928
push 0x40
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.01019fa8
mov eax, dword [0x111024c]
cmp eax, 0x111024c
je 0x103cecd
test dword [eax + 0x1c], 0x200
je 0x103cecd
cmp byte [eax + 0x19], 4
jb 0x103cecd
push 0x1003928
push 0x41
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.0101894a
lea ecx, [ebp - 0x244]
call fcn.01037a46
mov ecx, dword [ebp - 4]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0106f798
leave
ret 0xc