Function at 0x407b90
Capabilities:
Check if file exists
Copy file
Create directory
Get file attributes
Set file attributes

Disassembly:
push 0xffffffffffffffff
push 0x42e1bf
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x150
push ebx
push ebp
mov ebp, ecx
push esi
push edi
lea ecx, [esp + 0x14]
lea esi, [ebp + 0x9c0]
push esi
call fcn.0041e2a3
mov eax, dword [esp + 0x14]
mov dword [esp + 0x168], 0
mov edi, dword [eax - 8]
lea ecx, [edi + 1]
push ecx
lea ecx, [esp + 0x18]
call fcn.0041e912
push eax
mov ecx, ebp
call fcn.004069a0
cmp eax, 1
jne 0x407c79
push eax
push 0x5c
lea ecx, [esp + 0x2c]
call fcn.0041b612
lea edx, [esp + 0x28]
push 1
push edx
lea ecx, [esp + 0x1c]
mov byte [esp + 0x170], 1
call fcn.0041b6ff
mov ecx, dword [esp + 0x24]
mov eax, dword [eax]
push ecx
push eax
call fcn.0040d7a5
add esp, 8
lea ecx, [esp + 0x28]
test eax, eax
sete bl
call fcn.0041e52e
lea ecx, [esp + 0x24]
mov byte [esp + 0x168], 0
call fcn.0041e52e
test bl, bl
je 0x407c79
dec edi
lea edx, [esp + 0x24]
push edi
push edx
mov ecx, esi
call fcn.0041b77b
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x16c], 2
call fcn.0041e61b
lea ecx, [esp + 0x24]
mov byte [esp + 0x168], 0
call fcn.0041e52e
lea ecx, [esp + 0x34]
lea ebx, [ebp + 0x14a74]
call fcn.0041c224
push 0xffffffffffffffff
push 0xa
lea ecx, [esp + 0x3c]
mov byte [esp + 0x170], 3
call fcn.0041c2b7
call fcn.0042ba6e
mov eax, dword [eax + 4]
lea ecx, [esp + 0x34]
push ecx
mov ecx, eax
call fcn.00401670
test eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 0
jle 0x407da1
mov edi, str._f_:
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str._f_:
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov eax, dword [esp + 0x2c]
not ecx
dec ecx
push eax
add ebx, ecx
lea ecx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x3c]
call fcn.00401720
mov edi, dword [eax]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x24]
call fcn.0041e52e
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0x30]
push eax
push ecx
lea ecx, [esp + 0x3c]
call fcn.00401720
mov edi, dword [eax]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
add ebx, ecx
lea ecx, [esp + 0x30]
call fcn.0041e52e
mov edi, 0x43a488
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x43a488
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov eax, dword [esp + 0x2c]
not ecx
dec ecx
add ebx, ecx
mov ecx, dword [esp + 0x28]
inc eax
mov dword [esp + 0x2c], eax
cmp eax, ecx
jl 0x407cc5
call fcn.0042ba6e
mov eax, dword [eax + 4]
mov ecx, dword [eax + 0x1c]
call fcn.00429706
mov dword [esp + 0x24], eax
mov eax, dword [ebp + 0x14e5c]
test eax, eax
mov dword [esp + 0x2c], 0
jle 0x4082a8
lea esi, [ebp + 0x14e64]
mov dword [esp + 0x28], esi
jmp 0x407ddb
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
call fcn.0040a390
cmp eax, 1
je 0x4082eb
mov eax, dword [ebp + 0xcd54]
mov ecx, dword [esp + 0x2c]
lea eax, [eax + ecx + 1]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
shl eax, 2
cdq
idiv dword [ebp + 0x14e60]
lea edx, [ebp + 0x9c4]
push edx
push 0x43a150
mov dword [ebp + 0x14a58], eax
lea eax, [esp + 0x5c]
push eax
call fcn.0041e7eb
push 0x43a10c
lea ecx, [esp + 0x24]
push eax
push ecx
mov byte [esp + 0x174], 4
call fcn.0041e777
lea ecx, [esp + 0x54]
mov byte [esp + 0x168], 6
call fcn.0041e52e
push esi
lea ecx, [esp + 0x20]
call fcn.0041e2a3
lea ecx, [esp + 0x1c]
mov byte [esp + 0x168], 7
call fcn.0041ea04
lea edx, [esp + 0x20]
lea ecx, [esp + 0x18]
push edx
call fcn.0041e2a3
lea ecx, [esp + 0x18]
mov byte [esp + 0x168], 8
call fcn.0041ea04
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x1c]
push eax
call fcn.0041b7f3
lea ecx, [esp + 0x14]
mov edi, eax
push ecx
lea ecx, [esp + 0x14]
call fcn.0041e2a3
test edi, edi
mov byte [esp + 0x168], 9
jne 0x407f2c
mov edx, dword [esp + 0x20]
mov ecx, esi
mov eax, dword [edx - 8]
lea edi, [eax - 1]
lea eax, [esp + 0x48]
push edi
push eax
call fcn.0041b646
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x16c], 0xa
call fcn.0041e8fa
lea ecx, [esp + 0x48]
mov byte [esp + 0x168], 9
call fcn.0041e52e
inc edi
lea ecx, [esp + 0x50]
push edi
push ecx
mov ecx, esi
call fcn.0041b646
mov eax, dword [eax]
or ecx, 0xffffffff
mov edi, eax
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x5c]
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]
lea ecx, [esp + 0x50]
call fcn.0041e52e
jmp 0x407f84
push esi
lea ecx, [esp + 0x5c]
push 0x43a10c
push ecx
call fcn.0041e7eb
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x16c], 0xb
call fcn.0041e8fa
lea ecx, [esp + 0x58]
mov byte [esp + 0x168], 9
call fcn.0041e52e
mov esi, dword [esi]
or ecx, 0xffffffff
mov edi, esi
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x5c]
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]
push 0
push 0
push 0
mov ecx, ebp
call fcn.0042544e
mov edi, dword [esp + 0x24]
mov ecx, edi
call fcn.0040a390
cmp eax, 1
je 0x408341
mov esi, dword [esp + 0x28]
test byte [esi + 4], 0x10
je 0x40809b
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x407fe8
mov ecx, edi
call fcn.0040a390
cmp eax, 1
je 0x408341
mov edx, dword [esp + 0x10]
push 0
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
je 0x408303
lea eax, [esp + 0x10]
lea ecx, [ebp + 0x54]
push eax
call fcn.0041e61b
or ecx, 0xffffffff
mov edi, str._d_:
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
shr ecx, 2
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
mov edi, str._d_:
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edi, [esp + 0x5c]
add ebx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x5c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, 0x43a488
add ebx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x43a488
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
add ebx, ecx
mov ecx, dword [esp + 0x24]
call fcn.0040a390
cmp eax, 1
je 0x408341
jmp 0x408242
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x4080c5
test al, 1
je 0x4080c5
mov ecx, dword [esp + 0x10]
and al, 0xfe
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
test eax, eax
je 0x408311
mov ecx, edi
call fcn.0040a390
cmp eax, 1
je 0x408341
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x34], esp
push edx
call fcn.0041e2a3
push ecx
mov byte [esp + 0x170], 0xc
mov ecx, esp
mov dword [esp + 0x54], esp
push esi
call fcn.0041e2a3
mov ecx, ebp
mov byte [esp + 0x170], 9
call fcn.00408760
test eax, eax
jne 0x408157
lea ecx, [esp + 0x10]
mov byte [esp + 0x168], 8
call fcn.0041e52e
lea ecx, [esp + 0x18]
mov byte [esp + 0x168], 7
call fcn.0041e52e
lea ecx, [esp + 0x1c]
mov byte [esp + 0x168], 6
call fcn.0041e52e
lea ecx, [esp + 0x20]
mov byte [esp + 0x168], 3
call fcn.0041e52e
jmp 0x40828a
cmp eax, 0xffffffff
je 0x408311
lea eax, [esp + 0x10]
lea ecx, [ebp + 0x54]
push eax
call fcn.0041e61b
mov ecx, dword [esp + 0x10]
mov eax, dword [esi]
push 0
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
je 0x40831f
lea edi, [esp + 0x5c]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x5c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, 0x43a488
add ebx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x43a488
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov eax, dword [ebp + 0x154a8]
not ecx
dec ecx
add ebx, ecx
test eax, eax
je 0x408230
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x50], esp
push edx
call fcn.0041e2a3
mov eax, dword [esp + 0x2c]
push ecx
mov ecx, esp
mov dword [esp + 0x38], esp
push eax
mov byte [esp + 0x174], 0xd
call fcn.0041e2a3
mov ecx, ebp
mov byte [esp + 0x170], 9
call fcn.00409350
test eax, eax
je 0x408311
mov ecx, dword [esp + 0x24]
call fcn.0040a390
cmp eax, 1
je 0x408341
lea ecx, [esp + 0x10]
mov byte [esp + 0x168], 8
call fcn.0041e52e
lea ecx, [esp + 0x18]
mov byte [esp + 0x168], 7
call fcn.0041e52e
lea ecx, [esp + 0x1c]
mov byte [esp + 0x168], 6
call fcn.0041e52e
lea ecx, [esp + 0x20]
mov byte [esp + 0x168], 3
call fcn.0041e52e
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
mov ecx, dword [ebp + 0x14e5c]
inc eax
add esi, 0x10
cmp eax, ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], esi
jl 0x407dd7
lea ecx, [esp + 0x34]
mov byte [esp + 0x168], 0
call fcn.0041c257
lea ecx, [esp + 0x14]
mov dword [esp + 0x168], 0xffffffff
call fcn.0041e52e
mov eax, 1
mov ecx, dword [esp + 0x160]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x15c
ret
mov ecx, ebp
call fcn.00408d80
push 0x2130
mov ecx, ebp
call fcn.00406500
jmp 0x408398
mov ecx, ebp
call fcn.00408d80
push 0x2100
jmp 0x40834d
mov ecx, ebp
call fcn.00408d80
push 0x2ff0
jmp 0x40834d
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, ebp
mov esi, eax
call fcn.00408d80
cmp esi, 0xd
jne 0x40833a
push 0x2120
jmp 0x40834d
push 0x2110
jmp 0x40834d
mov ecx, ebp
call fcn.00408d80
push 0x2130
mov ecx, ebp
call fcn.00406500
lea ecx, [esp + 0x10]
mov byte [esp + 0x168], 8
call fcn.0041e52e
lea ecx, [esp + 0x18]
mov byte [esp + 0x168], 7
call fcn.0041e52e
lea ecx, [esp + 0x1c]
mov byte [esp + 0x168], 6
call fcn.0041e52e
lea ecx, [esp + 0x20]
mov byte [esp + 0x168], 3
call fcn.0041e52e
lea ecx, [esp + 0x34]
mov byte [esp + 0x168], 0
call fcn.0041c257
lea ecx, [esp + 0x14]
mov dword [esp + 0x168], 0xffffffff
call fcn.0041e52e
xor eax, eax
jmp 0x4082d2