Function at 0x14000da20
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 0x14000da61
lea r13, [r11 + 0x20]
mov qword [rsp + 0x440], rbx
test al, al
jne 0x14000dae6
mov rbx, rdi
test rdi, rdi
je 0x14000dae6
movzx edx, word [rcx]
test dx, dx
je 0x14000dae6
nop dword [rax]
lea rcx, [0x1400de8c0]
mov eax, SafeArrayAllocDescriptor
nop dword [rax]
cmp dx, ax
je 0x14000dab1
movzx eax, word [rcx + 2]
add rcx, 2
test ax, ax
jne 0x14000da90
movzx edx, word [rbx + 2]
add rbx, 2
test dx, dx
jne 0x14000da80
jmp 0x14000dae6
mov rcx, rbx
movzx eax, word [rcx]
cmp ax, 0x20
je 0x14000dac3
cmp ax, 9
jne 0x14000dac9
add rcx, 2
jmp 0x14000dab4
lea rdx, [0x1400cd168]
call fcn.1400a7220
test eax, eax
jne 0x14000dae6
test rsi, rsi
je 0x14000dae2
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 0x14000dba1
cmp word [rdi + 2], r14w
jne 0x14000db2a
mov r8, rax
lea rdx, [rsp + 0x480]
call fcn.140014660
movzx r15d, byte [rsp + 0x480]
movzx ebx, al
jmp 0x14000dc1d
movzx ebx, cx
test ebx, 0xffffff80
jne 0x14000db48
mov edx, 2
mov ecx, ebx
call fcn.1400a9dc4
test eax, eax
je 0x14000db48
and ebx, 0xffffffdf
cmp bx, 0x56
jne 0x14000db73
movzx ecx, word [rdi + 2]
call fcn.14000ad40
cmp ax, 0x4b
jne 0x14000db73
xor edx, edx
lea rcx, [rdi + 4]
lea r8d, [rdx + 0x10]
call fcn.1400ab260
mov ebx, eax
jmp 0x14000dc1d
mov ebp, r14d
lea rbx, [0x1400fab40]
nop dword [rax]
mov rcx, qword [rbx]
mov rdx, rdi
call fcn.1400a7220
test eax, eax
je 0x14000dc0b
inc ebp
lea rax, [0x1400fb210]
add rbx, 0x10
cmp rbx, rax
jl 0x14000db80
xor bl, bl
mov rcx, rdi
call fcn.140014440
movzx r12d, ax
test ax, ax
jne 0x14000dd6e
mov r8b, 1
lea rdx, [rsp + 0x480]
mov rcx, rdi
call fcn.14005c300
mov r12d, eax
test ax, ax
jne 0x14000dd4a
cmp byte [rsp + 0x4a0], r14b
je 0x14000dce5
lea rdx, [0x1400de924]
mov rcx, qword [0x1400fee90]
xor r9d, r9d
or r8, 0xffffffffffffffff
mov byte [rsp + 0x20], 1
call fcn.14008a870
xor eax, eax
jmp 0x14000dde4
movsxd rax, ebp
lea rcx, [0x1400fab40]
add rax, rax
movzx ebx, byte [rcx + rax*8 + 8]
test bl, bl
je 0x14000dba3
movzx ebp, byte [rsp + 0x490]
test bpl, bpl
je 0x14000dc87
lea eax, [rbx + 0x64]
cmp al, 3
ja 0x14000dca9
cmp byte [rsp + 0x4a0], r14b
je 0x14000dc48
lea rdx, [0x1400de8c8]
jmp 0x14000dbec
mov r9, rdi
lea r8, [0x1400de8d0]
mov edx, 0x200
lea rcx, [rsp + 0x30]
call fcn.140087360
mov r8, qword [rsp + 0x488]
lea rdx, [rsp + 0x30]
lea rcx, [0x140103350]
call fcn.140035a70
test rsi, rsi
jne 0x14000dc04
lea eax, [rsi + 4]
jmp 0x14000dde4
test rsi, rsi
je 0x14000dca9
mov r8d, 2
lea rdx, [0x1400de91c]
mov rcx, rdi
call fcn.1400a9808
test eax, eax
sete al
mov byte [rsi + 0x21], al
lea eax, [rbx - 1]
cmp al, 5
ja 0x14000dcb5
cmp bl, 3
jne 0x14000dcbc
lea eax, [rbx + 0x66]
cmp al, 5
ja 0x14000dcc0
mov cl, 1
jmp 0x14000dcc2
xor cl, cl
test r15b, 0x30
je 0x14000dcd3
lea eax, [rbx - 0x41]
cmp al, 0x19
ja 0x14000dcd3
and r15b, 0xcf
test cl, cl
je 0x14000dd76
mov byte [r13], 2
jmp 0x14000dd76
cmp word [rdi + 2], r14w
jne 0x14000dd09
cmp byte [0x140103ee0], r14b
jne 0x14000dd09
mov eax, 3
test rsi, rsi
cmove r14d, eax
mov eax, r14d
jmp 0x14000dde4
test rsi, rsi
je 0x14000dc04
mov r9, rdi
lea r8, [0x1400de928]
mov edx, 0x200
lea rcx, [rsp + 0x30]
call fcn.140087360
lea r8, [0x1400e70b8]
lea rdx, [rsp + 0x30]
lea rcx, [0x140103350]
call fcn.140035a70
xor eax, eax
jmp 0x14000dde4
movsxd rax, dword [rsp + 0x480]
inc dword [0x1400ffdf8]
mov rcx, rax
movzx ebx, al
mov byte [r13], 4
lea rax, [0x1400ffde0]
mov byte [rcx + rax], 1
movzx ebp, byte [rsp + 0x490]
test bpl, bpl
je 0x14000dd8a
test rsi, rsi
je 0x14000dddf
mov byte [rsi + 0x1b], bl
mov word [rsi + 0x12], r12w
jmp 0x14000dddf
test rsi, rsi
je 0x14000dddf
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