Function at 0x434a80
Capabilities:
Get keyboard layout

Disassembly:
mov eax, 0x8520
call fcn.00497d00
mov eax, dword [0x4c4f08]
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x28], eax
test eax, eax
jne 0x434ad2
cmp dword [0x4c7094], 1
mov edx, dword [esp + 0x8534]
sete al
test al, al
sete al
movzx ecx, al
push ecx
push edx
mov dword [0x4c7094], 0
call fcn.0042f8e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8520
ret 4
mov eax, dword [0x4c4ebc]
mov ecx, dword [0x4c4ec4]
mov ebp, dword [0x4c4ec0]
push 0xff
lea edx, [esp + 0x235]
push 0
push edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], ecx
mov dword [0x4c7094], 0
mov byte [esp + 0x23c], 0
call fcn.004953e0
add esp, 0xc
push 0x1ff
lea eax, [esp + 0x335]
push 0
push eax
mov byte [esp + 0x33c], 0
call fcn.004953e0
xor ecx, ecx
add esp, 0xc
mov word [esp + 0x1a], cx
cmp word [ebp], cx
je 0x434c6f
xor edx, edx
mov word [esp + 0x18], dx
movzx ecx, word [ebp]
mov eax, ecx
sub eax, 0x7b
je 0x434b8c
sub eax, 2
je 0x434c61
push edx
mov word [esp + 0x1c], cx
mov byte [esp + 0x1b], dl
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push 1
mov ecx, eax
push 1
lea edx, [esp + 0x1f]
lea eax, [esp + 0x20]
call fcn.00411c20
add esp, 8
mov bl, al
jmp 0x434c25
lea eax, [ebp + 2]
push 0x7d
push eax
mov dword [esp + 0x34], eax
call fcn.0048d2f1
mov esi, eax
add esp, 8
test esi, esi
je 0x434c61
mov edi, esi
sub edi, ebp
sar edi, 1
dec edi
jne 0x434bc4
cmp word [esi + 2], 0x7d
jne 0x434c61
add esi, 2
mov edi, 1
xor eax, eax
push eax
mov word [esi], ax
mov byte [esp + 0x1b], al
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov ebp, dword [esp + 0x2c]
push 1
mov ecx, eax
push 1
lea edx, [esp + 0x1f]
mov eax, ebp
call fcn.00411c20
mov bl, al
add esp, 8
test bl, bl
je 0x434c02
cmp edi, 1
jne 0x434c1b
mov cx, word [ebp]
mov word [esp + 0x18], cx
jmp 0x434c1b
mov eax, ebp
call fcn.00411b80
movzx eax, ax
test ax, ax
je 0x434c1b
mov edx, eax
mov byte [esp + edx + 0x330], 1
mov eax, 0x7d
mov word [esi], ax
mov ebp, esi
test bl, bl
je 0x434c61
movzx esi, bl
or byte [esp + esi + 0x230], 1
cmp word [esp + 0x18], 0
lea esi, [esp + esi + 0x230]
je 0x434c61
mov ecx, dword [esp + 0x18]
push ecx
call dword [sym.imp.USER32.dll_IsCharAlphaW]
test eax, eax
jne 0x434c61
test byte [esp + 0x17], 0x30
je 0x434c5e
or byte [esi], 2
jmp 0x434c61
or byte [esi], 4
add ebp, 2
cmp word [ebp], 0
jne 0x434b44
mov edx, dword [esp + 0x1c]
mov dword [0x4c70ac], 0
cmp word [edx], 0
mov ebp, 0x2c
je 0x434e45
cmp dword [0x4c70a8], 0
jne 0x434cd9
push 0x1000
call fcn.0048c5a4
add esp, 4
mov dword [0x4c70a8], eax
test eax, eax
jne 0x434ccf
mov ecx, dword [esp + 0x8534]
push 0x4a9e04
push eax
push str.Out_of_memory.
call fcn.0042fab0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8520
ret 4
mov dword [0x4c70b0], 0x400
mov ebx, dword [esp + 0x8534]
mov edi, 3
mov ecx, ebx
call fcn.00420610
inc eax
cmp eax, dword [0x4c70b8]
jbe 0x434d5c
mov dword [0x4c70b8], eax
cmp eax, 0x1000
ja 0x434d0b
mov dword [0x4c70b8], 0x1000
mov eax, dword [0x4c70b4]
test eax, eax
je 0x434d1d
push eax
call fcn.0048db7f
add esp, 4
mov eax, dword [0x4c70b8]
lea ecx, [eax + eax]
push ecx
call fcn.0048c5a4
add esp, 4
mov dword [0x4c70b4], eax
test eax, eax
jne 0x434d61
mov dword [0x4c70b8], eax
push 0x4a9e04
push 0
push str.Out_of_memory.
mov ecx, ebx
call fcn.0042fab0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8520
ret 4
mov eax, dword [0x4c70b4]
mov edx, dword [0x4c70ac]
mov ecx, dword [0x4c70a8]
mov edi, dword [esp + 0x1c]
mov dword [ecx + edx*4], eax
cmp word [edi], 0
mov esi, dword [0x4c70b4]
je 0x434e25
movzx eax, word [edi]
cmp ax, bp
je 0x434d97
mov word [esi], ax
add esi, 2
jmp 0x434e18
cmp word [edi + 2], bp
jne 0x434daa
mov edx, ebp
mov word [esi], dx
add esi, 2
add edi, 2
jmp 0x434e18
xor eax, eax
mov word [esi], ax
mov ecx, dword [0x4c70a8]
mov eax, dword [0x4c70ac]
mov edx, dword [ecx + eax*4]
cmp word [edx], 0
je 0x434ddf
inc eax
mov dword [0x4c70ac], eax
add esi, 2
mov dword [ecx + eax*4], esi
xor eax, eax
mov word [esi], ax
mov eax, dword [0x4c70ac]
mov ecx, dword [0x4c70a8]
cmp word [edi + 2], 0
je 0x434e18
mov edx, dword [0x4c70b0]
cmp eax, edx
jb 0x434e18
lea edx, [edx*4 + 0x1000]
push edx
push ecx
call fcn.0048d7d7
add esp, 8
test eax, eax
je 0x434d3c
add dword [0x4c70b0], 0x400
mov dword [0x4c70a8], eax
add edi, 2
cmp word [edi], 0
jne 0x434d84
xor eax, eax
mov word [esi], ax
mov ecx, dword [0x4c70a8]
mov edx, dword [0x4c70ac]
mov eax, dword [ecx + edx*4]
cmp word [eax], 0
je 0x434e45
inc dword [0x4c70ac]
cmp byte [0x4c50c5], 0
je 0x434e83
mov ecx, dword [0x4c4f70]
push 0xc
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x434e68
mov byte [0x4c50c5], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x434e83
push 1
push 0xffffffffffffffff
call fcn.00401290
add esp, 8
push 0x7ffe
xor ebp, ebp
lea eax, [esp + 0x536]
xor edx, edx
push ebp
push eax
mov dword [0x4c70bc], 1
mov word [0x4c70c0], 0
mov word [esp + 0x53c], dx
call fcn.004953e0
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0x53c]
mov ebx, 0x3fff
add esp, 0xc
mov dword [0x4c70c4], ecx
mov dword [0x4c70c8], ebp
mov dword [0x4c70cc], ebx
cmp word [eax], bp
je 0x434fdb
lea edi, [eax + 2]
jmp 0x434ef0
movzx esi, word [edi - 2]
test esi, 0xffffff80
jne 0x434f0e
push 2
push esi
call fcn.0048d76e
add esp, 8
test eax, eax
je 0x434f0e
and esi, 0xffffffdf
movzx eax, si
add eax, 0xffffffd6
cmp eax, 0x2c
ja case.0x434f24.43
movzx edx, byte [eax + 0x4352d8]
jmp dword [edx*4 + 0x4352b4]
mov byte [0x4c70bc], 0
jmp case.0x434f24.43
mov byte [0x4c70bd], 1
jmp case.0x434f24.43
mov byte [0x4c70be], 1
jmp case.0x434f24.43
mov byte [0x4c70bf], 1
jmp case.0x434f24.43
push edi
call fcn.0048d7b6
add esp, 4
mov dword [0x4c70cc], eax
cmp eax, ebx
jle case.0x434f24.43
mov dword [0x4c70cc], ebx
jmp case.0x434f24.43
mov eax, edi
call fcn.0040cc50
test al, al
je 0x434fa5
push 0x10
push 0
push edi
call fcn.0048dee7
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
fild qword [esp + 0x2c]
add esp, 0xc
fmul qword [0x4bc1b0]
call fcn.0049ae30
mov ebp, eax
jmp case.0x434f24.43
push edi
call fcn.0048dfc6
fmul qword [0x4bc1b0]
add esp, 4
call fcn.0049ae30
mov ebp, eax
jmp case.0x434f24.43
mov byte [0x4c70c0], 1
jmp case.0x434f24.43
mov byte [0x4c70c1], 1
add edi, 2
cmp word [edi - 2], 0
jne 0x434ef0
or byte [0x4c5986], 1
cmp dword [0x4c50a0], 0
lea eax, [esp + 0x230]
lea ecx, [esp + 0x330]
mov dword [0x4c7098], eax
mov dword [0x4c709c], ecx
mov dword [0x4c7094], 1
mov byte [0x4c50c0], 1
jne 0x435027
mov edx, dword [0x4c25d0]
movzx eax, word [edx]
push eax
call fcn.00407bf0
add esp, 4
test ebp, ebp
jle 0x435060
cmp byte [0x4c50c5], 0
jne 0x435060
mov eax, 0xa
cmp ebp, 0xa
jl 0x435040
mov eax, ebp
mov ecx, dword [0x4c4f70]
push 0x403390
push eax
push 0xc
push ecx
call dword [sym.imp.USER32.dll_SetTimer]
test eax, eax
setne dl
mov byte [0x4c50c5], dl
push 1
push 0x8000012f
call fcn.00401290
mov eax, dword [0x4c7094]
add esp, 8
cmp eax, 1
je 0x435060
add eax, 0xfffffffe
cmp eax, 3
ja case.default.0x435085
jmp dword [eax*4 + 0x435308]
mov eax, dword [0x4c5774]
push 1
push 0
push 0xffffffffffffffff
push str.Timeout
push eax
jmp 0x435241
push 1
push 0
push 0xffffffffffffffff
push str.Match
jmp 0x43523a
mov eax, dword [0x4a8744]
mov edx, dword [str.EndKey:]
mov ecx, dword [0x4a8748]
push 0xf0
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], edx
mov edx, dword [0x4a874c]
lea eax, [esp + 0x44]
push 0
push eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], edx
call fcn.004953e0
add esp, 0xc
cmp byte [0x4c70a5], 0
je 0x43518b
push 0xff
lea ecx, [esp + 0x135]
push 0
push ecx
mov byte [esp + 0x13c], 0
call fcn.004953e0
or byte [esp + 0x14c], 0x80
add esp, 0xc
call dword [sym.imp.USER32.dll_GetForegroundWindow]
test eax, eax
je 0x435136
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
jmp 0x435138
xor eax, eax
push eax
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
xor edx, edx
cmp dword [0x4c5100], edx
push eax
setne dl
lea eax, [esp + 0x42]
lea ecx, [esp + 0x134]
xor bl, bl
push edx
movzx edx, byte [0x4c70a0]
push 2
push eax
push ecx
push edx
call fcn.00412080
movzx ecx, byte [0x4c70a0]
movzx eax, ax
add esp, 4
push eax
push ecx
call dword [sym.imp.USER32.dll_ToUnicodeEx]
xor edx, edx
mov word [esp + eax*2 + 0x3e], dx
jmp 0x435208
cmp byte [0x4c70a4], 0
je 0x4351ef
mov cx, word [0x4c70a2]
xor eax, eax
lea ecx, [ecx]
cmp word [eax*8 + 0x4c2564], cx
je 0x4351cc
inc eax
cmp eax, 0xd
jl 0x4351a0
movzx eax, cx
push eax
push str.sc_03X
mov esi, 0x79
lea edi, [esp + 0x46]
call fcn.00473270
add esp, 8
jmp 0x435208
mov eax, dword [eax*8 + 0x4c2560]
push 0x78
push eax
lea ecx, [esp + 0x46]
push ecx
call fcn.0048f214
add esp, 0xc
xor edx, edx
mov word [esp + 0x12e], dx
jmp 0x435208
mov bl, byte [0x4c70a0]
push 1
mov eax, 0x79
lea ecx, [esp + 0x42]
call fcn.00411af0
add esp, 4
mov edx, dword [0x4c5774]
push 1
push 0
push 0xffffffffffffffff
lea ecx, [esp + 0x3c]
push ecx
push edx
jmp 0x435241
mov eax, dword [0x4c5774]
push 1
push 0
push 0xffffffffffffffff
push 0x4a8750
push eax
jmp 0x435241
push 1
push 0
push 0xffffffffffffffff
push str.NewInput
mov ecx, dword [0x4c5774]
push ecx
call fcn.00475ef0
cmp byte [0x4c50c5], 0
mov dword [0x4c7094], 0
je 0x43528e
mov edx, dword [0x4c4f70]
push 0xc
push edx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x435273
mov byte [0x4c50c5], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x43528e
push 1
push 0xffffffffffffffff
call fcn.00401290
add esp, 8
mov ecx, dword [esp + 0x28]
push 1
push 0
push 0xffffffffffffffff
lea eax, [esp + 0x53c]
push eax
push ecx
call fcn.00475ef0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8520
ret 4