Function at 0x140029ef0
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
mov qword [rsp + 0x10], rdx
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x80
mov eax, dword [rdx]
mov rdi, r9
dec eax
mov r15, r8
mov r14, rdx
mov rsi, rcx
cmp eax, 0x39
ja case.0x140029f43.5
lea rcx, [0x140000000]
cdqe
movzx eax, byte [rcx + rax + 0x2ab10]
mov r10d, dword [rcx + rax*4 + 0x2aad8]
add r10, rcx
jmp r10
cmp byte [rsi + 0x1ca], 0
je 0x140029f5b
mov byte [rsi + 0x1ca], 0
jmp case.0x140029f43.5
mov rbx, qword [0x1400d1f58]
test rbx, rbx
je 0x140029f92
cmp byte [rbx + 0x124], 0
je 0x140029f92
cmp byte [rbx + 0x125], 0
je 0x140029f92
call fcn.14003a5e0
xor ebp, ebp
mov rdx, rbx
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], r15
jmp 0x14002a742
lea rdx, [rsi + 0x1d0]
lea rcx, [rsp + 0xb8]
call fcn.140042070
mov rdx, rax
mov rcx, rsi
call fcn.14002bd50
xor ebp, ebp
mov rbx, rax
test rax, rax
je 0x140029ff8
cmp byte [rax + 0x124], bpl
je 0x140029ff8
cmp byte [rax + 0x125], bpl
je 0x140029ff8
call fcn.14003a5e0
mov rdx, rbx
mov r8d, dword [r14]
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], r15
mov r9d, 2
mov dword [rsp + 0x20], 1
mov rcx, rax
call fcn.14003b230
call fcn.14003a5e0
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], r15
jmp 0x14002a73f
mov rbx, qword [0x1400d1f58]
test rbx, rbx
je 0x14002a02e
cmp byte [rbx + 0x124], 0
je 0x14002a02e
cmp byte [rbx + 0x125], 0
jne 0x140029f79
lea rdx, [rsi + 0x1d0]
lea rcx, [rsp + 0xb8]
call fcn.140042070
mov rdx, rax
mov rcx, rsi
call fcn.14002bd50
xor ebp, ebp
mov rbx, rax
test rax, rax
je 0x14002a184
cmp byte [rax + 0x124], bpl
je 0x14002a184
cmp byte [rax + 0x125], bpl
je 0x14002a184
mov rax, qword [rsi + 0x28]
cmp rax, rbx
je 0x14002a0f0
test rax, rax
je 0x14002a0ae
call fcn.14003a5e0
mov rdx, qword [rsi + 0x28]
lea r9d, [rbp + 2]
mov qword [rsp + 0x30], rbx
lea r8d, [rbp + 0x2b]
mov qword [rsp + 0x28], rbp
mov rcx, rax
mov dword [rsp + 0x20], 1
call fcn.14003b230
mov qword [rsi + 0x28], rbx
cmp byte [rbx + 0x124], bpl
je 0x14002a0f0
cmp byte [rbx + 0x125], bpl
je 0x14002a0f0
call fcn.14003a5e0
mov r9d, 2
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], rbp
mov rdx, rbx
mov rcx, rax
mov dword [rsp + 0x20], 1
lea r8d, [r9 + 0x28]
call fcn.14003b230
call fcn.14003a5e0
mov r8d, dword [r14]
mov r9d, 2
mov qword [rsp + 0x30], rbp
mov rdx, rbx
mov qword [rsp + 0x28], r15
mov rcx, rax
mov dword [rsp + 0x20], 1
call fcn.14003b230
test al, al
jne 0x14002a184
mov rbx, qword [rbx + 0xd8]
test rbx, rbx
je 0x14002a184
nop dword [rax + rax]
cmp byte [rbx + 0x126], bpl
jne 0x14002a147
mov rbx, qword [rbx + 0xd8]
test rbx, rbx
jne 0x14002a130
jmp 0x14002a184
cmp byte [rbx + 0x124], bpl
je 0x14002a184
cmp byte [rbx + 0x125], bpl
je 0x14002a184
call fcn.14003a5e0
mov r8d, dword [r14]
mov r9d, 2
mov qword [rsp + 0x30], rbp
mov rdx, rbx
mov qword [rsp + 0x28], r15
mov rcx, rax
mov dword [rsp + 0x20], 1
call fcn.14003b230
mov rbx, qword [rsi + 0x58]
mov byte [rsi + 0x1cc], 1
test rbx, rbx
je 0x14002a1d9
mov rcx, qword [rbx + 8]
cmp byte [rcx + 0x19], bpl
je 0x14002a1d9
mov byte [rcx + 0x19], bpl
xor edx, edx
mov rcx, qword [rcx]
call qword [sym.imp.USER32.dll_ShowWindow]
call fcn.14003a5e0
mov r9d, 2
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], rbp
mov rdx, rbx
mov rcx, rax
mov dword [rsp + 0x20], 1
lea r8d, [r9 + 0x2d]
call fcn.14003b230
call fcn.14003a5e0
mov r8d, dword [r14]
mov r9d, 2
mov qword [rsp + 0x30], rbp
mov rdx, rsi
mov qword [rsp + 0x28], r15
mov rcx, rax
mov dword [rsp + 0x20], 1
call fcn.14003b230
cmp dword [r14], 3
sete al
mov byte [rsi + 0x1ca], al
jmp case.0x140029f43.5
mov rbx, qword [rsi + 8]
call qword [sym.imp.USER32.dll_GetFocus]
cmp rax, qword [rbx]
jne case.0x140029f43.5
lea rdx, [rsi + 0x1d0]
lea rcx, [rsp + 0xb8]
call fcn.140042070
lea rdx, [rsp + 0xb8]
mov rcx, rsi
call fcn.14002bd50
mov rbx, qword [rsp + 0xb8]
xor ebp, ebp
mov rdi, rax
mov r12d, ebp
test rax, rax
je 0x14002a381
xor al, al
test rdi, rdi
je 0x14002a2a6
cmp byte [rdi + 0x124], bpl
je 0x14002a29b
cmp byte [rdi + 0x125], bpl
je 0x14002a29b
call fcn.14003a5e0
mov r8d, dword [r14]
mov rdx, rdi
mov rcx, rax
call fcn.14003b5e0
test al, al
mov r12, rbp
cmovne r12, rdi
mov rdi, qword [rdi + 0xd8]
test al, al
je 0x14002a268
test r12, r12
je 0x14002a381
call fcn.14004e4ec
mov rdi, rax
call fcn.14004e4d0
cqo
xorps xmm1, xmm1
idiv rdi
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rdi
add rax, rcx
mov rcx, qword [rsi + 0x1a8]
cvtsi2sd xmm1, rax
mulsd xmm1, qword [0x1400bf308]
cmp r12, rcx
je 0x14002a345
movaps xmm0, xmm1
subsd xmm0, qword [rsi + 0x1b0]
comisd xmm0, xmmword [0x1400bf3f0]
jae 0x14002a334
mov eax, ebx
sub eax, dword [rsi + 0x1b8]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jg 0x14002a334
mov eax, dword [rsp + 0xbc]
sub eax, dword [rsi + 0x1bc]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jle 0x14002a345
movsd qword [rsi + 0x1b0], xmm1
mov qword [rsi + 0x1a8], r12
jmp 0x14002a352
movsd qword [rsi + 0x1b0], xmm1
test rcx, rcx
je 0x14002a381
call fcn.14003a5e0
mov r8d, dword [r14]
mov r9d, 2
mov rdx, qword [rsi + 0x1a8]
mov rcx, rax
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], r15
mov dword [rsp + 0x20], 1
call fcn.14003b230
mov qword [rsi + 0x1b8], rbx
call fcn.14003a5e0
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], r15
jmp 0x14002a73f
mov rbx, qword [0x1400d1f58]
test rbx, rbx
je 0x14002a3be
cmp byte [rbx + 0x124], 0
je 0x14002a3be
cmp byte [rbx + 0x125], 0
jne 0x140029f79
lea rdx, [rsi + 0x1d0]
lea rcx, [rsp + 0xb8]
call fcn.140042070
mov rdx, rax
mov rcx, rsi
call fcn.14002bd50
mov rcx, qword [rsi + 0x30]
xor ebp, ebp
mov rbx, rax
cmp rcx, rax
jne 0x14002a432
test rcx, rcx
je 0x14002a4de
cmp byte [rcx + 0x124], bpl
je 0x14002a406
cmp byte [rcx + 0x125], bpl
jne 0x14002a41e
mov rax, qword [rcx + 0xd8]
mov qword [rsi + 0x30], rax
mov rcx, rax
test rax, rax
jne 0x14002a3f4
jmp 0x14002a4de
call fcn.14003a5e0
mov rdx, qword [rsi + 0x30]
mov r8d, 7
jmp 0x14002a4be
test rcx, rcx
je 0x14002a48b
cmp byte [rcx + 0x124], bpl
je 0x14002a449
cmp byte [rcx + 0x125], bpl
jne 0x14002a45e
mov rax, qword [rcx + 0xd8]
mov qword [rsi + 0x30], rax
mov rcx, rax
test rax, rax
jne 0x14002a437
jmp 0x14002a48b
call fcn.14003a5e0
mov rdx, qword [rsi + 0x30]
mov r9d, 2
mov qword [rsp + 0x30], rbp
mov rcx, rax
mov qword [rsp + 0x28], r15
mov dword [rsp + 0x20], 1
lea r8d, [r9 + 4]
call fcn.14003b230
test rbx, rbx
je 0x14002a4de
cmp byte [rbx + 0x124], bpl
je 0x14002a4a2
cmp byte [rbx + 0x125], bpl
jne 0x14002a4b0
mov rbx, qword [rbx + 0xd8]
test rbx, rbx
jne 0x14002a490
jmp 0x14002a4de
call fcn.14003a5e0
mov r8d, 5
mov rdx, rbx
mov qword [rsp + 0x30], rbp
mov r9d, 2
mov qword [rsp + 0x28], r15
mov rcx, rax
mov dword [rsp + 0x20], 1
call fcn.14003b230
cmp qword [rsi + 0x30], rbx
je 0x14002a4eb
mov byte [rsi + 0x1cc], bpl
mov qword [rsi + 0x30], rbx
call fcn.14003a5e0
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], r15
jmp 0x14002a73f
xor ebp, ebp
mov rax, qword [rsi + 0x28]
test rax, rax
je 0x140029ff8
cmp byte [rax + 0x124], bpl
je 0x140029ff8
cmp byte [rax + 0x125], bpl
je 0x140029ff8
call fcn.14003a5e0
mov rdx, qword [rsi + 0x28]
jmp 0x140029fd5
xor ebp, ebp
cmp byte [rsi + 0x1c9], bpl
je 0x14002a505
cmp r15, 9
jne 0x14002a505
mov ecx, 0xa1
call qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0xa0
movzx ebx, ax
call qword [sym.imp.USER32.dll_GetKeyState]
or bx, ax
jge 0x14002a585
mov rcx, rsi
call fcn.14002c050
call fcn.14003a5e0
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], r15
jmp 0x14002a73f
mov rcx, qword [rsi + 0x28]
mov qword [rsp + 0xb0], r13
test rcx, rcx
jne 0x14002a5a1
lea rcx, [rsi + 0x1d0]
mov qword [rsi + 0x28], rcx
mov rax, qword [rsi + 0x40]
mov r13, qword [rsi + 0x48]
mov rdx, qword [rsi + 0x48]
sub r13, rax
sar r13, 3
cmp rax, rdx
je 0x14002a5ce
nop dword [rax]
cmp qword [rax], rcx
je 0x14002a5ce
add rax, 8
cmp rax, rdx
jne 0x14002a5c0
sub rax, qword [rsi + 0x40]
sar rax, 3
movsxd rdi, eax
mov r14, rdi
nop dword [rax]
lea ecx, [rax + 1]
mov r12d, ebp
cmp ecx, r13d
lea rax, [rdi + 1]
mov rdi, rbp
cmovl rdi, rax
cmovl r12d, ecx
mov rax, qword [rsi + 0x40]
mov rbx, qword [rax + rdi*8]
cmp byte [rbx + 0x122], bpl
je 0x14002a62a
cmp byte [rbx + 0x124], bpl
je 0x14002a62a
cmp byte [rbx + 0x125], bpl
je 0x14002a62a
mov rax, qword [rbx]
mov dl, 1
mov rcx, rbx
call qword [rax + 0x28]
test al, al
jne 0x14002a632
mov eax, r12d
cmp rdi, r14
jne 0x14002a5e0
mov rax, qword [rsi + 0x28]
mov r13, qword [rsp + 0xb0]
mov r14, qword [rsp + 0xb8]
cmp rbx, rax
je 0x140029ff8
test rax, rax
je 0x14002a685
call fcn.14003a5e0
mov rdx, qword [rsi + 0x28]
mov r9d, 2
mov qword [rsp + 0x30], rbx
mov rcx, rax
mov qword [rsp + 0x28], 1
mov dword [rsp + 0x20], 1
lea r8d, [r9 + 0x29]
call fcn.14003b230
mov qword [rsi + 0x28], rbx
cmp byte [rbx + 0x124], bpl
je 0x140029ff8
cmp byte [rbx + 0x125], bpl
je 0x140029ff8
call fcn.14003a5e0
mov qword [rsp + 0x30], rbp
mov r8d, 0x2a
mov qword [rsp + 0x28], 1
mov rdx, rbx
jmp 0x140029fe2
mov rax, qword [r8]
xor edx, edx
mov rcx, rax
mov r9d, eax
shr rcx, 0x20
xor r8d, r8d
mov dword [rsp + 0x20], ecx
lea rcx, [rsp + 0x40]
call fcn.140008330
lea rcx, [rsp + 0x50]
mov edx, dword [rsi + 0x334]
mov r10d, dword [rax + 0xc]
cmp r10d, edx
mov r8d, dword [rsi + 0x330]
mov r9d, dword [rax + 8]
cmovl r10d, edx
mov edx, dword [rax]
cmp r9d, r8d
mov dword [rsp + 0x20], r10d
cmovl r9d, r8d
mov r8d, dword [rax + 4]
call fcn.140008330
mov rdx, rax
lea rcx, [rsi + 0x1d0]
mov r8b, 1
call fcn.140036b20
call fcn.14003a5e0
xor ebp, ebp
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], rbp
mov rdx, rsi
mov r8d, dword [r14]
mov r9d, 2
mov rcx, rax
mov dword [rsp + 0x20], 1
call fcn.14003b230
lea r11, [rsp + 0x80]
mov al, 1
mov rbx, qword [r11 + 0x40]
mov rbp, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rsi
ret
cmp byte [rsi + 0x194], 0
mov rbx, qword [r8]
mov rcx, qword [r9]
mov qword [rsp + 0x40], rbx
je 0x14002a81b
mov rax, qword [rsi + 0x10]
mov rbp, qword [rax]
mov rdi, qword [rbp + 0x148]
test rdi, rdi
je 0x14002a81b
mov rax, rcx
movaps xmmword [rsp + 0x70], xmm6
shr rax, 0x20
movd xmm6, ecx
mov rcx, rdi
movaps xmmword [rsp + 0x60], xmm7
cvtdq2ps xmm6, xmm6
movd xmm7, eax
mov rax, qword [rdi]
movaps xmm1, xmm6
cvtdq2ps xmm7, xmm7
movaps xmm2, xmm7
call qword [rax + 0x198]
mov rax, qword [rdi]
lea rdx, [rsp + 0xb8]
mov rcx, rdi
mov qword [rsp + 0xb8], rbx
call qword [rax + 0x1d0]
mulss xmm6, dword [0x1400bf1e0]
mulss xmm7, dword [0x1400bf1e0]
movss dword [rbp + 0x178], xmm6
movaps xmm6, xmmword [rsp + 0x70]
movss dword [rbp + 0x17c], xmm7
movaps xmm7, xmmword [rsp + 0x60]
mov rcx, qword [rsi + 8]
lea r8, [rsp + 0x40]
mov r9b, 1
lea rdx, [rsp + 0xb8]
call fcn.140046fb0
mov eax, dword [rsp + 0xbc]
lea rcx, [rsp + 0x50]
mov r9d, dword [rsp + 0xb8]
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], eax
call fcn.140008330
lea rcx, [rsp + 0x40]
jmp 0x14002a6e9
mov rax, qword [rsi + 0x28]
xor ebp, ebp
test rax, rax
je 0x14002a8a7
cmp byte [rax + 0x124], bpl
je 0x14002a8a7
cmp byte [rax + 0x125], bpl
je 0x14002a8a7
call fcn.14003a5e0
mov r8d, dword [r14]
lea r9d, [rbp + 2]
mov rdx, qword [rsi + 0x28]
mov rcx, rax
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], rbp
mov dword [rsp + 0x20], 1
call fcn.14003b230
call fcn.14003a5e0
jmp 0x14002a735
mov rcx, qword [rsi + 0x30]
xor ebp, ebp
test rcx, rcx
je 0x14002a922
nop dword [rax]
cmp byte [rcx + 0x124], bpl
je 0x14002a8d2
cmp byte [rcx + 0x125], bpl
jne 0x14002a8f5
mov rax, qword [rcx + 0xd8]
mov qword [rsi + 0x30], rax
mov rcx, rax
test rax, rax
jne 0x14002a8c0
mov qword [rsi + 0x30], rbp
mov byte [rsi + 0x1cc], bpl
jmp case.0x140029f43.5
call fcn.14003a5e0
mov rdx, qword [rsi + 0x30]
mov r9d, 2
mov qword [rsp + 0x30], rbp
mov rcx, rax
mov qword [rsp + 0x28], r15
mov dword [rsp + 0x20], 1
lea r8d, [r9 + 4]
call fcn.14003b230
mov qword [rsi + 0x30], rbp
mov byte [rsi + 0x1cc], bpl
jmp case.0x140029f43.5
lea rdx, [rsi + 0x1d0]
lea rcx, [rsp + 0xb8]
call fcn.140042070
mov rdx, rax
mov rcx, rsi
call fcn.14002bd50
mov rbx, rax
xor ebp, ebp
mov rax, qword [rsi + 0x38]
cmp rbx, rax
je 0x14002aa6a
cmp edi, 1
jne 0x14002aa01
test rbx, rbx
je 0x140029ff8
cmp byte [rbx + 0x124], bpl
je 0x140029ff8
cmp byte [rbx + 0x125], bpl
je 0x140029ff8
test rax, rax
je 0x14002a9be
call fcn.14003a5e0
mov r8d, dword [r14]
lea r9d, [rbp + 2]
mov rdx, qword [rsi + 0x38]
mov rcx, rax
mov qword [rsp + 0x30], 2
mov qword [rsp + 0x28], rbp
mov dword [rsp + 0x20], edi
call fcn.14003b230
call fcn.14003a5e0
mov r8d, dword [r14]
mov r9d, 2
mov qword [rsp + 0x30], rdi
mov rdx, rbx
mov qword [rsp + 0x28], rbp
mov rcx, rax
mov dword [rsp + 0x20], 1
call fcn.14003b230
mov qword [rsi + 0x38], rbx
call fcn.14003a5e0
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], r15
jmp 0x14002a73f
cmp edi, 2
jne 0x14002aa6a
test rax, rax
je 0x140029ff8
cmp byte [rax + 0x124], bpl
je 0x140029ff8
cmp byte [rax + 0x125], bpl
je 0x140029ff8
call fcn.14003a5e0
mov r8d, dword [r14]
mov r9d, edi
mov rdx, qword [rsi + 0x38]
mov rcx, rax
mov qword [rsp + 0x30], rdi
mov qword [rsp + 0x28], rbp
mov dword [rsp + 0x20], 1
call fcn.14003b230
mov qword [rsi + 0x38], rbp
call fcn.14003a5e0
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], r15
jmp 0x14002a73f
test edi, edi
jne 0x140029ff8
test rbx, rbx
je 0x140029ff8
cmp byte [rbx + 0x124], bpl
je 0x140029ff8
cmp byte [rbx + 0x125], bpl
jmp 0x140029fcb
mov rax, qword [rsi + 0x28]
test rax, rax
je case.0x140029f43.5
cmp byte [rax + 0x124], 0
je case.0x140029f43.5
cmp byte [rax + 0x125], 0
je case.0x140029f43.5
call fcn.14003a5e0
mov rdx, qword [rsi + 0x28]
xor ebp, ebp
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], r15
jmp 0x14002a742