Function at 0x103c70e
Capabilities:
Enumerate disk volumes

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x248
mov eax, dword [0x111127c]
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 [0x111124c]
mov ebx, 0x111124c
cmp eax, ebx
je 0x103c798
test dword [eax + 0x1c], 0x200
je 0x103c798
cmp byte [eax + 0x19], 4
jb 0x103c798
push 0x1003920
push 0x36
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.010189d0
xor ecx, ecx
mov dword [ebp - 0x244], 0x1003964
mov dword [ebp - 0x240], 0x1112850
mov byte [ebp - 0x23c], 0
cmp esi, ecx
jne 0x103c7c1
mov edi, 0x80004003
jmp 0x103cd2f
mov dword [esi], ecx
cmp edi, ecx
je 0x103c7b7
mov ecx, dword [ebp - 0x228]
and dword [edi], 0
call fcn.0103bd44
mov edi, eax
test edi, edi
jl 0x103cd2f
push dword [0x1112870]
call fcn.0107db82
test al, al
je 0x103c808
push 4
pop ecx
mov edi, 0x100cbcc
mov esi, 0x1112874
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
mov byte [ebp - 0x20d], 1
je 0x103c80f
mov byte [ebp - 0x20d], 0
lea eax, [ebp - 0x234]
push eax
lea eax, [ebp - 0x22c]
push eax
call fcn.01082bdb
test eax, eax
jge 0x103c84f
mov ecx, dword [0x111124c]
cmp ecx, ebx
je 0x103c84f
test byte [ecx + 0x1c], 1
je 0x103c84f
cmp byte [ecx + 0x19], 3
jb 0x103c84f
push eax
push 0x1003920
push 0x37
push dword [ecx + 0x14]
push dword [ecx + 0x10]
call fcn.010189f6
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 0x103c8b8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov eax, dword [0x111124c]
cmp eax, ebx
je 0x103c89f
test byte [eax + 0x1c], 1
je 0x103c89f
cmp byte [eax + 0x19], 2
jb 0x103c89f
push esi
push 0x1003920
push 0x38
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.010189f6
test esi, esi
jg 0x103c8aa
mov edi, esi
jmp 0x103cd2f
and esi, 0xffff
or esi, 0x80070000
jmp 0x103c8a3
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 0x103c8b8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
cmp esi, 0x12
jne 0x103ccdf
push edi
call dword [sym.imp.KERNEL32.dll_FindVolumeClose]
cmp byte [ebp - 0x20d], 0
je 0x103c8f8
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 0x103c91c
mov edi, 0x8007000e
jmp 0x103cd2f
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 0x103ca29
cmp dword [ebp - 0x214], 0
ja 0x103c95b
push 0x1003e4c
push 0x39e
push 0x1003930
call fcn.0107b4be
mov esi, dword [ebp - 0x21c]
push 0x1112850
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 0x103c9d7
push esi
push eax
call fcn.010fe009
mov edi, eax
test edi, edi
jge 0x103c9cb
mov eax, dword [0x111124c]
cmp eax, 0x111124c
je 0x103cd2f
test byte [eax + 0x1c], 1
je 0x103cd2f
cmp byte [eax + 0x19], 2
jb 0x103cd2f
push edi
push 0x1003920
push 0x3a
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.010189f6
jmp 0x103cd2f
mov dword [ebp - 0x224], 1
mov bl, 1
lea ecx, [ebp - 0x244]
call fcn.0103794b
test bl, bl
jne 0x103ca29
push esi
push 1
push 0
call fcn.01039b1a
test eax, eax
jge 0x103ca23
mov ecx, dword [0x111124c]
cmp ecx, 0x111124c
je 0x103ca29
test byte [ecx + 0x1c], 1
je 0x103ca29
cmp byte [ecx + 0x19], 3
jb 0x103ca29
push eax
push 0x1003920
push 0x3b
push dword [ecx + 0x14]
push dword [ecx + 0x10]
call fcn.010189f6
jmp 0x103ca29
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 0x103ca7f
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov eax, dword [0x111124c]
cmp eax, 0x111124c
je 0x103c89f
test byte [eax + 0x1c], 1
je 0x103c89f
cmp byte [eax + 0x19], 2
jb 0x103c89f
push esi
push 0x1003920
push 0x3c
jmp 0x103c894
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.010f6530
mov dword [ebp - 0x218], eax
test eax, eax
jge 0x103cab7
and dword [ebp - 0x218], 0
jmp 0x103cbdc
cmp byte [ebp - 0x21d], 0
je 0x103cbdc
mov esi, dword [ebp - 0x214]
cmp dword [ebp - 0x224], esi
jb 0x103cb27
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 0x103cc31
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 0x103cc79
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.01039b1a
mov dword [ebp - 0x218], eax
test eax, eax
jge 0x103cba5
cmp eax, 0x8007000e
je 0x103cd1d
mov eax, dword [0x111124c]
cmp eax, 0x111124c
je 0x103caab
test dword [eax + 0x1c], 0x200
je 0x103caab
cmp byte [eax + 0x19], 3
jb 0x103caab
lea ecx, [ebp - 0x20c]
push ecx
push dword [ebp - 0x218]
push 0x1003920
push 0x3d
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.010194be
jmp 0x103caab
mov esi, dword [ebp - 0x22c]
test esi, esi
je 0x103cbcf
mov edi, dword [ebx + 0x48]
test edi, edi
je 0x103cbcf
mov eax, dword [ebp - 0x234]
cmp ax, word [ebx + 0x44]
jne 0x103cbcf
movzx ecx, ax
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x103cbcf
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 0x103ca8e
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
cmp esi, 0x12
jne 0x103ccbd
mov esi, dword [ebp - 0x224]
xor edi, edi
cmp esi, edi
jne 0x103cc40
cmp dword [ebp - 0x21c], edi
je 0x103cc88
push dword [ebp - 0x21c]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
xor eax, eax
jmp 0x103cca5
mov dword [ebp - 0x218], 0x8007000e
jmp 0x103cd1d
cmp esi, dword [ebp - 0x214]
jbe 0x103cc88
mov eax, dword [0x111124c]
cmp eax, 0x111124c
je 0x103cc79
test byte [eax + 0x1c], 1
je 0x103cc79
cmp byte [eax + 0x19], 2
jb 0x103cc79
push dword [ebp - 0x214]
push esi
push 0x1003920
push 0x3f
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.0109ba57
mov dword [ebp - 0x218], 0x8000ffff
jmp 0x103cd1d
push edi
push esi
push dword [ebp - 0x21c]
call fcn.010d8264
cmp eax, edi
mov dword [ebp - 0x218], eax
jl 0x103cd1d
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 0x103cd1d
mov eax, dword [0x111124c]
cmp eax, 0x111124c
je 0x103cd07
test byte [eax + 0x1c], 1
je 0x103cd07
cmp byte [eax + 0x19], 2
jb 0x103cd07
push esi
push 0x1003920
push 0x3e
jmp 0x103ccfc
mov eax, dword [0x111124c]
cmp eax, ebx
je 0x103cd07
test byte [eax + 0x1c], 1
je 0x103cd07
cmp byte [eax + 0x19], 2
jb 0x103cd07
push esi
push 0x1003920
push 0x39
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.010189f6
test esi, esi
jle 0x103cd17
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.010fe3a4
cmp dword [ebp - 0x22c], 0
je 0x103cd5e
push dword [ebp - 0x22c]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
and dword [ebp - 0x22c], 0
test edi, edi
jge 0x103cd8d
mov eax, dword [0x111124c]
cmp eax, 0x111124c
je 0x103cdba
test byte [eax + 0x1c], 1
je 0x103cd92
cmp byte [eax + 0x19], 2
jb 0x103cd92
push edi
push 0x1003920
push 0x40
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.010189f6
mov eax, dword [0x111124c]
cmp eax, 0x111124c
je 0x103cdba
test dword [eax + 0x1c], 0x200
je 0x103cdba
cmp byte [eax + 0x19], 4
jb 0x103cdba
push 0x1003920
push 0x41
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.010189d0
lea ecx, [ebp - 0x244]
call fcn.0103797b
mov ecx, dword [ebp - 4]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0106f5f8
leave
ret 0xc