Function at 0x433fb0
Capabilities:
Get keyboard layout

Disassembly:
mov eax, 0x8520
call fcn.00495db0
mov eax, dword [0x4c3e88]
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x28], eax
test eax, eax
jne 0x434002
cmp dword [0x4c600c], 1
mov edx, dword [esp + 0x8534]
sete al
test al, al
sete al
movzx ecx, al
push ecx
push edx
mov dword [0x4c600c], 0
call fcn.0042ed60
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8520
ret 4
mov eax, dword [0x4c3e3c]
mov ecx, dword [0x4c3e44]
mov ebp, dword [0x4c3e40]
push 0xff
lea edx, [esp + 0x235]
push 0
push edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], ecx
mov dword [0x4c600c], 0
mov byte [esp + 0x23c], 0
call fcn.00493490
add esp, 0xc
push 0x1ff
lea eax, [esp + 0x335]
push 0
push eax
mov byte [esp + 0x33c], 0
call fcn.00493490
xor ecx, ecx
add esp, 0xc
mov word [esp + 0x1a], cx
cmp word [ebp], cx
je 0x43419f
xor edx, edx
mov word [esp + 0x18], dx
movzx ecx, word [ebp]
mov eax, ecx
sub eax, 0x7b
je 0x4340bc
sub eax, 2
je 0x434191
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.00411be0
add esp, 8
mov bl, al
jmp 0x434155
lea eax, [ebp + 2]
push 0x7d
push eax
mov dword [esp + 0x34], eax
call fcn.0048b551
mov esi, eax
add esp, 8
test esi, esi
je 0x434191
mov edi, esi
sub edi, ebp
sar edi, 1
dec edi
jne 0x4340f4
cmp word [esi + 2], 0x7d
jne 0x434191
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.00411be0
mov bl, al
add esp, 8
test bl, bl
je 0x434132
cmp edi, 1
jne 0x43414b
mov cx, word [ebp]
mov word [esp + 0x18], cx
jmp 0x43414b
mov eax, ebp
call fcn.00411b40
movzx eax, ax
test ax, ax
je 0x43414b
mov edx, eax
mov byte [esp + edx + 0x330], 1
mov eax, 0x7d
mov word [esi], ax
mov ebp, esi
test bl, bl
je 0x434191
movzx esi, bl
or byte [esp + esi + 0x230], 1
cmp word [esp + 0x18], 0
lea esi, [esp + esi + 0x230]
je 0x434191
mov ecx, dword [esp + 0x18]
push ecx
call dword [sym.imp.USER32.dll_IsCharAlphaW]
test eax, eax
jne 0x434191
test byte [esp + 0x17], 0x30
je 0x43418e
or byte [esi], 2
jmp 0x434191
or byte [esi], 4
add ebp, 2
cmp word [ebp], 0
jne 0x434074
mov edx, dword [esp + 0x1c]
mov dword [0x4c6024], 0
cmp word [edx], 0
mov ebp, 0x2c
je 0x434375
cmp dword [0x4c6020], 0
jne 0x434209
push 0x1000
call fcn.0048a814
add esp, 4
mov dword [0x4c6020], eax
test eax, eax
jne 0x4341ff
mov ecx, dword [esp + 0x8534]
push 0x49e828
push eax
push str.Out_of_memory.
call fcn.0042ef30
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8520
ret 4
mov dword [0x4c6028], 0x400
mov ebx, dword [esp + 0x8534]
mov edi, 3
mov ecx, ebx
call fcn.0041ff40
inc eax
cmp eax, dword [0x4c6030]
jbe 0x43428c
mov dword [0x4c6030], eax
cmp eax, 0x1000
ja 0x43423b
mov dword [0x4c6030], 0x1000
mov eax, dword [0x4c602c]
test eax, eax
je 0x43424d
push eax
call fcn.0048bddf
add esp, 4
mov eax, dword [0x4c6030]
lea ecx, [eax + eax]
push ecx
call fcn.0048a814
add esp, 4
mov dword [0x4c602c], eax
test eax, eax
jne 0x434291
mov dword [0x4c6030], eax
push 0x49e828
push 0
push str.Out_of_memory.
mov ecx, ebx
call fcn.0042ef30
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8520
ret 4
mov eax, dword [0x4c602c]
mov edx, dword [0x4c6024]
mov ecx, dword [0x4c6020]
mov edi, dword [esp + 0x1c]
mov dword [ecx + edx*4], eax
cmp word [edi], 0
mov esi, dword [0x4c602c]
je 0x434355
movzx eax, word [edi]
cmp ax, bp
je 0x4342c7
mov word [esi], ax
add esi, 2
jmp 0x434348
cmp word [edi + 2], bp
jne 0x4342da
mov edx, ebp
mov word [esi], dx
add esi, 2
add edi, 2
jmp 0x434348
xor eax, eax
mov word [esi], ax
mov ecx, dword [0x4c6020]
mov eax, dword [0x4c6024]
mov edx, dword [ecx + eax*4]
cmp word [edx], 0
je 0x43430f
inc eax
mov dword [0x4c6024], eax
add esi, 2
mov dword [ecx + eax*4], esi
xor eax, eax
mov word [esi], ax
mov eax, dword [0x4c6024]
mov ecx, dword [0x4c6020]
cmp word [edi + 2], 0
je 0x434348
mov edx, dword [0x4c6028]
cmp eax, edx
jb 0x434348
lea edx, [edx*4 + 0x1000]
push edx
push ecx
call fcn.0048ba37
add esp, 8
test eax, eax
je 0x43426c
add dword [0x4c6028], 0x400
mov dword [0x4c6020], eax
add edi, 2
cmp word [edi], 0
jne 0x4342b4
xor eax, eax
mov word [esi], ax
mov ecx, dword [0x4c6020]
mov edx, dword [0x4c6024]
mov eax, dword [ecx + edx*4]
cmp word [eax], 0
je 0x434375
inc dword [0x4c6024]
cmp byte [0x4c403c], 0
je 0x4343b3
mov ecx, dword [0x4c3ee8]
push 0xc
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x434398
mov byte [0x4c403c], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x4343b3
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 [0x4c6034], 1
mov word [0x4c6038], 0
mov word [esp + 0x53c], dx
call fcn.00493490
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0x53c]
mov ebx, 0x3fff
add esp, 0xc
mov dword [0x4c603c], ecx
mov dword [0x4c6040], ebp
mov dword [0x4c6044], ebx
cmp word [eax], bp
je 0x43450b
lea edi, [eax + 2]
jmp 0x434420
movzx esi, word [edi - 2]
test esi, 0xffffff80
jne 0x43443e
push 2
push esi
call fcn.0048b9ce
add esp, 8
test eax, eax
je 0x43443e
and esi, 0xffffffdf
movzx eax, si
add eax, 0xffffffd6
cmp eax, 0x2c
ja case.0x434454.43
movzx edx, byte [eax + 0x434808]
jmp dword [edx*4 + 0x4347e4]
mov byte [0x4c6034], 0
jmp case.0x434454.43
mov byte [0x4c6035], 1
jmp case.0x434454.43
mov byte [0x4c6036], 1
jmp case.0x434454.43
mov byte [0x4c6037], 1
jmp case.0x434454.43
push edi
call fcn.0048ba16
add esp, 4
mov dword [0x4c6044], eax
cmp eax, ebx
jle case.0x434454.43
mov dword [0x4c6044], ebx
jmp case.0x434454.43
mov eax, edi
call fcn.0040cc10
test al, al
je 0x4344d5
push 0x10
push 0
push edi
call fcn.0048c147
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
fild qword [esp + 0x2c]
add esp, 0xc
fmul qword [0x4bae68]
call fcn.00498ee0
mov ebp, eax
jmp case.0x434454.43
push edi
call fcn.0048c226
fmul qword [0x4bae68]
add esp, 4
call fcn.00498ee0
mov ebp, eax
jmp case.0x434454.43
mov byte [0x4c6038], 1
jmp case.0x434454.43
mov byte [0x4c6039], 1
add edi, 2
cmp word [edi - 2], 0
jne 0x434420
or byte [0x4c48fd], 1
cmp dword [0x4c4018], 0
lea eax, [esp + 0x230]
lea ecx, [esp + 0x330]
mov dword [0x4c6010], eax
mov dword [0x4c6014], ecx
mov dword [0x4c600c], 1
mov byte [0x4c400b], 1
jne 0x434557
mov edx, dword [0x4c15c4]
movzx eax, word [edx]
push eax
call fcn.00407bf0
add esp, 4
test ebp, ebp
jle 0x434590
cmp byte [0x4c403c], 0
jne 0x434590
mov eax, 0xa
cmp ebp, 0xa
jl 0x434570
mov eax, ebp
mov ecx, dword [0x4c3ee8]
push 0x403380
push eax
push 0xc
push ecx
call dword [sym.imp.USER32.dll_SetTimer]
test eax, eax
setne dl
mov byte [0x4c403c], dl
push 1
push 0x8000012f
call fcn.00401290
mov eax, dword [0x4c600c]
add esp, 8
cmp eax, 1
je 0x434590
add eax, 0xfffffffe
cmp eax, 3
ja case.default.0x4345b5
jmp dword [eax*4 + 0x434838]
mov eax, dword [0x4c46ec]
push 1
push 0
push 0xffffffffffffffff
push str.Timeout
push eax
jmp 0x434771
push 1
push 0
push 0xffffffffffffffff
push str.Match
jmp 0x43476a
mov eax, dword [0x4a74fc]
mov edx, dword [str.EndKey:]
mov ecx, dword [0x4a7500]
push pe_nt_image_headers32
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], edx
mov edx, dword [0x4a7504]
lea eax, [esp + 0x44]
push 0
push eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], edx
call fcn.00493490
add esp, 0xc
cmp byte [0x4c601d], 0
je 0x4346bb
push 0xff
lea ecx, [esp + 0x135]
push 0
push ecx
mov byte [esp + 0x13c], 0
call fcn.00493490
or byte [esp + 0x14c], 0x80
add esp, 0xc
call dword [sym.imp.USER32.dll_GetForegroundWindow]
test eax, eax
je 0x434666
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
jmp 0x434668
xor eax, eax
push eax
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
xor edx, edx
cmp dword [0x4c4074], edx
push eax
setne dl
lea eax, [esp + 0x42]
lea ecx, [esp + 0x134]
xor bl, bl
push edx
movzx edx, byte [0x4c6018]
push 2
push eax
push ecx
push edx
call fcn.00412040
movzx ecx, byte [0x4c6018]
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 0x434738
cmp byte [0x4c601c], 0
je 0x43471f
mov cx, word [0x4c601a]
xor eax, eax
lea ecx, [ecx]
cmp word [eax*8 + 0x4c155c], cx
je 0x4346fc
inc eax
cmp eax, 0xd
jl 0x4346d0
movzx eax, cx
push eax
push str.sc_03X
mov esi, 0x79
lea edi, [esp + 0x46]
call fcn.004717a0
add esp, 8
jmp 0x434738
mov eax, dword [eax*8 + 0x4c1558]
push 0x78
push eax
lea ecx, [esp + 0x46]
push ecx
call fcn.0048d334
add esp, 0xc
xor edx, edx
mov word [esp + 0x12e], dx
jmp 0x434738
mov bl, byte [0x4c6018]
push 1
mov eax, 0x79
lea ecx, [esp + 0x42]
call fcn.00411ab0
add esp, 4
mov edx, dword [0x4c46ec]
push 1
push 0
push 0xffffffffffffffff
lea ecx, [esp + 0x3c]
push ecx
push edx
jmp 0x434771
mov eax, dword [0x4c46ec]
push 1
push 0
push 0xffffffffffffffff
push 0x4a7508
push eax
jmp 0x434771
push 1
push 0
push 0xffffffffffffffff
push str.NewInput
mov ecx, dword [0x4c46ec]
push ecx
call fcn.004742b0
cmp byte [0x4c403c], 0
mov dword [0x4c600c], 0
je 0x4347be
mov edx, dword [0x4c3ee8]
push 0xc
push edx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x4347a3
mov byte [0x4c403c], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x4347be
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.004742b0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8520
ret 4