Function at 0x444830
Capabilities:
Get keyboard layout

Disassembly:
sub esp, 0x130
push ebx
push ebp
mov ebp, ecx
push esi
push edi
mov eax, dword [ebp]
cmp eax, 6
ja case.0x444848.1
jmp dword [eax*4 + 0x444ab0]
mov eax, str.Timeout
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
mov eax, str.Match
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
mov eax, dword [esp + 0x144]
mov edi, eax
test eax, eax
jne 0x444892
mov eax, str.EndKey
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
cmp byte [esp + 0x14c], 0
mov ebx, dword [esp + 0x148]
je 0x4448b6
mov dword [eax], 0x4b646e45
lea edi, [eax + 7]
mov dword [eax + 4], 0x3a7965
sub ebx, 7
mov al, byte [ebp + 0x4a]
test al, al
je 0x4448e5
cmp byte [esp + 0x14c], 0
mov byte [edi], al
mov eax, str.EndKey
cmovne eax, dword [esp + 0x144]
mov byte [edi + 1], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
cmp byte [ebp + 0x4c], 0
je 0x4449a2
push 0x100
lea eax, [esp + 0x44]
push 0
push eax
call fcn.004b4390
add esp, 0xc
mov byte [esp + 0x50], 0x80
call dword [sym.imp.USER32.dll_GetForegroundWindow]
xor esi, esi
test eax, eax
je 0x444947
mov ebx, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
push esi
push eax
call ebx
mov esi, eax
mov dword [esp + 0x10], 0x30
lea eax, [esp + 0x10]
push eax
push esi
call dword [sym.imp.USER32.dll_GetGUIThreadInfo]
test eax, eax
je 0x444947
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x444947
push 0
push eax
call ebx
mov esi, eax
push esi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov cl, byte [ebp + 0x46]
xor ebx, ebx
cmp dword [0x4eb624], ebx
mov esi, eax
setne bl
xor dl, dl
call fcn.00416230
push esi
push ebx
push edi
lea edx, [esp + 0x4c]
movzx ecx, ax
movzx eax, byte [ebp + 0x46]
push edx
push ecx
push eax
call dword [sym.imp.USER32.dll_ToAsciiEx]
cmp byte [esp + 0x14c], 0
mov byte [eax + edi], 0
mov eax, str.EndKey
cmovne eax, dword [esp + 0x144]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
xor cl, cl
mov byte [edi], 0
cmp byte [ebp + 0x4b], cl
je 0x4449de
movzx ecx, word [ebp + 0x48]
xor eax, eax
cmp word [eax*8 + 0x4e88e4], cx
je 0x4449c4
inc eax
cmp eax, 0xd
jl 0x4449b2
jmp 0x4449e2
lea esi, [ebx - 1]
push esi
push dword [eax*8 + 0x4e88e0]
push edi
call fcn.004ba990
mov byte [esi + edi], 0
add esp, 0xc
mov cl, byte [edi]
test cl, cl
jne 0x444a28
cmp byte [esp + 0x14c], 0
je 0x4449f3
xor cl, cl
cmp byte [ebp + 0x4b], cl
jne 0x444a0e
cmp byte [ebp + 0x4b], 0
mov edx, edi
mov cl, byte [ebp + 0x46]
sete al
movzx eax, al
push eax
push ebx
call fcn.004159e0
mov cl, byte [edi]
add esp, 8
test cl, cl
jne 0x444a28
movzx eax, word [ebp + 0x48]
push eax
push str.sc_03X
push ebx
push edi
call fcn.0049e100
mov cl, byte [edi]
add esp, 0x10
lea eax, [ecx - 0x61]
cmp al, 0x19
ja 0x444a44
cmp byte [edi + 1], 0
jne 0x444a44
cmp byte [esp + 0x14c], 0
je 0x444a44
sub cl, 0x20
mov byte [edi], cl
cmp byte [esp + 0x14c], 0
mov eax, str.EndKey
cmovne eax, dword [esp + 0x144]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
mov eax, 0x4dd398
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
mov eax, str.NewInput
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
mov eax, str.Stopped
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
pop edi
pop esi
pop ebp
mov eax, 0x4d5231
pop ebx
add esp, 0x130
ret 0xc