Function at 0x140022f70
Capabilities:
Log keystrokes

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
push rdi
sub rsp, 0x20
movzx ebx, cl
lea rsi, [0x140000000]
movzx edi, dl
lea eax, [rbx - 0x13]
cmp eax, 0x92
ja case.0x140022fae.45
cdqe
movzx eax, byte [rsi + rax + 0x23408]
mov ecx, dword [rsi + rax*4 + 0x2339c]
add rcx, rsi
jmp rcx
xor ecx, ecx
mov eax, 0x2a
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x136
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x1d
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x11d
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, reloc.WSOCK32.dll_getservbyport
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x138
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x15b
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x15c
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x45
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x52
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x4f
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x50
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x51
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x4b
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x4c
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x4d
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x47
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x48
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x49
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x53
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x145
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x135
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, reloc.WSOCK32.dll_getservbyname
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x4a
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x4e
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor ecx, ecx
mov eax, 0x137
test dil, dil
cmove cx, ax
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
xor edx, edx
mov ecx, ebx
call qword [sym.imp.USER32.dll_MapVirtualKeyW]
mov edx, eax
test ax, ax
jne 0x140023330
xor ecx, ecx
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
add ebx, 0xfffffffd
cmp ebx, 0xb4
ja case.0x140023350.5
movsxd rax, ebx
movzx eax, byte [rsi + rax + 0x234a8]
mov ecx, dword [rsi + rax*4 + 0x2349c]
add rcx, rsi
jmp rcx
mov r8d, 0x100
or dx, r8w
xor ecx, ecx
test dil, dil
cmove cx, dx
movzx eax, cx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
mov rbx, qword [rsp + 0x30]
mov r8d, 0x100
mov rsi, qword [rsp + 0x38]
movzx eax, dx
mov ecx, eax
or ecx, r8d
test dil, dil
cmovne eax, ecx
add rsp, 0x20
pop rdi
ret