Function at 0x14001a800
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 esi, esi
movzx ebp, r9b
xor r13b, r13b
mov r14, r8
mov byte [rsp + 0xb0], r13b
movzx r12d, dl
mov rdi, rcx
movzx r15d, si
mov rbx, rcx
nop word [rax + rax]
movzx eax, word [rbx]
cmp eax, 0x7f
ja 0x14001a859
mov ecx, eax
call fcn.1400c63f0
test eax, eax
jne 0x14001a859
cmp word [rbx], 0x5f
jne 0x14001a85f
add rbx, 2
jmp 0x14001a840
cmp rbx, rdi
jne 0x14001a86d
cmp word [rdi], si
je 0x14001a86d
add rbx, 2
test r12b, r12b
jne 0x14001a950
movzx eax, word [rbx]
cmp ax, 0x20
je 0x14001a889
cmp ax, 9
jne 0x14001a950
mov rcx, rbx
nop dword [rax]
cmp ax, 0x20
je 0x14001a89c
cmp ax, 9
jne 0x14001a8a6
movzx eax, word [rcx + 2]
add rcx, 2
jmp 0x14001a890
lea rdx, [0x1401017c8]
call fcn.1400c1404
test eax, eax
jne 0x14001a950
test bpl, bpl
jne 0x14001ac2c
test r14, r14
je 0x14001a8cd
mov byte [r14 + 0x16], 1
mov r8d, SafeArrayAllocDescriptor
lea rcx, [rsp + 0x30]
mov rdx, rdi
call fcn.1400d02a4
sub rbx, rdi
mov word [rsp + 0x6e], si
sar rbx, 1
cmp rbx, 0x20
jae 0x14001a8f6
mov word [rsp + rbx*2 + 0x30], si
lea rdi, [rsp + 0x30]
lea r12, [r14 + 0x12]
test r14, r14
jne 0x14001a909
lea r12, [rsp + 0x20]
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
movzx r10d, word [rdi]
test r10w, r10w
je 0x14001aa07
movzx edx, word [rdi + 2]
movzx ecx, r10w
test dx, dx
jne 0x14001a975
mov r9b, 1
lea rdx, [rsp + 0xb0]
mov r8, rax
call fcn.1400237a0
movzx r13d, byte [rsp + 0xb0]
movzx ebx, al
jmp 0x14001aadc
movzx eax, word [rbx]
test bpl, bpl
je 0x14001a966
test ax, ax
sete sil
mov eax, esi
jmp 0x14001ac31
test ax, ax
je 0x14001a8fb
mov eax, 4
jmp 0x14001ac31
mov r8d, 0xffdf
lea eax, [r10 - 0x61]
and cx, r8w
cmp ax, 0x19
cmova cx, r10w
cmp cx, 0x56
jne 0x14001a9d9
movzx ecx, dx
lea eax, [rdx - 0x61]
and cx, r8w
cmp ax, 0x19
cmova cx, dx
cmp cx, 0x4b
jne 0x14001a9d9
lea rcx, [rdi + 4]
mov r8d, reloc.WSOCK32.dll_recv
lea rdx, [rsp + 0xb0]
call fcn.1400c80ac
movzx ecx, al
mov ebx, esi
mov rax, qword [rsp + 0xb0]
cmp word [rax], bx
cmove ebx, ecx
jmp 0x14001aadc
mov ebp, esi
lea rbx, str.Numpad0
mov rcx, qword [rbx]
mov rdx, rdi
call fcn.1400c1404
test eax, eax
je 0x14001aaca
inc ebp
lea rax, str._____:____.___n__t
add rbx, 0x10
cmp rbx, rax
jl 0x14001a9e2
xor bl, bl
xor edx, edx
mov rcx, rdi
call fcn.140023550
movzx r15d, ax
test ax, ax
jne 0x14001ac49
movzx eax, word [rdi]
mov rbx, rdi
mov ebp, esi
mov ecx, 3
test ax, ax
je 0x14001ab73
cmp ax, 0x30
jb 0x14001aa74
nop dword [rax]
cmp ax, 0x39
ja 0x14001aa54
movzx eax, word [rbx + 2]
add rbx, 2
cmp ax, 0x30
jae 0x14001aa40
cmp rbx, rdi
jbe 0x14001aa74
mov rcx, rdi
call fcn.14009def0
lea ecx, [rax - 1]
cmp ecx, 0xf
ja 0x14001ab6e
mov ebp, ecx
mov ecx, 3
mov r8, rcx
lea rdx, [0x140108920]
mov rcx, rbx
call fcn.1400c15e4
test eax, eax
jne 0x14001ab6e
lea rcx, [rbx + 6]
lea rdx, [rsp + 0xb0]
call fcn.14009dd90
mov rcx, qword [rsp + 0xb0]
cmp word [rcx], si
jne 0x14001ab6e
lea ecx, [rax - 1]
cmp ecx, 0x1f
mov ecx, 3
ja 0x14001ab73
lea r15d, [rax + 0xb]
jmp 0x14001ab76
movsxd rax, ebp
lea rcx, str.Numpad0
add rax, rax
movzx ebx, byte [rcx + rax*8 + 8]
test bl, bl
je 0x14001aa09
movzx esi, byte [rsp + 0xb8]
test sil, sil
je 0x14001ab0f
lea eax, [rbx + 0x64]
cmp al, 3
ja 0x14001ab32
xor r8d, r8d
lea rcx, str.Unsupported_prefix_key.
mov rdx, rdi
call fcn.140011230
jmp 0x14001ac31
test r14, r14
je 0x14001ab32
mov r8d, 2
lea rdx, [0x140102458]
mov rcx, rdi
call fcn.1400c15e4
test eax, eax
sete al
mov byte [r14 + 0x17], al
lea eax, [rbx - 1]
cmp al, 5
ja 0x14001ab3e
cmp bl, 3
jne 0x14001ab45
lea eax, [rbx + 0x66]
cmp al, 5
ja 0x14001ab49
mov cl, 1
jmp 0x14001ab4b
xor cl, cl
test r13b, 0x30
je 0x14001ab5c
lea eax, [rbx - 0x41]
cmp al, 0x19
ja 0x14001ab5c
and r13b, 0xcf
test cl, cl
je 0x14001ac51
mov byte [r12], 2
jmp 0x14001ac51
mov ecx, 3
mov r15d, esi
test r15w, r15w
jne 0x14001abaf
cmp word [rdi + 2], si
jne 0x14001ab98
cmp byte [0x140127cbc], sil
jne 0x14001ab98
test r14, r14
cmove esi, ecx
mov eax, esi
jmp 0x14001ac31
xor r8d, r8d
lea rcx, str.Invalid_key_name.
mov rdx, rdi
call fcn.140011230
jmp 0x14001ac31
cmp byte [rsp + 0xb8], sil
jne 0x14001aaf8
inc dword [0x140125ec0]
lea rcx, [0x140125ea8]
movsxd rax, ebp
movzx ebx, bpl
mov byte [r12], 4
mov byte [rax + rcx], 1
test r14, r14
je 0x14001ac2c
movzx r8d, r13b
mov byte [r14 + 0x10], bl
and r8b, 0xd5
mov word [r14 + 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 [r14], eax
or byte [r14 + 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 esi, byte [rsp + 0xb8]
test sil, sil
je 0x14001abda
test r14, r14
je 0x14001ac2c
mov byte [r14 + 0x11], bl
mov word [r14 + 0xa], r15w
jmp 0x14001ac2c