Function at 0x4016c0
Capabilities:
Get common file path
Read file on windows
Set file attributes
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x264
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push 0x80
lea eax, [ebp - 0x118]
mov dword [ebp - 0x264], ecx
push 0
push eax
call fcn.004189f0
push 0x104
lea eax, [ebp - 0x21c]
push 0
push eax
call fcn.004189f0
add esp, 0x18
mov word [ebp - 0x11], 0x6b
lea eax, [ebp - 0x21c]
mov dword [ebp - 0x18], 0x4450366a
mov word [ebp - 0x14], 0x4842
mov byte [ebp - 0x12], 0x7a
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x21c]
push eax
push str._s_s
lea eax, [ebp - 0x118]
push 0x80
push eax
call fcn.00401c80
push 0x495358
lea eax, [ebp - 0x118]
mov dword [ebp - 0x260], 0
push eax
lea eax, [ebp - 0x260]
push eax
call fcn.00428f60
add esp, 0x20
test eax, eax
jne 0x4019da
mov esi, dword [ebp - 0x260]
test esi, esi
je 0x4019da
push 0x80
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.004189f0
push esi
push 0x80
lea eax, [ebp - 0x98]
push 1
push eax
call fcn.00429aa0
push dword [ebp - 0x260]
mov esi, eax
call fcn.004291c0
xor al, al
add esp, 0x20
xor ecx, ecx
mov dword [ebp - 8], eax
test esi, esi
jle 0x40184a
cmp esi, 0x20
jb 0x40184a
mov eax, esi
and eax, 0x8000001f
jns 0x4017e1
dec eax
or eax, 0xffffffe0
inc eax
mov edx, esi
xorps xmm2, xmm2
sub edx, eax
xorps xmm1, xmm1
nop dword [eax + eax]
movups xmm0, xmmword [ebp + ecx - 0x98]
paddb xmm2, xmm0
movups xmm0, xmmword [ebp + ecx - 0x88]
add ecx, 0x20
paddb xmm1, xmm0
cmp ecx, edx
jl 0x4017f0
paddb xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
paddb xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddb xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 2
paddb xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 1
paddb xmm1, xmm0
movd eax, xmm1
mov dword [ebp - 8], eax
xor bl, bl
xor dl, dl
cmp ecx, esi
jge 0x401887
mov eax, esi
sub eax, ecx
cmp eax, 2
jl 0x401875
lea eax, [esi - 1]
nop
add bl, byte [ebp + ecx - 0x98]
add dl, byte [ebp + ecx - 0x97]
add ecx, 2
cmp ecx, eax
jl 0x401860
mov eax, dword [ebp - 8]
cmp ecx, esi
jge 0x401883
add al, byte [ebp + ecx - 0x98]
add dl, bl
add al, dl
test al, al
jne 0x4018bf
cmp byte [ebp - 0x92], 1
jne 0x4018b2
mov eax, dword [ebp - 0x264]
pop esi
pop ebx
mov dword [eax], 2
mov al, 1
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004099c0
mov esp, ebp
pop ebp
ret
push 0x49535c
call fcn.004011e0
add esp, 4
push edi
lea eax, [ebp - 0x23c]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
mov ecx, dword [ebp - 0x98]
mov edx, 0x7d0
movups xmm0, xmmword [ebp - 0x23c]
mov esi, dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
movsx ax, cl
movups xmmword [ebp - 0x24c], xmm0
add ax, dx
mov word [ebp - 0x22c], ax
movsx ax, ch
mov word [ebp - 0x22a], ax
movsx eax, byte [ebp - 0x96]
mov word [ebp - 0x226], ax
movsx eax, byte [ebp - 0x95]
mov word [ebp - 0x224], ax
movsx eax, byte [ebp - 0x94]
mov word [ebp - 0x222], ax
movsx eax, byte [ebp - 0x93]
mov word [ebp - 0x220], ax
xor eax, eax
mov word [ebp - 0x21e], ax
lea eax, [ebp - 0xc]
movups xmm0, xmmword [ebp - 0x22c]
push eax
lea eax, [ebp - 0x24c]
movups xmmword [ebp - 0x25c], xmm0
push eax
xorps xmm0, xmm0
movq qword [ebp - 0xc], xmm0
call esi
mov edi, dword [ebp - 8]
lea eax, [ebp - 0x224]
push eax
xor ebx, ebx
lea eax, [ebp - 0x25c]
add ebx, dword [ebp - 0xc]
xorps xmm0, xmm0
push eax
adc edi, 0
movq qword [ebp - 0x224], xmm0
call esi
sub ebx, 0
sbb edi, dword [ebp - 0x220]
sub ebx, dword [ebp - 0x224]
sbb edi, 0
cmp edi, 0x185c
pop edi
jb 0x401a95
ja 0x4019bc
cmp ebx, 0x22ce4000
jb 0x401a95
mov eax, dword [ebp - 0x264]
pop esi
pop ebx
mov dword [eax], 1
xor al, al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004099c0
mov esp, ebp
pop ebp
ret
push 0x49536c
call fcn.004011e0
push 0x495380
lea eax, [ebp - 0x118]
push eax
lea eax, [ebp - 0x260]
push eax
call fcn.00428f60
add esp, 0x10
test eax, eax
jne 0x401a95
cmp dword [ebp - 0x260], eax
je 0x401a95
mov dword [ebp - 0xc], eax
mov word [ebp - 8], ax
lea eax, [ebp - 0x22c]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx eax, byte [ebp - 0x22c]
push dword [ebp - 0x260]
add al, 0x30
mov byte [ebp - 0xc], al
movzx eax, byte [ebp - 0x22a]
mov byte [ebp - 0xb], al
movzx eax, byte [ebp - 0x226]
mov byte [ebp - 0xa], al
movzx eax, byte [ebp - 0x224]
mov byte [ebp - 9], al
movzx eax, byte [ebp - 0x222]
mov byte [ebp - 8], al
movzx eax, byte [ebp - 0x220]
push 6
mov byte [ebp - 7], al
lea eax, [ebp - 0xc]
push 1
push eax
call fcn.0042a420
push dword [ebp - 0x260]
call fcn.004291c0
add esp, 0x14
lea eax, [ebp - 0x118]
push 6
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov eax, dword [ebp - 0x264]
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
mov dword [eax], 0
xor al, al
pop ebx
call fcn.004099c0
mov esp, ebp
pop ebp
ret