Function at 0x14002c4c0
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 0x14002c50d
cmp byte [rcx + 0x64], bl
je 0x14002c50d
mov r12b, 1
jmp 0x14002c510
xor r12b, r12b
lea r13, [rcx + 0x74]
mov byte [rbp - 0x70], r12b
add rcx, 0x174
mov qword [rbp - 0x59], r13
mov rsi, rdx
mov qword [rbp - 0x61], rcx
cmp word [rdx], bx
je 0x14002cabd
movzx r14d, byte [rbp + 0x6f]
nop dword [rax + rax]
mov word [rbp - 0x6d], bx
movzx eax, word [rsi]
cmp ax, 0x7b
je 0x14002c675
cmp ax, 0x7d
je 0x14002c94e
test r12b, r12b
je 0x14002c56a
inc edi
mov dword [rbp - 0x69], edi
jmp 0x14002c94e
xor ecx, ecx
mov word [rbp - 0x6d], ax
mov byte [rbp - 0x71], 0
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
cmp word [rbp - 0x6d], 0
jne 0x14002c58e
xor bl, bl
xor r14b, r14b
xor r12b, r12b
jmp 0x14002c8e5
movzx r8d, word [rbp - 0x6b]
test r8w, r8w
jne 0x14002c5ba
movzx ecx, word [rbp - 0x6d]
lea rdx, [rbp - 0x71]
mov r9b, 1
mov r8, rax
call fcn.1400237e0
xor r14b, r14b
movzx ebx, al
xor r12b, r12b
jmp 0x14002c8e5
movzx edx, word [rbp - 0x6d]
mov r9d, 0xffdf
movzx eax, dx
and ax, r9w
lea ecx, [rdx - 0x61]
cmp cx, 0x19
cmovbe dx, ax
cmp dx, 0x56
jne 0x14002c624
movzx eax, r8w
lea ecx, [r8 - 0x61]
and ax, r9w
cmp cx, 0x19
cmovbe r8w, ax
cmp r8w, 0x4b
jne 0x14002c624
mov r8d, reloc.WSOCK32.dll_recv
lea rdx, [rbp - 0x51]
lea rcx, [rbp - 0x69]
call fcn.1400cc1f8
movzx ecx, al
mov rax, qword [rbp - 0x51]
cmp word [rax], 0
cmove ebx, ecx
xor r14b, r14b
xor r12b, r12b
jmp 0x14002c8e5
lea r14, str.Numpad0
mov rdi, rbx
mov rbx, r14
mov rcx, qword [rbx]
lea rdx, [rbp - 0x6d]
call fcn.1400c5794
test eax, eax
je 0x14002c661
inc rdi
lea rax, [0x140125aa0]
add rbx, 0x10
cmp rbx, rax
jl 0x14002c631
xor bl, bl
xor r14b, r14b
xor r12b, r12b
jmp 0x14002c8e5
add rdi, rdi
movzx ebx, byte [r14 + rdi*8 + 8]
xor r14b, r14b
xor r12b, r12b
jmp 0x14002c8e5
add rsi, 2
mov edx, 0x7d
mov rcx, rsi
call fcn.1400c1808
mov r13, rax
test rax, rax
je 0x14002c94e
mov rbx, rax
sub rbx, rsi
sar rbx, 1
jne 0x14002c6b4
add r13, 2
cmp word [r13], 0x7d
jne 0x14002c94c
mov ebx, 1
jmp 0x14002c6ba
cmp rbx, 1
jne 0x14002c6d0
test r12b, r12b
je 0x14002c6c9
inc edi
mov dword [rbp - 0x69], edi
jmp 0x14002c94c
movzx eax, word [rsi]
mov word [rbp - 0x6d], ax
add rbx, rbx
lea rcx, [rbp - 0x31]
mov r8, rbx
mov rdx, rsi
call fcn.1400e2970
xor esi, esi
xor ecx, ecx
mov word [rbp + rbx - 0x31], si
xor r12b, r12b
mov byte [rbp - 0x71], sil
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
movzx ecx, word [rbp - 0x31]
test cx, cx
jne 0x14002c708
xor bl, bl
jmp 0x14002c7b9
movzx edx, word [rbp - 0x2f]
test dx, dx
jne 0x14002c729
mov r9b, 1
lea rdx, [rbp - 0x71]
mov r8, rax
call fcn.1400237e0
movzx r8d, al
jmp 0x14002c7da
lea eax, [rcx - 0x61]
mov r8d, 0xffdf
cmp ax, 0x19
ja 0x14002c73c
and cx, r8w
cmp cx, 0x56
jne 0x14002c77b
lea eax, [rdx - 0x61]
cmp ax, 0x19
ja 0x14002c74f
and dx, r8w
cmp dx, 0x4b
jne 0x14002c77b
mov r8d, reloc.WSOCK32.dll_recv
lea rdx, [rbp - 0x49]
lea rcx, [rbp - 0x2d]
call fcn.1400cc1f8
movzx ecx, al
mov r8d, esi
mov rax, qword [rbp - 0x49]
cmp word [rax], si
cmove r8d, ecx
jmp 0x14002c7da
mov rdi, rsi
lea rbx, str.Numpad0
nop word [rax + rax]
mov rcx, qword [rbx]
lea rdx, [rbp - 0x31]
call fcn.1400c5794
test eax, eax
je 0x14002c7ca
inc rdi
lea rax, [0x140125aa0]
add rbx, 0x10
cmp rbx, rax
jl 0x14002c790
xor bl, bl
movzx ecx, word [rbp - 0x31]
test cx, cx
jne 0x14002c847
mov r15d, esi
jmp 0x14002c8de
add rdi, rdi
lea rax, str.Numpad0
movzx r8d, byte [rax + rdi*8 + 8]
movzx ebx, r8b
test r8b, r8b
je 0x14002c7b5
movzx ecx, word [rbp - 0x31]
mov edx, 0xffdf
lea eax, [rcx - 0x61]
cmp ax, 0x19
ja 0x14002c7f8
and cx, dx
cmp cx, 0x56
jne 0x14002c81c
movzx ecx, word [rbp - 0x2f]
lea eax, [rcx - 0x61]
cmp ax, 0x19
ja 0x14002c80e
and cx, dx
cmp cx, 0x4b
jne 0x14002c81c
mov r14b, 1
jmp 0x14002c8de
mov dl, 1
movzx ecx, r8b
xor r14b, r14b
call fcn.1400241f0
movzx r15d, ax
test ax, ax
je 0x14002c8de
mov eax, 0x100
xor r15w, ax
xor bl, bl
jmp 0x14002c8de
lea r15, str.NumpadEnter
mov rdi, r15
mov rcx, qword [rdi]
lea rdx, [rbp - 0x31]
call fcn.1400c5794
test eax, eax
je 0x14002c8d5
inc rsi
lea rax, str.Numpad0
add rdi, 0x10
cmp rdi, rax
jl 0x14002c851
movzx ecx, word [rbp - 0x31]
mov edx, 0xffdf
lea eax, [rcx - 0x61]
cmp ax, 0x19
ja 0x14002c889
and cx, dx
cmp cx, 0x53
jne 0x14002c8c4
movzx ecx, word [rbp - 0x2f]
lea eax, [rcx - 0x61]
cmp ax, 0x19
ja 0x14002c89f
and cx, dx
cmp cx, 0x43
jne 0x14002c8c4
mov r8d, reloc.WSOCK32.dll_recv
lea rdx, [rbp - 0x41]
lea rcx, [rbp - 0x2d]
call fcn.1400cc1f8
mov ecx, eax
mov rax, qword [rbp - 0x41]
cmp word [rax], 0
je 0x14002c8cc
xor eax, eax
movzx r15d, ax
jmp 0x14002c8de
mov r12b, 1
movzx r15d, cx
jmp 0x14002c8de
add rsi, rsi
movzx r15d, word [r15 + rsi*8 + 8]
mov rsi, r13
mov r13, qword [rbp - 0x59]
test bl, bl
je 0x14002c91e
movzx ecx, word [rbp - 0x6d]
test cx, cx
je 0x14002c9d7
cmp byte [rbp + 0x6f], 0
je 0x14002c9d7
call qword [sym.imp.USER32.dll_IsCharAlphaW]
test eax, eax
jne 0x14002c9d7
test byte [rbp - 0x71], 0x30
movzx ecx, bl
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 0x14002c936
test r12b, r12b
je 0x14002c949
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 r12d, byte [rbp - 0x70]
add rsi, 2
mov r13, qword [rbp - 0x59]
cmp word [rsi], 0
jne 0x14002c540
mov r14, qword [rbp + 0x67]
test edi, edi
je 0x14002cab4
mov rbx, qword [rbp + 0x5f]
mov eax, dword [rbx + 0x30]
cmp edi, eax
jbe 0x14002ca39
test eax, eax
je 0x14002c98d
mov rcx, qword [rbx + 0x28]
call fcn.1400c5910
lea ecx, [rdi*2 + 2]
call fcn.1400c5924
mov qword [rbx + 0x28], rax
test rax, rax
jne 0x14002ca36
mov rax, qword [0x14012d4f8]
lea rdx, str.Out_of_memory.
mov qword [rsp + 0x28], rax
lea rcx, [0x14012d680]
xor eax, eax
xor r9d, r9d
xor r8d, r8d
mov qword [rsp + 0x20], rax
call fcn.14000f470
jmp 0x14002cae1
movzx r9d, byte [rbp + 0x77]
movzx edx, byte [rbp + 0x7f]
movzx edi, r9b
movzx ecx, bl
not dil
movzx eax, byte [rcx + r13]
and al, dil
or al, dl
mov byte [rcx + r13], al
test r9b, r9b
je 0x14002c927
test r14b, r14b
jne 0x14002c927
xor edx, edx
movzx ecx, bl
call fcn.1400241f0
mov rcx, qword [rbp - 0x61]
movzx r9d, byte [rbp + 0x77]
movzx edx, byte [rbp + 0x7f]
test ax, ax
je 0x14002c92b
movzx eax, ax
and byte [rax + rcx], dil
jmp 0x14002c92b
mov dword [rbx + 0x30], edi
movzx eax, word [r14]
mov rbx, qword [rbx + 0x28]
test ax, ax
je 0x14002caad
cmp ax, 0x7b
je 0x14002ca5f
cmp ax, 0x7d
je 0x14002ca9f
movzx eax, word [r14]
mov word [rbx], ax
add rbx, 2
jmp 0x14002ca9f
lea rdi, [r14 + 2]
mov edx, 0x7d
mov rcx, rdi
call fcn.1400c1808
mov rcx, rax
test rax, rax
je 0x14002ca9f
cmp rax, rdi
jne 0x14002ca89
add rax, 2
cmp word [rax], 0x7d
cmove rcx, rax
lea rax, [r14 + 4]
cmp rcx, rax
jne 0x14002ca9c
movzx eax, word [rdi]
mov word [rbx], ax
add rbx, 2
mov r14, rcx
movzx eax, word [r14 + 2]
add r14, 2
test ax, ax
jne 0x14002ca46
xor eax, eax
mov word [rbx], ax
jmp 0x14002cadc
mov rax, qword [rbp + 0x5f]
movzx r8d, byte [rbp + 0x6f]
test r8b, r8b
je 0x14002cadc
cmp dword [rax + 0x30], 0
je 0x14002cad1
mov rax, qword [rax + 0x28]
mov word [rax], bx
jmp 0x14002cadc
lea rcx, [0x140101bd0]
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