Function at 0x14000de30
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 0x14000de71
lea r13, [r11 + 0x20]
mov qword [rsp + 0x440], rbx
test al, al
jne 0x14000def6
mov rbx, rdi
test rdi, rdi
je 0x14000def6
movzx edx, word [rcx]
test dx, dx
je 0x14000def6
nop dword [rax]
lea rcx, [0x14010ca60]
mov eax, SafeArrayAllocDescriptor
nop dword [rax]
cmp dx, ax
je 0x14000dec1
movzx eax, word [rcx + 2]
add rcx, 2
test ax, ax
jne 0x14000dea0
movzx edx, word [rbx + 2]
add rbx, 2
test dx, dx
jne 0x14000de90
jmp 0x14000def6
mov rcx, rbx
movzx eax, word [rcx]
cmp ax, 0x20
je 0x14000ded3
cmp ax, 9
jne 0x14000ded9
add rcx, 2
jmp 0x14000dec4
lea rdx, [0x1400f9450]
call fcn.1400c8580
test eax, eax
jne 0x14000def6
test rsi, rsi
je 0x14000def2
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 0x14000dfb1
cmp word [rdi + 2], r14w
jne 0x14000df3a
mov r8, rax
lea rdx, [rsp + 0x480]
call fcn.140014db0
movzx r15d, byte [rsp + 0x480]
movzx ebx, al
jmp 0x14000e02d
movzx ebx, cx
test ebx, 0xffffff80
jne 0x14000df58
mov edx, 2
mov ecx, ebx
call fcn.1400cb124
test eax, eax
je 0x14000df58
and ebx, 0xffffffdf
cmp bx, 0x56
jne 0x14000df83
movzx ecx, word [rdi + 2]
call fcn.14000b150
cmp ax, 0x4b
jne 0x14000df83
xor edx, edx
lea rcx, [rdi + 4]
lea r8d, [rdx + 0x10]
call fcn.1400cc5c8
mov ebx, eax
jmp 0x14000e02d
mov ebp, r14d
lea rbx, str.Numpad0
nop dword [rax]
mov rcx, qword [rbx]
mov rdx, rdi
call fcn.1400c8580
test eax, eax
je 0x14000e01b
inc ebp
lea rax, [0x140130210]
add rbx, 0x10
cmp rbx, rax
jl 0x14000df90
xor bl, bl
mov rcx, rdi
call fcn.140014b90
movzx r12d, ax
test ax, ax
jne 0x14000e17e
mov r8b, 1
lea rdx, [rsp + 0x480]
mov rcx, rdi
call fcn.14006ea50
mov r12d, eax
test ax, ax
jne 0x14000e15a
cmp byte [rsp + 0x4a0], r14b
je 0x14000e0f5
lea rdx, [0x14010cac4]
mov rcx, qword [0x140134400]
xor r9d, r9d
or r8, 0xffffffffffffffff
mov byte [rsp + 0x20], 1
call fcn.1400ab090
xor eax, eax
jmp 0x14000e1f4
movsxd rax, ebp
lea rcx, str.Numpad0
add rax, rax
movzx ebx, byte [rcx + rax*8 + 8]
test bl, bl
je 0x14000dfb3
movzx ebp, byte [rsp + 0x490]
test bpl, bpl
je 0x14000e097
lea eax, [rbx + 0x64]
cmp al, 3
ja 0x14000e0b9
cmp byte [rsp + 0x4a0], r14b
je 0x14000e058
lea rdx, [0x14010ca68]
jmp 0x14000dffc
mov r9, rdi
lea r8, str.__s__is_not_allowed_as_a_prefix_key.
mov edx, 0x200
lea rcx, [rsp + 0x30]
call fcn.1400a6680
mov r8, qword [rsp + 0x488]
lea rdx, [rsp + 0x30]
lea rcx, [0x1401395c0]
call fcn.1400410d0
test rsi, rsi
jne 0x14000e014
lea eax, [rsi + 4]
jmp 0x14000e1f4
test rsi, rsi
je 0x14000e0b9
mov r8d, 2
lea rdx, [0x14010cabc]
mov rcx, rdi
call fcn.1400cab68
test eax, eax
sete al
mov byte [rsi + 0x21], al
lea eax, [rbx - 1]
cmp al, 5
ja 0x14000e0c5
cmp bl, 3
jne 0x14000e0cc
lea eax, [rbx + 0x66]
cmp al, 5
ja 0x14000e0d0
mov cl, 1
jmp 0x14000e0d2
xor cl, cl
test r15b, 0x30
je 0x14000e0e3
lea eax, [rbx - 0x41]
cmp al, 0x19
ja 0x14000e0e3
and r15b, 0xcf
test cl, cl
je 0x14000e186
mov byte [r13], 2
jmp 0x14000e186
cmp word [rdi + 2], r14w
jne 0x14000e119
cmp byte [0x14013a180], r14b
jne 0x14000e119
mov eax, 3
test rsi, rsi
cmove r14d, eax
mov eax, r14d
jmp 0x14000e1f4
test rsi, rsi
je 0x14000e014
mov r9, rdi
lea r8, [0x14010cac8]
mov edx, 0x200
lea rcx, [rsp + 0x30]
call fcn.1400a6680
lea r8, [0x140117ad8]
lea rdx, [rsp + 0x30]
lea rcx, [0x1401395c0]
call fcn.1400410d0
xor eax, eax
jmp 0x14000e1f4
movsxd rax, dword [rsp + 0x480]
inc dword [0x1401353cc]
mov rcx, rax
movzx ebx, al
mov byte [r13], 4
lea rax, [0x1401353b0]
mov byte [rcx + rax], 1
movzx ebp, byte [rsp + 0x490]
test bpl, bpl
je 0x14000e19a
test rsi, rsi
je 0x14000e1ef
mov byte [rsi + 0x1b], bl
mov word [rsi + 0x12], r12w
jmp 0x14000e1ef
test rsi, rsi
je 0x14000e1ef
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