Function at 0x14002c080
Capabilities:
Get keyboard layout

Disassembly:
mov byte [rsp + 0x20], r9b
mov byte [rsp + 0x18], r8b
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x17]
sub rsp, 0xb8
xor ebx, ebx
mov rax, rcx
mov dword [rbp - 0x69], ebx
movzx r15d, bx
mov word [rbp - 0x6b], bx
mov edi, ebx
test r8b, r8b
je 0x14002c0cd
cmp byte [rcx + 0x64], bl
je 0x14002c0cd
mov sil, 1
jmp 0x14002c0d0
xor sil, sil
lea r13, [rcx + 0x74]
mov byte [rbp - 0x6f], sil
add rcx, 0x174
mov qword [rbp - 0x59], r13
mov r14, rdx
mov qword [rbp - 0x61], rcx
cmp word [rdx], bx
je 0x14002c6b6
movzx r12d, byte [rbp + 0x6f]
nop dword [rax + rax]
mov word [rbp - 0x6d], bx
movzx eax, word [r14]
cmp ax, 0x7b
je 0x14002c238
cmp ax, 0x7d
je 0x14002c544
test sil, sil
je 0x14002c12b
inc edi
mov dword [rbp - 0x69], edi
jmp 0x14002c544
xor ecx, ecx
mov word [rbp - 0x6d], ax
mov byte [rbp - 0x70], 0
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
cmp word [rbp - 0x6d], 0
jne 0x14002c150
xor sil, sil
xor r12b, r12b
xor dil, dil
jmp 0x14002c4d9
movzx r8d, word [rbp - 0x6b]
test r8w, r8w
jne 0x14002c17c
movzx ecx, word [rbp - 0x6d]
lea rdx, [rbp - 0x70]
mov r9b, 1
mov r8, rax
call fcn.1400233a0
xor r12b, r12b
movzx esi, al
xor dil, dil
jmp 0x14002c4d9
movzx edx, word [rbp - 0x6d]
mov r9d, 0xffdf
movzx ecx, dx
and cx, r9w
lea eax, [rdx - 0x61]
cmp ax, 0x19
cmova cx, dx
cmp cx, 0x56
jne 0x14002c1e7
movzx ecx, r8w
lea eax, [r8 - 0x61]
and cx, r9w
cmp ax, 0x19
cmova cx, r8w
cmp cx, 0x4b
jne 0x14002c1e7
mov r8d, reloc.WSOCK32.dll_recv
lea rdx, [rbp - 0x51]
lea rcx, [rbp - 0x69]
call fcn.1400cbc18
movzx ecx, al
mov esi, ebx
mov rax, qword [rbp - 0x51]
cmp word [rax], 0
cmove esi, ecx
xor r12b, r12b
xor dil, dil
jmp 0x14002c4d9
lea rsi, str.Numpad0
mov rdi, rbx
mov rbx, rsi
mov rcx, qword [rbx]
lea rdx, [rbp - 0x6d]
call fcn.1400c51bc
test eax, eax
je 0x14002c225
inc rdi
lea rax, [0x140124aa0]
add rbx, 0x10
cmp rbx, rax
jl 0x14002c1f4
xor sil, sil
xor r12b, r12b
xor dil, dil
jmp 0x14002c4d9
add rdi, rdi
xor r12b, r12b
movzx esi, byte [rsi + rdi*8 + 8]
xor dil, dil
jmp 0x14002c4d9
add r14, 2
mov edx, 0x7d
mov rcx, r14
call fcn.1400c0244
mov r13, rax
test rax, rax
je 0x14002c544
mov rbx, rax
sub rbx, r14
sar rbx, 1
jne 0x14002c277
add r13, 2
cmp word [r13], 0x7d
jne 0x14002c542
mov ebx, 1
jmp 0x14002c27d
cmp rbx, 1
jne 0x14002c294
test sil, sil
je 0x14002c28c
inc edi
mov dword [rbp - 0x69], edi
jmp 0x14002c542
movzx eax, word [r14]
mov word [rbp - 0x6d], ax
add rbx, rbx
lea rcx, [rbp - 0x31]
mov r8, rbx
mov rdx, r14
call fcn.1400e2370
xor r14d, r14d
xor ecx, ecx
mov word [rbp + rbx - 0x31], r14w
mov byte [rbp - 0x70], r14b
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
movzx r10d, word [rbp - 0x31]
test r10w, r10w
jne 0x14002c2d5
xor sil, sil
mov r15d, r14d
movzx edi, r14b
jmp 0x14002c4d2
movzx edx, word [rbp - 0x2f]
movzx ecx, r10w
test dx, dx
jne 0x14002c2f9
mov r9b, 1
lea rdx, [rbp - 0x70]
mov r8, rax
call fcn.1400233a0
movzx esi, al
jmp 0x14002c3a5
mov ebx, 0xffdf
lea eax, [r10 - 0x61]
and cx, bx
cmp ax, 0x19
cmova cx, r10w
cmp cx, 0x56
jne 0x14002c351
movzx ecx, dx
lea eax, [rdx - 0x61]
and cx, bx
cmp ax, 0x19
cmova cx, dx
cmp cx, 0x4b
jne 0x14002c351
mov r8d, reloc.WSOCK32.dll_recv
lea rdx, [rbp - 0x49]
lea rcx, [rbp - 0x2d]
call fcn.1400cbc18
movzx ecx, al
mov esi, r14d
mov rax, qword [rbp - 0x49]
cmp word [rax], r14w
cmove esi, ecx
jmp 0x14002c3aa
lea rsi, str.Numpad0
mov rdi, r14
mov rbx, rsi
nop
mov rcx, qword [rbx]
lea rdx, [rbp - 0x31]
call fcn.1400c51bc
test eax, eax
je 0x14002c39d
inc rdi
lea rax, [0x140124aa0]
add rbx, 0x10
cmp rbx, rax
jl 0x14002c360
xor sil, sil
cmp word [rbp - 0x31], r14w
jne 0x14002c421
mov r15d, r14d
movzx edi, r14b
jmp 0x14002c4d2
add rdi, rdi
movzx esi, byte [rsi + rdi*8 + 8]
mov ebx, 0xffdf
test sil, sil
je 0x14002c386
movzx edx, word [rbp - 0x31]
movzx ecx, dx
and cx, bx
lea eax, [rdx - 0x61]
cmp ax, 0x19
cmova cx, dx
cmp cx, 0x56
jne 0x14002c3f1
movzx edx, word [rbp - 0x2f]
movzx ecx, dx
and cx, bx
lea eax, [rdx - 0x61]
cmp ax, 0x19
cmova cx, dx
cmp cx, 0x4b
jne 0x14002c3f1
mov r12b, 1
movzx edi, r14b
jmp 0x14002c4d2
mov dl, 1
movzx ecx, sil
xor r12b, r12b
call fcn.140023d90
movzx r15d, ax
test ax, ax
je 0x14002c4ce
mov eax, 0x100
xor r15w, ax
xor sil, sil
movzx edi, sil
jmp 0x14002c4d2
lea r15, str.NumpadEnter
mov rdi, r14
mov rbx, r15
nop
mov rcx, qword [rbx]
lea rdx, [rbp - 0x31]
call fcn.1400c51bc
test eax, eax
je 0x14002c4bf
inc rdi
lea rax, str.Numpad0
add rbx, 0x10
cmp rbx, rax
jl 0x14002c430
movzx ecx, word [rbp - 0x31]
lea eax, [rcx - 0x61]
cmp ax, 0x19
mov eax, ecx
ja 0x14002c465
and eax, 0xffffffdf
cmp ax, 0x53
jne 0x14002c4ac
movzx edx, word [rbp - 0x2f]
mov r8d, 0xffdf
movzx ecx, dx
and cx, r8w
lea eax, [rdx - 0x61]
cmp ax, 0x19
cmova cx, dx
cmp cx, 0x43
jne 0x14002c4ac
mov r8d, reloc.WSOCK32.dll_recv
lea rdx, [rbp - 0x41]
lea rcx, [rbp - 0x2d]
call fcn.1400cbc18
mov ecx, eax
mov rax, qword [rbp - 0x41]
cmp word [rax], r14w
je 0x14002c4b6
movzx r15d, r14w
movzx edi, r14b
jmp 0x14002c4d2
mov dil, 1
movzx r15d, cx
jmp 0x14002c4d2
add rdi, rdi
movzx r15d, word [r15 + rdi*8 + 8]
movzx edi, r14b
jmp 0x14002c4d2
movzx edi, r12b
mov r14, r13
mov r13, qword [rbp - 0x59]
test sil, sil
je 0x14002c514
movzx ecx, word [rbp - 0x6d]
test cx, cx
je 0x14002c5cd
cmp byte [rbp + 0x6f], 0
je 0x14002c5cd
call qword [sym.imp.USER32.dll_IsCharAlphaW]
test eax, eax
jne 0x14002c5cd
test byte [rbp - 0x70], 0x30
movzx ecx, sil
sete al
inc al
or byte [rcx + r13], al
movzx edx, byte [rbp + 0x7f]
movzx r9d, byte [rbp + 0x77]
mov rcx, qword [rbp - 0x61]
test r15w, r15w
jne 0x14002c52c
test dil, dil
je 0x14002c53f
movzx eax, r15w
add rcx, rax
movzx eax, r9b
not al
and al, byte [rcx]
or al, dl
mov byte [rcx], al
mov edi, dword [rbp - 0x69]
xor ebx, ebx
movzx esi, byte [rbp - 0x6f]
add r14, 2
mov r13, qword [rbp - 0x59]
cmp word [r14], 0
jne 0x14002c100
mov r12, qword [rbp + 0x67]
test edi, edi
je 0x14002c6ad
mov rbx, qword [rbp + 0x5f]
mov eax, dword [rbx + 0x30]
cmp edi, eax
jbe 0x14002c62e
test eax, eax
je 0x14002c583
mov rcx, qword [rbx + 0x28]
call fcn.1400c5338
lea ecx, [rdi*2 + 2]
call fcn.1400c534c
mov qword [rbx + 0x28], rax
test rax, rax
jne 0x14002c62b
mov rax, qword [0x14012c4e8]
lea rdx, str.Out_of_memory.
mov qword [rsp + 0x28], rax
lea rcx, [0x14012c670]
xor eax, eax
xor r9d, r9d
xor r8d, r8d
mov qword [rsp + 0x20], rax
call fcn.14000f470
jmp 0x14002c6da
movzx r9d, byte [rbp + 0x77]
movzx edx, byte [rbp + 0x7f]
movzx ebx, r9b
movzx ecx, sil
not bl
movzx eax, byte [rcx + r13]
and al, bl
or al, dl
mov byte [rcx + r13], al
test r9b, r9b
je 0x14002c51d
test r12b, r12b
jne 0x14002c51d
xor edx, edx
movzx ecx, sil
call fcn.140023d90
mov rcx, qword [rbp - 0x61]
movzx r9d, byte [rbp + 0x77]
movzx edx, byte [rbp + 0x7f]
test ax, ax
je 0x14002c521
movzx eax, ax
and byte [rax + rcx], bl
jmp 0x14002c521
mov dword [rbx + 0x30], edi
movzx eax, word [r12]
mov rbx, qword [rbx + 0x28]
test ax, ax
je 0x14002c6a6
nop dword [rax]
cmp ax, 0x7b
je 0x14002c655
cmp ax, 0x7d
je 0x14002c697
mov word [rbx], ax
add rbx, 2
jmp 0x14002c697
lea rdi, [r12 + 2]
mov edx, 0x7d
mov rcx, rdi
call fcn.1400c0244
mov rcx, rax
test rax, rax
je 0x14002c697
cmp rax, rdi
jne 0x14002c680
add rax, 2
cmp word [rax], 0x7d
cmove rcx, rax
lea rax, [r12 + 4]
cmp rcx, rax
jne 0x14002c694
movzx eax, word [rdi]
mov word [rbx], ax
add rbx, 2
mov r12, rcx
movzx eax, word [r12 + 2]
add r12, 2
test ax, ax
jne 0x14002c640
xor eax, eax
mov word [rbx], ax
jmp 0x14002c6d5
mov rax, qword [rbp + 0x5f]
movzx r8d, byte [rbp + 0x6f]
test r8b, r8b
je 0x14002c6d5
cmp dword [rax + 0x30], 0
je 0x14002c6ca
mov rax, qword [rax + 0x28]
mov word [rax], bx
jmp 0x14002c6d5
lea rcx, [0x140100be0]
mov qword [rax + 0x28], rcx
mov eax, 1
add rsp, 0xb8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret