Function at 0x435780
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.0x435797.1
jmp dword [eax*4 + 0x435a14]
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 esi, dword [esp + 0x144]
mov edi, esi
test esi, esi
jne 0x4357e1
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 0x435802
movups xmm0, xmmword [str.EndKey:]
lea edi, [esi + 0xe]
sub ebp, 7
movups xmmword [esi], xmm0
movzx eax, word [ebx + 0x48]
test ax, ax
je 0x435831
mov word [edi], ax
xor eax, eax
cmp byte [esp + 0x14c], 0
mov word [edi + 2], ax
mov eax, str.EndKey
cmovne eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
cmp byte [ebx + 0x4b], 0
je 0x4358ec
push pe_nt_image_headers32
lea eax, [esp + 0x44]
push 0
push eax
call fcn.004971b0
add esp, 0xc
mov byte [esp + 0x50], 0x80
call dword [sym.imp.USER32.dll_GetForegroundWindow]
xor ebp, ebp
test eax, eax
je 0x435895
push ebp
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov ebp, eax
mov dword [esp + 0x10], 0x30
lea eax, [esp + 0x10]
push eax
push ebp
call dword [sym.imp.USER32.dll_GetGUIThreadInfo]
test eax, eax
je 0x435895
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x435895
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov ebp, eax
push ebp
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov cl, byte [ebx + 0x45]
push eax
xor eax, eax
cmp dword [0x4dc2ec], eax
setne al
xor dl, dl
push eax
push 2
lea eax, [esp + 0x4c]
push edi
push eax
call fcn.00414720
movzx eax, ax
push eax
movzx eax, byte [ebx + 0x45]
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, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
xor eax, eax
mov word [edi], ax
cmp byte [ebx + 0x4a], al
je 0x435938
movzx ecx, word [ebx + 0x46]
nop word [eax + eax]
cmp word [eax*8 + 0x4d98ec], cx
je 0x435914
inc eax
cmp eax, 0xd
jl 0x435900
xor eax, eax
jmp 0x435938
lea esi, [ebp - 1]
push esi
push dword [eax*8 + 0x4d98e8]
push edi
call fcn.004a1eb4
add esp, 0xc
xor eax, eax
mov word [edi + esi*2], ax
movzx eax, word [edi]
mov esi, dword [esp + 0x144]
movzx eax, ax
mov ecx, eax
test ax, ax
jne 0x43596e
cmp byte [esp + 0x14c], al
je 0x435952
xor ecx, ecx
cmp byte [ebx + 0x4a], cl
jne 0x43596e
cmp byte [ebx + 0x4a], 0
mov edx, edi
mov cl, byte [ebx + 0x45]
sete al
movzx eax, al
push eax
push ebp
call fcn.00413ed0
movzx ecx, word [edi]
add esp, 8
movzx edx, cx
test cx, cx
jne 0x43598d
movzx eax, word [ebx + 0x46]
push eax
push str.sc_03X
push ebp
push edi
call fcn.0047c9c0
movzx edx, word [edi]
add esp, 0x10
lea eax, [edx - 0x61]
cmp ax, 0x19
ja 0x4359ad
cmp word [edi + 2], 0
jne 0x4359ad
cmp byte [esp + 0x14c], 0
je 0x4359ad
lea eax, [edx - 0x20]
mov word [edi], ax
cmp byte [esp + 0x14c], 0
mov eax, str.EndKey
cmovne eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x130
ret 0xc
mov eax, 0x4ce320
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, 0x4b70dc
pop ebx
add esp, 0x130
ret 0xc