Function at 0x453e00
Capabilities:
Get keyboard layout

Disassembly:
sub esp, 0x130
push ebx
mov ebx, ecx
push ebp
push esi
push edi
mov eax, dword [ebx]
cmp eax, 6
ja case.0x453e17.1
jmp dword [eax*4 + 0x454084]
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 0x453e61
mov eax, str.EndKey
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
cmp byte [esp + 0x14c], 0
mov ebp, dword [esp + 0x148]
je 0x453e82
movups xmm0, xmmword [str.EndKey:]
lea edi, [eax + 0xe]
sub ebp, 7
movups xmmword [eax], xmm0
movzx eax, word [ebx + 0x4a]
test ax, ax
je 0x453eb6
mov word [edi], ax
xor eax, eax
cmp byte [esp + 0x14c], 0
mov word [edi + 2], ax
mov eax, str.EndKey
cmovne eax, dword [esp + 0x144]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
cmp byte [ebx + 0x4d], 0
je 0x453f74
push 0x100
lea eax, [esp + 0x44]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov byte [esp + 0x50], 0x80
call dword [sym.imp.USER32.dll_GetForegroundWindow]
xor esi, esi
test eax, eax
je 0x453f18
mov ebp, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
push esi
push eax
call ebp
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 0x453f18
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x453f18
push 0
push eax
call ebp
mov esi, eax
push esi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov cl, byte [ebx + 0x46]
push eax
xor eax, eax
cmp dword [0x4fb9b8], eax
setne al
xor dl, dl
push eax
push 2
lea eax, [esp + 0x4c]
push edi
push eax
call fcn.0041fab0
movzx eax, ax
push eax
movzx eax, byte [ebx + 0x46]
push eax
call dword [sym.imp.USER32.dll_ToUnicodeEx]
xor ecx, ecx
cmp byte [esp + 0x14c], cl
mov word [edi + eax*2], cx
mov eax, str.EndKey
cmovne eax, dword [esp + 0x144]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
xor eax, eax
mov word [edi], ax
cmp byte [ebx + 0x4c], al
je 0x453fb4
movzx ecx, word [ebx + 0x48]
cmp word [eax*8 + 0x4f910c], cx
je 0x453f94
inc eax
cmp eax, 0xd
jl 0x453f82
jmp 0x453fb4
lea esi, [ebp - 1]
push esi
push dword [eax*8 + 0x4f9108]
push edi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcsncpy]
xor eax, eax
add esp, 0xc
mov word [edi + esi*2], ax
cmp word [edi], ax
jne 0x453ff7
cmp byte [esp + 0x14c], 0
je 0x453fc4
cmp byte [ebx + 0x4c], 0
jne 0x453fdd
cmp byte [ebx + 0x4c], 0
mov edx, edi
mov cl, byte [ebx + 0x46]
sete al
movzx eax, al
push eax
push ebp
call fcn.0041f230
add esp, 8
cmp word [edi], 0
jne 0x453ff7
movzx eax, word [ebx + 0x48]
push eax
push str.sc_03X
push ebp
push edi
call fcn.004b1470
add esp, 0x10
movzx ecx, word [edi]
lea eax, [ecx - 0x61]
cmp ax, 0x19
ja 0x45401a
cmp word [edi + 2], 0
jne 0x45401a
cmp byte [esp + 0x14c], 0
je 0x45401a
lea eax, [ecx - 0x20]
mov word [edi], ax
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, 0x4e8dcc
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, 0x4cfc40
pop ebx
add esp, 0x130
ret 0xc