Function at 0x10005d40
Capabilities:
Check if file exists
Copy file
Enumerate files on windows
Enumerate files recursively
Get common file path
Get file attributes
Set file attributes

Disassembly:
mov al, byte [esp + 0x14]
sub esp, 0x454
test al, 2
push ebx
push ebp
push esi
push edi
jne 0x10005d82
mov eax, dword [esp + 0x474]
test eax, eax
jne 0x10005d6d
pop edi
pop esi
pop ebp
mov eax, 0xe606f000
pop ebx
add esp, 0x454
ret
cmp dword [eax], 0
jne 0x10005d82
pop edi
pop esi
pop ebp
mov eax, 0xe606f000
pop ebx
add esp, 0x454
ret
mov ebp, dword [esp + 0x46c]
mov ebx, dword [esp + 0x468]
push ebp
push ebx
call fcn.10005ae0
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
je 0x10005db2
pop edi
pop esi
pop ebp
mov eax, 0xe606f010
pop ebx
add esp, 0x454
ret
test ebx, ebx
je 0x10005e70
push 0
lea eax, [esp + 0x120]
push ebx
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
test eax, eax
je 0x10005dfa
cmp byte [ebp], 0x5c
je 0x10005e35
lea ecx, [esp + 0x11c]
push ebp
push ecx
lea edx, [esp + 0x124]
push str._s_s
push edx
call fcn.100065c0
add esp, 0x10
jmp 0x10005e96
lea eax, [esp + 0x11c]
push eax
push ebx
call fcn.100059f0
add esp, 8
test eax, eax
je 0x10005e60
cmp byte [ebp], 0x5c
je 0x10005e35
lea ecx, [esp + 0x11c]
push ebp
push ecx
lea edx, [esp + 0x124]
push str._s_s
push edx
call fcn.100065c0
add esp, 0x10
jmp 0x10005e96
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x11c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
jmp 0x10005e91
pop edi
pop esi
pop ebp
mov eax, 0xe605f005
pop ebx
add esp, 0x454
ret
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x11c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x100178dc
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x11c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x478]
mov ecx, edx
and ecx, 3
cmp eax, 6
rep movsb byte es:[edi], byte [esi]
ja case.0x10005ed7.3
jmp dword [eax*4 + 0x100062a4]
mov eax, dword [esp + 0x474]
cmp dword [eax], 0
je 0x10006293
mov ebp, dword [esp + 0x470]
mov edi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov ebx, dword [sym.imp.KERNEL32.dll_CopyFileA]
mov esi, eax
mov eax, dword [eax]
lea ecx, [esp + 0x18]
push eax
push ebp
push str._s_s
push ecx
call fcn.100065c0
add esp, 0x10
lea edx, [esp + 0x18]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x10005f33
mov dword [esp + 0x14], 0xe6060002
jmp 0x10005f7f
mov eax, dword [esi]
lea ecx, [esp + 0x11c]
push eax
push ecx
lea edx, [esp + 0x368]
push 0x10017a90
push edx
call fcn.100065c0
add esp, 0x10
lea eax, [esp + 0x360]
push 0x80
push eax
call edi
lea ecx, [esp + 0x360]
push 0
lea edx, [esp + 0x1c]
push ecx
push edx
call ebx
test eax, eax
jne 0x10005f7f
mov dword [esp + 0x14], 0xe606f001
mov ecx, dword [esi + 4]
add esi, 4
test ecx, ecx
mov eax, esi
jne 0x10005f03
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x454
ret
mov ebp, dword [esp + 0x470]
lea eax, [esp + 0x18]
push ebp
push str._s.
push eax
call fcn.100065c0
add esp, 0xc
lea ecx, [esp + 0x220]
lea edx, [esp + 0x18]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x10005fe2
pop edi
pop esi
pop ebp
mov eax, 0xe606f000
pop ebx
add esp, 0x454
ret
mov esi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov edi, dword [sym.imp.KERNEL32.dll_CopyFileA]
test byte [esp + 0x220], 0x10
jne 0x10006055
lea eax, [esp + 0x24c]
lea ecx, [esp + 0x11c]
push eax
push ecx
lea edx, [esp + 0x368]
push 0x10017a90
push edx
call fcn.100065c0
lea eax, [esp + 0x25c]
lea ecx, [esp + 0x28]
push eax
push ebp
push str._s_s
push ecx
call fcn.100065c0
add esp, 0x20
lea edx, [esp + 0x360]
push 0x80
push edx
call esi
lea eax, [esp + 0x360]
push 0
lea ecx, [esp + 0x1c]
push eax
push ecx
call edi
lea edx, [esp + 0x220]
push edx
push ebx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x10005fee
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x454
ret
mov eax, dword [esp + 0x474]
cmp dword [eax], 0
jne 0x10006093
pop edi
pop esi
pop ebp
mov eax, 0xe606f003
pop ebx
add esp, 0x454
ret
mov edi, dword [esp + 0x470]
mov ebx, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov ebp, dword [sym.imp.KERNEL32.dll_CopyFileA]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x18]
mov ecx, dword [eax]
push ecx
push edi
push str._s_s
push edx
call fcn.100065c0
add esp, 0x10
lea eax, [esp + 0x220]
lea ecx, [esp + 0x18]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov esi, eax
cmp esi, 0xffffffff
jne 0x100060e8
mov dword [esp + 0x14], 0xe6060002
jmp 0x1000615f
lea edx, [esp + 0x24c]
lea eax, [esp + 0x11c]
push edx
push eax
lea ecx, [esp + 0x368]
push 0x10017a90
push ecx
call fcn.100065c0
lea edx, [esp + 0x25c]
lea eax, [esp + 0x28]
push edx
push edi
push str._s_s
push eax
call fcn.100065c0
add esp, 0x20
lea ecx, [esp + 0x360]
push 0x80
push ecx
call ebx
lea edx, [esp + 0x360]
push 0
lea eax, [esp + 0x1c]
push edx
push eax
call ebp
lea ecx, [esp + 0x220]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x100060e8
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [esp + 0x10]
add eax, 4
mov edx, eax
mov dword [esp + 0x10], eax
cmp dword [edx], 0
jne 0x100060aa
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x454
ret
mov esi, dword [esp + 0x470]
push 2
push 0
push esi
push ebp
push ebx
call fcn.10005d40
push esi
lea eax, [esp + 0x30]
push str._s.
push eax
call fcn.100065c0
add esp, 0x20
lea ecx, [esp + 0x220]
lea edx, [esp + 0x18]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov edi, eax
cmp edi, 0xffffffff
jne 0x100061d4
pop edi
pop esi
pop ebp
mov eax, 0xe606f000
pop ebx
add esp, 0x454
ret
mov ebx, dword [sym.imp.KERNEL32.dll_FindNextFileA]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcmpA]
test byte [esp + 0x220], 0x10
je 0x10006269
lea eax, [esp + 0x24c]
push eax
push 0x10017d94
call ebp
test eax, eax
je 0x10006269
lea ecx, [esp + 0x24c]
push ecx
push 0x10017e30
call ebp
test eax, eax
je 0x10006269
lea edx, [esp + 0x24c]
lea eax, [esp + 0x11c]
push edx
push eax
lea ecx, [esp + 0x368]
push 0x10017a90
push ecx
call fcn.100065c0
lea edx, [esp + 0x25c]
lea eax, [esp + 0x28]
push edx
push esi
push str._s_s
push eax
call fcn.100065c0
push 6
lea ecx, [esp + 0x3c]
push 0
lea edx, [esp + 0x388]
push ecx
push edx
push 0
call fcn.10005d40
add esp, 0x34
mov dword [esp + 0x14], eax
lea eax, [esp + 0x220]
push eax
push edi
call ebx
test eax, eax
jne 0x100061e0
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x454
ret
mov dword [esp + 0x14], 0xe606f002
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x454
ret