Function at 0x140043307
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.1400d29bc
sub rsp, rax
lea rbp, [rsp + 0x40]
mov rax, rcx
mov rcx, qword [0x14018e0e0]
mov qword [rbp + 0x18], rcx
test rcx, rcx
jne 0x140043365
cmp dword [0x14018e2f0], 1
mov rcx, rax
sete dl
xor r12d, r12d
xor dl, 1
mov dword [0x14018e2f0], r12d
call fcn.14003be1c
jmp 0x140043fb8
mov rdi, qword [0x14018e198]
lea r15, [0x140000000]
mov r13, qword [0x14018e1a0]
xor r12d, r12d
mov r14, qword [0x14018e1a8]
mov eax, r12d
mov dword [rbp + 0x8588], eax
mov byte [rbp + 0x8578], al
mov dword [0x14018e2f0], r12d
mov dword [0x14018e334], 1
mov word [0x14018e338], r12w
mov dword [0x14018e34c], 0x3fff
movzx eax, word [rdi]
mov qword [rbp + 8], r13
mov qword [rbp + 0x10], r14
test ax, ax
je 0x1400434c7
lea rsi, [rdi + 2]
movzx ebx, ax
test ebx, 0xffffff80
jne 0x1400433f4
mov edx, 2
mov ecx, ebx
call fcn.1400bdc33
test eax, eax
je 0x1400433f4
and ebx, 0xffffffdf
movzx eax, bx
add eax, 0xffffffd6
cmp eax, 0x2c
ja case.0x140043419.51
cdqe
movzx eax, byte [r15 + rax + 0x43ff4]
mov ecx, dword [r15 + rax*4 + 0x43fcc]
add rcx, r15
jmp rcx
mov byte [0x14018e334], r12b
jmp case.0x140043419.51
mov byte [0x14018e335], 1
jmp case.0x140043419.51
mov byte [0x14018e336], 1
jmp case.0x140043419.51
mov byte [0x14018e337], 1
jmp case.0x140043419.51
mov rcx, rsi
call fcn.1400bef0f
mov dword [0x14018e34c], eax
cmp eax, 0x3fff
jle case.0x140043419.51
mov dword [0x14018e34c], 0x3fff
jmp case.0x140043419.51
mov rcx, rsi
call fcn.140017cf7
mulsd xmm0, qword [0x14010f2b8]
cvttsd2si eax, xmm0
mov dword [rbp + 0x8588], eax
jmp case.0x140043419.51
mov byte [0x14018e338], 1
jmp case.0x140043419.51
mov byte [0x14018e339], 1
jmp case.0x140043419.51
mov al, 1
mov byte [rbp + 0x8578], al
movzx eax, word [rdi + 2]
add rdi, 2
add rsi, 2
test ax, ax
jne 0x1400433ce
xor edx, edx
lea rcx, [rbp + 0x120]
mov r8d, 0x100
call fcn.1400b970f
xor edx, edx
lea rcx, [rbp + 0x320]
mov r8d, 0x200
call fcn.1400b970f
mov rbx, r12
mov word [rbp + 0x8582], r12w
mov r15, r13
mov qword [rbp], rbx
mov edx, 0x7d
cmp word [r13], r12w
je 0x140043664
movzx r13d, byte [rbp + 0x8578]
lea rsi, [0x140186210]
mov word [rbp + 0x8580], r12w
movzx eax, word [r15]
cmp eax, 0x7b
je 0x1400436f6
cmp eax, 0x7d
je 0x140043647
test r13b, r13b
je 0x140043553
inc rbx
mov qword [rbp], rbx
jmp 0x140043647
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 0x140043642
cmp word [rbp + 0x8582], r12w
jne 0x1400435a3
mov r8, rax
lea rdx, [rbp + 0x8578]
call fcn.140016bc7
movzx ebx, al
mov edx, 0x7d
jmp 0x140043882
movzx ebx, cx
test ebx, 0xffffff80
jne 0x1400435c9
mov edx, 2
mov ecx, ebx
call fcn.1400bdc33
test eax, eax
je 0x1400435c9
and ebx, 0xffffffdf
cmp bx, 0x56
jne 0x140043607
movzx ecx, word [rbp + 0x8582]
call fcn.14000be80
cmp ax, 0x4b
jne 0x140043607
xor edx, edx
lea rcx, [rbp + 0x8584]
lea r8d, [rdx + 0x10]
call fcn.1400bf3fd
mov ebx, eax
mov edx, 0x7d
jmp 0x140043882
lea r14, [0x140185b40]
mov rdi, r12
mov rbx, r14
nop dword [rax]
mov rcx, qword [rbx]
lea rdx, [rbp + 0x8580]
call fcn.1400ba941
test eax, eax
je 0x1400436e3
inc rdi
add rbx, 0x10
cmp rbx, rsi
jl 0x140043617
mov rbx, qword [rbp]
mov edx, 0x7d
add r15, 2
lea rsi, [0x140186210]
cmp word [r15], r12w
jne 0x140043520
mov r13, qword [rbp + 8]
mov r14, qword [rbp + 0x10]
lea r15, [0x14010d0d8]
mov qword [0x14018e308], r15
test rbx, rbx
je 0x140043945
lea rax, [rbx*2 + 2]
lea rcx, [rax + 0xf]
cmp rcx, rax
ja 0x14004369a
movabs rcx, 0xffffffffffffff0
and rcx, 0xfffffffffffffff0
mov rax, rcx
call fcn.1400d29bc
sub rsp, rcx
lea rbx, [rsp + 0x40]
mov qword [0x14018e308], rbx
cmp word [r13], r12w
je 0x140043941
movzx eax, word [r13]
cmp eax, 0x7b
je 0x1400438e5
cmp eax, 0x7d
je 0x14004392d
mov word [rbx], ax
add rbx, 2
jmp 0x14004392d
add rdi, rdi
mov edx, 0x7d
movzx ebx, byte [r14 + rdi*8 + 8]
jmp 0x140043882
lea rsi, [r15 + 2]
mov rcx, rsi
call fcn.1400b8b6c
mov r14, rax
test rax, rax
je 0x140043642
mov rcx, rax
sub rcx, r15
sar rcx, 1
sub rcx, 1
jne 0x140043735
add r14, 2
cmp word [r14], 0x7d
jne 0x140043642
jmp 0x14004373f
cmp rcx, 1
jne 0x14004375e
test r13b, r13b
je 0x140043754
inc rbx
mov qword [rbp], rbx
jmp 0x140043642
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 0x140043784
xor bl, bl
jmp 0x14004385a
cmp word [rsi + 2], r12w
jne 0x1400437a6
mov r8, rax
lea rdx, [rbp + 0x8578]
call fcn.140016bc7
movzx ebx, al
jmp 0x140043852
movzx ebx, cx
test ebx, 0xffffff80
jne 0x1400437cc
mov edx, 2
mov ecx, ebx
call fcn.1400bdc33
test eax, eax
je 0x1400437cc
and ebx, 0xffffffdf
cmp bx, 0x56
jne 0x140043800
movzx ecx, word [rsi + 2]
call fcn.14000be80
cmp ax, 0x4b
jne 0x140043800
xor edx, edx
lea rcx, [rsi + 4]
lea r8d, [rdx + 0x10]
call fcn.1400bf3fd
movzx ebx, al
jmp 0x140043852
mov rdi, r12
lea rbx, [0x140185b40]
lea r15, [0x140186210]
nop dword [rax + rax]
mov rcx, qword [rbx]
mov rdx, rsi
call fcn.1400ba941
test eax, eax
je 0x140043843
inc rdi
add rbx, 0x10
cmp rbx, r15
jl 0x140043819
xor bl, bl
jmp 0x14004385a
add rdi, rdi
lea rax, [0x140185b40]
movzx ebx, byte [rax + rdi*8 + 8]
test bl, bl
jne 0x140043876
mov rcx, rsi
call fcn.14001694b
test ax, ax
je 0x140043876
movzx eax, ax
mov byte [rbp + rax + 0x320], 1
mov edx, 0x7d
mov r15, r14
mov word [r14], dx
test bl, bl
je 0x1400438cb
movzx ecx, word [rbp + 0x8580]
movzx ebx, bl
or byte [rbp + rbx + 0x120], 1
test cx, cx
je 0x1400438cb
call qword [sym.imp.USER32.dll_IsCharAlphaW]
test eax, eax
jne 0x14004363e
test byte [rbp + 0x8578], 0x30
lea edx, [rax + 0x7d]
je 0x1400438d4
or byte [rbp + rbx + 0x120], 2
mov rbx, qword [rbp]
jmp 0x140043647
or byte [rbp + rbx + 0x120], 4
mov rbx, qword [rbp]
jmp 0x140043647
lea rdi, [r13 + 2]
mov rcx, rdi
call fcn.1400b8b6c
mov rdx, rax
test rax, rax
je 0x14004392d
cmp rax, rdi
jne 0x140043913
cmp word [rax + 2], 0x7d
lea rcx, [rax + 2]
cmove rdx, rcx
lea rax, [r13 + 4]
cmp rdx, rax
jne 0x14004392a
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 0x1400436c0
mov word [rbx], r12w
mov dword [0x14018e320], r12d
cmp word [r14], r12w
je 0x140043b58
cmp qword [0x14018e318], r12
jne 0x1400439a5
mov ecx, 0x2000
call fcn.1400bab03
mov qword [0x14018e318], rax
test rax, rax
jne 0x14004399b
mov rcx, qword [rbp + 0x8570]
lea rdx, str.Out_of_memory.
mov r9, r15
xor r8d, r8d
call fcn.14003c000
jmp 0x140043fb8
mov dword [0x14018e324], 0x400
mov rdi, qword [rbp + 0x8570]
mov edx, 3
mov rcx, rdi
call fcn.140029b01
mov ecx, dword [0x14018e330]
inc rax
cmp rax, rcx
jbe 0x140043a33
mov rcx, qword [0x14018e328]
mov edx, 0x1000
cmp rax, rdx
cmova edx, eax
mov dword [0x14018e330], edx
test rcx, rcx
je 0x1400439f7
call fcn.1400bf45d
mov edx, dword [0x14018e330]
lea ecx, [rdx + rdx]
call fcn.1400bab03
mov qword [0x14018e328], rax
mov rdx, rax
test rax, rax
jne 0x140043a3a
mov dword [0x14018e330], r12d
mov r9, r15
lea rdx, str.Out_of_memory.
xor r8d, r8d
mov rcx, rdi
call fcn.14003c000
jmp 0x140043fb8
mov rdx, qword [0x14018e328]
mov ecx, dword [0x14018e320]
mov rax, qword [0x14018e318]
mov qword [rax + rcx*8], rdx
mov rbx, qword [0x14018e328]
cmp word [r14], r12w
je 0x140043b31
mov esi, 0x2c
nop dword [rax]
movzx eax, word [r14]
cmp ax, si
je 0x140043a81
mov word [rbx], ax
add rbx, 2
jmp 0x140043b23
cmp word [r14 + 2], si
jne 0x140043a9c
mov word [rbx], si
add rbx, 2
add r14, 2
jmp 0x140043b23
mov word [rbx], r12w
mov ecx, dword [0x14018e320]
mov r8, qword [0x14018e318]
mov rax, qword [r8 + rcx*8]
cmp word [rax], r12w
je 0x140043ade
inc ecx
mov dword [0x14018e320], ecx
add rbx, 2
mov eax, ecx
mov qword [r8 + rcx*8], rbx
mov word [rbx], r12w
mov ecx, dword [0x14018e320]
mov r8, qword [0x14018e318]
cmp word [r14 + 2], r12w
je 0x140043b23
mov eax, dword [0x14018e324]
cmp ecx, eax
jb 0x140043b23
lea edx, [rax + 0x400]
mov rcx, r8
shl rdx, 3
call fcn.1400bf269
test rax, rax
je 0x140043a19
add dword [0x14018e324], 0x400
mov qword [0x14018e318], rax
add r14, 2
cmp word [r14], r12w
jne 0x140043a68
mov word [rbx], r12w
mov edx, dword [0x14018e320]
mov rax, qword [0x14018e318]
mov rcx, qword [rax + rdx*8]
cmp word [rcx], r12w
je 0x140043b58
inc edx
mov dword [0x14018e320], edx
cmp byte [0x140189b00], r12b
je 0x140043bad
mov rcx, qword [0x140189eb0]
mov edx, reloc.OLEAUT32.dll_VariantTimeToDosDateTime
call qword [sym.imp.USER32.dll_KillTimer]
movzx ecx, byte [0x140189b00]
test eax, eax
cmovne ecx, r12d
mov byte [0x140189b00], cl
mov ecx, reloc.OLEAUT32.dll_SafeArrayGetDim
call qword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x140043bad
mov edx, 1
or ecx, 0xffffffff
call fcn.14000177b
xor edx, edx
lea rcx, [rbp + 0x520]
mov r8d, 0x8000
call fcn.1400b970f
or byte [0x14018ac76], 1
lea rax, [rbp + 0x520]
cmp qword [0x140189ed8], r12
mov qword [0x14018e340], rax
lea rax, [rbp + 0x120]
mov qword [0x14018e2f8], rax
lea rax, [rbp + 0x320]
mov qword [0x14018e300], rax
mov dword [0x14018e348], r12d
mov dword [0x14018e2f0], 1
mov byte [0x140189ec4], 1
jne 0x140043c23
movzx edx, word [0x14018cd40]
call fcn.14000a553
mov eax, dword [rbp + 0x8588]
test eax, eax
jle 0x140043c77
cmp byte [0x140189b00], r12b
jne 0x140043c77
mov ecx, 0xa
lea r9, [0x14000474f]
cmp eax, ecx
cmovl eax, ecx
lea edx, [rcx + 2]
mov r8d, eax
mov rcx, qword [0x140189eb0]
call qword [sym.imp.USER32.dll_SetTimer]
test rax, rax
setne byte [0x140189b00]
nop word [rax + rax]
mov edx, 1
mov ecx, 0x8000012f
call fcn.14000177b
mov ecx, dword [0x14018e2f0]
cmp ecx, 1
je 0x140043c77
sub ecx, 2
je 0x140043f1f
sub ecx, 1
je 0x140043f13
sub ecx, 1
je 0x140043ce4
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
cmp ecx, 1
mov rcx, qword [0x140189e90]
je 0x140043cd8
lea rdx, str.NewInput
jmp 0x140043f39
lea rdx, [0x14010bf30]
jmp 0x140043f39
movups xmm0, xmmword [str.EndKey:]
xor edx, edx
lea rcx, [rbp + 0x30]
mov r8d, 0xf0
movaps xmmword [rbp + 0x20], xmm0
call fcn.1400b970f
movzx eax, word [0x14018e314]
test ax, ax
je 0x140043d22
mov word [rbp + 0x2e], ax
lea rdx, [rbp + 0x20]
mov word [rbp + 0x30], r12w
jmp 0x140043f26
cmp byte [0x14018e317], r12b
je 0x140043dd1
xor edx, edx
lea rcx, [rbp + 0x220]
mov r8d, 0x100
call fcn.1400b970f
or byte [rbp + 0x230], 0x80
call qword [sym.imp.USER32.dll_GetForegroundWindow]
test rax, rax
je 0x140043d69
xor edx, edx
mov rcx, rax
call qword [sym.imp.USER32.dll_GetWindowThreadProcessId]
jmp 0x140043d6c
mov eax, r12d
mov ecx, eax
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
cmp dword [0x140189b04], r12d
mov edi, r12d
movzx ecx, byte [0x14018e310]
mov rbx, rax
setne dil
xor edx, edx
call fcn.14001705c
movzx ecx, byte [0x14018e310]
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 0x140043f26
cmp byte [0x14018e316], r12b
mov ecx, r12d
je 0x140043e46
movzx edx, word [0x14018e312]
lea rax, [0x140185a78]
lea r8, [0x140185b48]
cmp word [rax], dx
je 0x140043e2c
inc ecx
add rax, 0x10
cmp rax, r8
jl 0x140043df6
movzx r9d, dx
lea r8, str.sc_03X
mov edx, 0x79
lea rcx, [rbp + 0x2e]
call fcn.140097786
jmp 0x140043eef
movsxd rdx, ecx
lea rax, [0x140000000]
add rdx, rdx
mov rdx, qword [rax + rdx*8 + 0x185a70]
jmp 0x140043ed8
movzx ebx, byte [0x14018e310]
lea rax, [0x140185b48]
lea rdx, [0x140186218]
nop
cmp byte [rax], bl
je 0x140043ec7
inc ecx
add rax, 0x10
cmp rax, rdx
jl 0x140043e5d
movzx ecx, bl
call fcn.1400167ab
mov word [rbp + 0x2e], ax
test ax, ax
je 0x140043e93
mov word [rbp + 0x30], r12w
jmp 0x140043eef
test bl, bl
je 0x140043eb9
movzx r9d, bl
lea r8, str.vk_02X
mov edx, 0x79
lea rcx, [rbp + 0x2e]
call fcn.140097786
jmp 0x140043eef
mov word [rbp + 0x2e], r12w
lea rdx, [rbp + 0x20]
jmp 0x140043f26
movsxd rdx, ecx
lea rax, [0x140185b40]
add rdx, rdx
mov rdx, qword [rax + rdx*8]
mov r8d, 0x78
lea rcx, [rbp + 0x2e]
call fcn.1400c4f15
mov word [rbp + 0x11e], r12w
movzx eax, word [rbp + 0x2e]
sub ax, 0x61
cmp ax, 0x19
ja 0x140043f0a
mov eax, 0xffe0
add word [rbp + 0x2e], ax
lea rdx, [rbp + 0x20]
jmp 0x140043f26
lea rdx, str.Match
jmp 0x140043f26
lea rdx, str.Timeout
mov rcx, qword [0x140189e90]
xor r9d, r9d
or r8, 0xffffffffffffffff
mov byte [rsp + 0x20], 1
call fcn.14009b349
cmp byte [0x140189b00], r12b
mov dword [0x14018e2f0], r12d
je 0x140043f9c
mov rcx, qword [0x140189eb0]
mov edx, reloc.OLEAUT32.dll_VariantTimeToDosDateTime
call qword [sym.imp.USER32.dll_KillTimer]
movzx r8d, byte [0x140189b00]
mov ecx, reloc.OLEAUT32.dll_SafeArrayGetDim
test eax, eax
cmovne r8d, r12d
mov byte [0x140189b00], r8b
call qword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x140043f9c
mov edx, 1
or ecx, 0xffffffff
call fcn.14000177b
mov rcx, qword [rbp + 0x18]
lea rdx, [rbp + 0x520]
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
call fcn.14009b349
lea rsp, [rbp + 0x8528]
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret