Function at 0x44a4d0
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x164
mov eax, dword [0x4bf454]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 0x10]
push esi
push edi
mov edi, ecx
mov byte [ebp - 0x155], 0
push 0
mov dword [ebp - 0x164], edi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
movzx edx, word [ebp + 8]
lea ecx, [edi + 8]
push eax
push 0
push 0x14
mov dword [ebp - 0x15c], eax
lea eax, [ebp - 0x2c]
push eax
push ecx
push 0
push edx
call dword [sym.imp.USER32.dll_ToUnicodeEx]
cmp byte [edi + 0x20d], 0
mov esi, eax
mov dword [ebp - 0x160], esi
je 0x44a561
cmp byte [ebp + 0xc], 0
jne 0x44a561
cmp byte [edi + 0x20c], 0
jne 0x44a561
push str.Disable_process_char_event
push dword [edi + 0x210]
call fcn.00443ba0
add esp, 8
mov byte [edi + 0x20b], 0
mov byte [edi + 0x20d], 0
cmp esi, 2
jne 0x44a6d9
mov ax, word [ebp - 0x2c]
cmp ax, 0x5e
je 0x44a5de
mov ecx, 0xa8
cmp ax, cx
je 0x44a5de
cmp ax, 0x7e
je 0x44a5de
mov ecx, 0xb4
cmp ax, cx
je 0x44a5de
cmp ax, 0x60
je 0x44a5de
mov ecx, 0x2c7
cmp ax, cx
je 0x44a5de
mov ecx, 0x2d8
cmp ax, cx
je 0x44a5de
mov ecx, 0xb0
cmp ax, cx
je 0x44a5de
mov ecx, 0x2d9
cmp ax, cx
je 0x44a5de
mov ecx, 0x2dd
cmp ax, cx
je 0x44a5de
mov ecx, 0xb8
cmp ax, cx
je 0x44a5de
mov ecx, 0x2db
cmp ax, cx
jne 0x44a6dd
cmp ax, word [ebp - 0x2a]
jne 0x44a6dd
push str.Extra_double_dead_key_catched.
push dword [edi + 0x210]
call fcn.00443ba0
add esp, 8
cmp byte [ebp + 0xc], 0
je 0x44a69f
push str.Enable_process_char_event._Enable_process_double_char.
push dword [edi + 0x210]
call fcn.00443ba0
add esp, 8
mov word [edi + 0x20b], 0x101
lea eax, [ebp - 0x2c]
mov byte [edi + 0x20d], 1
push dword [ebp - 0x15c]
push 0
push 0x14
push eax
lea eax, [edi + 8]
push eax
movzx eax, word [ebp + 8]
push 0
push eax
mov eax, dword [sym.imp.USER32.dll_ToUnicodeEx]
call eax
mov ecx, eax
test ecx, ecx
jle 0x44a663
lea eax, [ecx + ecx]
cmp eax, 0x28
jae 0x44a8d8
xor edx, edx
mov word [ebp + eax - 0x2c], dx
jmp 0x44a669
xor eax, eax
mov word [ebp - 0x2c], ax
lea eax, [ebp - 0x2c]
push eax
push ecx
push str.ToUnicodeEx___function_called_second._Returned:__d._Output_buff:__S
push dword [edi + 0x210]
call fcn.00443ba0
add esp, 0x10
mov ecx, ebx
push 0
call fcn.004498b0
pop edi
pop esi
xor al, al
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00464d5e
mov esp, ebp
pop ebp
ret 0xc
cmp byte [edi + 0x20b], 0
jne 0x44a6dd
push str.Disable_second_calling_ToUnicodeEx__
push dword [edi + 0x210]
call fcn.00443ba0
add esp, 8
mov ecx, ebx
push 0
call fcn.004498b0
pop edi
pop esi
xor al, al
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00464d5e
mov esp, ebp
pop ebp
ret 0xc
test esi, esi
jle 0x44a71e
push dword [ebp - 0x15c]
lea eax, [ebp - 0x2c]
push 0
push 0x14
push eax
lea eax, [edi + 8]
push eax
movzx eax, word [ebp + 8]
push 0
push eax
mov eax, dword [sym.imp.USER32.dll_ToUnicodeEx]
call eax
mov esi, eax
mov dword [ebp - 0x160], esi
test esi, esi
jle 0x44a71e
lea eax, [esi + esi]
cmp eax, 0x28
jae 0x44a8d8
xor ecx, ecx
mov word [ebp + eax - 0x2c], cx
jmp 0x44a724
xor eax, eax
mov word [ebp - 0x2c], ax
lea eax, [ebp - 0x2c]
push eax
push esi
push str.ToUnicodeEx___returned__d__output_buff_:__S
push dword [edi + 0x210]
call fcn.00443ba0
add esp, 0x10
cmp esi, 1
jne 0x44a778
cmp byte [edi + 0x20b], 0
jne 0x44a8bf
push dword [ebp - 0x2c]
mov ecx, edi
call fcn.00449800
movzx eax, ax
mov ecx, ebx
push eax
call fcn.0044a0d0
pop edi
pop esi
mov al, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00464d5e
mov esp, ebp
pop ebp
ret 0xc
jle 0x44a7ee
xor esi, esi
cmp dword [ebp - 0x160], esi
jle 0x44a7d9
movzx eax, word [ebp + esi*2 - 0x2c]
mov ecx, edi
push eax
call fcn.00449800
mov ecx, dword [ebx + 0x10]
movzx edx, ax
cmp ecx, dword [ebx + 0x14]
jae 0x44a7b9
cmp dword [ebx + 0x14], 8
lea eax, [ecx + 1]
mov dword [ebx + 0x10], eax
mov eax, ebx
jb 0x44a7ac
mov eax, dword [ebx]
mov word [eax + ecx*2], dx
xor edx, edx
mov word [eax + ecx*2 + 2], dx
jmp 0x44a7d0
push edx
mov byte [ebp - 0x15c], 0
mov ecx, ebx
push dword [ebp - 0x15c]
push 1
call fcn.004495b0
inc esi
cmp esi, dword [ebp - 0x160]
jl 0x44a784
pop edi
pop esi
mov al, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00464d5e
mov esp, ebp
pop ebp
ret 0xc
test esi, esi
jne 0x44a89a
push str.Was_get_a_not_printable_symbol_then_try_get_a_printable_with_turned_off_the_ctrl_and_alt_modifiers
push dword [edi + 0x210]
call fcn.00443ba0
add esp, 8
lea eax, [ebp - 0x54]
lea esi, [edi + 8]
mov ecx, 0x40
lea edi, [ebp - 0x154]
rep movsd dword es:[edi], dword [esi]
push dword [ebp - 0x15c]
mov dword [ebp - 0xb2], 0
push 0
push 0x14
push eax
lea eax, [ebp - 0x154]
mov word [ebp - 0x143], 0
push eax
movzx eax, word [ebp + 8]
push 0
push eax
call dword [sym.imp.USER32.dll_ToUnicodeEx]
mov esi, eax
test esi, esi
jle 0x44a865
lea eax, [esi + esi]
cmp eax, 0x28
jae 0x44a8d8
xor ecx, ecx
mov word [ebp + eax - 0x54], cx
jmp 0x44a86b
xor eax, eax
mov word [ebp - 0x54], ax
lea eax, [ebp - 0x54]
push eax
mov eax, dword [ebp - 0x164]
push esi
push str.ToUnicodeEx___without_ctrl_and_alt_return__d_wchars_:__S
push dword [eax + 0x210]
call fcn.00443ba0
add esp, 0x10
cmp esi, 1
jne 0x44a8bf
push dword [ebp - 0x54]
mov ecx, ebx
call fcn.0044a0d0
jmp 0x44a8bf
cmp esi, 0xffffffff
jne 0x44a8bf
cmp byte [ebp + 0xc], 0
je 0x44a8bf
push str.Dead_key_pressed__wait_for_a_char_event
push dword [edi + 0x210]
call fcn.00443ba0
add esp, 8
mov byte [edi + 0x20b], 1
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 0x155]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.00464d5e
mov esp, ebp
pop ebp
ret 0xc
call fcn.00465160
int3