Function at 0x14001bee0
Capabilities:
Check if file exists
Create directory
Get file attributes
Write file on windows

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x10]
sub rsp, 0x110
mov rax, qword [0x140085048]
xor rax, rsp
mov qword [rbp + 8], rax
mov rsi, rcx
mov qword [rsp + 0x58], rcx
xor r14d, r14d
lea rcx, [rbp - 0x38]
call fcn.1400223f0
nop
movabs rax, 0x7ffffffffffffffe
mov rcx, qword [rbp - 0x28]
sub rax, rcx
cmp rax, 0x14
jb 0x14001c8c1
lea r9, [rbp - 0x38]
cmp qword [rbp - 0x20], 8
cmovae r9, qword [rbp - 0x38]
mov qword [rsp + 0x30], SafeArrayUnaccessData
lea rax, str.TrainerSettings.ini
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
lea rcx, [rbp - 0x78]
call fcn.140008cf0
lea r13, [rsi + 0x508]
lea rdx, [rbp - 0x78]
mov rcx, r13
call fcn.140007580
mov rdx, qword [rbp - 0x60]
cmp rdx, 8
jb 0x14001bfc6
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x78]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14001bfc1
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14001c909
call fcn.14003cb60
lea rcx, [rbp - 0x38]
cmp qword [rbp - 0x20], 8
cmovae rcx, qword [rbp - 0x38]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x14001bff2
lea rcx, [rbp - 0x38]
cmp qword [rbp - 0x20], 8
cmovae rcx, qword [rbp - 0x38]
call fcn.14004a76c
mov ecx, 0x20
call fcn.14003cb94
mov rdi, rax
mov qword [rsp + 0x48], rax
xorps xmm0, xmm0
movups xmmword [rax], xmm0
mov qword [rax + 0x10], r14
mov qword [rax + 0x18], 7
mov word [rax], r14w
cmp rax, r13
je 0x14001c06f
mov r9, r13
cmp qword [r13 + 0x18], 8
jb 0x14001c02d
mov r9, qword [r13]
mov rdx, qword [r13 + 0x10]
cmp rdx, 7
ja 0x14001c066
mov rsi, rdi
cmp qword [rax + 0x18], 8
jb 0x14001c044
mov rsi, qword [rax]
mov qword [rax + 0x10], rdx
lea rbx, [rdx + rdx]
mov r8, rbx
mov rdx, r9
mov rcx, rsi
call fcn.14003f090
mov word [rbx + rsi], r14w
mov rsi, qword [rsp + 0x58]
jmp 0x14001c06f
mov rcx, rdi
call fcn.1400083d0
nop
mov rbx, qword [rsi + 0x618]
mov qword [rsi + 0x618], rdi
test rbx, rbx
je 0x14001c0de
mov rdx, qword [rbx + 0x18]
cmp rdx, 8
jb 0x14001c0c1
mov rcx, qword [rbx]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x14001c0bc
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14001c909
mov rcx, r8
call fcn.14003cb60
mov qword [rbx + 0x10], r14
mov qword [rbx + 0x18], 7
mov word [rbx], r14w
mov edx, 0x20
mov rcx, rbx
call fcn.14003cb60
mov rax, qword [rsi + 0x618]
mov qword [rsp + 0x48], rax
lea rdx, [rsp + 0x48]
lea rcx, [rsp + 0x50]
call fcn.14001f090
mov rcx, qword [rax]
mov qword [rax], r14
mov rbx, qword [rsi + 0x620]
mov qword [rsi + 0x620], rcx
test rbx, rbx
je 0x14001c170
mov rdx, qword [rbx + 0x20]
cmp rdx, 8
jb 0x14001c152
mov rcx, qword [rbx + 8]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x14001c14d
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14001c8cd
mov rcx, r8
call fcn.14003cb60
mov qword [rbx + 0x18], r14
mov qword [rbx + 0x20], 7
mov word [rbx + 8], r14w
mov edx, 0x28
mov rcx, rbx
call fcn.14003cb60
mov rbx, qword [rsp + 0x50]
test rbx, rbx
je 0x14001c1d8
mov rdx, qword [rbx + 0x20]
cmp rdx, 8
jb 0x14001c1ba
mov rcx, qword [rbx + 8]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x14001c1b5
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14001c8cd
mov rcx, r8
call fcn.14003cb60
mov qword [rbx + 0x18], r14
mov qword [rbx + 0x20], 7
mov word [rbx + 8], r14w
mov edx, 0x28
mov rcx, rbx
call fcn.14003cb60
mov rcx, r13
cmp qword [r13 + 0x18], 8
jb 0x14001c1e6
mov rcx, qword [r13]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov rsi, 0xffffffffffffffff
cmp eax, 0xffffffff
jne 0x14001c53e
lea rdx, [0x140070cce]
lea ecx, [rsi + 3]
call fcn.14004aa74
xorps xmm0, xmm0
movups xmmword [rbp - 0x18], xmm0
mov qword [rbp - 8], r14
mov qword [rbp], r14
mov r8, rsi
nop dword [rax]
inc r8
cmp byte [rax + r8], 0
jne 0x14001c220
mov rdx, rax
lea rcx, [rbp - 0x18]
call fcn.140007f80
nop
xorps xmm0, xmm0
movups xmmword [rsp + 0x68], xmm0
mov qword [rsp + 0x78], r14
mov qword [rbp - 0x80], 7
mov word [rsp + 0x68], r14w
lea r14, [rbp - 0x18]
cmp qword [rbp], 0x10
setae byte [rsp + 0x40]
mov r12, qword [rbp - 0x18]
cmovae r14, r12
mov r15, qword [rbp - 8]
cmp r15, 7
jb 0x14001c2dc
lea rdi, [r14 + r15]
lea r8, [rdi - 6]
sub r8, r14
mov edx, 0x43
mov rcx, r14
call fcn.14003f810
mov rbx, rax
test rax, rax
je 0x14001c2dc
nop dword [rax]
nop word [rax + rax]
mov r8d, 7
lea rdx, str.Chinese
mov rcx, rbx
call fcn.14003f730
test eax, eax
je 0x14001c45c
inc rbx
lea r8, [rdi - 6]
sub r8, rbx
mov edx, 0x43
mov rcx, rbx
call fcn.14003f810
mov rbx, rax
test rax, rax
jne 0x14001c2a0
mov qword [rsp + 0x78], 7
movsd xmm0, qword [str.English]
movsd qword [rsp + 0x68], xmm0
mov eax, dword [0x1400741b0]
mov dword [rsp + 0x70], eax
movzx eax, word [0x1400741b4]
mov word [rsp + 0x74], ax
xor r14d, r14d
mov word [rsp + 0x76], r14w
xorps xmm0, xmm0
movups xmmword [rbp - 0x78], xmm0
mov qword [rbp - 0x68], r14
mov qword [rbp - 0x60], r14
mov r8d, 8
lea rdx, str.Language
lea rcx, [rbp - 0x78]
call fcn.140007d80
mov rbx, qword [rsp + 0x58]
mov rcx, qword [rbx + 0x620]
mov r9, qword [rcx]
cmp qword [r9 + 0x18], 8
jb 0x14001c350
mov r9, qword [r9]
lea r8, [rsp + 0x68]
cmp qword [rbp - 0x80], 8
cmovae r8, qword [rsp + 0x68]
lea rdx, [rbp - 0x78]
cmp qword [rbp - 0x60], 8
cmovae rdx, qword [rbp - 0x78]
add rcx, 8
cmp qword [rcx + 0x18], 8
jb 0x14001c37c
mov rcx, qword [rcx]
call qword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
mov rdx, qword [rbp - 0x60]
cmp rdx, 8
jb 0x14001c3c3
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x78]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14001c3bd
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14001c8c7
call fcn.14003cb60
nop
mov rdx, qword [rbp - 0x80]
cmp rdx, 8
jb 0x14001c404
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14001c3ff
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14001c8d3
call fcn.14003cb60
mov qword [rsp + 0x78], r14
mov qword [rbp - 0x80], 7
mov word [rsp + 0x68], r14w
cmp byte [rsp + 0x40], 0
je 0x14001c543
mov rdx, qword [rbp]
inc rdx
mov rax, r12
cmp rdx, 0x1000
jb 0x14001c44f
add rdx, 0x27
mov r12, qword [r12 - 8]
sub rax, r12
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14001c8d9
mov rcx, r12
call fcn.14003cb60
jmp 0x14001c543
sub rbx, r14
cmp rbx, 0xffffffffffffffff
je 0x14001c2dc
lea rdi, [rbp - 0x18]
cmp byte [rsp + 0x40], 0
cmovne rdi, r12
cmp r15, 0xb
jb 0x14001c4d8
lea r14, [r15 + rdi]
lea r8, [r14 - 0xa]
sub r8, rdi
mov edx, 0x54
mov rcx, rdi
call fcn.14003f810
mov rbx, rax
test rax, rax
je 0x14001c4d8
nop dword [rax]
mov r8d, SafeArrayDestroy
lea rdx, str.Traditional
mov rcx, rbx
call fcn.14003f730
test eax, eax
je 0x14001c52c
inc rbx
lea r8, [r14 - 0xa]
sub r8, rbx
mov edx, 0x54
mov rcx, rbx
call fcn.14003f810
mov rbx, rax
test rax, rax
jne 0x14001c4a0
mov rbx, rsi
lea rax, str.Chinese_Traditional
lea r9, str.Chinese_Simplified
cmp rbx, 0xffffffffffffffff
cmovne r9, rax
mov rdx, rsi
inc rdx
cmp word [r9 + rdx*2], 0
jne 0x14001c4f4
lea rcx, [rsp + 0x68]
cmp rdx, 7
ja 0x14001c531
mov qword [rsp + 0x78], rdx
lea rbx, [rdx + rdx]
mov r8, rbx
mov rdx, r9
call fcn.14003f090
xor r14d, r14d
mov word [rsp + rbx + 0x68], r14w
jmp 0x14001c312
sub rbx, rdi
jmp 0x14001c4db
call fcn.1400083d0
xor r14d, r14d
jmp 0x14001c312
mov rbx, qword [rsp + 0x58]
xorps xmm0, xmm0
movups xmmword [rbp - 0x78], xmm0
mov qword [rbp - 0x68], r14
mov qword [rbp - 0x60], r14
mov r8d, 7
lea rdx, str.ENGLISH
lea rcx, [rbp - 0x78]
call fcn.140007d80
nop
xorps xmm0, xmm0
movups xmmword [rsp + 0x68], xmm0
mov qword [rsp + 0x78], r14
mov qword [rbp - 0x80], r14
mov r8d, 8
lea rdx, str.Language
lea rcx, [rsp + 0x68]
call fcn.140007d80
nop
mov rcx, qword [rbx + 0x620]
lea r8, [rcx + 8]
lea rax, [rbp - 0x78]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x68]
lea rdx, [rbp - 0x58]
mov rcx, qword [rcx]
call fcn.14001ab20
nop
mov rdx, qword [rbp - 0x80]
cmp rdx, 8
jb 0x14001c5f9
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14001c5f4
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14001c8df
call fcn.14003cb60
mov qword [rsp + 0x78], r14
mov qword [rbp - 0x80], 7
mov word [rsp + 0x68], r14w
mov rdx, qword [rbp - 0x60]
cmp rdx, 8
jb 0x14001c64c
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x78]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14001c647
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14001c8e5
call fcn.14003cb60
mov qword [rbp - 0x68], r14
mov qword [rbp - 0x60], 7
mov word [rbp - 0x78], r14w
lea rcx, [rbp - 0x58]
mov r15, qword [rbp - 0x58]
mov rax, qword [rbp - 0x40]
mov r12, qword [rbp - 0x48]
cmp rax, 8
jb 0x14001c67f
lea rbx, [r15 + r12*2]
mov rdi, r15
mov r14, r15
jmp 0x14001c68b
lea rbx, [rcx + r12*2]
lea rdi, [rbp - 0x58]
lea r14, [rbp - 0x58]
cmp rdi, rbx
je 0x14001c6b5
sub r14, rdi
movzx ecx, word [rdi]
call fcn.140049cbc
mov word [rdi + r14], ax
add rdi, 2
cmp rdi, rbx
jne 0x14001c693
mov rax, qword [rbp - 0x40]
mov r12, qword [rbp - 0x48]
mov r15, qword [rbp - 0x58]
lea rcx, [rbp - 0x58]
cmp rax, 8
setae bl
cmovae rcx, r15
mov qword [rsp + 0x20], 0xa
lea r9, str.SIMPLIFIED
xor r8d, r8d
mov rdx, r12
call fcn.140007cc0
cmp rax, 0xffffffffffffffff
je 0x14001c6ed
xor r14d, r14d
mov ebx, r14d
jmp 0x14001c721
lea rcx, [rbp - 0x58]
test bl, bl
cmovne rcx, r15
mov qword [rsp + 0x20], SafeArrayDestroy
lea r9, str.TRADITIONAL
xor r8d, r8d
mov rdx, r12
call fcn.140007cc0
xor r14d, r14d
mov ebx, r14d
cmp rax, 0xffffffffffffffff
sete bl
inc ebx
mov edx, ebx
call fcn.1400168e0
lea r15, [0x140088920]
mov qword [rsp + 0x60], r15
mov rcx, r15
call fcn.14003c3d8
test eax, eax
jne 0x14001c8eb
mov eax, dword [0x14008896c]
cmp eax, 0x7fffffff
je 0x14001c8f6
mov dword [rsp + 0x48], r14d
mov dword [rsp + 0x50], r14d
mov qword [rsp + 0x20], r14
lea r9, [rsp + 0x50]
mov r8d, 4
lea rdx, [rsp + 0x48]
mov rdi, qword [rsp + 0x58]
mov rcx, qword [rdi + 8]
call qword [sym.imp.KERNEL32.dll_WriteFile]
mov dword [rsp + 0x50], ebx
mov dword [rsp + 0x48], r14d
mov qword [rsp + 0x20], r14
lea r9, [rsp + 0x48]
mov r8d, 4
lea rdx, [rsp + 0x50]
mov rcx, qword [rdi + 8]
call qword [sym.imp.KERNEL32.dll_WriteFile]
cmp qword [r13 + 0x18], 8
jb 0x14001c7b6
mov r13, qword [r13]
xorps xmm0, xmm0
movups xmmword [rbp - 0x78], xmm0
mov qword [rbp - 0x68], r14
mov qword [rbp - 0x60], r14
nop word [rax + rax]
inc rsi
cmp word [r13 + rsi*2], 0
jne 0x14001c7d0
mov r8, rsi
mov rdx, r13
lea rcx, [rbp - 0x78]
call fcn.140007d80
lea rdx, [rbp - 0x78]
mov rcx, rdi
call fcn.140018af0
nop
mov rcx, r15
call fcn.14003c3e0
nop
mov rdx, qword [rbp - 0x40]
cmp rdx, 8
jb 0x14001c841
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x58]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14001c83c
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14001c909
call fcn.14003cb60
mov qword [rbp - 0x48], r14
mov qword [rbp - 0x40], 7
mov word [rbp - 0x58], r14w
mov rdx, qword [rbp - 0x20]
cmp rdx, 8
jb 0x14001c88e
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x38]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14001c889
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14001c8bb
call fcn.14003cb60
mov rcx, qword [rbp + 8]
xor rcx, rsp
call fcn.14003cb40
lea r11, [rsp + 0x110]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.14004378c
nop
call fcn.140001300
nop
call fcn.14004378c
nop
call fcn.14004378c
nop
call fcn.14004378c
nop
call fcn.14004378c
nop
call fcn.14004378c
nop
call fcn.14004378c
int3
mov ecx, 5
call fcn.14003c0a0
int3
dec eax
mov dword [0x14008896c], eax
mov ecx, 6
call fcn.14003c0a0
nop
call fcn.14004378c
int3