Function at 0x1400154b0
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 [0x14007e040]
xor rax, rsp
mov qword [rbp + 8], rax
mov rdi, rcx
mov qword [rsp + 0x58], rcx
xor r12d, r12d
mov dword [rsp + 0x48], r12d
lea rcx, [rbp - 0x18]
call fcn.14001a3f0
nop
movabs rax, 0x7ffffffffffffffe
mov rcx, qword [rbp - 8]
sub rax, rcx
cmp rax, 0x14
jb 0x140015f41
lea r9, [rbp - 0x18]
cmp qword [rbp], 8
cmovae r9, qword [rbp - 0x18]
mov qword [rsp + 0x30], SafeArrayUnaccessData
lea rax, str.TrainerSettings.ini
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
lea rcx, [rbp - 0x58]
call fcn.1400070f0
lea r13, [rdi + 0x4e0]
lea rdx, [rbp - 0x58]
mov rcx, r13
call fcn.1400059d0
mov rdx, qword [rbp - 0x40]
cmp rdx, 8
jb 0x14001559b
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x58]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140015596
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140015f73
call fcn.140034040
lea rcx, [rbp - 0x18]
cmp qword [rbp], 8
cmovae rcx, qword [rbp - 0x18]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x1400155c7
lea rcx, [rbp - 0x18]
cmp qword [rbp], 8
cmovae rcx, qword [rbp - 0x18]
call fcn.140040924
mov ecx, 0x20
call fcn.140034074
mov rbx, rax
mov qword [rsp + 0x50], rax
mov qword [rax], r12
mov qword [rax + 0x10], r12
mov qword [rax + 0x18], 7
mov word [rax], r12w
cmp rax, r13
je 0x14001560c
mov rdx, r13
cmp qword [r13 + 0x18], 8
jb 0x1400155ff
mov rdx, qword [r13]
mov r8, qword [r13 + 0x10]
mov rcx, rbx
call fcn.140005c20
nop
lea rsi, [rdi + 0x5f0]
lea rax, [rsp + 0x50]
cmp rsi, rax
je 0x140015680
mov rdi, qword [rsi]
mov qword [rsi], rbx
test rdi, rdi
je 0x1400156dc
mov rdx, qword [rdi + 0x18]
cmp rdx, 8
jb 0x14001566b
mov rcx, qword [rdi]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140015666
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140015f73
mov rcx, r8
call fcn.140034040
mov qword [rdi + 0x10], r12
mov qword [rdi + 0x18], 7
mov word [rdi], r12w
mov rcx, rdi
jmp 0x1400156d2
mov rdx, qword [rbx + 0x18]
cmp rdx, 8
jb 0x1400156bf
mov rcx, qword [rbx]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x1400156ba
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140015f73
mov rcx, r8
call fcn.140034040
mov qword [rbx + 0x10], r12
mov qword [rbx + 0x18], 7
mov word [rbx], r12w
mov rcx, rbx
mov edx, 0x20
call fcn.140034040
mov r15, qword [rsi]
mov ecx, 0x28
call fcn.140034074
mov r14, rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x68], r12
mov qword [rsp + 0x78], r12
mov qword [rbp - 0x80], 7
mov word [rsp + 0x68], r12w
mov r8d, 7
lea rdx, str.Trainer
lea rcx, [rsp + 0x68]
call fcn.140005c20
nop
mov dword [rsp + 0x48], SafeArrayUnaccessData
lea rdi, [r14 + 8]
mov qword [rdi], r12
mov qword [rdi + 0x10], r12
mov qword [rdi + 0x18], 7
mov word [rdi], r12w
lea rax, [rsp + 0x68]
cmp rdi, rax
je 0x14001579a
lea r9, [rsp + 0x68]
cmp qword [rbp - 0x80], 8
cmovae r9, qword [rsp + 0x68]
mov rdx, qword [rsp + 0x78]
cmp rdx, 7
ja 0x14001578f
mov rsi, rdi
cmp qword [rdi + 0x18], 8
jb 0x140015772
mov rsi, qword [rdi]
mov qword [rdi + 0x10], rdx
lea rbx, [rdx + rdx]
mov r8, rbx
mov rdx, r9
mov rcx, rsi
call fcn.140036480
mov word [rsi + rbx], r12w
jmp 0x14001579a
xor r8d, r8d
mov rcx, rdi
call fcn.140006490
mov qword [r14], r15
mov rdx, qword [rbp - 0x80]
cmp rdx, 8
jb 0x1400157de
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400157d9
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140015f47
call fcn.140034040
mov rbx, qword [rsp + 0x58]
lea rax, [rbx + 0x5f8]
lea rcx, [rsp + 0x50]
cmp rax, rcx
je 0x140015c09
mov rbx, qword [rax]
mov qword [rax], r14
test rbx, rbx
je 0x140015861
mov rdx, qword [rbx + 0x20]
cmp rdx, 8
jb 0x140015843
mov rcx, qword [rbx + 8]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x14001583e
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140015f73
mov rcx, r8
call fcn.140034040
mov qword [rbx + 0x18], r12
mov qword [rbx + 0x20], 7
mov word [rbx + 8], r12w
mov edx, 0x28
mov rcx, rbx
call fcn.140034040
mov rbx, qword [rsp + 0x58]
mov rcx, r13
cmp qword [r13 + 0x18], 8
jb 0x140015874
mov rcx, qword [r13]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov rsi, 0xffffffffffffffff
cmp eax, 0xffffffff
jne 0x140015ab9
lea rdx, [0x14006d197]
lea ecx, [rsi + 3]
call fcn.140040c2c
mov qword [rbp - 0x78], r12
mov qword [rbp - 0x68], r12
mov qword [rbp - 0x60], reloc.OLEAUT32.dll_SafeArrayDestroy
mov byte [rbp - 0x78], 0
mov r8, rsi
inc r8
cmp byte [rax + r8], 0
jne 0x1400158b0
mov rdx, rax
lea rcx, [rbp - 0x78]
call fcn.140005cb0
nop
mov qword [rsp + 0x68], r12
mov qword [rsp + 0x78], r12
mov qword [rbp - 0x80], 7
mov word [rsp + 0x68], r12w
lea r14, [rbp - 0x78]
cmp qword [rbp - 0x60], 0x10
setae byte [rsp + 0x40]
mov r12, qword [rbp - 0x78]
cmovae r14, r12
mov r15, qword [rbp - 0x68]
cmp r15, 7
jb 0x14001595c
lea rdi, [r15 + r14]
lea r8, [rdi - 6]
sub r8, r14
mov edx, 0x43
mov rcx, r14
call fcn.140036b10
mov rbx, rax
test rax, rax
je 0x14001595c
nop
mov r8d, 7
lea rdx, str.Chinese
mov rcx, rbx
call fcn.140036bb0
test eax, eax
je 0x140015c6a
inc rbx
lea r8, [rdi - 6]
sub r8, rbx
mov edx, 0x43
mov rcx, rbx
call fcn.140036b10
mov rbx, rax
test rax, rax
jne 0x140015920
mov r8d, 7
lea rdx, str.English
lea rcx, [rsp + 0x68]
call fcn.140005c20
xor r14d, r14d
mov qword [rbp - 0x58], r14
mov qword [rbp - 0x48], r14
mov qword [rbp - 0x40], 7
lea r8d, [r14 + 8]
lea rdx, str.Language
lea rcx, [rbp - 0x58]
call fcn.140005c20
mov rbx, qword [rsp + 0x58]
mov rcx, qword [rbx + 0x5f8]
mov r9, qword [rcx]
cmp qword [r9 + 0x18], 8
jb 0x1400159b3
mov r9, qword [r9]
lea r8, [rsp + 0x68]
cmp qword [rbp - 0x80], 8
cmovae r8, qword [rsp + 0x68]
lea rdx, [rbp - 0x58]
cmp qword [rbp - 0x40], 8
cmovae rdx, qword [rbp - 0x58]
add rcx, 8
cmp qword [rcx + 0x18], 8
jb 0x1400159df
mov rcx, qword [rcx]
call qword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
mov rdx, qword [rbp - 0x40]
cmp rdx, 8
jb 0x140015a26
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x58]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140015a20
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140015f4d
call fcn.140034040
nop
mov rdx, qword [rbp - 0x80]
cmp rdx, 8
jb 0x140015a67
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140015a62
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140015f53
call fcn.140034040
mov qword [rsp + 0x78], r14
mov qword [rbp - 0x80], 7
mov word [rsp + 0x68], r14w
cmp byte [rsp + 0x40], 0
je 0x140015ab6
mov rdx, qword [rbp - 0x60]
inc rdx
mov rax, r12
cmp rdx, 0x1000
jb 0x140015aae
add rdx, 0x27
mov r12, qword [r12 - 8]
sub rax, r12
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140015f59
mov rcx, r12
call fcn.140034040
xor r12d, r12d
mov qword [rsp + 0x68], r12
mov qword [rsp + 0x78], r12
mov qword [rbp - 0x80], 7
mov word [rsp + 0x68], r12w
mov r8d, 7
lea rdx, str.ENGLISH
lea rcx, [rsp + 0x68]
call fcn.140005c20
nop
mov qword [rbp - 0x78], r12
mov qword [rbp - 0x68], r12
mov qword [rbp - 0x60], 7
mov word [rbp - 0x78], r12w
mov r8d, 8
lea rdx, str.Language
lea rcx, [rbp - 0x78]
call fcn.140005c20
nop
mov rcx, qword [rbx + 0x5f8]
lea r8, [rcx + 8]
lea rax, [rsp + 0x68]
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x78]
lea rdx, [rbp - 0x38]
mov rcx, qword [rcx]
call fcn.1400142c0
nop
mov rdx, qword [rbp - 0x60]
cmp rdx, 8
jb 0x140015b7b
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x78]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140015b76
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140015f5f
call fcn.140034040
mov qword [rbp - 0x68], r12
mov qword [rbp - 0x60], 7
mov word [rbp - 0x78], r12w
mov rdx, qword [rbp - 0x80]
cmp rdx, 8
jb 0x140015bcd
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140015bc8
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140015f65
call fcn.140034040
mov qword [rsp + 0x78], r12
mov qword [rbp - 0x80], 7
mov word [rsp + 0x68], r12w
lea rcx, [rbp - 0x38]
mov r15, qword [rbp - 0x38]
mov rax, qword [rbp - 0x20]
mov r12, qword [rbp - 0x28]
cmp rax, 8
jb 0x140015d19
lea rbx, [r15 + r12*2]
mov rdi, r15
mov r14, r15
jmp 0x140015d25
mov rdx, qword [rdi + 0x18]
cmp rdx, 8
jb 0x140015c48
mov rcx, qword [rdi]
lea rdx, [rdx*2 + 2]
cmp rdx, 0x1000
jb 0x140015c43
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140015f73
mov rcx, r8
call fcn.140034040
mov qword [rdi + 0x10], r12
mov qword [rdi + 0x18], 7
mov word [rdi], r12w
mov edx, 0x28
mov rcx, r14
call fcn.140034040
jmp 0x140015866
sub rbx, r14
cmp rbx, 0xffffffffffffffff
je 0x14001595c
lea rdi, [rbp - 0x78]
cmp byte [rsp + 0x40], 0
cmovne rdi, r12
cmp r15, 0xb
jb 0x140015ce8
lea r14, [r15 + rdi]
lea r8, [r14 - 0xa]
sub r8, rdi
mov edx, 0x54
mov rcx, rdi
call fcn.140036b10
mov rbx, rax
test rax, rax
je 0x140015ce8
nop word [rax + rax]
mov r8d, SafeArrayDestroy
lea rdx, str.Traditional
mov rcx, rbx
call fcn.140036bb0
test eax, eax
je 0x140015d14
inc rbx
lea r8, [r14 - 0xa]
sub r8, rbx
mov edx, 0x54
mov rcx, rbx
call fcn.140036b10
mov rbx, rax
test rax, rax
jne 0x140015cb0
mov rbx, rsi
lea rax, str.Chinese_Traditional
lea rdx, str.Chinese_Simplified
cmp rbx, 0xffffffffffffffff
cmovne rdx, rax
mov r8, rsi
inc r8
cmp word [rdx + r8*2], 0
jne 0x140015d04
jmp 0x140015969
sub rbx, rdi
jmp 0x140015ceb
lea rbx, [rcx + r12*2]
lea rdi, [rbp - 0x38]
lea r14, [rbp - 0x38]
cmp rdi, rbx
je 0x140015d52
sub r14, rdi
nop dword [rax]
movzx ecx, word [rdi]
call fcn.14003fdc0
mov word [r14 + rdi], ax
add rdi, 2
cmp rdi, rbx
jne 0x140015d30
mov rax, qword [rbp - 0x20]
mov r12, qword [rbp - 0x28]
mov r15, qword [rbp - 0x38]
lea rcx, [rbp - 0x38]
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.140006300
cmp rax, 0xffffffffffffffff
je 0x140015d8a
xor r14d, r14d
mov ebx, r14d
jmp 0x140015dbe
lea rcx, [rbp - 0x38]
test bl, bl
cmovne rcx, r15
mov qword [rsp + 0x20], SafeArrayDestroy
lea r9, str.TRADITIONAL
xor r8d, r8d
mov rdx, r12
call fcn.140006300
xor r14d, r14d
mov ebx, r14d
cmp rax, 0xffffffffffffffff
sete bl
inc ebx
mov edx, ebx
call fcn.140011210
lea r15, [0x1400819f0]
mov qword [rsp + 0x60], r15
mov rcx, r15
call fcn.140033608
test eax, eax
jne 0x140015f6b
mov dword [rsp + 0x50], r14d
mov dword [rsp + 0x48], r14d
mov qword [rsp + 0x20], r14
lea r9, [rsp + 0x48]
lea r8d, [rax + 4]
lea rdx, [rsp + 0x50]
mov rdi, qword [rsp + 0x58]
mov rcx, qword [rdi + 8]
call qword [sym.imp.KERNEL32.dll_WriteFile]
mov dword [rsp + 0x48], ebx
mov dword [rsp + 0x50], r14d
mov qword [rsp + 0x20], r14
lea r9, [rsp + 0x50]
mov r8d, 4
lea rdx, [rsp + 0x48]
mov rcx, qword [rdi + 8]
call qword [sym.imp.KERNEL32.dll_WriteFile]
cmp qword [r13 + 0x18], 8
jb 0x140015e40
mov r13, qword [r13]
mov qword [rbp - 0x58], r14
mov qword [rbp - 0x48], r14
mov qword [rbp - 0x40], 7
inc rsi
cmp word [r13 + rsi*2], 0
jne 0x140015e50
mov r8, rsi
mov rdx, r13
lea rcx, [rbp - 0x58]
call fcn.140005c20
lea rdx, [rbp - 0x58]
mov rcx, rdi
call fcn.140012310
nop
mov rcx, r15
call fcn.140033610
nop
mov rdx, qword [rbp - 0x20]
cmp rdx, 8
jb 0x140015ec1
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x38]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140015ebc
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140015f73
call fcn.140034040
mov qword [rbp - 0x28], r14
mov qword [rbp - 0x20], 7
mov word [rbp - 0x38], r14w
mov rdx, qword [rbp]
cmp rdx, 8
jb 0x140015f0e
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x18]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140015f09
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140015f3b
call fcn.140034040
mov rcx, qword [rbp + 8]
xor rcx, rsp
call fcn.140034020
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.14003aa14
nop
call fcn.1400012a0
nop
call fcn.14003aa14
nop
call fcn.14003aa14
nop
call fcn.14003aa14
nop
call fcn.14003aa14
nop
call fcn.14003aa14
nop
call fcn.14003aa14
int3
mov ecx, eax
call fcn.140033190
nop
call fcn.14003aa14
int3