Function at 0x14005c4d0
Capabilities:
Get keyboard layout

Disassembly:
mov byte [rsp + 0x20], r9b
mov byte [rsp + 0x18], r8b
mov qword [rsp + 0x10], rdx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x48
mov r13, rcx
movzx esi, r9b
xor ecx, ecx
movzx edi, r8b
mov word [rsp + 0x36], cx
mov r14, rdx
movzx ebp, cx
mov r12d, ecx
test r8b, r8b
je 0x14005c519
cmp byte [r13 + 0x65], cl
je 0x14005c519
mov bl, 1
jmp 0x14005c51b
xor bl, bl
mov r15, rdx
mov byte [rsp + 0x90], bl
cmp word [rdx], cx
je 0x14005c9a6
movzx r14d, byte [rsp + 0xa0]
mov edx, 0x7d
nop dword [rax]
mov word [rsp + 0x34], cx
movzx eax, word [r15]
cmp ax, 0x7b
je 0x14005c72c
cmp ax, 0x7d
je 0x14005c69c
test bl, bl
je 0x14005c569
inc r12d
jmp 0x14005c69c
xor ecx, ecx
mov word [rsp + 0x34], ax
mov byte [rsp + 0x30], 0
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
mov r8, rax
movzx eax, word [rsp + 0x34]
test ax, ax
je 0x14005c660
movzx ecx, word [rsp + 0x36]
test cx, cx
jne 0x14005c5ae
mov r9b, 1
lea rdx, [rsp + 0x30]
movzx ecx, ax
call fcn.140021f70
movzx ebx, al
jmp 0x14005c87a
movzx ebx, ax
test ebx, 0xffffff80
je 0x14005c5bd
xor edx, edx
jmp 0x14005c5d0
mov edx, 2
mov ecx, ebx
call fcn.1400df2dc
movzx ecx, word [rsp + 0x36]
mov edx, eax
movzx eax, bx
mov r8d, 0xffdf
and ax, r8w
test edx, edx
cmove ax, bx
cmp ax, 0x56
jne 0x14005c61e
call fcn.1400163d0
cmp ax, 0x4b
jne 0x14005c61e
mov r8d, reloc.WSOCK32.dll_recv
lea rdx, [rsp + 0x38]
lea rcx, [rsp + 0x38]
call fcn.1400dc0a8
movzx ecx, al
xor ebx, ebx
mov rax, qword [rsp + 0x38]
cmp word [rax], bx
cmove ebx, ecx
jmp 0x14005c87a
xor edi, edi
lea rbx, str.Numpad0
nop word [rax + rax]
mov rcx, qword [rbx]
lea rdx, [rsp + 0x34]
call fcn.1400da874
test eax, eax
je 0x14005c717
inc rdi
lea rax, [0x14013e3a0]
add rbx, 0x10
cmp rbx, rax
jl 0x14005c630
movzx ebx, byte [rsp + 0x90]
movzx edx, byte [rsp + 0xb0]
test bp, bp
jne 0x14005c674
cmp byte [rsp + 0x31], bpl
je 0x14005c68f
movzx eax, bp
lea rcx, [rax + r13]
movzx eax, sil
not al
and al, byte [rcx + 0x174]
or al, dl
mov byte [rcx + 0x174], al
movzx edi, byte [rsp + 0xa0]
xor ecx, ecx
lea edx, [rcx + 0x7d]
movzx esi, byte [rsp + 0xa8]
add r15, 2
cmp word [r15], 0
jne 0x14005c540
mov r14, qword [rsp + 0x98]
test r12d, r12d
je 0x14005c9a6
mov eax, dword [r13 + 0x30]
cmp r12d, eax
jbe 0x14005c926
test eax, eax
je 0x14005c6de
mov rcx, qword [r13 + 0x28]
call fcn.1400dc1c0
lea ecx, [r12*2 + 2]
call fcn.1400dc1b8
mov qword [r13 + 0x28], rax
test rax, rax
jne 0x14005c922
lea r8, [0x140103554]
lea rdx, str.Out_of_memory.
lea rcx, [0x140145c90]
call fcn.1400570c0
jmp 0x14005c9cb
shl rdi, 4
lea rax, str.Numpad0
movzx ebx, byte [rdi + rax + 8]
jmp 0x14005c872
lea rdi, [r15 + 2]
mov rcx, rdi
call fcn.1400d7a50
mov rsi, rax
test rax, rax
je 0x14005c68f
sub rax, r15
sar rax, 1
sub rax, 1
jne 0x14005c760
add rsi, 2
cmp word [rsi], 0x7d
jne 0x14005c68f
jmp 0x14005c766
cmp rax, 1
jne 0x14005c77a
test bl, bl
je 0x14005c772
inc r12d
jmp 0x14005c68f
movzx eax, word [rdi]
mov word [rsp + 0x34], ax
xor eax, eax
xor ecx, ecx
mov word [rsi], ax
mov byte [rsp + 0x31], al
mov byte [rsp + 0x30], al
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
mov r8b, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
mov qword [rsp + 0x20], rax
call fcn.140021e40
movzx ebx, al
test al, al
je 0x14005c84d
movzx edi, word [rdi]
test edi, 0xffffff80
je 0x14005c7c0
xor edx, edx
mov ecx, edx
jmp 0x14005c7d0
mov edx, 2
mov ecx, edi
call fcn.1400df2dc
mov ecx, eax
xor edx, edx
movzx eax, di
mov r14d, 0xffdf
and ax, r14w
test ecx, ecx
cmove ax, di
cmp ax, 0x56
jne 0x14005c820
movzx edi, word [r15 + 4]
test edi, 0xffffff80
je 0x14005c7fa
mov ecx, edx
jmp 0x14005c808
mov edx, 2
mov ecx, edi
call fcn.1400df2dc
mov ecx, eax
movzx eax, di
and ax, r14w
test ecx, ecx
cmove ax, di
cmp ax, 0x4b
jne 0x14005c820
mov r14b, 1
jmp 0x14005c823
xor r14b, r14b
cmp qword [r13 + 0x10], 0
je 0x14005c85d
test r14b, r14b
jne 0x14005c85d
mov dl, 1
movzx ecx, bl
call fcn.140022b50
movzx ebp, ax
test ax, ax
je 0x14005c85d
mov eax, 0x100
xor bp, ax
xor bl, bl
jmp 0x14005c85d
lea rdx, [rsp + 0x31]
mov rcx, rdi
call fcn.140021d20
movzx ebp, ax
mov r15d, 0x7d
mov word [rsi], r15w
mov r15, rsi
movzx esi, byte [rsp + 0xa8]
movzx edi, byte [rsp + 0xa0]
test bl, bl
je 0x14005c658
movzx ecx, word [rsp + 0x34]
test cx, cx
je 0x14005c8b4
test dil, dil
je 0x14005c8b4
call qword [sym.imp.USER32.dll_IsCharAlphaW]
test eax, eax
jne 0x14005c8b4
test byte [rsp + 0x30], 0x30
movzx eax, bl
lea rcx, [rax + r13]
sete al
inc al
or byte [rcx + 0x74], al
jmp 0x14005c658
movzx edx, byte [rsp + 0xb0]
movzx edi, sil
movzx eax, bl
not dil
lea rcx, [rax + r13]
movzx eax, byte [rax + r13 + 0x74]
and al, dil
or al, dl
mov byte [rcx + 0x74], al
test sil, sil
je 0x14005c915
test r14b, r14b
jne 0x14005c915
xor edx, edx
movzx ecx, bl
call fcn.140022b50
movzx ebx, byte [rsp + 0x90]
movzx edx, byte [rsp + 0xb0]
test ax, ax
je 0x14005c668
movzx eax, ax
and byte [rax + r13 + 0x174], dil
jmp 0x14005c668
movzx ebx, byte [rsp + 0x90]
jmp 0x14005c668
mov dword [r13 + 0x30], r12d
movzx eax, word [r14]
mov rbx, qword [r13 + 0x28]
test ax, ax
je 0x14005c99f
mov r15d, 0x7d
nop dword [rax]
cmp ax, 0x7b
je 0x14005c955
cmp ax, r15w
je 0x14005c991
mov word [rbx], ax
add rbx, 2
jmp 0x14005c991
lea rdi, [r14 + 2]
mov edx, r15d
mov rcx, rdi
call fcn.1400d7a50
test rax, rax
je 0x14005c991
cmp rax, rdi
jne 0x14005c97b
cmp word [rax + 2], r15w
lea rcx, [rax + 2]
cmove rax, rcx
lea rcx, [r14 + 4]
cmp rax, rcx
jne 0x14005c98e
movzx ecx, word [rdi]
mov word [rbx], cx
add rbx, 2
mov r14, rax
movzx eax, word [r14 + 2]
add r14, 2
test ax, ax
jne 0x14005c940
xor eax, eax
mov word [rbx], ax
jmp 0x14005c9c6
test dil, dil
je 0x14005c9c6
cmp dword [r13 + 0x30], 0
je 0x14005c9bb
mov rax, qword [r13 + 0x28]
mov word [rax], cx
jmp 0x14005c9c6
lea rax, [0x140103554]
mov qword [r13 + 0x28], rax
mov eax, 1
add rsp, 0x48
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret