Function at 0x4111d0
Capabilities:
Check if file exists
Copy file
Create directory
Enumerate files on windows
Enumerate files recursively

Disassembly:
push 0xffffffffffffffff
push 0x45f921
mov eax, dword fs:[0]
push eax
sub esp, 0xca4
mov eax, dword [0x476cd4]
xor eax, esp
mov dword [esp + 0xca0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x476cd4]
xor eax, esp
push eax
lea eax, [esp + 0xcb8]
mov dword fs:[0], eax
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x30], esp
push 0xffffffffffffffff
xor edi, edi
push edi
lea edx, [esp + 0xcec]
mov esi, 7
xor eax, eax
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], edi
push edx
mov dword [esp + 0xce8], 1
mov word [ecx + 4], ax
call fcn.00408e40
lea eax, [esp + 0x3c]
push eax
call fcn.0040eb40
add esp, 0x20
push 0xffffffffffffffff
push edi
push eax
lea ecx, [esp + 0xcd4]
mov byte [esp + 0xccc], 2
call fcn.00408e40
mov ebx, 8
mov byte [esp + 0xcc0], 1
cmp dword [esp + 0x38], ebx
jb 0x411287
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0043e711
add esp, 4
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x30], esp
push 0xffffffffffffffff
push edi
lea eax, [esp + 0xd08]
xor edx, edx
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], edi
push eax
mov word [ecx + 4], dx
call fcn.00408e40
lea ecx, [esp + 0x3c]
push ecx
call fcn.0040eb40
add esp, 0x20
push 0xffffffffffffffff
push edi
push eax
lea ecx, [esp + 0xcf0]
mov byte [esp + 0xccc], 3
call fcn.00408e40
mov byte [esp + 0xcc0], 1
cmp dword [esp + 0x38], ebx
jb 0x4112ec
mov edx, dword [esp + 0x24]
push edx
call fcn.0043e711
add esp, 4
mov eax, dword [esp + 0xccc]
cmp dword [esp + 0xce0], ebx
jae 0x411303
lea eax, [esp + 0xccc]
mov ebp, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push eax
call ebp
test eax, eax
jne 0x411361
cmp dword [esp + 0xce0], ebx
jb 0x411329
mov eax, dword [esp + 0xccc]
push eax
call fcn.0043e711
add esp, 4
xor ecx, ecx
mov dword [esp + 0xce0], esi
mov dword [esp + 0xcdc], edi
mov word [esp + 0xccc], cx
cmp dword [esp + 0xcfc], ebx
jb 0x41135a
mov edx, dword [esp + 0xce8]
push edx
call fcn.0043e711
add esp, 4
mov al, 1
jmp 0x4117d9
mov eax, dword [esp + 0xccc]
cmp dword [esp + 0xce0], ebx
jae 0x411378
lea eax, [esp + 0xccc]
push eax
call dword [sym.imp.SHLWAPI.dll_PathIsRootW]
test eax, eax
je 0x4113d6
cmp dword [esp + 0xce0], ebx
jb 0x41139c
mov eax, dword [esp + 0xccc]
push eax
call fcn.0043e711
add esp, 4
xor ecx, ecx
mov dword [esp + 0xce0], esi
mov dword [esp + 0xcdc], edi
mov word [esp + 0xccc], cx
cmp dword [esp + 0xcfc], ebx
jb 0x4117d7
mov edx, dword [esp + 0xce8]
push edx
call fcn.0043e711
add esp, 4
jmp 0x4117d7
mov eax, dword [esp + 0xce8]
cmp dword [esp + 0xcfc], ebx
jae 0x4113ed
lea eax, [esp + 0xce8]
push eax
call ebp
test eax, eax
jne 0x411413
mov eax, dword [esp + 0xce8]
cmp dword [esp + 0xcfc], ebx
jae 0x41140b
lea eax, [esp + 0xce8]
push eax
push edi
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
mov eax, dword [esp + 0xce8]
cmp dword [esp + 0xcfc], ebx
jae 0x41142a
lea eax, [esp + 0xce8]
push eax
call ebp
test eax, eax
je 0x4117bf
push 0x208
lea eax, [esp + 0xab0]
push edi
push eax
call fcn.0043f440
mov eax, dword [esp + 0xcd8]
add esp, 0xc
cmp dword [esp + 0xce0], ebx
jae 0x411462
lea eax, [esp + 0xccc]
mov ebp, dword [sym.imp.SHLWAPI.dll_PathCombineW]
push 0x464f60
push eax
lea ecx, [esp + 0xab4]
push ecx
call ebp
push 0x250
lea edx, [esp + 0x40]
push edi
push edx
call fcn.0043f440
add esp, 0xc
lea eax, [esp + 0x3c]
push eax
lea ecx, [esp + 0xab0]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, eax
mov dword [esp + 0x14], esi
cmp esi, 0xffffffff
je 0x4117bf
lea ecx, [ecx]
test byte [esp + 0x3c], 0x10
je 0x41160d
mov ecx, 0x464f5c
lea eax, [esp + 0x68]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4114ea
cmp dx, di
je 0x4114e6
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4114ea
add eax, 4
add ecx, 4
cmp dx, di
jne 0x4114c4
xor eax, eax
jmp 0x4114ef
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
je 0x411788
mov ecx, 0x464f54
lea eax, [esp + 0x68]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x411526
cmp dx, di
je 0x411522
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x411526
add eax, 4
add ecx, 4
cmp dx, di
jne 0x411500
xor eax, eax
jmp 0x41152b
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
je 0x411788
push 0x208
lea edx, [esp + 0x6a0]
push edi
push edx
call fcn.0043f440
mov eax, dword [esp + 0xcd8]
add esp, 0xc
cmp dword [esp + 0xce0], ebx
jae 0x411560
lea eax, [esp + 0xccc]
lea ecx, [esp + 0x68]
push ecx
push eax
lea edx, [esp + 0x6a4]
push edx
call ebp
push 0x208
lea eax, [esp + 0x290]
push edi
push eax
call fcn.0043f440
mov eax, dword [esp + 0xcf4]
add esp, 0xc
cmp dword [esp + 0xcfc], ebx
jae 0x41159d
lea eax, [esp + 0xce8]
lea ecx, [esp + 0x68]
push ecx
push eax
lea edx, [esp + 0x294]
push edx
call ebp
push edi
lea eax, [esp + 0x290]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov ecx, dword [esp + 0xd00]
push ecx
sub esp, 0x1c
lea edx, [esp + 0x2ac]
mov ecx, esp
mov dword [esp + 0x3c], esp
push edx
call fcn.0040d920
sub esp, 0x1c
lea eax, [esp + 0x6d8]
mov ecx, esp
mov dword [esp + 0x54], esp
push eax
mov byte [esp + 0xd00], 4
call fcn.0040d920
mov byte [esp + 0xcfc], 1
call fcn.004111d0
add esp, 0x3c
jmp 0x411788
mov eax, dword [esp + 0xce8]
cmp dword [esp + 0xcfc], ebx
jae 0x411624
lea eax, [esp + 0xce8]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x411655
mov eax, dword [esp + 0xce8]
cmp dword [esp + 0xcfc], ebx
jae 0x411646
lea eax, [esp + 0xce8]
push eax
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x4116ef
push 0x208
lea ecx, [esp + 0x498]
push edi
push ecx
call fcn.0043f440
mov esi, dword [esp + 0xcf4]
add esp, 0xc
cmp dword [esp + 0xcfc], ebx
jae 0x411682
lea esi, [esp + 0xce8]
lea eax, [esp + 0x494]
mov ecx, eax
mov edx, 0x104
sub esi, ecx
lea ecx, [edx + 0x7ffffefa]
test ecx, ecx
je 0x4116b2
movzx ecx, word [eax + esi]
cmp cx, di
je 0x4116b2
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x411692
jmp 0x4116b6
cmp edx, edi
jne 0x4116b9
sub eax, 2
xor edx, edx
mov word [eax], dx
lea eax, [esp + 0x494]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
mov eax, dword [esp + 0xce8]
cmp dword [esp + 0xcfc], ebx
jae 0x4116e3
lea eax, [esp + 0xce8]
push edi
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov esi, dword [esp + 0x14]
push 0x208
lea ecx, [esp + 0x8a8]
push edi
push ecx
call fcn.0043f440
mov eax, dword [esp + 0xcd8]
add esp, 0xc
cmp dword [esp + 0xce0], ebx
jae 0x41171c
lea eax, [esp + 0xccc]
lea edx, [esp + 0x68]
push edx
push eax
lea eax, [esp + 0x8ac]
push eax
call ebp
push 0x208
lea ecx, [esp + 0x290]
push edi
push ecx
call fcn.0043f440
mov eax, dword [esp + 0xcf4]
add esp, 0xc
cmp dword [esp + 0xcfc], ebx
jae 0x411759
lea eax, [esp + 0xce8]
lea edx, [esp + 0x68]
push edx
push eax
lea eax, [esp + 0x294]
push eax
call ebp
movzx ecx, byte [esp + 0xd00]
push ecx
lea edx, [esp + 0x290]
push edx
lea eax, [esp + 0x8ac]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
lea ecx, [esp + 0x3c]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x4114b0
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
lea ecx, [esp + 0xcc8]
call fcn.004084b0
lea ecx, [esp + 0xce4]
call fcn.004084b0
mov al, 1
jmp 0x4117d9
lea ecx, [esp + 0xcc8]
call fcn.004084b0
lea ecx, [esp + 0xce4]
call fcn.004084b0
xor al, al
mov ecx, dword [esp + 0xcb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0xca0]
xor ecx, esp
call fcn.0043f03d
add esp, 0xcb0
ret