Function at 0x140001f80
Capabilities:
Create thread

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push r12
push r14
push r15
sub rsp, 0xf0
movaps xmmword [rax - 0x28], xmm6
mov rax, qword [0x14004a040]
xor rax, rsp
mov qword [rsp + 0xd0], rax
mov byte [rsp + 0x80], 0
mov ecx, 0x18
call fcn.14003b300
lea rcx, [0x14004a0b4]
mov qword [rax], rcx
lea rcx, [rsp + 0x80]
mov qword [rax + 8], rcx
lea rcx, [0x140001db0]
mov qword [rax + 0x10], rcx
lea rcx, [rsp + 0x98]
mov qword [rsp + 0x28], rcx
xor esi, esi
mov dword [rsp + 0x20], esi
mov r9, rax
lea r8, [0x1400025f0]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__beginthreadex]
mov qword [rsp + 0x90], rax
test rax, rax
je 0x1400025db
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov rcx, rax
lea edx, [rsi + 0x66]
call qword [sym.imp.USER32.dll_LoadIconW]
mov rbx, rax
mov dword [rsp + 0x28], 0x8040
mov dword [rsp + 0x20], esi
xor r9d, r9d
lea edx, [rsi + 0x66]
xor ecx, ecx
lea r8d, [rsi + 1]
call qword [sym.imp.USER32.dll_LoadImageW]
mov dword [0x14004a780], 0x50
mov dword [0x14004a784], 0x40
lea rax, [0x1400011c0]
mov qword [0x14004a788], rax
mov qword [0x14004a790], rsi
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov qword [0x14004a798], rax
mov qword [0x14004a7a0], rbx
mov qword [0x14004a7a8], rsi
xorps xmm0, xmm0
movdqa xmmword [0x14004a7b0], xmm0
lea rdi, str.Trainer_Class
mov qword [0x14004a7c0], rdi
mov qword [0x14004a7c8], rbx
lea rcx, [0x14004a780]
call qword [sym.imp.USER32.dll_RegisterClassExW]
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov ebx, eax
lea ecx, [rsi + 1]
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov ecx, eax
lea eax, [rbx - 0x1f4]
cdq
sub eax, edx
sar eax, 1
mov r8d, eax
lea eax, [rcx - 0x12c]
cdq
sub eax, edx
sar eax, 1
mov qword [rsp + 0x58], rsi
mov rcx, qword [0x14004a798]
mov qword [rsp + 0x50], rcx
mov qword [rsp + 0x48], rsi
mov qword [rsp + 0x40], rsi
mov dword [rsp + 0x38], 0x12c
mov dword [rsp + 0x30], 0x1f4
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], r8d
mov r9d, 0x80000000
lea r8, str.Trainer
mov rdx, rdi
xor ecx, ecx
call qword [sym.imp.USER32.dll_CreateWindowExW]
mov qword [0x14004a760], rax
lea edx, [rsi + 0xa]
mov rcx, rax
call qword [sym.imp.USER32.dll_ShowWindow]
mov rcx, qword [0x14004a760]
call qword [sym.imp.USER32.dll_UpdateWindow]
nop
lea ecx, [rsi + 0x20]
call qword [sym.imp.d3d9.dll_Direct3DCreate9]
mov rcx, rax
mov qword [0x14004a758], rax
test rax, rax
je 0x140002217
mov qword [0x14004a7e0], rsi
mov qword [0x14004a7ec], rsi
mov dword [0x14004a7f4], esi
mov qword [0x14004a7fc], rsi
mov dword [0x14004a804], esi
mov qword [0x14004a814], rsi
mov dword [0x14004a808], 1
mov dword [0x14004a7f8], 1
mov dword [0x14004a7e8], esi
mov dword [0x14004a80c], 1
mov dword [0x14004a810], 0x50
mov dword [0x14004a81c], 1
mov rax, qword [rax]
lea rdx, [0x14004a770]
mov qword [rsp + 0x30], rdx
lea rdx, [0x14004a7e0]
mov qword [rsp + 0x28], rdx
mov dword [rsp + 0x20], 0x40
mov r9, qword [0x14004a760]
xor edx, edx
lea r8d, [rsi + 1]
call qword [rax + 0x80]
nop
call fcn.140001400
cmp byte [0x14004a0b4], 0
je 0x1400024d0
mov edi, 0xff
movabs rbp, 0x4e94914effff
movabs r15, 0x7fffffffff67697f
movabs r12, 0x7fffffffffffffff
movabs r14, 0x431bde82d7b634db
movss xmm6, dword [0x1400435b4]
nop
mov dword [rsp + 0x20], 1
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0xa0]
call qword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x1400022c0
lea rcx, [rsp + 0xa0]
call qword [sym.imp.USER32.dll_TranslateMessage]
lea rcx, [rsp + 0xa0]
call qword [sym.imp.USER32.dll_DispatchMessageW]
mov dword [rsp + 0x20], 1
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0xa0]
call qword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
jne 0x140002282
mov rax, qword [0x14004a838]
test rax, rax
je 0x1400022d5
mov rcx, qword [rax + 0x98]
jmp 0x1400022d8
mov rcx, rsi
cmp qword [rcx + 0x18], 0
jne 0x1400022fb
test rax, rax
je 0x1400022fb
mov rcx, qword [rax + 0x98]
test rcx, rcx
je 0x1400022fb
cmp qword [rcx], 0
je 0x1400022fb
call fcn.14002f680
call fcn.1400303d0
call fcn.1400099a0
nop
movzx ecx, byte [rsp + 0x80]
call fcn.140001870
nop
call fcn.14000b6c0
mov rcx, qword [0x14004a770]
mov rax, qword [rcx]
xor r8d, r8d
lea edx, [r8 + 7]
call qword [rax + 0x1c8]
mov rcx, qword [0x14004a770]
mov rax, qword [rcx]
xor r8d, r8d
lea edx, [r8 + 0x1b]
call qword [rax + 0x1c8]
mov rcx, qword [0x14004a770]
mov rax, qword [rcx]
xor r8d, r8d
mov edx, 0xae
call qword [rax + 0x1c8]
mov rcx, qword [0x14004a770]
mov rax, qword [rcx]
mov dword [rsp + 0x30], esi
movss dword [rsp + 0x28], xmm6
mov dword [rsp + 0x20], 0xff000000
mov r9d, 3
xor r8d, r8d
xor edx, edx
call qword [rax + 0x158]
mov rcx, qword [0x14004a770]
mov rax, qword [rcx]
call qword [rax + 0x148]
test eax, eax
js 0x1400023dc
call fcn.14000bac0
mov rax, qword [0x14004a838]
mov rax, qword [rax + 0x4b10]
mov rcx, qword [rax]
add rcx, 0x48
mov rax, rsi
cmp byte [rcx], sil
cmovne rax, rcx
mov rcx, rax
call fcn.14002f0c0
mov rcx, qword [0x14004a770]
mov rax, qword [rcx]
call qword [rax + 0x150]
mov rcx, qword [0x14004a770]
mov rax, qword [rcx]
mov qword [rsp + 0x20], rsi
xor r9d, r9d
xor r8d, r8d
xor edx, edx
call qword [rax + 0x88]
cmp eax, 0x88760868
jne 0x14000241a
mov rcx, qword [0x14004a770]
mov rax, qword [rcx]
call qword [rax + 0x18]
cmp eax, 0x88760869
jne 0x14000241a
call fcn.140001340
nop
cmp byte [rsp + 0x80], 0
jne 0x140002434
cmp byte [0x14004a768], 0
je 0x140002434
mov byte [0x14004a768], 0
lea rcx, [rsp + 0x60]
call fcn.140001cd0
mov rbx, qword [rsp + 0x60]
cmp rbx, r15
je 0x140002458
setl al
test al, al
je 0x140002458
add rbx, 0x989680
jmp 0x140002460
mov rbx, r12
nop dword [rax + rax]
lea rcx, [rsp + 0x70]
call fcn.140001cd0
mov rax, qword [rsp + 0x70]
cmp rbx, rax
je 0x1400024c3
mov ecx, 1
cmovl ecx, edi
test cl, cl
jle 0x1400024c3
mov rcx, rbx
sub rcx, rax
cmp rcx, rbp
jg 0x1400024b7
mov rax, r14
imul rcx
sar rdx, 0x12
mov rax, rdx
shr rax, 0x3f
add rdx, rax
imul rax, rdx, 0xf4240
cmp rax, rcx
jge 0x1400024ae
inc rdx
mov ecx, edx
call sub.KERNEL32.dll_Sleep
jmp 0x140002460
mov ecx, 0x5265c00
call sub.KERNEL32.dll_Sleep
jmp 0x140002460
cmp byte [0x14004a0b4], 0
jne 0x140002260
cmp dword [rsp + 0x98], 0
jne 0x1400024e6
mov ecx, 1
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
int3
call qword [sym.imp.MSVCP140.dll__Thrd_id]
cmp dword [rsp + 0x98], eax
jne 0x140002501
mov ecx, 5
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
int3
movaps xmm0, xmmword [rsp + 0x90]
movdqa xmmword [rsp + 0x70], xmm0
xor edx, edx
lea rcx, [rsp + 0x70]
call qword [sym.imp.MSVCP140.dll__Thrd_join]
test eax, eax
je 0x14000252c
mov ecx, 2
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
int3
xorps xmm0, xmm0
movdqa xmmword [rsp + 0x90], xmm0
call fcn.1400015d0
nop
mov rcx, qword [0x14004a770]
test rcx, rcx
je 0x140002557
mov rax, qword [rcx]
call qword [rax + 0x10]
mov qword [0x14004a770], rsi
mov rcx, qword [0x14004a758]
test rcx, rcx
je 0x140002570
mov rax, qword [rcx]
call qword [rax + 0x10]
mov qword [0x14004a758], rsi
mov rcx, qword [0x14004a760]
call qword [sym.imp.USER32.dll_DestroyWindow]
mov rdx, qword [0x14004a798]
mov rcx, qword [0x14004a7c0]
call qword [sym.imp.USER32.dll_UnregisterClassW]
cmp dword [rsp + 0x98], 0
je 0x1400025a2
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_terminate]
int3
xor eax, eax
mov rcx, qword [rsp + 0xd0]
xor rcx, rsp
call fcn.14003b2e0
lea r11, [rsp + 0xf0]
mov rbx, qword [r11 + 0x20]
mov rbp, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rdi, qword [r11 + 0x38]
movaps xmm6, xmmword [r11 - 0x10]
mov rsp, r11
pop r15
pop r14
pop r12
ret
mov dword [rsp + 0x98], esi
mov ecx, 6
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
int3