Function at 0x14001f1c0
Capabilities:
Get keyboard layout

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0x50
mov rdi, r8
mov rbp, rdx
mov esi, ecx
test r8, r8
jne 0x14001f1df
xor eax, eax
add rsp, 0x50
pop rdi
pop rsi
pop rbp
ret
mov qword [rsp + 0x70], rbx
mov ebx, dword [r8]
call fcn.14001e700
test esi, esi
js 0x14001f4e8
cmp ebx, 0xe7
je 0x14001f4e8
mov qword [rsp + 0x78], r14
call fcn.14001e930
mov ecx, dword [0x1401dca44]
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
mov rcx, rdi
mov r14, rax
call fcn.14001e2b0
test eax, eax
jne 0x14001f4c4
mov rcx, rdi
call fcn.14001e080
test eax, eax
jne 0x14001f4c4
mov rcx, qword [0x1401dc938]
cmp dword [rcx], eax
jne 0x14001f256
cmp dword [rcx + 0x10], eax
je 0x14001f4ce
cmp dword [rcx + 0x18], eax
je 0x14001f4ce
test esi, esi
jne 0x14001f4ce
test byte [rdi + 8], 0x80
jne 0x14001f4ce
cmp byte [0x1401dc0e6], sil
jne 0x14001f4a1
cmp byte [0x1401dc0e7], sil
jne 0x14001f4a1
cmp byte [0x1401dc12b], sil
jne 0x14001f4a1
mov edx, dword [rdi + 4]
lea r9, [rsp + 0x80]
mov qword [rsp + 0x28], r14
lea r8, [0x1401dc940]
mov ecx, ebx
mov dword [rsp + 0x20], esi
call qword [sym.imp.USER32.dll_ToAsciiEx]
cmp byte [0x1401dc0e1], sil
mov edx, eax
je 0x14001f3c2
cmp ebx, 8
je 0x14001f455
movzx ecx, byte [0x1401c9064]
cmp ebx, ecx
je 0x14001f455
movzx ecx, byte [0x1401c9065]
cmp ebx, ecx
je 0x14001f455
mov r8, qword [0x1401deb48]
cmp r8, 0x80
jae 0x14001f455
movzx eax, byte [rsp + 0x80]
mov rcx, qword [0x1401deb38]
shr edx, 0x1f
mov byte [rsp + 0x30], al
lea rax, [r8 + 1]
mov qword [rsp + 0x38], rbx
mov byte [rsp + 0x40], dl
cmp rcx, rax
ja 0x14001f341
lea edx, [rsi + 1]
lea rcx, [0x1401deb28]
call fcn.140021f60
mov r8, qword [0x1401deb48]
mov rcx, qword [0x1401deb38]
dec rcx
mov rax, rcx
and rax, qword [0x1401deb40]
mov qword [0x1401deb40], rax
add rax, r8
and rax, rcx
mov rcx, qword [0x1401deb30]
lea rbx, [rax*8]
cmp qword [rbx + rcx], 0
jne 0x14001f38d
mov ecx, 0x18
call fcn.14002a9c8
mov rcx, qword [0x1401deb30]
mov qword [rbx + rcx], rax
mov rcx, qword [0x1401deb30]
mov rcx, qword [rbx + rcx]
movups xmm0, xmmword [rsp + 0x30]
movsd xmm1, qword [rsp + 0x40]
movups xmmword [rcx], xmm0
movsd qword [rcx + 0x10], xmm1
inc qword [0x1401deb48]
mov eax, 1
mov r14, qword [rsp + 0x78]
mov rbx, qword [rsp + 0x70]
add rsp, 0x50
pop rdi
pop rsi
pop rbp
ret
test edx, edx
js 0x14001f3f4
cmp edx, 1
je 0x14001f3f4
lea eax, [rbx - 0x10]
cmp eax, 2
jbe 0x14001f4ce
lea eax, [rbx - 0xa0]
cmp eax, 5
jbe 0x14001f4ce
cmp ebx, 0x2d
je 0x14001f4ce
jmp 0x14001f4b4
lea eax, [rbx - 0x60]
lea rcx, [0x1401dcae0]
cmp eax, 9
ja 0x14001f415
movzx edx, byte [rsp + 0x80]
call fcn.1400e4090
jmp 0x14001f4ce
mov dword [0x1401dc930], 0x400
lea rax, [0x1401dc934]
cmp ebx, 8
jne 0x14001f459
lea r9, [0x1401dc930]
mov qword [rsp + 0x20], rax
lea r8, [0x1401dc130]
lea rdx, [0x1401dc12c]
call fcn.1400e4250
mov eax, dword [0x1401dc12c]
cmp eax, 1
jne 0x14001f48b
xor edx, edx
jmp 0x14001f4d0
movzx edx, byte [rsp + 0x80]
lea r9, [0x1401dc130]
mov qword [rsp + 0x28], rax
lea r8, [0x1401dc12c]
lea rax, [0x1401dc930]
mov qword [rsp + 0x20], rax
call fcn.1400e41d0
mov eax, dword [0x1401dc12c]
test eax, eax
jne 0x14001f497
cmp dword [0x1401dc930], eax
je 0x14001f4ce
call fcn.14001f700
jmp 0x14001f3ab
lea eax, [rbx - 0x11]
cmp eax, 1
jbe 0x14001f4ce
lea eax, [rbx - 0xa2]
cmp eax, 3
jbe 0x14001f4ce
cmp byte [0x1401c9066], 0
je 0x14001f4ce
call fcn.14001fa40
jmp 0x14001f4ce
test byte [rdi + 8], 0x80
je 0x14001f3ab
mov edx, esi
mov rcx, qword [0x1401dc0e8]
mov r9, rdi
mov r8, rbp
call qword [sym.imp.USER32.dll_CallNextHookEx]
jmp 0x14001f3b0
mov rcx, qword [0x1401dc0e8]
mov r9, rdi
mov r8, rbp
mov edx, esi
call qword [sym.imp.USER32.dll_CallNextHookEx]
mov rbx, qword [rsp + 0x70]
add rsp, 0x50
pop rdi
pop rsi
pop rbp
ret