Function at 0x180015cb0
Capabilities:
Create thread
Log keystrokes via polling

Disassembly:
mov rax, rsp
push rbx
push rbp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0xe0
movaps xmmword [rax - 0x48], xmm6
movaps xmmword [rax - 0x58], xmm7
movaps xmmword [rax - 0x68], xmm8
movaps xmmword [rax - 0x78], xmm9
movaps xmmword [rax - 0x88], xmm10
movaps xmmword [rax - 0x98], xmm11
movaps xmmword [rsp + 0x70], xmm12
mov rdi, rcx
xor r12d, r12d
lea ebx, [r12 + 1]
cmp byte [0x180053dae], r12b
jne 0x180015d70
mov dword [0x180054e38], 0xff
mov ecx, ebx
call fcn.18001ff18
mov qword [rsp + 0x128], rax
lea rcx, [rsp + 0x58]
mov qword [rsp + 0x28], rcx
mov dword [rsp + 0x20], r12d
mov r9, rax
lea r8, [0x180019190]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__beginthreadex]
mov qword [rsp + 0x50], rax
test rax, rax
je 0x180015d97
cmp dword [rsp + 0x58], r12d
je 0x180015d8e
movaps xmm0, xmmword [rsp + 0x50]
movdqa xmmword [rsp + 0x60], xmm0
lea rcx, [rsp + 0x60]
call qword [sym.imp.MSVCP140.dll__Thrd_detach]
test eax, eax
jne 0x180015d8e
xorps xmm0, xmm0
movdqa xmmword [rsp + 0x50], xmm0
mov qword [rsp + 0x50], rdi
mov rcx, rdi
call qword [sym.imp.MSVCP140.dll__Mtx_lock]
test eax, eax
je 0x180015da8
mov ecx, 5
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
mov ecx, ebx
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
mov dword [rsp + 0x58], r12d
mov ecx, 6
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
mov eax, dword [rdi + 0x4c]
cmp eax, 0x7fffffff
jne 0x180015dc3
dec eax
mov dword [rdi + 0x4c], eax
mov ecx, 6
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
mov byte [0x180053dae], 1
movabs rsi, 0x5f4b6931816e599b
movss xmm10, dword [0x1800305f8]
cmp byte [rdi + 0x50], 0
je 0x180015eba
cmp byte [rdi + 0x51], 0
je 0x180015eba
mov dword [0x180051ba8], r12d
mov qword [0x180055118], rsi
mov qword [0x180051c70], r12
mov dword [0x180051b98], ebx
call fcn.1800191e0
mov ecx, ebx
call qword [sym.imp.USER32.dll_ShowCursor]
movss xmm8, dword [rdi + 0xb0]
addss xmm8, dword [rdi + 0x80]
addss xmm8, dword [rdi + 0xf8]
movss xmm7, dword [rdi + 0x5c]
movaps xmm6, xmm7
mulss xmm6, xmm10
addss xmm6, dword [rdi + 0x54]
mulss xmm8, xmm10
movaps xmm9, xmm8
addss xmm9, dword [rdi + 0x58]
lea rcx, [rsp + 0x128]
call qword [sym.imp.USER32.dll_GetCursorPos]
movd xmm3, dword [rsp + 0x128]
cvtdq2ps xmm3, xmm3
movd xmm0, dword [rsp + 0x12c]
cvtdq2ps xmm0, xmm0
mulss xmm7, xmm10
movaps xmm2, xmm6
subss xmm2, xmm7
addss xmm7, xmm6
movaps xmm1, xmm8
addss xmm1, xmm9
subss xmm9, xmm8
comiss xmm3, xmm7
ja 0x180015eba
comiss xmm2, xmm3
ja 0x180015eba
comiss xmm0, xmm1
ja 0x180015eba
comiss xmm9, xmm0
ja 0x180015eba
lea rcx, str.Kekkeke
call fcn.180009cc0
mov rax, qword [0x180051d78]
cmp byte [rax + 0x50], 0
je 0x180015ef2
movzx eax, byte [0x1800552a9]
test al, al
je 0x180015ef2
mov dword [0x180051ba8], r12d
mov qword [0x180055118], rsi
mov qword [0x180051c70], r12
mov dword [0x180051b98], ebx
call fcn.1800191e0
mov dword [rdi + 0x12c], 0
mov word [rdi + 0x130], 0
mov byte [rdi + 0x132], 0
mov ecx, 0x74
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rdi + 0x12c], al
mov ecx, 8
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rdi + 0x12d], al
mov ecx, 0xd
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rdi + 0x12e], al
mov ecx, 0x26
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rdi + 0x12f], al
mov ecx, 0x28
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rdi + 0x130], al
mov ecx, 0x25
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rdi + 0x131], al
mov ecx, 0x27
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
mov byte [rdi + 0x132], al
mov rcx, rdi
call fcn.180016750
cmp byte [rdi + 0x50], 0
je 0x180016389
mov dword [0x180051ba8], r12d
movabs rax, 0xfe99b66d079cf6bc
mov qword [0x180055118], rax
mov qword [0x180051c70], r12
mov qword [rsp + 0x138], r12
mov dword [rsp + 0x138], 0x1b
mov rax, qword [rsp + 0x138]
mov qword [0x180051c78], rax
mov qword [rsp + 0x138], r12
mov dword [rsp + 0x138], ebx
mov rax, qword [rsp + 0x138]
mov qword [0x180051c80], rax
mov dword [0x180051b98], 3
call fcn.1800191e0
mov eax, dword [rdi + 0x58]
mov dword [rdi + 0x134], eax
mov rcx, rdi
call fcn.1800176c0
mov rsi, qword [rdi + 0x158]
cmp qword [rdi + 0x150], rsi
je 0x180016211
mov rsi, qword [rsi - 8]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x20]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x18]
mov rdx, rsi
mov rcx, rdi
call fcn.180017c40
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x30]
test rax, rax
je 0x180016211
mov rbp, r12
mov r14, qword [rdi + 0x60]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x30]
cmp rax, r14
ja 0x18001609f
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x30]
mov r14, rax
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x30]
cmp rax, qword [rdi + 0x60]
jbe 0x1800160db
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x38]
cmp rax, qword [rdi + 0x60]
jb 0x1800160db
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x38]
sub rbx, qword [rdi + 0x60]
lea rbp, [rbx + rax]
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x38]
lea r14, [rax + 1]
movss xmm7, dword [rdi + 0x134]
mov rbx, rbp
cmp rbp, r14
jae 0x180016211
lea r15, [r14 - 1]
movss xmm1, dword [rdi + 0xc8]
movsd xmm8, qword [0x180030650]
movsd xmm9, qword [0x180030670]
movsd xmm11, qword [0x180030680]
movss xmm12, dword [0x1800305f4]
nop
movaps xmm6, xmm1
mulss xmm6, xmm10
addss xmm6, xmm7
cvtps2pd xmm0, xmm6
cmp rbx, rbp
jne 0x18001613c
movsd qword [0x180054e48], xmm0
cmp rbx, r15
jne 0x180016149
movsd qword [0x180054e40], xmm0
mov eax, dword [rdi + 0xe4]
mov dword [rsp + 0x28], eax
movss dword [rsp + 0x20], xmm1
movss xmm3, dword [rdi + 0x5c]
movaps xmm2, xmm6
movss xmm1, dword [rdi + 0x54]
call fcn.180018b00
movss xmm1, dword [rdi + 0x54]
cvtps2pd xmm1, xmm1
subsd xmm1, xmm8
movss xmm0, dword [rdi + 0x5c]
cvtps2pd xmm0, xmm0
subsd xmm0, xmm9
mulsd xmm0, xmm11
subsd xmm1, xmm0
cvtpd2ps xmm1, xmm1
mov eax, dword [rdi + 0xe4]
mov dword [rsp + 0x28], eax
movss xmm0, dword [rdi + 0xc8]
movss dword [rsp + 0x20], xmm0
movaps xmm3, xmm12
movaps xmm2, xmm6
call fcn.180018b00
movss xmm1, dword [rdi + 0xc8]
addss xmm7, xmm1
inc rbx
cmp rbx, r14
jb 0x180016120
cmp rbp, r14
jae 0x180016211
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x38]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x38]
cmp rbp, rax
sete bl
mov rax, qword [rsi]
mov rdx, rbp
mov rcx, rsi
call qword [rax + 0x28]
mov r9, rsi
movzx r8d, bl
mov rdx, rax
mov rcx, rdi
call fcn.180017f10
inc rbp
cmp rbp, r14
jb 0x1800161d3
movss xmm0, dword [rdi + 0xf8]
movaps xmm2, xmm0
mulss xmm2, xmm10
addss xmm2, dword [rdi + 0x134]
mov eax, dword [rdi + 0x100]
mov dword [rsp + 0x28], eax
movss dword [rsp + 0x20], xmm0
movss xmm3, dword [rdi + 0x5c]
movss xmm1, dword [rdi + 0x54]
call fcn.180018b00
movss xmm6, dword [rdi + 0xfc]
xorps xmm7, xmm7
lea rbp, str.shop_arrows_upanddown
mov rsi, qword [rdi + 0x158]
cmp qword [rdi + 0x150], rsi
je case.default.0x1800163c4
mov rsi, qword [rsi - 8]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x38]
test rax, rax
jne 0x180016286
movss xmm7, dword [0x1800306b0]
jmp 0x1800162a9
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x38]
lea rbx, [rax + 1]
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x30]
cmp rbx, rax
jne case.default.0x1800163c4
movss xmm7, dword [0x1800306c4]
mulss xmm6, dword [0x180030608]
lea rbp, str.arrowright
mov dword [0x180051ba8], r12d
movabs rax, 0x873c9f3104101dd3
mov qword [0x180055118], rax
lea rax, [rsp + 0x130]
mov qword [0x180051c70], rax
lea rax, [rsp + 0x128]
mov qword [0x180051c78], rax
mov dword [0x180051b98], 2
call fcn.1800191e0
movd xmm1, dword [rsp + 0x128]
cvtdq2ps xmm1, xmm1
movd xmm0, dword [rsp + 0x130]
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
mulss xmm1, xmm6
movss xmm0, dword [rdi + 0xf8]
mulss xmm0, xmm10
addss xmm0, dword [rdi + 0x134]
movss dword [rsp + 0x40], xmm7
mov eax, dword [rdi + 0x104]
mov dword [rsp + 0x38], eax
movss dword [rsp + 0x30], xmm6
movss dword [rsp + 0x28], xmm1
movss dword [rsp + 0x20], xmm0
movss xmm3, dword [rdi + 0x54]
mov r8, rbp
lea rdx, str.commonmenu
call fcn.180018c20
movss xmm0, dword [rdi + 0x134]
addss xmm0, dword [rdi + 0xf8]
movss dword [rdi + 0x134], xmm0
mov rcx, rdi
call fcn.180018800
nop
mov rcx, rdi
lea r11, [rsp + 0xe0]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm9, xmmword [r11 - 0x40]
movaps xmm10, xmmword [r11 - 0x50]
movaps xmm11, xmmword [r11 - 0x60]
movaps xmm12, xmmword [r11 - 0x70]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
jmp qword [sym.imp.MSVCP140.dll__Mtx_unlock]
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], al
add byte [rax], dh
add al, byte [rax]
add byte fs:[rax], al
add byte [rax + rax], ah
add al, bh
cmpsb byte [rsi], byte [rdi]
add byte [rdi - 0x58ef58f8], ah
sbb byte [rdi - 0x58c758d8], ah
sub byte [rdi - 0x58bf58c8], ah
sub byte [rdi - 0x58bf58c8], ah
cmpsq qword [rsi], qword [rdi]
push rax
cmpsd dword [rsi], dword [rdi]
pop rax
cmpsd dword [rsi], dword [rdi]
invalid
mov al, 0xa7
mov eax, 0xc8a7c0a7
cmpsd dword [rsi], dword [rdi]
shl byte [rdi - 0x581f5828], 1
call 0x178ad80ec
cmpsd dword [rsi], dword [rdi]
add byte [rax - 0x565f57f8], ch
test al, 0xa9
mov eax, 0xc8a9c0a9
shr byte [rcx - 0x562f5638], 0xd8
invalid
loopne 0x180059003
shr byte [rcx - 0x562f5638], 0xd8
test eax, 0xa9e8a9e0
invalid
call 0x188af8108
stosb byte [rdi], al
adc byte [rdx + 0x4000aa18], ch
add byte [rax + 2], al
add byte [rax + 0x28000000], dl
add byte [rax + 2], al
add byte [rax + 0x28000000], dl
cmpsb byte [rsi], byte [rdi]
xor byte [rsi - 0x59bf59c8], ah
cmpsb byte [rsi], byte [rdi]
cmp byte [rsi - 0x59b759c0], ah
push rax
cmpsb byte [rsi], byte [rdi]
pop rax
cmpsb byte [rsi], byte [rdi]
invalid
cmpsb byte [rsi], byte [rdi]
mov al, 0xa6
cmpsb byte [rsi], byte [rdi]
mov eax, 0xc8a6c0a6
cmpsb byte [rsi], byte [rdi]
shl byte [rsi - 0x591f5928], 1
call 0x178ac8143
invalid
cmpsb byte [rsi], byte [rdi]
clc
cmpsb byte [rsi], byte [rdi]
add byte [rdi - 0x57bf57c8], ah
test al, 0x50
test al, 0x58
test al, 0x60
test al, 0x68
test al, 0x70
test al, 0x78
test al, 0x80
test al, 0x88
test al, 0x90
test al, 0x98
test al, 0xa0
movabs al, byte [0xc0a8b8a8b0a8a8a8]
invalid
movabs al, byte [0xc0a8b8a8b0a8a8a8]
test al, 0xd8
test al, 0xe0
test al, 0xe8
test al, 0xf8
test al, 0
loopne 0x180059070
call 0x180ae8975
test eax, 0xa938a930
test eax, 0xa950a948
pop rax
test eax, 0xa968a960
jo 0x180059089
js 0x18005908b
sub byte [rcx - 0x566f5678], 0x98
test eax, 0xa9a8a9a0
mov al, 0xa9
mov eax, 0xa9
lock add al, byte [rax]
pop rsp
add byte [rax], al
add byte [rax - 0x3f546f55], cl
scasb al, byte [rdi]
enter 0xffffffffffffd0ae, 0xffffffffffffffae
fsubr dword [rsi - 0x51175120]
invalid
shl byte [rsi - 0x589f58f0], 0xb0
cmpsd dword [rsi], dword [rdi]