Function at 0x14001cba0
Capabilities:
Get keyboard layout

Disassembly:
push rsi
push r12
push r15
sub rsp, 0x60
mov rsi, r8
mov r12, rdx
mov r15d, ecx
test r8, r8
jne 0x14001cbc4
xor eax, eax
add rsp, 0x60
pop r15
pop r12
pop rsi
ret
mov qword [rsp + 0x58], rdi
mov edi, dword [r8]
call fcn.14001c0c0
test r15d, r15d
js 0x14001d09f
cmp edi, 0xe7
je 0x14001d09f
mov qword [rsp + 0x80], rbx
call fcn.14001c360
mov ecx, dword [0x140126890]
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
mov rbx, rax
mov rax, qword [0x140126770]
cmp rbx, rax
je 0x14001cc20
cmp rbx, qword [0x140126768]
cmovne rax, rbx
mov qword [0x140126770], rax
mov rcx, rsi
call fcn.14001bce0
test eax, eax
jne 0x14001d074
mov rcx, rsi
call fcn.14001ba90
test eax, eax
jne 0x14001d074
mov rax, qword [0x140126778]
mov qword [rsp + 0x88], rbp
mov qword [rsp + 0x50], r14
cmp dword [rax], 0
jne 0x14001cd67
cmp dword [rax + 0x10], 0
je 0x14001cc6d
cmp dword [rax + 0x18], 0
jne 0x14001cd67
test r15d, r15d
jne 0x14001cf3b
test byte [rsi + 8], 0x80
jne 0x14001cf3b
mov rax, qword [0x140126768]
cmp rbx, rax
jne 0x14001cf3b
test rbx, rbx
je 0x14001cf3b
mov rbp, qword [0x140126770]
xor r14d, r14d
cmp dword [0x14012693c], r14d
je 0x14001ccd6
test rbp, rbp
je 0x14001cce0
cmp rbp, rax
je 0x14001ccd6
xor edx, edx
mov rcx, rbp
call qword [sym.imp.USER32.dll_ActivateKeyboardLayout]
mov rax, qword [0x140126768]
mov rbp, qword [0x140126770]
mov dword [0x14012693c], r14d
test rbp, rbp
je 0x14001cce0
cmp rbp, rax
jne 0x14001cce7
mov rbp, qword [0x140126760]
mov edx, dword [rsi + 4]
lea r9, [rsp + 0x30]
mov qword [rsp + 0x28], rax
lea r8, [0x140126780]
mov ecx, edi
mov dword [rsp + 0x20], r14d
call qword [sym.imp.USER32.dll_ToAsciiEx]
mov edx, dword [rsi + 4]
lea r9, [rsp + 0x90]
lea r8, [0x140126780]
mov qword [rsp + 0x28], rbp
mov ecx, edi
mov dword [rsp + 0x20], r14d
mov ebx, eax
call qword [sym.imp.USER32.dll_ToAsciiEx]
cmp ebx, 1
jne 0x14001cf3b
cmp eax, ebx
jne 0x14001cf3b
movzx eax, byte [rsp + 0x90]
cmp byte [rsp + 0x30], al
je 0x14001cf3b
mov edx, ebx
lea rcx, [rsp + 0x90]
call fcn.14001da60
mov eax, ebx
jmp 0x14001cf51
test r15d, r15d
jne 0x14001cf3b
test byte [rsi + 8], 0x80
jne 0x14001cf3b
mov eax, dword [rax + 0x840]
xor r14d, r14d
sub eax, 4
cmp eax, 1
jbe 0x14001cdaa
cmp dword [0x14012693c], r14d
je 0x14001cdaa
mov rcx, qword [0x140126770]
xor edx, edx
call qword [sym.imp.USER32.dll_ActivateKeyboardLayout]
mov dword [0x14012693c], r14d
movzx edx, byte [0x140126899]
movzx eax, byte [0x14012689a]
test dl, dl
jne 0x14001cdc9
test al, al
jne 0x14001cdc9
cmp byte [0x14012689e], r14b
je 0x14001cdf5
cmp rbx, qword [0x140126760]
movzx ecx, byte [0x140113288]
je 0x14001d052
test dl, dl
je 0x14001d052
test al, al
je 0x14001d052
test cl, cl
je 0x14001d052
mov edx, dword [rsi + 4]
lea r9, [rsp + 0x98]
mov qword [rsp + 0x28], rbx
lea r8, [0x140126780]
mov ecx, edi
mov dword [rsp + 0x20], r14d
call qword [sym.imp.USER32.dll_ToAsciiEx]
mov ebp, eax
cmp eax, 1
jne 0x14001ce9b
mov rcx, qword [0x140126760]
test rcx, rcx
je 0x14001ce9b
mov rax, qword [0x140126768]
test rax, rax
je 0x14001ce9b
cmp byte [0x140126899], r14b
jne 0x14001ce9b
cmp byte [0x14012689a], r14b
jne 0x14001ce9b
cmp rbx, rax
jne 0x14001ce9b
mov edx, dword [rsi + 4]
lea r9, [rsp + 0x90]
mov qword [rsp + 0x28], rcx
lea r8, [0x140126780]
mov ecx, edi
mov dword [rsp + 0x20], r14d
call qword [sym.imp.USER32.dll_ToAsciiEx]
cmp eax, ebp
jne 0x14001ce9b
movzx eax, word [rsp + 0x90]
movzx edx, word [rsp + 0x98]
cmp al, dl
je 0x14001cea3
movzx edx, ax
mov word [rsp + 0x98], ax
mov r14d, ebp
jmp 0x14001cea3
movzx edx, word [rsp + 0x98]
cmp byte [0x140125f15], 0
je 0x14001cf0c
cmp edi, 8
je 0x14001cfd8
movzx eax, byte [0x140113289]
cmp edi, eax
je 0x14001cfd8
movzx ecx, byte [0x14011328a]
cmp edi, ecx
je 0x14001cfd8
cmp qword [0x1401289a8], 0x80
jae 0x14001cfd8
test ebp, ebp
mov byte [rsp + 0x38], dl
lea rdx, [rsp + 0x38]
mov qword [rsp + 0x40], rdi
lea rcx, [0x140128988]
sets byte [rsp + 0x48]
call fcn.140022c30
mov eax, 1
jmp 0x14001cf51
test ebp, ebp
js 0x14001cf75
cmp ebp, 1
je 0x14001cf75
lea eax, [rdi - 0x10]
cmp eax, 2
jbe 0x14001cf3b
lea eax, [rdi - 0xa0]
cmp eax, 5
jbe 0x14001cf3b
cmp edi, 0x2d
je 0x14001cf3b
cmp byte [0x140113288], 0
je 0x14001cf3b
call fcn.14001d5d0
mov r9, rsi
mov r8, r12
mov edx, r15d
mov rcx, qword [0x140125f18]
call qword [sym.imp.USER32.dll_CallNextHookEx]
mov rbp, qword [rsp + 0x88]
mov r14, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x80]
mov rdi, qword [rsp + 0x58]
add rsp, 0x60
pop r15
pop r12
pop rsi
ret
lea eax, [rdi - 0x60]
mov byte [rsp + 0x90], dl
lea rcx, [0x140126940]
cmp eax, 9
ja 0x14001cf98
movzx edx, dl
call fcn.1400bf7a0
jmp 0x14001d01e
mov dword [0x140126754], 0x400
lea rax, [0x140126758]
cmp edi, 8
jne 0x14001cfe5
lea r9, [0x140126754]
mov qword [rsp + 0x20], rax
lea r8, [0x140125f50]
lea rdx, [0x140126750]
call fcn.1400bf960
mov eax, dword [0x140126750]
cmp eax, 1
jne 0x14001d012
mov r9, rsi
mov r8, r12
xor edx, edx
jmp 0x14001cf44
mov qword [rsp + 0x28], rax
lea r9, [0x140125f50]
lea rax, [0x140126754]
movzx edx, dl
lea r8, [0x140126750]
mov qword [rsp + 0x20], rax
call fcn.1400bf8e0
mov eax, dword [0x140126750]
test eax, eax
jne 0x14001d043
cmp dword [0x140126754], eax
jne 0x14001d043
test r14d, r14d
je 0x14001cf3b
mov edx, 1
lea rcx, [rsp + 0x90]
call fcn.14001da60
mov eax, 1
jmp 0x14001cf51
call fcn.14001d2b0
mov eax, 1
jmp 0x14001cf51
lea eax, [rdi - 0x11]
cmp eax, 1
jbe 0x14001cf3b
lea eax, [rdi - 0xa2]
cmp eax, 3
jbe 0x14001cf3b
test cl, cl
jmp 0x14001cf34
test byte [rsi + 8], 0x80
je 0x14001d095
mov rcx, qword [0x140125f18]
mov r9, rsi
mov r8, r12
mov edx, r15d
call qword [sym.imp.USER32.dll_CallNextHookEx]
jmp 0x14001cf5e
mov eax, 1
jmp 0x14001cf5e
mov rcx, qword [0x140125f18]
mov r9, rsi
mov r8, r12
mov edx, r15d
call qword [sym.imp.USER32.dll_CallNextHookEx]
mov rdi, qword [rsp + 0x58]
add rsp, 0x60
pop r15
pop r12
pop rsi
ret