Function at 0x14000dad0
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 0x14000db11
lea r13, [r11 + 0x20]
mov qword [rsp + 0x440], rbx
test al, al
jne 0x14000db96
mov rbx, rdi
test rdi, rdi
je 0x14000db96
movzx edx, word [rcx]
test dx, dx
je 0x14000db96
nop dword [rax]
lea rcx, [0x1400df9b0]
mov eax, SafeArrayAllocDescriptor
nop dword [rax]
cmp dx, ax
je 0x14000db61
movzx eax, word [rcx + 2]
add rcx, 2
test ax, ax
jne 0x14000db40
movzx edx, word [rbx + 2]
add rbx, 2
test dx, dx
jne 0x14000db30
jmp 0x14000db96
mov rcx, rbx
movzx eax, word [rcx]
cmp ax, 0x20
je 0x14000db73
cmp ax, 9
jne 0x14000db79
add rcx, 2
jmp 0x14000db64
lea rdx, [0x1400ce1a0]
call fcn.1400a7520
test eax, eax
jne 0x14000db96
test rsi, rsi
je 0x14000db92
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 0x14000dc51
cmp word [rdi + 2], r14w
jne 0x14000dbda
mov r8, rax
lea rdx, [rsp + 0x480]
call fcn.1400146f0
movzx r15d, byte [rsp + 0x480]
movzx ebx, al
jmp 0x14000dccd
movzx ebx, cx
test ebx, 0xffffff80
jne 0x14000dbf8
mov edx, 2
mov ecx, ebx
call fcn.1400aa0c4
test eax, eax
je 0x14000dbf8
and ebx, 0xffffffdf
cmp bx, 0x56
jne 0x14000dc23
movzx ecx, word [rdi + 2]
call fcn.14000ad60
cmp ax, 0x4b
jne 0x14000dc23
xor edx, edx
lea rcx, [rdi + 4]
lea r8d, [rdx + 0x10]
call fcn.1400ab560
mov ebx, eax
jmp 0x14000dccd
mov ebp, r14d
lea rbx, str.Numpad0
nop dword [rax]
mov rcx, qword [rbx]
mov rdx, rdi
call fcn.1400a7520
test eax, eax
je 0x14000dcbb
inc ebp
lea rax, [0x1400fd210]
add rbx, 0x10
cmp rbx, rax
jl 0x14000dc30
xor bl, bl
mov rcx, rdi
call fcn.1400144d0
movzx r12d, ax
test ax, ax
jne 0x14000de1e
mov r8b, 1
lea rdx, [rsp + 0x480]
mov rcx, rdi
call fcn.14005bc50
mov r12d, eax
test ax, ax
jne 0x14000ddfa
cmp byte [rsp + 0x4a0], r14b
je 0x14000dd95
lea rdx, [0x1400dfa14]
mov rcx, qword [0x140100e80]
xor r9d, r9d
or r8, 0xffffffffffffffff
mov byte [rsp + 0x20], 1
call fcn.14008ab40
xor eax, eax
jmp 0x14000de94
movsxd rax, ebp
lea rcx, str.Numpad0
add rax, rax
movzx ebx, byte [rcx + rax*8 + 8]
test bl, bl
je 0x14000dc53
movzx ebp, byte [rsp + 0x490]
test bpl, bpl
je 0x14000dd37
lea eax, [rbx + 0x64]
cmp al, 3
ja 0x14000dd59
cmp byte [rsp + 0x4a0], r14b
je 0x14000dcf8
lea rdx, [0x1400df9b8]
jmp 0x14000dc9c
mov r9, rdi
lea r8, str.__s__is_not_allowed_as_a_prefix_key.
mov edx, 0x200
lea rcx, [rsp + 0x30]
call fcn.140087630
mov r8, qword [rsp + 0x488]
lea rdx, [rsp + 0x30]
lea rcx, [0x140105340]
call fcn.140035ad0
test rsi, rsi
jne 0x14000dcb4
lea eax, [rsi + 4]
jmp 0x14000de94
test rsi, rsi
je 0x14000dd59
mov r8d, 2
lea rdx, [0x1400dfa0c]
mov rcx, rdi
call fcn.1400a9b08
test eax, eax
sete al
mov byte [rsi + 0x21], al
lea eax, [rbx - 1]
cmp al, 5
ja 0x14000dd65
cmp bl, 3
jne 0x14000dd6c
lea eax, [rbx + 0x66]
cmp al, 5
ja 0x14000dd70
mov cl, 1
jmp 0x14000dd72
xor cl, cl
test r15b, 0x30
je 0x14000dd83
lea eax, [rbx - 0x41]
cmp al, 0x19
ja 0x14000dd83
and r15b, 0xcf
test cl, cl
je 0x14000de26
mov byte [r13], 2
jmp 0x14000de26
cmp word [rdi + 2], r14w
jne 0x14000ddb9
cmp byte [0x140105ed0], r14b
jne 0x14000ddb9
mov eax, 3
test rsi, rsi
cmove r14d, eax
mov eax, r14d
jmp 0x14000de94
test rsi, rsi
je 0x14000dcb4
mov r9, rdi
lea r8, [0x1400dfa18]
mov edx, 0x200
lea rcx, [rsp + 0x30]
call fcn.140087630
lea r8, [0x1400cbf2c]
lea rdx, [rsp + 0x30]
lea rcx, [0x140105340]
call fcn.140035ad0
xor eax, eax
jmp 0x14000de94
movsxd rax, dword [rsp + 0x480]
inc dword [0x140101dec]
mov rcx, rax
movzx ebx, al
mov byte [r13], 4
lea rax, [0x140101dd0]
mov byte [rcx + rax], 1
movzx ebp, byte [rsp + 0x490]
test bpl, bpl
je 0x14000de3a
test rsi, rsi
je 0x14000de8f
mov byte [rsi + 0x1b], bl
mov word [rsi + 0x12], r12w
jmp 0x14000de8f
test rsi, rsi
je 0x14000de8f
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