Function at 0x14003bd80
Capabilities:
Get keyboard layout

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
mov eax, 0x8568
call fcn.1400bc4c0
sub rsp, rax
lea rbp, [rsp + 0x40]
mov rax, rcx
mov rcx, qword [0x1401030e0]
mov qword [rbp + 0x18], rcx
test rcx, rcx
jne 0x14003bdda
cmp dword [0x1401032f0], 1
mov rcx, rax
sete dl
xor r12d, r12d
xor dl, 1
mov dword [0x1401032f0], r12d
call fcn.140035530
jmp 0x14003c900
mov rdi, qword [0x140103198]
lea r15, [0x140000000]
mov r13, qword [0x1401031a0]
xor r12d, r12d
mov r14, qword [0x1401031a8]
mov eax, r12d
mov dword [rbp + 0x8588], eax
mov byte [rbp + 0x8578], al
mov dword [0x1401032f0], r12d
mov dword [0x140103334], 1
mov word [0x140103338], r12w
mov dword [0x14010334c], 0x3fff
movzx eax, word [rdi]
mov qword [rbp + 8], r13
mov qword [rbp + 0x10], r14
test ax, ax
je 0x14003bf18
lea rsi, [rdi + 2]
movzx ebx, ax
test ebx, 0xffffff80
jne 0x14003be61
mov edx, 2
mov ecx, ebx
call fcn.1400a9dc4
test eax, eax
je 0x14003be61
and ebx, 0xffffffdf
movzx eax, bx
add eax, 0xffffffd6
cmp eax, 0x2c
ja case.0x14003be86.51
cdqe
movzx eax, byte [r15 + rax + 0x3c93c]
mov ecx, dword [r15 + rax*4 + 0x3c914]
add rcx, r15
jmp rcx
mov byte [0x140103334], r12b
jmp case.0x14003be86.51
mov byte [0x140103335], 1
jmp case.0x14003be86.51
mov byte [0x140103336], 1
jmp case.0x14003be86.51
mov byte [0x140103337], 1
jmp case.0x14003be86.51
mov rcx, rsi
call fcn.1400aadfc
mov dword [0x14010334c], eax
cmp eax, 0x3fff
jle case.0x14003be86.51
mov dword [0x14010334c], 0x3fff
jmp case.0x14003be86.51
mov rcx, rsi
call fcn.140015590
mulsd xmm0, qword [0x1400e92a8]
cvttsd2si eax, xmm0
mov dword [rbp + 0x8588], eax
jmp case.0x14003be86.51
mov byte [0x140103338], 1
jmp case.0x14003be86.51
mov byte [0x140103339], 1
jmp case.0x14003be86.51
mov al, 1
mov byte [rbp + 0x8578], al
movzx eax, word [rdi + 2]
add rdi, 2
add rsi, 2
test ax, ax
jne 0x14003be43
xor edx, edx
lea rcx, [rbp + 0x120]
mov r8d, 0x100
call fcn.1400a61b0
xor edx, edx
lea rcx, [rbp + 0x320]
mov r8d, 0x200
call fcn.1400a61b0
mov rbx, r12
mov word [rbp + 0x8582], r12w
mov r15, r13
mov qword [rbp], rbx
mov edx, 0x7d
cmp word [r13], r12w
je 0x14003c099
movzx r13d, byte [rbp + 0x8578]
lea rsi, [0x1400fb210]
mov word [rbp + 0x8580], r12w
movzx eax, word [r15]
cmp eax, 0x7b
je 0x14003c127
cmp eax, 0x7d
je 0x14003c07c
test r13b, r13b
je 0x14003bfa0
inc rbx
mov qword [rbp], rbx
jmp 0x14003c07c
xor ecx, ecx
mov word [rbp + 0x8580], ax
mov byte [rbp + 0x8578], r12b
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
movzx ecx, word [rbp + 0x8580]
test cx, cx
je 0x14003c077
cmp word [rbp + 0x8582], r12w
jne 0x14003bfec
mov r8, rax
lea rdx, [rbp + 0x8578]
call fcn.140014660
movzx ebx, al
mov edx, 0x7d
jmp 0x14003c276
movzx ebx, cx
test ebx, 0xffffff80
jne 0x14003c00a
mov edx, 2
mov ecx, ebx
call fcn.1400a9dc4
test eax, eax
je 0x14003c00a
and ebx, 0xffffffdf
cmp bx, 0x56
jne 0x14003c040
movzx ecx, word [rbp + 0x8582]
call fcn.14000ad40
cmp ax, 0x4b
jne 0x14003c040
xor edx, edx
lea rcx, [rbp + 0x8584]
lea r8d, [rdx + 0x10]
call fcn.1400ab260
mov ebx, eax
mov edx, 0x7d
jmp 0x14003c276
lea r14, [0x1400fab40]
mov rdi, r12
mov rbx, r14
nop dword [rax]
mov rcx, qword [rbx]
lea rdx, [rbp + 0x8580]
call fcn.1400a7220
test eax, eax
je 0x14003c114
inc rdi
add rbx, 0x10
cmp rbx, rsi
jl 0x14003c050
mov rbx, qword [rbp]
mov edx, 0x7d
add r15, 2
lea rsi, [0x1400fb210]
cmp word [r15], r12w
jne 0x14003bf71
mov r13, qword [rbp + 8]
mov r14, qword [rbp + 0x10]
lea r15, [0x1400e70b8]
mov qword [0x140103308], r15
test rbx, rbx
je 0x14003c321
lea rax, [rbx*2 + 2]
lea rcx, [rax + 0xf]
cmp rcx, rax
ja 0x14003c0cb
movabs rcx, 0xffffffffffffff0
and rcx, 0xfffffffffffffff0
mov rax, rcx
call fcn.1400bc4c0
sub rsp, rcx
lea rbx, [rsp + 0x40]
mov qword [0x140103308], rbx
cmp word [r13], r12w
je 0x14003c31d
movzx eax, word [r13]
cmp eax, 0x7b
je 0x14003c2cd
cmp eax, 0x7d
je 0x14003c309
mov word [rbx], ax
add rbx, 2
jmp 0x14003c309
add rdi, rdi
mov edx, 0x7d
movzx ebx, byte [r14 + rdi*8 + 8]
jmp 0x14003c276
lea rsi, [r15 + 2]
mov rcx, rsi
call fcn.1400a5798
mov r14, rax
test rax, rax
je 0x14003c077
mov rcx, rax
sub rcx, r15
sar rcx, 1
sub rcx, 1
jne 0x14003c15f
add r14, 2
cmp word [r14], 0x7d
jne 0x14003c077
jmp 0x14003c165
cmp rcx, 1
jne 0x14003c180
test r13b, r13b
je 0x14003c176
inc rbx
mov qword [rbp], rbx
jmp 0x14003c077
movzx eax, word [rsi]
mov word [rbp + 0x8580], ax
xor ecx, ecx
mov word [r14], r12w
mov byte [rbp + 0x8578], r12b
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
movzx ecx, word [rsi]
test cx, cx
jne 0x14003c1a2
xor bl, bl
jmp 0x14003c252
cmp word [rsi + 2], r12w
jne 0x14003c1c0
mov r8, rax
lea rdx, [rbp + 0x8578]
call fcn.140014660
movzx ebx, al
jmp 0x14003c24e
movzx ebx, cx
test ebx, 0xffffff80
jne 0x14003c1de
mov edx, 2
mov ecx, ebx
call fcn.1400a9dc4
test eax, eax
je 0x14003c1de
and ebx, 0xffffffdf
cmp bx, 0x56
jne 0x14003c207
movzx ecx, word [rsi + 2]
call fcn.14000ad40
cmp ax, 0x4b
jne 0x14003c207
xor edx, edx
lea rcx, [rsi + 4]
lea r8d, [rdx + 0x10]
call fcn.1400ab260
movzx ebx, al
jmp 0x14003c24e
mov rdi, r12
lea rbx, [0x1400fab40]
lea r15, [0x1400fb210]
nop dword [rax + rax]
mov rcx, qword [rbx]
mov rdx, rsi
call fcn.1400a7220
test eax, eax
je 0x14003c23f
inc rdi
add rbx, 0x10
cmp rbx, r15
jl 0x14003c220
xor bl, bl
jmp 0x14003c252
add rdi, rdi
lea rax, [0x1400fab40]
movzx ebx, byte [rax + rdi*8 + 8]
test bl, bl
jne 0x14003c26a
mov rcx, rsi
call fcn.140014440
test ax, ax
je 0x14003c26a
movzx eax, ax
mov byte [rbp + rax + 0x320], 1
mov edx, 0x7d
mov r15, r14
mov word [r14], dx
test bl, bl
je 0x14003c2b3
movzx ecx, word [rbp + 0x8580]
movzx ebx, bl
or byte [rbp + rbx + 0x120], 1
test cx, cx
je 0x14003c2b3
call qword [sym.imp.USER32.dll_IsCharAlphaW]
test eax, eax
jne 0x14003c073
test byte [rbp + 0x8578], 0x30
lea edx, [rax + 0x7d]
je 0x14003c2bc
or byte [rbp + rbx + 0x120], 2
mov rbx, qword [rbp]
jmp 0x14003c07c
or byte [rbp + rbx + 0x120], 4
mov rbx, qword [rbp]
jmp 0x14003c07c
lea rdi, [r13 + 2]
mov rcx, rdi
call fcn.1400a5798
mov rdx, rax
test rax, rax
je 0x14003c309
cmp rax, rdi
jne 0x14003c2f3
cmp word [rax + 2], 0x7d
lea rcx, [rax + 2]
cmove rdx, rcx
lea rax, [r13 + 4]
cmp rdx, rax
jne 0x14003c306
movzx eax, word [rdi]
mov word [rbx], ax
add rbx, 2
mov r13, rdx
add r13, 2
mov edx, 0x7d
cmp word [r13], r12w
jne 0x14003c0f1
mov word [rbx], r12w
mov dword [0x140103320], r12d
cmp word [r14], r12w
je 0x14003c505
cmp qword [0x140103318], r12
jne 0x14003c379
mov ecx, 0x2000
call fcn.1400a7398
mov qword [0x140103318], rax
test rax, rax
jne 0x14003c36f
mov rcx, qword [rbp + 0x8570]
lea rdx, [0x1400de770]
mov r9, r15
xor r8d, r8d
call fcn.1400356f0
jmp 0x14003c900
mov dword [0x140103324], 0x400
mov rdi, qword [rbp + 0x8570]
mov edx, 3
mov rcx, rdi
call fcn.1400253a0
mov ecx, dword [0x140103330]
inc rax
cmp rax, rcx
jbe 0x14003c3fb
mov rcx, qword [0x140103328]
mov edx, 0x1000
cmp rax, rdx
cmova edx, eax
mov dword [0x140103330], edx
test rcx, rcx
je 0x14003c3c3
call fcn.1400ab2c0
mov edx, dword [0x140103330]
lea ecx, [rdx + rdx]
call fcn.1400a7398
mov qword [0x140103328], rax
mov rdx, rax
test rax, rax
jne 0x14003c402
mov dword [0x140103330], r12d
mov r9, r15
lea rdx, [0x1400de770]
xor r8d, r8d
mov rcx, rdi
call fcn.1400356f0
jmp 0x14003c900
mov rdx, qword [0x140103328]
mov ecx, dword [0x140103320]
mov rax, qword [0x140103318]
mov qword [rax + rcx*8], rdx
mov rbx, qword [0x140103328]
cmp word [r14], r12w
je 0x14003c4e2
mov esi, 0x2c
nop dword [rax]
movzx eax, word [r14]
cmp ax, si
je 0x14003c445
mov word [rbx], ax
add rbx, 2
jmp 0x14003c4d4
cmp word [r14 + 2], si
jne 0x14003c459
mov word [rbx], si
add rbx, 2
add r14, 2
jmp 0x14003c4d4
mov word [rbx], r12w
mov ecx, dword [0x140103320]
mov r8, qword [0x140103318]
mov rax, qword [r8 + rcx*8]
cmp word [rax], r12w
je 0x14003c497
inc ecx
mov dword [0x140103320], ecx
add rbx, 2
mov eax, ecx
mov qword [r8 + rcx*8], rbx
mov word [rbx], r12w
mov ecx, dword [0x140103320]
mov r8, qword [0x140103318]
cmp word [r14 + 2], r12w
je 0x14003c4d4
mov eax, dword [0x140103324]
cmp ecx, eax
jb 0x14003c4d4
lea edx, [rax + 0x400]
mov rcx, r8
shl rdx, 3
call fcn.1400ab108
test rax, rax
je 0x14003c3e1
add dword [0x140103324], 0x400
mov qword [0x140103318], rax
add r14, 2
cmp word [r14], r12w
jne 0x14003c430
mov word [rbx], r12w
mov edx, dword [0x140103320]
mov rax, qword [0x140103318]
mov rcx, qword [rax + rdx*8]
cmp word [rcx], r12w
je 0x14003c505
inc edx
mov dword [0x140103320], edx
cmp byte [0x1400feb00], r12b
je 0x14003c552
mov rcx, qword [0x1400feeb0]
mov edx, reloc.OLEAUT32.dll_VariantTimeToDosDateTime
call qword [sym.imp.USER32.dll_KillTimer]
movzx ecx, byte [0x1400feb00]
test eax, eax
cmovne ecx, r12d
mov byte [0x1400feb00], cl
mov ecx, reloc.OLEAUT32.dll_SafeArrayGetDim
call qword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x14003c552
mov edx, 1
or ecx, 0xffffffff
call fcn.1400016e0
xor edx, edx
lea rcx, [rbp + 0x520]
mov r8d, 0x8000
call fcn.1400a61b0
or byte [0x1400ffc76], 1
lea rax, [rbp + 0x520]
cmp qword [0x1400feed8], r12
mov qword [0x140103340], rax
lea rax, [rbp + 0x120]
mov qword [0x1401032f8], rax
lea rax, [rbp + 0x320]
mov qword [0x140103300], rax
mov dword [0x140103348], r12d
mov dword [0x1401032f0], 1
mov byte [0x1400feec4], 1
jne 0x14003c5c4
movzx edx, word [0x140101d40]
call fcn.140009610
mov eax, dword [rbp + 0x8588]
test eax, eax
jle 0x14003c610
cmp byte [0x1400feb00], r12b
jne 0x14003c610
mov ecx, 0xa
lea r9, [0x140004260]
cmp eax, ecx
cmovl eax, ecx
lea edx, [rcx + 2]
mov r8d, eax
mov rcx, qword [0x1400feeb0]
call qword [sym.imp.USER32.dll_SetTimer]
test rax, rax
setne byte [0x1400feb00]
nop word [rax + rax]
mov edx, 1
mov ecx, 0x8000012f
call fcn.1400016e0
mov ecx, dword [0x1401032f0]
cmp ecx, 1
je 0x14003c610
sub ecx, 2
je 0x14003c86f
sub ecx, 1
je 0x14003c866
sub ecx, 1
je 0x14003c671
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
cmp ecx, 1
mov rcx, qword [0x1400fee90]
je 0x14003c665
lea rdx, [0x1400e5f18]
jmp 0x14003c889
lea rdx, [0x1400e5f10]
jmp 0x14003c889
movups xmm0, xmmword [0x1400e5f00]
xor edx, edx
lea rcx, [rbp + 0x30]
mov r8d, 0xf0
movaps xmmword [rbp + 0x20], xmm0
call fcn.1400a61b0
movzx eax, word [0x140103314]
test ax, ax
je 0x14003c6ab
mov word [rbp + 0x2e], ax
lea rdx, [rbp + 0x20]
mov word [rbp + 0x30], r12w
jmp 0x14003c876
cmp byte [0x140103317], r12b
je 0x14003c753
xor edx, edx
lea rcx, [rbp + 0x220]
mov r8d, 0x100
call fcn.1400a61b0
or byte [rbp + 0x230], 0x80
call qword [sym.imp.USER32.dll_GetForegroundWindow]
test rax, rax
je 0x14003c6eb
xor edx, edx
mov rcx, rax
call qword [sym.imp.USER32.dll_GetWindowThreadProcessId]
jmp 0x14003c6ee
mov eax, r12d
mov ecx, eax
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
cmp dword [0x1400feb04], r12d
mov edi, r12d
movzx ecx, byte [0x140103310]
mov rbx, rax
setne dil
xor edx, edx
call fcn.140014a40
movzx ecx, byte [0x140103310]
lea r9, [rbp + 0x2e]
mov qword [rsp + 0x30], rbx
lea r8, [rbp + 0x220]
movzx edx, ax
mov dword [rsp + 0x28], edi
mov dword [rsp + 0x20], 2
call qword [sym.imp.USER32.dll_ToUnicodeEx]
movsxd rcx, eax
lea rdx, [rbp + 0x20]
mov word [rbp + rcx*2 + 0x2e], r12w
jmp 0x14003c876
cmp byte [0x140103316], r12b
mov ecx, r12d
je 0x14003c7b9
movzx edx, word [0x140103312]
lea rax, [0x1400faa78]
lea r8, [0x1400fab48]
cmp word [rax], dx
je 0x14003c7a2
inc ecx
add rax, 0x10
cmp rax, r8
jl 0x14003c774
movzx r9d, dx
lea r8, [0x1400dece0]
mov edx, 0x79
lea rcx, [rbp + 0x2e]
call fcn.140087360
jmp 0x14003c849
movsxd rdx, ecx
lea rax, [0x140000000]
add rdx, rdx
mov rdx, qword [rax + rdx*8 + 0xfaa70]
jmp 0x14003c832
movzx ebx, byte [0x140103310]
lea rax, [0x1400fab48]
lea rdx, [0x1400fb218]
nop
cmp byte [rax], bl
je 0x14003c821
inc ecx
add rax, 0x10
cmp rax, rdx
jl 0x14003c7d0
movzx ecx, bl
call fcn.1400142b0
mov word [rbp + 0x2e], ax
test ax, ax
je 0x14003c7f7
mov word [rbp + 0x30], r12w
jmp 0x14003c849
test bl, bl
je 0x14003c816
movzx r9d, bl
lea r8, [0x1400decf0]
mov edx, 0x79
lea rcx, [rbp + 0x2e]
call fcn.140087360
jmp 0x14003c849
mov word [rbp + 0x2e], r12w
lea rdx, [rbp + 0x20]
jmp 0x14003c876
movsxd rdx, ecx
lea rax, [0x1400fab40]
add rdx, rdx
mov rdx, qword [rax + rdx*8]
mov r8d, 0x78
lea rcx, [rbp + 0x2e]
call fcn.1400b02e4
mov word [rbp + 0x11e], r12w
movzx eax, word [rbp + 0x2e]
sub ax, 0x61
cmp ax, 0x19
ja 0x14003c860
mov eax, 0xffe0
add word [rbp + 0x2e], ax
lea rdx, [rbp + 0x20]
jmp 0x14003c876
lea rdx, [0x1400e5ef0]
jmp 0x14003c876
lea rdx, [0x1400df398]
mov rcx, qword [0x1400fee90]
xor r9d, r9d
or r8, 0xffffffffffffffff
mov byte [rsp + 0x20], 1
call fcn.14008a870
cmp byte [0x1400feb00], r12b
mov dword [0x1401032f0], r12d
je 0x14003c8e4
mov rcx, qword [0x1400feeb0]
mov edx, reloc.OLEAUT32.dll_VariantTimeToDosDateTime
call qword [sym.imp.USER32.dll_KillTimer]
movzx r8d, byte [0x1400feb00]
mov ecx, reloc.OLEAUT32.dll_SafeArrayGetDim
test eax, eax
cmovne r8d, r12d
mov byte [0x1400feb00], r8b
call qword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x14003c8e4
mov edx, 1
or ecx, 0xffffffff
call fcn.1400016e0
mov rcx, qword [rbp + 0x18]
lea rdx, [rbp + 0x520]
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
call fcn.14008a870
lea rsp, [rbp + 0x8528]
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret