Function at 0x4343d0
Capabilities:
Get keyboard layout

Disassembly:
mov eax, 0x8520
call fcn.00496a40
mov eax, dword [0x4c3e88]
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x28], eax
test eax, eax
jne 0x434422
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.0042f1e0
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.00494120
add esp, 0xc
push 0x1ff
lea eax, [esp + 0x335]
push 0
push eax
mov byte [esp + 0x33c], 0
call fcn.00494120
xor ecx, ecx
add esp, 0xc
mov word [esp + 0x1a], cx
cmp word [ebp], cx
je 0x4345bf
xor edx, edx
mov word [esp + 0x18], dx
movzx ecx, word [ebp]
mov eax, ecx
sub eax, 0x7b
je 0x4344dc
sub eax, 2
je 0x4345b1
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.00411c80
add esp, 8
mov bl, al
jmp 0x434575
lea eax, [ebp + 2]
push 0x7d
push eax
mov dword [esp + 0x34], eax
call fcn.0048c1e1
mov esi, eax
add esp, 8
test esi, esi
je 0x4345b1
mov edi, esi
sub edi, ebp
sar edi, 1
dec edi
jne 0x434514
cmp word [esi + 2], 0x7d
jne 0x4345b1
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.00411c80
mov bl, al
add esp, 8
test bl, bl
je 0x434552
cmp edi, 1
jne 0x43456b
mov cx, word [ebp]
mov word [esp + 0x18], cx
jmp 0x43456b
mov eax, ebp
call fcn.00411be0
movzx eax, ax
test ax, ax
je 0x43456b
mov edx, eax
mov byte [esp + edx + 0x330], 1
mov eax, 0x7d
mov word [esi], ax
mov ebp, esi
test bl, bl
je 0x4345b1
movzx esi, bl
or byte [esp + esi + 0x230], 1
cmp word [esp + 0x18], 0
lea esi, [esp + esi + 0x230]
je 0x4345b1
mov ecx, dword [esp + 0x18]
push ecx
call dword [sym.imp.USER32.dll_IsCharAlphaW]
test eax, eax
jne 0x4345b1
test byte [esp + 0x17], 0x30
je 0x4345ae
or byte [esi], 2
jmp 0x4345b1
or byte [esi], 4
add ebp, 2
cmp word [ebp], 0
jne 0x434494
mov edx, dword [esp + 0x1c]
mov dword [0x4c6024], 0
cmp word [edx], 0
mov ebp, 0x2c
je 0x434795
cmp dword [0x4c6020], 0
jne 0x434629
push 0x1000
call fcn.0048b4a4
add esp, 4
mov dword [0x4c6020], eax
test eax, eax
jne 0x43461f
mov ecx, dword [esp + 0x8534]
push 0x49e828
push eax
push str.Out_of_memory.
call fcn.0042f3b0
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.0041ff70
inc eax
cmp eax, dword [0x4c6030]
jbe 0x4346ac
mov dword [0x4c6030], eax
cmp eax, 0x1000
ja 0x43465b
mov dword [0x4c6030], 0x1000
mov eax, dword [0x4c602c]
test eax, eax
je 0x43466d
push eax
call fcn.0048ca6f
add esp, 4
mov eax, dword [0x4c6030]
lea ecx, [eax + eax]
push ecx
call fcn.0048b4a4
add esp, 4
mov dword [0x4c602c], eax
test eax, eax
jne 0x4346b1
mov dword [0x4c6030], eax
push 0x49e828
push 0
push str.Out_of_memory.
mov ecx, ebx
call fcn.0042f3b0
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 0x434775
movzx eax, word [edi]
cmp ax, bp
je 0x4346e7
mov word [esi], ax
add esi, 2
jmp 0x434768
cmp word [edi + 2], bp
jne 0x4346fa
mov edx, ebp
mov word [esi], dx
add esi, 2
add edi, 2
jmp 0x434768
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 0x43472f
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 0x434768
mov edx, dword [0x4c6028]
cmp eax, edx
jb 0x434768
lea edx, [edx*4 + 0x1000]
push edx
push ecx
call fcn.0048c6c7
add esp, 8
test eax, eax
je 0x43468c
add dword [0x4c6028], 0x400
mov dword [0x4c6020], eax
add edi, 2
cmp word [edi], 0
jne 0x4346d4
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 0x434795
inc dword [0x4c6024]
cmp byte [0x4c403c], 0
je 0x4347d3
mov ecx, dword [0x4c3ee8]
push 0xc
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x4347b8
mov byte [0x4c403c], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x4347d3
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.00494120
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 0x43492b
lea edi, [eax + 2]
jmp 0x434840
movzx esi, word [edi - 2]
test esi, 0xffffff80
jne 0x43485e
push 2
push esi
call fcn.0048c65e
add esp, 8
test eax, eax
je 0x43485e
and esi, 0xffffffdf
movzx eax, si
add eax, 0xffffffd6
cmp eax, 0x2c
ja case.0x434874.43
movzx edx, byte [eax + 0x434c28]
jmp dword [edx*4 + 0x434c04]
mov byte [0x4c6034], 0
jmp case.0x434874.43
mov byte [0x4c6035], 1
jmp case.0x434874.43
mov byte [0x4c6036], 1
jmp case.0x434874.43
mov byte [0x4c6037], 1
jmp case.0x434874.43
push edi
call fcn.0048c6a6
add esp, 4
mov dword [0x4c6044], eax
cmp eax, ebx
jle case.0x434874.43
mov dword [0x4c6044], ebx
jmp case.0x434874.43
mov eax, edi
call fcn.0040ccb0
test al, al
je 0x4348f5
push 0x10
push 0
push edi
call fcn.0048cdd7
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
fild qword [esp + 0x2c]
add esp, 0xc
fmul qword [0x4baf58]
call fcn.00499b70
mov ebp, eax
jmp case.0x434874.43
push edi
call fcn.0048ceb6
fmul qword [0x4baf58]
add esp, 4
call fcn.00499b70
mov ebp, eax
jmp case.0x434874.43
mov byte [0x4c6038], 1
jmp case.0x434874.43
mov byte [0x4c6039], 1
add edi, 2
cmp word [edi - 2], 0
jne 0x434840
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 0x434977
mov edx, dword [0x4c15d0]
movzx eax, word [edx]
push eax
call fcn.00407bd0
add esp, 4
test ebp, ebp
jle 0x4349b0
cmp byte [0x4c403c], 0
jne 0x4349b0
mov eax, 0xa
cmp ebp, 0xa
jl 0x434990
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 0x4349b0
add eax, 0xfffffffe
cmp eax, 3
ja case.default.0x4349d5
jmp dword [eax*4 + 0x434c58]
mov eax, dword [0x4c46ec]
push 1
push 0
push 0xffffffffffffffff
push str.Timeout
push eax
jmp 0x434b91
push 1
push 0
push 0xffffffffffffffff
push str.Match
jmp 0x434b8a
mov eax, dword [0x4a75f4]
mov edx, dword [str.EndKey:]
mov ecx, dword [0x4a75f8]
push pe_nt_image_headers32
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], edx
mov edx, dword [0x4a75fc]
lea eax, [esp + 0x44]
push 0
push eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], edx
call fcn.00494120
add esp, 0xc
cmp byte [0x4c601d], 0
je 0x434adb
push 0xff
lea ecx, [esp + 0x135]
push 0
push ecx
mov byte [esp + 0x13c], 0
call fcn.00494120
or byte [esp + 0x14c], 0x80
add esp, 0xc
call dword [sym.imp.USER32.dll_GetForegroundWindow]
test eax, eax
je 0x434a86
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
jmp 0x434a88
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.004120e0
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 0x434b58
cmp byte [0x4c601c], 0
je 0x434b3f
mov cx, word [0x4c601a]
xor eax, eax
lea ecx, [ecx]
cmp word [eax*8 + 0x4c1564], cx
je 0x434b1c
inc eax
cmp eax, 0xd
jl 0x434af0
movzx eax, cx
push eax
push str.sc_03X
mov esi, 0x79
lea edi, [esp + 0x46]
call fcn.004722b0
add esp, 8
jmp 0x434b58
mov eax, dword [eax*8 + 0x4c1560]
push 0x78
push eax
lea ecx, [esp + 0x46]
push ecx
call fcn.0048dfc4
add esp, 0xc
xor edx, edx
mov word [esp + 0x12e], dx
jmp 0x434b58
mov bl, byte [0x4c6018]
push 1
mov eax, 0x79
lea ecx, [esp + 0x42]
call fcn.00411b50
add esp, 4
mov edx, dword [0x4c46ec]
push 1
push 0
push 0xffffffffffffffff
lea ecx, [esp + 0x3c]
push ecx
push edx
jmp 0x434b91
mov eax, dword [0x4c46ec]
push 1
push 0
push 0xffffffffffffffff
push 0x4a7600
push eax
jmp 0x434b91
push 1
push 0
push 0xffffffffffffffff
push str.NewInput
mov ecx, dword [0x4c46ec]
push ecx
call fcn.00474e60
cmp byte [0x4c403c], 0
mov dword [0x4c600c], 0
je 0x434bde
mov edx, dword [0x4c3ee8]
push 0xc
push edx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x434bc3
mov byte [0x4c403c], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x434bde
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.00474e60
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8520
ret 4