Function at 0x14000f25e
Capabilities:
Get keyboard layout

Disassembly:
mov r11, rsp
mov byte [r11 + 0x18], r8b
mov qword [r11 + 0x10], rdx
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x448
xor r14d, r14d
lea r13, [r9 + 0x1c]
xor r15b, r15b
mov rsi, r9
mov byte [r11 + 8], r15b
movzx eax, r8b
mov rdi, rcx
movzx r12d, r14w
test r9, r9
jne 0x14000f2a3
lea r13, [r11 + 0x20]
mov qword [rsp + 0x440], rbx
test al, al
jne 0x14000f356
mov rbx, rdi
test rdi, rdi
je 0x14000f356
movzx edx, word [rcx]
test dx, dx
je 0x14000f356
nop dword [rax]
lea rcx, [0x1401048e0]
mov eax, SafeArrayAllocDescriptor
nop dword [rax]
cmp dx, ax
je 0x14000f30e
movzx eax, word [rcx + 2]
add rcx, 2
test ax, ax
jne 0x14000f2de
movzx edx, word [rbx + 2]
add rbx, 2
test dx, dx
jne 0x14000f2ce
jmp 0x14000f356
mov rcx, rbx
movzx eax, word [rcx]
cmp ax, 0x20
je 0x14000f328
cmp ax, 9
jne 0x14000f331
add rcx, 2
jmp 0x14000f311
lea rdx, [0x1400f3188]
call fcn.1400ba941
test eax, eax
jne 0x14000f356
test rsi, rsi
je 0x14000f352
mov byte [rsi + 0x20], 1
mov word [rbx], r14w
xor ecx, ecx
mov qword [rsp + 0x438], rbp
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
movzx ecx, word [rdi]
test cx, cx
je 0x14000f42d
cmp word [rdi + 2], r14w
jne 0x14000f39e
mov r8, rax
lea rdx, [rsp + 0x480]
call fcn.140016bc7
movzx r15d, byte [rsp + 0x480]
movzx ebx, al
jmp 0x14000f4a9
movzx ebx, cx
test ebx, 0xffffff80
jne 0x14000f3c4
mov edx, 2
mov ecx, ebx
call fcn.1400bdc33
test eax, eax
je 0x14000f3c4
and ebx, 0xffffffdf
cmp bx, 0x56
jne 0x14000f3f7
movzx ecx, word [rdi + 2]
call fcn.14000be80
cmp ax, 0x4b
jne 0x14000f3f7
xor edx, edx
lea rcx, [rdi + 4]
lea r8d, [rdx + 0x10]
call fcn.1400bf3fd
mov ebx, eax
jmp 0x14000f4a9
mov ebp, r14d
lea rbx, [0x140185b40]
nop dword [rax]
mov rcx, qword [rbx]
mov rdx, rdi
call fcn.1400ba941
test eax, eax
je 0x14000f497
inc ebp
lea rax, [0x140186210]
add rbx, 0x10
cmp rbx, rax
jl 0x14000f404
xor bl, bl
mov rcx, rdi
call fcn.14001694b
movzx r12d, ax
test ax, ax
jne 0x14000f634
mov r8b, 1
lea rdx, [rsp + 0x480]
mov rcx, rdi
call fcn.140067947
mov r12d, eax
test ax, ax
jne 0x14000f610
cmp byte [rsp + 0x4a0], r14b
je 0x14000f5a3
lea rdx, [0x140104944]
mov rcx, qword [0x140189e90]
xor r9d, r9d
or r8, 0xffffffffffffffff
mov byte [rsp + 0x20], 1
call fcn.14009b349
xor eax, eax
jmp 0x14000f6b9
movsxd rax, ebp
lea rcx, [0x140185b40]
add rax, rax
movzx ebx, byte [rcx + rax*8 + 8]
test bl, bl
je 0x14000f42f
movzx ebp, byte [rsp + 0x490]
test bpl, bpl
je 0x14000f52a
lea eax, [rbx + 0x64]
cmp al, 3
ja 0x14000f550
cmp byte [rsp + 0x4a0], r14b
je 0x14000f4e7
lea rdx, [0x1401048e8]
jmp 0x14000f478
mov r9, rdi
lea r8, str.__s__is_not_allowed_as_a_prefix_key.
mov edx, 0x200
lea rcx, [rsp + 0x30]
call fcn.140097786
mov r8, qword [rsp + 0x488]
lea rdx, [rsp + 0x30]
lea rcx, [0x14018e350]
call fcn.14003c3c4
test rsi, rsi
jne 0x14000f490
lea eax, [rsi + 4]
jmp 0x14000f6b9
test rsi, rsi
je 0x14000f550
mov r8d, 2
lea rdx, [0x14010493c]
mov rcx, rdi
call fcn.1400bd57d
test eax, eax
sete al
mov byte [rsi + 0x21], al
lea eax, [rbx - 1]
cmp al, 5
ja 0x14000f564
cmp bl, 3
jne 0x14000f56f
lea eax, [rbx + 0x66]
cmp al, 5
ja 0x14000f576
mov cl, 1
jmp 0x14000f578
xor cl, cl
test r15b, 0x30
je 0x14000f591
lea eax, [rbx - 0x41]
cmp al, 0x19
ja 0x14000f591
and r15b, 0xcf
test cl, cl
je 0x14000f63c
mov byte [r13], 2
jmp 0x14000f63c
cmp word [rdi + 2], r14w
jne 0x14000f5cf
cmp byte [0x14018eee0], r14b
jne 0x14000f5cf
mov eax, 3
test rsi, rsi
cmove r14d, eax
mov eax, r14d
jmp 0x14000f6b9
test rsi, rsi
je 0x14000f490
mov r9, rdi
lea r8, [0x140104948]
mov edx, 0x200
lea rcx, [rsp + 0x30]
call fcn.140097786
lea r8, [0x14010d0d8]
lea rdx, [rsp + 0x30]
lea rcx, [0x14018e350]
call fcn.14003c3c4
xor eax, eax
jmp 0x14000f6b9
movsxd rax, dword [rsp + 0x480]
inc dword [0x14018adf8]
mov rcx, rax
movzx ebx, al
mov byte [r13], 4
lea rax, [0x14018ade0]
mov byte [rcx + rax], 1
movzx ebp, byte [rsp + 0x490]
test bpl, bpl
je 0x14000f65b
test rsi, rsi
je 0x14000f6b4
mov byte [rsi + 0x1b], bl
mov word [rsi + 0x12], r12w
jmp 0x14000f6b4
test rsi, rsi
je 0x14000f6b4
movzx r8d, r15b
mov byte [rsi + 0x1a], bl
and r8b, 0xd5
mov word [rsi + 0x10], r12w
movzx eax, r8b
and al, 0xc0
neg al
movzx eax, r8b
sbb ecx, ecx
and ecx, 8
mov edx, ecx
or edx, 1
and al, 0xc
movzx eax, r8b
cmove edx, ecx
mov ecx, edx
or ecx, 4
and al, 0x30
cmove ecx, edx
mov eax, ecx
or eax, 2
and r8b, 3
cmove eax, ecx
and r15b, 0x2a
or dword [rsi + 0x14], eax
or byte [rsi + 0x18], r15b
mov eax, 1
mov rbp, qword [rsp + 0x438]
mov rbx, qword [rsp + 0x440]
add rsp, 0x448
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
ret