Function at 0x1400d2bb0
Capabilities:
Get keyboard layout

Disassembly:
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rdi
sub rsp, 0x70
lea rdi, [rsp + 0x30]
mov ecx, reloc.WSOCK32.dll_recv
mov eax, 0xcccccccc
rep stosd dword [rdi], eax
mov rcx, qword [rsp + 0x80]
mov rcx, qword [rsp + 0x80]
call fcn.140034a60
mov qword [rsp + 0x80], rax
mov rax, qword [rsp + 0x80]
movzx eax, word [rax]
test eax, eax
jne 0x1400d2c03
xor al, al
jmp 0x1400d2e93
mov eax, 2
imul rax, rax, 1
mov rcx, qword [rsp + 0x80]
movzx eax, word [rcx + rax]
test eax, eax
jne 0x1400d2c45
mov rax, qword [rsp + 0x88]
mov rcx, qword [rsp + 0x80]
movzx ecx, word [rcx]
mov word [rax + 2], cx
mov rax, qword [rsp + 0x88]
mov byte [rax], 0
mov al, 1
jmp 0x1400d2e93
mov rax, qword [rsp + 0x88]
mov byte [rax], 1
mov byte [rsp + 0x34], 0
mov rax, qword [rsp + 0x80]
add rax, 2
mov dx, 0x2b
mov rcx, rax
call fcn.14000f740
mov qword [rsp + 0x48], rax
cmp qword [rsp + 0x48], 0
je 0x1400d2d76
mov rax, qword [rsp + 0x48]
sub rax, 2
mov rdx, rax
mov rcx, qword [rsp + 0x80]
call fcn.140034ac0
mov qword [rsp + 0x50], rax
mov rax, qword [rsp + 0x80]
mov rcx, qword [rsp + 0x50]
sub rcx, rax
mov rax, rcx
sar rax, 1
inc rax
mov qword [rsp + 0x58], rax
mov r8, qword [rsp + 0x58]
lea rdx, str.Ctrl
mov rcx, qword [rsp + 0x80]
call fcn.1401a82a0
test eax, eax
jne 0x1400d2ce5
movzx eax, byte [rsp + 0x34]
or eax, 1
mov byte [rsp + 0x34], al
jmp 0x1400d2d42
mov r8, qword [rsp + 0x58]
lea rdx, [0x140299220]
mov rcx, qword [rsp + 0x80]
call fcn.1401a82a0
test eax, eax
jne 0x1400d2d10
movzx eax, byte [rsp + 0x34]
or eax, 4
mov byte [rsp + 0x34], al
jmp 0x1400d2d42
mov r8, qword [rsp + 0x58]
lea rdx, str.Shift
mov rcx, qword [rsp + 0x80]
call fcn.1401a82a0
test eax, eax
jne 0x1400d2d3b
movzx eax, byte [rsp + 0x34]
or eax, 0x10
mov byte [rsp + 0x34], al
jmp 0x1400d2d42
xor al, al
jmp 0x1400d2e93
mov rax, qword [rsp + 0x48]
add rax, 2
mov rcx, rax
call fcn.140034a60
mov qword [rsp + 0x80], rax
mov rax, qword [rsp + 0x80]
movzx eax, word [rax]
test eax, eax
jne 0x1400d2d71
xor al, al
jmp 0x1400d2e93
jmp 0x1400d2c55
mov eax, 2
imul rax, rax, 1
mov rcx, qword [rsp + 0x80]
movzx eax, word [rcx + rax]
test eax, eax
jne 0x1400d2dd6
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
mov qword [rsp + 0x60], rax
mov rcx, qword [rsp + 0x80]
movzx ecx, word [rcx]
call qword [sym.imp.USER32.dll_CharLowerW]
mov r9b, 1
mov rcx, qword [rsp + 0x60]
mov r8, rcx
lea rdx, [rsp + 0x34]
movzx ecx, ax
call fcn.140036980
movzx eax, al
mov rcx, qword [rsp + 0x88]
mov word [rcx + 2], ax
jmp 0x1400d2e07
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
mov qword [rsp + 0x20], rax
mov r9b, 1
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x80]
call fcn.14003e390
movzx eax, al
mov rcx, qword [rsp + 0x88]
mov word [rcx + 2], ax
movzx eax, byte [rsp + 0x34]
and eax, 1
test eax, eax
je 0x1400d2e2b
mov rax, qword [rsp + 0x88]
movzx eax, byte [rax]
or eax, 8
mov rcx, qword [rsp + 0x88]
mov byte [rcx], al
movzx eax, byte [rsp + 0x34]
and eax, 4
test eax, eax
je 0x1400d2e4f
mov rax, qword [rsp + 0x88]
movzx eax, byte [rax]
or eax, 0x10
mov rcx, qword [rsp + 0x88]
mov byte [rcx], al
movzx eax, byte [rsp + 0x34]
and eax, 0x10
test eax, eax
je 0x1400d2e73
mov rax, qword [rsp + 0x88]
movzx eax, byte [rax]
or eax, 4
mov rcx, qword [rsp + 0x88]
mov byte [rcx], al
mov rax, qword [rsp + 0x88]
cmp word [rax + 2], 0
je 0x1400d2e89
mov byte [rsp + 0x68], 1
jmp 0x1400d2e8e
mov byte [rsp + 0x68], 0
movzx eax, byte [rsp + 0x68]
mov rdi, rax
mov rcx, rsp
lea rdx, [0x14029d9e0]
call fcn.140134a00
mov rax, rdi
add rsp, 0x70
pop rdi
ret