Function at 0x14001b070
Capabilities:
Get keyboard layout

Disassembly:
mov qword [rsp + 0x18], rbx
mov byte [rsp + 0x10], dl
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x70
xor r14d, r14d
movzx ebp, r9b
xor r13b, r13b
mov rsi, r8
mov byte [rsp + 0xb0], r13b
movzx r12d, dl
mov rdi, rcx
movzx r15d, r14w
mov rbx, rcx
nop dword [rax + rax]
movzx eax, word [rbx]
cmp eax, 0x7f
ja 0x14001b0c9
mov ecx, eax
call fcn.1400ccf80
test eax, eax
jne 0x14001b0c9
cmp word [rbx], 0x5f
jne 0x14001b0cf
add rbx, 2
jmp 0x14001b0b0
cmp rbx, rdi
jne 0x14001b0de
cmp word [rdi], r14w
je 0x14001b0de
add rbx, 2
test r12b, r12b
jne 0x14001b15f
movzx eax, word [rbx]
cmp ax, 0x20
je 0x14001b0f2
cmp ax, 9
jne 0x14001b15f
mov rcx, rbx
cmp ax, 0x20
je 0x14001b101
cmp word [rcx], 9
jne 0x14001b10b
movzx eax, word [rcx + 2]
add rcx, 2
jmp 0x14001b0f5
lea rdx, [0x140109aa8]
call fcn.1400c8244
test eax, eax
jne 0x14001b15f
test bpl, bpl
jne 0x14001b4aa
test rsi, rsi
je 0x14001b12d
mov byte [rsi + 0x16], 1
mov r8d, SafeArrayAllocDescriptor
lea rcx, [rsp + 0x30]
mov rdx, rdi
call fcn.1400d6d74
sub rbx, rdi
mov word [rsp + 0x6e], r14w
sar rbx, 1
cmp rbx, 0x20
jae 0x14001b158
mov word [rsp + rbx*2 + 0x30], r14w
lea rdi, [rsp + 0x30]
jmp 0x14001b194
cmp word [rbx], r14w
je 0x14001b18b
test rsi, rsi
je 0x14001b181
xor r8d, r8d
lea rcx, str.Invalid_hotkey.
mov rdx, rdi
call fcn.140011730
jmp 0x14001b4af
mov eax, 4
jmp 0x14001b4af
test bpl, bpl
jne 0x14001b4aa
lea r12, [rsi + 0x12]
test rsi, rsi
jne 0x14001b1a2
lea r12, [rsp + 0x20]
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
movzx r10d, word [rdi]
test r10w, r10w
je 0x14001b285
movzx edx, word [rdi + 2]
movzx ecx, r10w
test dx, dx
jne 0x14001b1e9
mov r9b, 1
lea rdx, [rsp + 0xb0]
mov r8, rax
call fcn.140024160
movzx r13d, byte [rsp + 0xb0]
movzx ebx, al
jmp 0x14001b35c
mov r8d, 0xffdf
lea eax, [r10 - 0x61]
and cx, r8w
cmp ax, 0x19
cmova cx, r10w
cmp cx, 0x56
jne 0x14001b24e
movzx ecx, dx
lea eax, [rdx - 0x61]
and cx, r8w
cmp ax, 0x19
cmova cx, dx
cmp cx, 0x4b
jne 0x14001b24e
lea rcx, [rdi + 4]
mov r8d, reloc.WSOCK32.dll_recv
lea rdx, [rsp + 0xb0]
call fcn.1400ce848
movzx ecx, al
mov ebx, r14d
mov rax, qword [rsp + 0xb0]
cmp word [rax], bx
cmove ebx, ecx
jmp 0x14001b35c
mov ebp, r14d
lea rbx, str.Numpad0
nop dword [rax + rax]
mov rcx, qword [rbx]
mov rdx, rdi
call fcn.1400c8244
test eax, eax
je 0x14001b34a
inc ebp
lea rax, [0x140129c70]
add rbx, 0x10
cmp rbx, rax
jl 0x14001b260
xor bl, bl
xor bpl, bpl
xor edx, edx
mov rcx, rdi
call fcn.140023f10
movzx r15d, ax
test ax, ax
jne 0x14001b4c7
movzx eax, word [rdi]
mov rbx, rdi
mov ebp, r14d
mov ecx, 3
test ax, ax
je 0x14001b3f6
cmp ax, 0x30
jb 0x14001b2f3
nop
cmp ax, 0x39
ja 0x14001b2d4
movzx eax, word [rbx + 2]
add rbx, 2
cmp ax, 0x30
jae 0x14001b2c0
cmp rbx, rdi
jbe 0x14001b2f3
mov rcx, rdi
call fcn.1400a5590
dec eax
mov ecx, 3
cmp eax, 0xf
ja 0x14001b3f6
mov ebp, eax
mov r8, rcx
lea rdx, [0x140110d28]
mov rcx, rbx
call fcn.1400c8430
test eax, eax
jne 0x14001b3f1
lea rcx, [rbx + 6]
lea rdx, [rsp + 0xb0]
call fcn.1400a5430
mov rcx, qword [rsp + 0xb0]
cmp word [rcx], r14w
jne 0x14001b3f1
lea ecx, [rax - 1]
cmp ecx, 0x1f
mov ecx, 3
ja 0x14001b3f6
lea r15d, [rax + 0xb]
jmp 0x14001b3f9
movsxd rax, ebp
lea rbx, str.Numpad0
add rax, rax
movzx ebx, byte [rbx + rax*8 + 8]
movzx ebp, bl
test bl, bl
je 0x14001b28a
movzx r14d, byte [rsp + 0xb8]
test r14b, r14b
je 0x14001b393
lea eax, [rbp + 0x64]
cmp al, 3
ja 0x14001b3b5
xor r8d, r8d
lea rcx, str.Unsupported_prefix_key.
mov rdx, rdi
call fcn.140011730
jmp 0x14001b4af
test rsi, rsi
je 0x14001b3b5
mov r8d, 2
lea rdx, [0x14010a738]
mov rcx, rdi
call fcn.1400c8430
test eax, eax
sete al
mov byte [rsi + 0x17], al
lea eax, [rbp - 1]
cmp al, 5
ja 0x14001b3c1
cmp bl, 3
jne 0x14001b3c8
lea eax, [rbp + 0x66]
cmp al, 5
ja 0x14001b3cc
mov cl, 1
jmp 0x14001b3ce
xor cl, cl
test r13b, 0x30
je 0x14001b3df
lea eax, [rbp - 0x41]
cmp al, 0x19
ja 0x14001b3df
and r13b, 0xcf
test cl, cl
je 0x14001b4d0
mov byte [r12], 2
jmp 0x14001b4d0
mov ecx, 3
mov r15d, r14d
test r15w, r15w
jne 0x14001b432
cmp word [rdi + 2], r14w
jne 0x14001b41e
cmp byte [0x14013214c], r14b
jne 0x14001b41e
test rsi, rsi
cmove r14d, ecx
mov eax, r14d
jmp 0x14001b4af
xor r8d, r8d
lea rcx, str.Invalid_key_name.
mov rdx, rdi
call fcn.140011730
jmp 0x14001b4af
cmp byte [rsp + 0xb8], r14b
jne 0x14001b37c
inc dword [0x14013032c]
lea rcx, [0x140130310]
movsxd rax, ebp
mov byte [r12], 4
mov byte [rax + rcx], 1
test rsi, rsi
je 0x14001b4aa
movzx r8d, r13b
mov byte [rsi + 0x10], bpl
and r8b, 0xd5
mov word [rsi + 8], r15w
movzx eax, r8b
and al, 0xc0
neg al
sbb ecx, ecx
and ecx, 8
mov edx, ecx
or edx, 1
test r8b, 0xc
cmove edx, ecx
mov ecx, edx
or ecx, 4
test r8b, 0x30
cmove ecx, edx
mov eax, ecx
or eax, 2
test r8b, 3
cmove eax, ecx
and r13b, 0x2a
or dword [rsi], eax
or byte [rsi + 0xe], r13b
mov eax, 1
mov rbx, qword [rsp + 0xc0]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
movzx r14d, byte [rsp + 0xb8]
test r14b, r14b
je 0x14001b459
test rsi, rsi
je 0x14001b4aa
mov byte [rsi + 0x11], bl
mov word [rsi + 0xa], r15w
jmp 0x14001b4aa