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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x478
mov eax, dword [0x4261d4]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, ecx
mov edx, esi
push edi
xor edi, edi
mov dword [ebp - 0x46c], edi
lea ecx, [edx + 2]
mov ax, word [edx]
add edx, 2
cmp ax, di
jne 0x411a3c
sub edx, ecx
sar edx, 1
lea eax, [edx + 2]
cmp eax, 0x104
ja 0x41b0e1
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, di
jne 0x411a5e
sub ecx, edx
sar ecx, 1
push esi
lea eax, [ecx - 2]
mov dword [ebp - 0x474], eax
mov dword [ebx], eax
call dword [sym.imp.api_ms_win_core_file_l1_2_1.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x41b0d2
test al, 0x10
jne 0x415b6a
xor eax, eax
inc eax
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00401200
mov esp, ebp
pop ebp
ret 4
call dword [sym.imp.api_ms_win_core_errorhandling_l1_1_1.dll_GetLastError]
push dword [ebp - 0x468]
mov esi, eax
call dword [sym.imp.api_ms_win_core_file_l1_2_1.dll_FindClose]
test edi, edi
jne 0x41b0e1
cmp esi, 0x12
je 0x411a90
jmp 0x41b1a6
test dx, dx
je 0x415ab7
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x415b19
add eax, 4
add ecx, 4
test dx, dx
jne 0x415b11
xor eax, eax
jmp 0x415b1e
mov ax, word [ecx]
add ecx, 2
cmp ax, word [ebp - 0x46c]
jne 0x415abb
sub ecx, edx
sar ecx, 1
je 0x415ae9
test byte [ebp - 0x464], 0x10
je 0x41b121
mov eax, dword [ebx]
cmp eax, ecx
jle 0x41b19f
mov dword [ebx], eax
lea eax, [ebp - 0x464]
push eax
push dword [ebp - 0x468]
call dword [sym.imp.api_ms_win_core_file_l1_2_1.dll_FindNextFileW]
mov edi, eax
test edi, edi
je 0x415a73
mov ecx, 0x402c60
lea eax, [ebp - 0x438]
mov dx, word [eax]
cmp dx, word [ecx]
je 0x415a9d
sbb eax, eax
or eax, 1
test eax, eax
je 0x415ae9
mov ecx, 0x402c64
lea eax, [ebp - 0x438]
mov dx, word [eax]
cmp dx, word [ecx]
je 0x415b4c
sbb eax, eax
or eax, 1
test eax, eax
je 0x415ae9
lea ecx, [ebp - 0x438]
lea edx, [ecx + 2]
jmp 0x415abb
test dx, dx
je 0x415b66
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x415b35
add eax, 4
add ecx, 4
test dx, dx
jne 0x415b2d
xor eax, eax
jmp 0x415b3a
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, di
jne 0x415b6f
sub ecx, edx
sar ecx, 1
push 0x5c
pop eax
push 0x2a
cmp word [esi + ecx*2 - 2], ax
je 0x41b0e8
mov word [esi + ecx*2], ax
pop eax
mov word [esi + ecx*2 + 2], ax
xor eax, eax
mov word [esi + ecx*2 + 4], ax
lea eax, [ebp - 0x464]
push eax
push esi
call dword [sym.imp.api_ms_win_core_file_l1_2_1.dll_FindFirstFileW]
mov dword [ebp - 0x468], eax
cmp eax, 0xffffffff
je 0x41b0f9
xor edi, edi
inc edi
jmp 0x415b06
push edi
call dword [sym.imp.api_ms_win_core_errorhandling_l1_1_1.dll_GetLastError]
push eax
call fcn.0040bd02
pop ecx
pop ecx
xor eax, eax
jmp 0x411a93
pop eax
mov word [esi + ecx*2], ax
xor eax, eax
mov word [esi + ecx*2 + 2], ax
jmp 0x415b9f
call dword [sym.imp.api_ms_win_core_errorhandling_l1_1_1.dll_GetLastError]
push 0xffffffffffffffff
mov esi, eax
call dword [sym.imp.api_ms_win_core_file_l1_2_1.dll_FindClose]
cmp esi, 2
je 0x411a90
cmp esi, 0x12
je 0x411a90
push edi
jmp 0x41b1a9
push esi
mov edx, 0x104
lea ecx, [ebp - 0x214]
call fcn.00401da3
lea ecx, [ebp - 0x214]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, word [ebp - 0x46c]
jne 0x41b13b
sub ecx, edx
xor eax, eax
sar ecx, 1
mov edx, 0x104
mov word [ebp + ecx*2 - 0x216], ax
lea eax, [ebp - 0x438]
push eax
lea ecx, [ebp - 0x214]
call fcn.00402c8a
lea eax, [ebp - 0x470]
mov edx, 0x104
push eax
lea ecx, [ebp - 0x214]
call fcn.00411a12
test eax, eax
je 0x415a73
mov ecx, dword [ebp - 0x474]
add ecx, dword [ebp - 0x470]
jmp 0x415add
mov eax, ecx
jmp 0x415ae7
xor eax, eax
push eax
push esi
call fcn.0040bd02
pop ecx
xor eax, eax
pop ecx
jmp 0x411a93