Function at 0x14004b900
Capabilities:
Get keyboard layout

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x8010]
mov eax, 0x8110
call fcn.1400e19f0
sub rsp, rax
cmp word [rdx], 0
mov r12, r9
movzx r15d, r8b
mov r14, rdx
mov rdi, rcx
mov rbx, rdx
je case.0x14004b96b.34
movzx eax, word [rdx + 2]
test ax, ax
je case.0x14004b96b.34
lea rdx, [0x140000000]
cmp ax, 0x20
je case.0x14004b96b.34
movzx eax, word [rbx]
add eax, 0xffffffdf
cmp eax, 0x5d
ja case.0x14004b96b.34
cdqe
movzx eax, byte [rdx + rax + 0x4bfd4]
mov ecx, dword [rdx + rax*4 + 0x4bfcc]
add rcx, rdx
jmp rcx
movzx eax, word [rbx + 4]
add rbx, 2
test ax, ax
jne 0x14004b946
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
xor r8d, r8d
xor edx, edx
mov rcx, rbx
mov qword [rsp + 0x20], rax
call fcn.140024000
lea rdx, [0x14010a6f8]
mov rcx, rbx
movzx esi, al
call fcn.1400c45bc
lea ecx, [rsi - 1]
mov qword [rbp + 0x8068], rax
cmp cl, 5
ja 0x14004b9bb
cmp sil, 3
jne 0x14004b9c3
lea ecx, [rsi + 0x66]
cmp cl, 5
ja 0x14004b9c7
mov cl, 1
jmp 0x14004b9c9
xor cl, cl
lea eax, [r15 - 1]
cmp al, 5
ja 0x14004b9d7
cmp r15b, 3
jne 0x14004b9df
lea eax, [r15 + 0x66]
cmp al, 5
ja 0x14004b9e3
mov al, 1
jmp 0x14004b9e5
xor al, al
mov byte [rbp + 0x8058], al
mov qword [rsp + 0x8150], r13
test cl, cl
jne 0x14004ba00
test al, al
je 0x14004ba00
mov r13b, 1
jmp 0x14004ba03
xor r13b, r13b
add sil, 0x64
cmp sil, 3
jbe 0x14004ba1c
lea eax, [r15 + 0x64]
mov byte [rbp + 0x8060], 0
cmp al, 3
ja 0x14004ba23
mov byte [rbp + 0x8060], 1
mov rax, 0xffffffffffffffff
nop word [rax + rax]
inc rax
cmp word [rbx + rax*2], 0
jne 0x14004ba30
lea rsi, [0x140104c70]
cmp rax, 1
jne 0x14004ba5b
movzx ecx, word [rbx]
call qword [sym.imp.USER32.dll_IsCharUpperW]
test eax, eax
lea rax, [0x14010df60]
jne 0x14004ba5e
mov rax, rsi
cmp qword [rbp + 0x8068], 0
lea r9, [0x140108f4c]
mov qword [rsp + 0x28], r14
lea r8, str._s_s_s
cmovne r9, rsi
mov qword [rsp + 0x20], rax
mov edx, SafeArrayAllocDescriptor
lea rcx, [rbp - 0x40]
call fcn.1400a4cd0
movzx eax, word [r12]
cmp ax, 0x22
je 0x14004babb
cmp ax, 0x60
je 0x14004babb
mov r8d, SafeArrayAllocDescriptor
lea rcx, [rbp - 0x80]
mov rdx, r12
call fcn.1400d6d74
xor esi, esi
mov word [rbp - 0x42], si
jmp 0x14004bace
mov ecx, 0x60
mov word [rbp - 0x7e], ax
xor esi, esi
mov word [rbp - 0x80], cx
mov word [rbp - 0x7c], si
mov rdx, qword [rbp + 0x8070]
lea rcx, [rsp + 0x40]
sub r12, rdx
mov eax, 8
sar r12, 1
lea rbx, [r12 + 1]
cmp rbx, rax
cmova rbx, rax
lea r8, [rbx - 1]
call fcn.1400d6d74
mov word [rsp + rbx*2 + 0x3e], si
cmp r15b, 0x13
jne 0x14004bb2b
cmp word [rsp + 0x40], 0
jne 0x14004bb2b
lea rdx, str.Pause
lea rcx, [rbp - 0x80]
call fcn.1400c8244
test eax, eax
jne 0x14004bb2b
mov eax, 4
jmp 0x14004bc27
mov rcx, qword [rdi + 0x68]
test rcx, rcx
je 0x14004bbc8
mov rdx, qword [rdi + 0x6a8]
movzx eax, byte [0x14013214c]
test rdx, rdx
je 0x14004bb75
test al, al
je 0x14004bb75
mov r8, rcx
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x20], rdx
xor r9d, r9d
lea rdx, str.Hotkey_or_hotstring_is_missing_its_opening_brace.
mov rcx, rdi
call fcn.14000fec0
mov esi, eax
jmp 0x14004bc27
cmp byte [0x14013214f], 0
je 0x14004bbaa
test al, al
jne 0x14004bbaa
mov eax, dword [rdi + 0x2cc]
lea rdx, str.Hotkey_or_hotstring_is_missing_its_opening_brace.
movzx r9d, word [rdi + 0x2c8]
mov r8, rcx
mov rcx, rdi
mov dword [rsp + 0x20], eax
call fcn.14000fd70
mov eax, esi
jmp 0x14004bc27
mov r9, rcx
mov qword [rsp + 0x20], rsi
mov rcx, rdi
lea rdx, str.Hotkey_or_hotstring_is_missing_its_opening_brace.
xor r8d, r8d
call fcn.140010e80
mov eax, esi
jmp 0x14004bc27
xor r9d, r9d
lea rdx, str._Hotkey__ThisHotkey_
xor r8d, r8d
mov rcx, rdi
call fcn.140053ab0
test eax, eax
je 0x14004bc25
mov rax, qword [0x140129398]
mov rbx, qword [rax + 0x28]
test rbx, rbx
je 0x14004bc25
lea r8, [rbp + 0x8068]
lea rdx, [rbp + 0x8070]
lea rcx, [rbp - 0x40]
call fcn.14001b4f0
test rax, rax
je 0x14004bc41
movzx r8d, byte [rbp + 0x8070]
mov rdx, rbx
mov rcx, rax
call fcn.14001a890
test rax, rax
jne 0x14004bc5c
xor eax, eax
mov r13, qword [rsp + 0x8150]
add rsp, 0x8110
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
movzx r9d, byte [rbp + 0x8070]
lea r8, [rbp - 0x40]
xor edx, edx
mov rcx, rbx
call fcn.140019d00
test rax, rax
je 0x14004bc25
cmp byte [rbp + 0x8058], 0
lea rax, str.SetMouseDelay
lea r8, str.SetKeyDelay
cmovne r8, rax
lea rdx, str._s__1__
lea rcx, [rbp]
call fcn.140006e40
movzx r12d, byte [rbp + 0x8060]
lea r15, [rbp]
movsxd rcx, eax
lea r15, [r15 + rcx*2]
test r13b, r13b
je 0x14004bcbc
test r12b, r12b
jne 0x14004bcbc
lea r8, [rbp - 0x80]
mov rcx, r15
lea rdx, str._GetKeyState___s__
call fcn.140006e40
movsxd rcx, eax
lea r15, [r15 + rcx*2]
movzx ecx, word [0x1401301b4]
lea rbx, [rsp + 0x50]
mov rax, qword [0x140130330]
mov r13d, 0x5e
mov r14, qword [rax + rcx*8 - 8]
test byte [r14 + 0xf], 1
je 0x14004bd00
mov edx, r13d
lea rcx, [rsp + 0x40]
call fcn.1400c42b8
test rax, rax
jne 0x14004bd00
mov dword [rsp + 0x50], 0x5e003c
lea rbx, [rsp + 0x54]
test byte [r14 + 0xf], 2
je 0x14004bd23
mov edx, r13d
lea rcx, [rsp + 0x40]
call fcn.1400c42b8
test rax, rax
jne 0x14004bd23
mov dword [rbx], 0x5e003e
add rbx, 4
test byte [r14 + 0xf], 4
mov r13d, SafeArrayAllocDescriptor
je 0x14004bd4c
mov edx, r13d
lea rcx, [rsp + 0x40]
call fcn.1400c42b8
test rax, rax
jne 0x14004bd4c
mov dword [rbx], 0x21003c
add rbx, 4
test byte [r14 + 0xf], 8
je 0x14004bd6f
mov edx, r13d
lea rcx, [rsp + 0x40]
call fcn.1400c42b8
test rax, rax
jne 0x14004bd6f
mov dword [rbx], 0x21003e
add rbx, 4
test byte [r14 + 0xf], 0x10
mov r13d, 0x2b
je 0x14004bd98
mov edx, r13d
lea rcx, [rsp + 0x40]
call fcn.1400c42b8
test rax, rax
jne 0x14004bd98
mov dword [rbx], 0x2b003c
add rbx, 4
test byte [r14 + 0xf], 0x20
je 0x14004bdbb
mov edx, r13d
lea rcx, [rsp + 0x40]
call fcn.1400c42b8
test rax, rax
jne 0x14004bdbb
mov dword [rbx], 0x2b003e
add rbx, 4
test byte [r14 + 0xf], 0x40
mov r13d, reloc.OLEAUT32.dll_SafeArrayAllocDescriptor
je 0x14004bde4
mov edx, r13d
lea rcx, [rsp + 0x40]
call fcn.1400c42b8
test rax, rax
jne 0x14004bde4
mov dword [rbx], 0x23003c
add rbx, 4
test byte [r14 + 0xf], 0x80
je 0x14004be07
mov edx, r13d
lea rcx, [rsp + 0x40]
call fcn.1400c42b8
test rax, rax
jne 0x14004be07
mov dword [rbx], 0x23003e
add rbx, 4
lea r9, [0x140104c70]
mov word [rbx], si
test r12b, r12b
lea rax, str._DownR
lea r8, [rsp + 0x50]
mov rcx, r15
cmovne rax, r9
lea rdx, str.Send__Blind_s_s_s_s_s__
mov qword [rsp + 0x30], rax
lea rax, [rbp - 0x80]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
call fcn.140006e40
xor r9d, r9d
mov byte [rsp + 0x20], 0
xor r8d, r8d
mov dl, 3
mov rcx, rdi
call fcn.140051f30
test eax, eax
je 0x14004bc25
xor r8d, r8d
lea rdx, [rbp]
mov rcx, rdi
call fcn.14004f600
test eax, eax
je 0x14004bc25
xor r9d, r9d
mov byte [rsp + 0x20], 0
xor r8d, r8d
mov dl, 4
mov rcx, rdi
call fcn.140051f30
test eax, eax
je 0x14004bc25
test r12b, r12b
jne 0x14004bfc0
lea r8, [rbp - 0x40]
lea rdx, str._s_up
lea rcx, [rbp]
call fcn.140006e40
xor r9d, r9d
lea rdx, str._Hotkey__ThisHotkey_
xor r8d, r8d
mov rcx, rdi
call fcn.140053ab0
test eax, eax
je 0x14004bc25
mov rax, qword [0x140129398]
mov rbx, qword [rax + 0x28]
test rbx, rbx
je 0x14004bc25
lea r8, [rbp + 0x8070]
lea rdx, [rbp + 0x8060]
lea rcx, [rbp]
call fcn.14001b4f0
test rax, rax
je 0x14004bf23
movzx r8d, byte [rbp + 0x8060]
mov rdx, rbx
mov rcx, rax
call fcn.14001a890
test rax, rax
jne 0x14004bf42
jmp 0x14004bc25
movzx r9d, byte [rbp + 0x8060]
lea r8, [rbp]
xor edx, edx
mov rcx, rbx
call fcn.140019d00
test rax, rax
je 0x14004bc25
cmp byte [rbp + 0x8058], 0
lea rcx, str.SetMouseDelay
lea r8, str.SetKeyDelay
cmovne r8, rcx
lea r9, [rbp - 0x80]
lea rcx, [rbp]
lea rdx, str._s__1__Send__Blind_s_Up___n
call fcn.140006e40
xor r9d, r9d
mov byte [rsp + 0x20], 0
xor r8d, r8d
mov dl, 3
mov rcx, rdi
call fcn.140051f30
test eax, eax
je 0x14004bc25
xor r8d, r8d
lea rdx, [rbp]
mov rcx, rdi
call fcn.14004f600
test eax, eax
je 0x14004bc25
xor r9d, r9d
mov byte [rsp + 0x20], 0
xor r8d, r8d
mov dl, 4
mov rcx, rdi
call fcn.140051f30
test eax, eax
je 0x14004bc25
mov eax, 1
jmp 0x14004bc27