Function at 0x1016d2c0
Capabilities:
Check if file exists
Enumerate files on windows
Enumerate files recursively
Get file attributes

Disassembly:
sub esp, 0xe5c
push ebx
push ebp
mov ebp, dword [esp + 0xe80]
push esi
push edi
push ebp
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x1016d863
and eax, 0x10
cmp al, 0x10
je 0x1016d3b3
mov ecx, 0x94
xor eax, eax
lea edi, [esp + 0x1c]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x1c]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x1016d39f
mov ecx, 0x80
xor eax, eax
lea edi, [esp + 0x66c]
push ebp
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x670]
push ecx
call fcn.10033da9
mov eax, dword [esp + 0xea0]
mov ecx, dword [esp + 0xe98]
add esp, 8
lea edx, [esp + 0x66c]
lea esi, [esp + 0xe70]
push edx
push eax
mov eax, dword [esp + 0xe9c]
lea edx, [esp + 0xe94]
push ecx
push edx
mov edx, dword [esp + 0xeac]
lea ecx, [esp + 0x2c]
push eax
mov eax, dword [esp + 0xeb4]
push ecx
push edx
push eax
mov ecx, 6
sub esp, 0x18
mov edi, esp
rep movsd dword es:[edi], dword [esi]
call fcn.1016ca00
add esp, 0x38
mov esi, eax
push ebx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe5c
ret
mov esi, dword [esp + 0xe98]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe5c
ret
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0xa6c]
push ebp
rep stosd dword es:[edi], eax
lea ecx, [esp + 0xa70]
push ecx
call fcn.10033da9
lea edx, [esp + 0xa74]
push 0x1028bc0c
push edx
call fcn.10033d7f
add esp, 0x10
lea eax, [esp + 0x1c]
lea ecx, [esp + 0xa6c]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, eax
cmp esi, 0xffffffff
mov dword [esp + 0x10], esi
je 0x1016d863
mov ebx, dword [esp + 0xe9c]
mov edx, dword [esp + 0xe78]
cmp byte [edx], 0
jne 0x1016d7b3
lea eax, [esp + 0x1c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
je 0x1016d85c
mov ecx, dword [esp + 0x1c]
and ecx, 0x10
cmp cl, 0x10
je 0x1016d58d
mov cl, byte [esp + 0xe81]
mov esi, dword [esp + 0xe70]
inc cl
mov byte [esp + 0xe81], cl
mov cl, byte [esp + 0xe75]
test cl, cl
je 0x1016d4d1
mov al, byte [esi]
mov dl, byte [esp + 0xe74]
cmp al, dl
jae 0x1016d4d1
mov dl, byte [esp + 0xe80]
test dl, dl
je 0x1016d4aa
mov dl, byte [esp + 0xe76]
cmp cl, dl
jb 0x1016d497
add al, dl
sub cl, dl
mov byte [esi], al
mov byte [esp + 0xe75], cl
jmp 0x1016d4da
mov dl, byte [esp + 0xe74]
mov byte [esp + 0xe75], 0
mov byte [esi], dl
jmp 0x1016d4da
mov dl, byte [esp + 0xe81]
cmp dl, byte [esp + 0xe76]
jb 0x1016d4da
inc al
dec cl
mov byte [esi], al
mov byte [esp + 0xe75], cl
mov byte [esp + 0xe81], 0
jmp 0x1016d4da
mov al, byte [esp + 0xe74]
mov byte [esi], al
lea ecx, [esp + 0x26c]
push ebp
push ecx
call fcn.10033da9
lea edx, [esp + 0x274]
push 0x1028bc08
push edx
call fcn.10033d7f
lea eax, [esp + 0x58]
lea ecx, [esp + 0x27c]
push eax
push ecx
call fcn.10033d7f
lea edx, [esp + 0x284]
lea eax, [esp + 0x684]
push edx
push eax
call fcn.10033da9
mov edx, dword [esp + 0xeb8]
mov eax, dword [esp + 0xeb0]
add esp, 0x20
lea ecx, [esp + 0x66c]
lea esi, [esp + 0xe70]
push ecx
push edx
mov edx, dword [esp + 0xe9c]
lea ecx, [esp + 0xe94]
push eax
push ecx
mov ecx, dword [esp + 0xeb0]
lea eax, [esp + 0x2c]
push edx
push eax
push ebx
push ecx
sub esp, 0x18
mov ecx, 6
mov edi, esp
rep movsd dword es:[edi], dword [esi]
call fcn.1016ca00
add esp, 0x38
mov dword [esp + 0xe98], eax
test eax, eax
je 0x1016d844
mov esi, dword [esp + 0x10]
jmp 0x1016d40f
lea edx, [esp + 0x48]
push 0x1026e6f4
push edx
call fcn.100340ae
add esp, 8
test eax, eax
je 0x1016d40f
lea eax, [esp + 0x48]
push 0x1026e6f8
push eax
call fcn.100340ae
add esp, 8
test eax, eax
je 0x1016d40f
xor ebp, ebp
xor ecx, ecx
mov bp, word [ebx + 2]
mov cx, word [ebx]
imul ebp, ecx
push ebp
call fcn.101d175d
mov ecx, ebp
mov edi, eax
mov edx, ecx
xor eax, eax
shr ecx, 2
mov dword [esp + 0x18], edi
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0xe8c]
lea ecx, [esp + 0x270]
push eax
push ecx
call fcn.10033da9
lea edx, [esp + 0x278]
push 0x1028bc08
push edx
call fcn.10033d7f
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x280]
push eax
push ecx
call fcn.10033d7f
mov eax, dword [esp + 0xeb4]
mov ecx, dword [esp + 0xeac]
add esp, 0x1c
lea edx, [esp + 0x26c]
lea esi, [esp + 0xe70]
push edx
push eax
mov eax, dword [esp + 0xe9c]
lea edx, [esp + 0xe94]
push ecx
push edx
mov edx, dword [esp + 0xeb0]
lea ecx, [esp + 0x2c]
push eax
push ecx
push ebx
push edx
sub esp, 0x18
mov ecx, 6
mov edi, esp
rep movsd dword es:[edi], dword [esi]
call fcn.1016ca00
add esp, 0x38
test eax, eax
je 0x1016d7d1
mov ecx, dword [esp + 0xea0]
mov edx, dword [esp + 0x14]
push ecx
push ebx
push eax
mov eax, dword [esp + 0xe9c]
push edx
push eax
lea ecx, [esp + 0x280]
push 0
push ecx
mov ecx, 6
sub esp, 0x18
lea esi, [esp + 0xea4]
mov edi, esp
rep movsd dword es:[edi], dword [esi]
call fcn.1016d2c0
add esp, 0x34
test eax, eax
je 0x1016d80c
xor edx, edx
lea esi, [eax - 2]
mov dx, word [ebx]
mov edi, dword [ebx + 0x2e]
imul esi, edx
mov edx, dword [ebx + 8]
mov ecx, dword [ebx + 4]
add esi, edi
mov eax, ebp
add esi, edx
xor edx, edx
add esi, ecx
xor ecx, ecx
mov cx, word [ebx + 2]
mov dword [esp + 0x18], 0
div ecx
mov ebp, eax
cmp ebp, 0x80
jbe 0x1016d75a
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0xe78]
cmp byte [edx], 0
jne 0x1016d802
mov eax, dword [esp + 0xea0]
push eax
push edi
push 0x80
push esi
call sym.ITEuDllvMgr.dll_VDR_WriteLUNData
add esp, 0x10
cmp eax, 1
jne 0x1016d7f6
mov ecx, dword [esp + 0x18]
sub ebp, 0x80
add ecx, 0x10000
add edi, 0x10000
add esi, 0x80
cmp ebp, 0x80
mov dword [esp + 0x18], ecx
ja 0x1016d702
test ebp, ebp
je 0x1016d796
mov ecx, dword [esp + 0xe78]
cmp byte [ecx], 0
jne 0x1016d802
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0xea0]
add eax, edi
push edx
push eax
push ebp
push esi
call sym.ITEuDllvMgr.dll_VDR_WriteLUNData
add esp, 0x10
cmp eax, 1
jne 0x1016d831
jmp 0x1016d79a
mov edi, dword [esp + 0x14]
push edi
call fcn.101d1786
mov ebp, dword [esp + 0xe8c]
mov esi, dword [esp + 0x14]
add esp, 4
jmp 0x1016d40f
mov ecx, dword [esp + 0xe84]
push esi
mov byte [ecx], 0x36
call dword [sym.imp.KERNEL32.dll_FindClose]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe5c
ret
mov eax, dword [esp + 0x14]
push eax
call fcn.101d1786
mov ecx, dword [esp + 0x14]
add esp, 4
push ecx
call dword [sym.imp.KERNEL32.dll_FindClose]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe5c
ret
mov ecx, dword [esp + 0xe84]
mov byte [ecx], 0x6c
jmp 0x1016d80c
mov ecx, dword [esp + 0xe84]
mov byte [ecx], 0x36
mov edx, dword [esp + 0x14]
push edx
call fcn.101d1786
mov eax, dword [esp + 0x14]
add esp, 4
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe5c
ret
mov ecx, dword [esp + 0xe84]
push edi
mov byte [ecx], 0x6c
call fcn.101d1786
add esp, 4
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_FindClose]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe5c
ret
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [esp + 0xe98]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe5c
ret