Function at 0x14002c340
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 r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1f]
sub rsp, 0xc0
xor ebx, ebx
movzx r13d, r9b
mov dword [rbp - 0x69], ebx
mov r12, rdx
mov word [rbp - 0x6b], bx
mov rax, rcx
movzx r15d, bx
mov esi, ebx
test r8b, r8b
je 0x14002c392
cmp byte [rcx + 0x64], bl
je 0x14002c392
mov cl, 1
jmp 0x14002c394
xor cl, cl
lea rdx, [rax + 0x74]
mov byte [rbp - 0x70], cl
mov r14, r12
mov qword [rbp - 0x59], rdx
lea rdx, [rax + 0x174]
mov qword [rsp + 0xb8], rdi
mov qword [rbp - 0x61], rdx
cmp word [r12], bx
je 0x14002c996
movzx edi, byte [rbp + 0x6f]
movzx r12d, byte [rbp + 0x6f]
mov byte [rbp - 0x71], dil
nop dword [rax]
mov word [rbp - 0x6d], bx
movzx eax, word [r14]
cmp ax, 0x7b
je 0x14002c516
cmp ax, 0x7d
je 0x14002c82e
test cl, cl
je 0x14002c3fa
inc esi
mov dword [rbp - 0x69], esi
jmp 0x14002c82e
xor ecx, ecx
mov word [rbp - 0x6d], ax
mov byte [rbp - 0x6f], 0
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
cmp word [rbp - 0x6d], 0
jne 0x14002c420
xor sil, sil
xor dil, dil
mov byte [rbp - 0x71], dil
jmp 0x14002c7be
movzx r8d, word [rbp - 0x6b]
test r8w, r8w
jne 0x14002c44d
movzx ecx, word [rbp - 0x6d]
lea rdx, [rbp - 0x6f]
mov r9b, 1
mov r8, rax
call fcn.1400237a0
xor dil, dil
movzx esi, al
mov byte [rbp - 0x71], dil
jmp 0x14002c7be
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 0x14002c4b9
movzx ecx, r8w
lea eax, [r8 - 0x61]
and cx, r9w
cmp ax, 0x19
cmova cx, r8w
cmp cx, 0x4b
jne 0x14002c4b9
mov r8d, reloc.WSOCK32.dll_recv
lea rdx, [rbp - 0x51]
lea rcx, [rbp - 0x69]
call fcn.1400c80ac
movzx ecx, al
mov esi, ebx
mov rax, qword [rbp - 0x51]
cmp word [rax], 0
cmove esi, ecx
xor dil, dil
mov byte [rbp - 0x71], dil
jmp 0x14002c7be
lea rsi, str.Numpad0
mov rdi, rbx
mov rbx, rsi
nop word [rax + rax]
mov rcx, qword [rbx]
lea rdx, [rbp - 0x6d]
call fcn.1400c1404
test eax, eax
je 0x14002c502
inc rdi
lea rax, str._____:____.___n__t
add rbx, 0x10
cmp rbx, rax
jl 0x14002c4d0
xor sil, sil
xor dil, dil
mov byte [rbp - 0x71], dil
jmp 0x14002c7be
add rdi, rdi
movzx esi, byte [rsi + rdi*8 + 8]
xor dil, dil
mov byte [rbp - 0x71], dil
jmp 0x14002c7be
add r14, 2
mov edx, 0x7d
mov rcx, r14
call fcn.1400bcaf8
mov r13, rax
test rax, rax
je 0x14002c82a
mov rbx, rax
sub rbx, r14
sar rbx, 1
jne 0x14002c555
add r13, 2
cmp word [r13], 0x7d
jne 0x14002c828
mov ebx, 1
jmp 0x14002c55b
cmp rbx, 1
jne 0x14002c577
movzx ecx, byte [rbp - 0x70]
test cl, cl
je 0x14002c56f
inc esi
mov dword [rbp - 0x69], esi
xor ebx, ebx
jmp 0x14002c82e
movzx eax, word [r14]
mov word [rbp - 0x6d], ax
add rbx, rbx
lea rcx, [rbp - 0x31]
mov r8, rbx
mov rdx, r14
call fcn.1400bcbb0
xor r14d, r14d
xor r12b, r12b
xor ecx, ecx
mov word [rbp + rbx - 0x31], r14w
mov byte [rbp - 0x6f], r12b
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
movzx r10d, word [rbp - 0x31]
test r10w, r10w
jne 0x14002c5b7
xor sil, sil
mov r15d, r14d
jmp 0x14002c7b6
movzx edx, word [rbp - 0x2f]
movzx ecx, r10w
test dx, dx
jne 0x14002c5db
mov r9b, 1
lea rdx, [rbp - 0x6f]
mov r8, rax
call fcn.1400237a0
movzx esi, al
jmp 0x14002c685
mov ebx, 0xffdf
lea eax, [r10 - 0x61]
and cx, bx
cmp ax, 0x19
cmova cx, r10w
cmp cx, 0x56
jne 0x14002c632
movzx ecx, dx
lea eax, [rdx - 0x61]
and cx, bx
cmp ax, 0x19
cmova cx, dx
cmp cx, 0x4b
jne 0x14002c632
mov r8d, reloc.WSOCK32.dll_recv
lea rdx, [rbp - 0x49]
lea rcx, [rbp - 0x2d]
call fcn.1400c80ac
movzx ecx, al
mov esi, r14d
mov rax, qword [rbp - 0x49]
cmp word [rax], si
cmove esi, ecx
jmp 0x14002c68a
lea rsi, str.Numpad0
mov rdi, r14
mov rbx, rsi
nop
mov rcx, qword [rbx]
lea rdx, [rbp - 0x31]
call fcn.1400c1404
test eax, eax
je 0x14002c67d
inc rdi
lea rax, str._____:____.___n__t
add rbx, 0x10
cmp rbx, rax
jl 0x14002c640
xor sil, sil
cmp word [rbp - 0x31], r14w
jne 0x14002c701
movzx edi, byte [rbp - 0x71]
mov r15d, r14d
jmp 0x14002c7b6
add rdi, rdi
movzx esi, byte [rsi + rdi*8 + 8]
mov ebx, 0xffdf
test sil, sil
je 0x14002c666
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 0x14002c6d1
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 0x14002c6d1
mov dil, 1
mov byte [rbp - 0x71], dil
jmp 0x14002c7b6
xor dil, dil
mov dl, 1
movzx ecx, sil
mov byte [rbp - 0x71], dil
call fcn.1400241a0
movzx r15d, ax
test ax, ax
je 0x14002c7b6
mov eax, 0x100
xor r15w, ax
xor sil, sil
jmp 0x14002c7b6
lea r15, str.NumpadEnter
mov rdi, r14
mov rbx, r15
nop
mov rcx, qword [rbx]
lea rdx, [rbp - 0x31]
call fcn.1400c1404
test eax, eax
je 0x14002c7a9
inc rdi
lea rax, str.Numpad0
add rbx, 0x10
cmp rbx, rax
jl 0x14002c710
movzx ecx, word [rbp - 0x31]
lea eax, [rcx - 0x61]
cmp ax, 0x19
mov eax, ecx
ja 0x14002c749
and eax, 0xffffffdf
cmp ax, 0x53
jne 0x14002c7a3
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 0x14002c7a3
mov r8d, reloc.WSOCK32.dll_recv
lea rdx, [rbp - 0x41]
lea rcx, [rbp - 0x2d]
call fcn.1400c80ac
movzx edi, byte [rbp - 0x71]
mov ecx, eax
mov rax, qword [rbp - 0x41]
cmp word [rax], r14w
je 0x14002c79a
movzx r15d, r14w
jmp 0x14002c7b6
mov r12b, 1
movzx r15d, cx
jmp 0x14002c7b6
movzx r15d, r14w
jmp 0x14002c7b2
add rdi, rdi
movzx r15d, word [r15 + rdi*8 + 8]
movzx edi, byte [rbp - 0x71]
mov r14, r13
movzx r13d, byte [rbp + 0x77]
test sil, sil
je 0x14002c7fe
movzx ecx, word [rbp - 0x6d]
test cx, cx
je 0x14002c8b4
cmp byte [rbp + 0x6f], 0
je 0x14002c8b4
call qword [sym.imp.USER32.dll_IsCharAlphaW]
test eax, eax
jne 0x14002c8b4
mov rcx, qword [rbp - 0x59]
movzx eax, sil
add rcx, rax
test byte [rbp - 0x6f], 0x30
sete al
inc al
or byte [rcx], al
movzx r8d, byte [rbp + 0x7f]
mov rdx, qword [rbp - 0x61]
test r15w, r15w
jne 0x14002c812
test r12b, r12b
je 0x14002c825
movzx ecx, r15w
movzx eax, r13b
not al
and al, byte [rcx + rdx]
or al, r8b
mov byte [rcx + rdx], al
mov esi, dword [rbp - 0x69]
xor ebx, ebx
movzx ecx, byte [rbp - 0x70]
movzx r13d, byte [rbp + 0x77]
add r14, 2
cmp word [r14], 0
jne 0x14002c3d0
mov r12, qword [rbp + 0x67]
test esi, esi
je 0x14002c98d
mov rbx, qword [rbp + 0x5f]
mov eax, dword [rbx + 0x30]
cmp esi, eax
jbe 0x14002c911
test eax, eax
je 0x14002c86a
mov rcx, qword [rbx + 0x28]
call fcn.1400c1574
lea ecx, [rsi*2 + 2]
call fcn.1400c1588
mov qword [rbx + 0x28], rax
test rax, rax
jne 0x14002c90e
mov rax, qword [0x1401273b8]
lea rdx, str.Out_of_memory.
mov qword [rsp + 0x28], rax
lea rcx, [0x140127530]
xor eax, eax
xor r9d, r9d
xor r8d, r8d
mov qword [rsp + 0x20], rax
call fcn.14000f6a0
jmp 0x14002c9ba
mov rcx, qword [rbp - 0x59]
movzx ebx, r13b
movzx r8d, byte [rbp + 0x7f]
not bl
movzx eax, sil
add rcx, rax
movzx eax, byte [rcx]
and al, bl
or al, r8b
mov byte [rcx], al
test r13b, r13b
je 0x14002c803
test dil, dil
jne 0x14002c803
xor edx, edx
movzx ecx, sil
call fcn.1400241a0
mov rdx, qword [rbp - 0x61]
movzx r8d, byte [rbp + 0x7f]
test ax, ax
je 0x14002c807
movzx eax, ax
and byte [rax + rdx], bl
jmp 0x14002c807
mov dword [rbx + 0x30], esi
movzx eax, word [r12]
mov rbx, qword [rbx + 0x28]
test ax, ax
je 0x14002c986
nop
cmp ax, 0x7b
je 0x14002c935
cmp ax, 0x7d
je 0x14002c977
mov word [rbx], ax
add rbx, 2
jmp 0x14002c977
lea rdi, [r12 + 2]
mov edx, 0x7d
mov rcx, rdi
call fcn.1400bcaf8
mov rcx, rax
test rax, rax
je 0x14002c977
cmp rax, rdi
jne 0x14002c960
add rax, 2
cmp word [rax], 0x7d
cmove rcx, rax
lea rax, [r12 + 4]
cmp rcx, rax
jne 0x14002c974
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 0x14002c920
xor eax, eax
mov word [rbx], ax
jmp 0x14002c9b5
mov rax, qword [rbp + 0x5f]
movzx r8d, byte [rbp + 0x6f]
test r8b, r8b
je 0x14002c9b5
cmp dword [rax + 0x30], 0
je 0x14002c9aa
mov rax, qword [rax + 0x28]
mov word [rax], bx
jmp 0x14002c9b5
lea rcx, [0x1400fcb50]
mov qword [rax + 0x28], rcx
mov eax, 1
mov rdi, qword [rsp + 0xb8]
add rsp, 0xc0
pop r15
pop r14
pop r13
pop r12
pop rsi
pop rbx
pop rbp
ret