Function at 0x418500
Capabilities:
Check for time delay via gettickcount
Get keyboard layout
Log keystrokes
Log keystrokes via polling

Disassembly:
push ebp
lea ebp, [esp - 0x70]
sub esp, 0x8c4
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov dword [ebp + 0x54], esi
cmp word [edi], 0
je case.0x418576.0
mov eax, dword [0x4ea828]
xor bh, bh
mov dword [ebp + 0x4c], eax
mov eax, dword [0x4f0734]
mov dword [ebp + 0x10], eax
test esi, esi
jne 0x4185af
push 6
push str.Blind
push edi
call fcn.004a4632
add esp, 0xc
test eax, eax
jne 0x4185af
movzx eax, word [edi + 0xc]
add edi, 0xc
or cl, 0xff
mov byte [0x4f09b4], 1
mov dword [ebp + 0x68], edi
cmp eax, 0x7d
je 0x4185bd
mov bl, byte [ebp + 0x64]
mov edx, eax
movzx eax, dx
cmp eax, 0x5e
ja case.0x418576.1
movzx eax, byte [eax + 0x4196cc]
jmp dword [eax*4 + 0x4196ac]
mov cl, 0x55
jmp 0x41859c
mov cl, 0xaa
jmp 0x41859c
mov bl, 3
jmp case.0x418576.1
mov bl, 0x30
jmp case.0x418576.1
mov bl, 0xc
jmp case.0x418576.1
mov bl, 0xc0
mov al, bl
and al, cl
or bh, al
or cl, 0xff
movzx eax, word [edi + 2]
add edi, 2
mov dword [ebp + 0x68], edi
mov edx, eax
cmp eax, 0x7d
jne 0x418567
jmp 0x4185bd
mov byte [0x4f09b4], 0
mov dword [ebp + 0x68], edi
test esi, esi
jne 0x4185df
push 6
push 0x4d948c
push edi
call fcn.004a4632
add esp, 0xc
test eax, eax
jne 0x4185df
mov esi, 2
add edi, 0xc
mov dword [ebp + 0x54], esi
mov dword [ebp + 0x68], edi
mov edx, dword [ebp + 0x4c]
mov ecx, dword [ebp + 0x78]
mov eax, dword [edx + 0x64]
mov dword [ebp + 0xc], eax
mov eax, dword [edx + 0x6c]
mov dword [ebp + 0x30], eax
cmp ecx, 1
je 0x4185fb
cmp ecx, 3
jne 0x418660
call fcn.00413310
test al, al
jne 0x41862a
test esi, esi
jne 0x418621
call fcn.00413370
test al, al
je 0x418621
mov edx, 0x4d986c
mov ecx, edi
call fcn.00486c20
test eax, eax
jne 0x41862a
mov dword [ebp + 0x78], 1
jmp 0x418660
cmp dword [ebp + 0x78], 3
jne 0x418639
mov dword [ebp + 0x78], 2
jmp 0x418660
mov edx, dword [ebp + 0x4c]
mov dword [ebp + 0x78], 0
cmp dword [edx + 0x64], 0
jge 0x418654
cmp dword [edx + 0x6c], 0
jge 0x418654
or eax, 0xffffffff
jmp 0x418656
xor eax, eax
mov dword [edx + 0x6c], eax
mov dword [edx + 0x64], 0xffffffff
mov eax, dword [ebp + 0x7c]
xor esi, esi
mov byte [ebp + 0x5b], 0
test eax, eax
je 0x418712
push esi
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov dword [ebp + 0x38], eax
test eax, eax
je 0x4187f2
cmp eax, dword [0x4f0038]
je 0x4187f2
mov eax, dword [0x4f121c]
test al, 1
jne 0x4186bf
push str.IsHungAppWindow
or eax, 1
push str.user32
mov dword [0x4f121c], eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x4f1220], eax
jmp 0x4186c4
mov eax, dword [0x4f1220]
mov ecx, dword [ebp + 0x7c]
test eax, eax
je 0x4186d0
push ecx
call eax
jmp 0x4186ed
lea eax, [ebp + 0x1c]
push eax
push 0x1388
push 2
push 0
push 0
push 0
push ecx
call dword [sym.imp.USER32.dll_SendMessageTimeoutW]
neg eax
sbb eax, eax
inc eax
test eax, eax
jne 0x4187f2
mov esi, dword [ebp + 0x38]
push 1
push esi
push dword [0x4f0038]
call dword [sym.imp.USER32.dll_AttachThreadInput]
test eax, eax
setne byte [ebp + 0x5b]
jmp 0x4187f2
test byte [0x4f06fa], 0xc0
je 0x4187ae
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x4f06f0]
cmp eax, 0x32
jae 0x4187ae
cmp dword [ebp + 0x78], 2
je 0x4187ae
cmp byte [0x4f09b4], 0
jne 0x4187ae
mov esi, dword [ebp + 0x54]
cmp esi, 2
je 0x4187ae
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [0x4f0038]
jne 0x4187ae
test esi, esi
je 0x418842
mov eax, dword [ebp + 0x68]
test eax, eax
je 0x4187a1
movzx eax, word [eax]
test ax, ax
je 0x4187a1
mov esi, eax
nop
mov ecx, 0x4d987c
mov edx, 0x4c
nop word [eax + eax]
cmp si, dx
je 0x4187a3
movzx eax, word [ecx + 2]
add ecx, 2
mov edx, eax
test ax, ax
jne 0x418780
movzx eax, word [edi + 2]
add edi, 2
mov esi, eax
test ax, ax
jne 0x418770
xor edi, edi
test edi, edi
jne 0x4188ed
mov edi, dword [ebp + 0x68]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
xor esi, esi
test eax, eax
je 0x4187ec
push esi
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov esi, eax
mov dword [ebp - 0x54], 0x30
lea eax, [ebp - 0x54]
push eax
push esi
call dword [sym.imp.USER32.dll_GetGUIThreadInfo]
test eax, eax
je 0x4187ec
mov ecx, dword [ebp - 0x48]
test ecx, ecx
je 0x4187ec
push 0
push ecx
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov esi, eax
mov eax, dword [ebp + 0x30]
mov dword [ebp + 0x38], eax
push esi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov ecx, eax
mov dword [0x4f0990], eax
call fcn.0041ca10
mov cl, 1
mov dword [0x4f0994], eax
call fcn.0041c490
mov bl, al
and byte [0x4f093f], bl
cmp dword [0x4ef014], 0
je 0x41892e
mov dl, byte [0x4ef01f]
mov ah, byte [0x4ef01d]
mov cl, dl
not dl
and cl, ah
and dl, ah
mov byte [ebp + 0x65], dl
jmp 0x418954
mov esi, edi
test esi, esi
je 0x4187ab
movzx eax, word [esi]
test ax, ax
je 0x4187ab
mov edi, eax
nop word [eax + eax]
mov ecx, 0x4d987c
mov edx, 0x4c
nop word [eax + eax]
cmp di, dx
je 0x418896
movzx eax, word [ecx + 2]
add ecx, 2
mov edx, eax
test ax, ax
jne 0x418870
movzx eax, word [esi + 2]
add esi, 2
mov edi, eax
test ax, ax
jne 0x418860
jmp 0x4187ab
add esi, 2
je 0x4188ed
movzx eax, word [esi]
test ax, ax
je 0x4188ed
mov edi, eax
nop word [eax + eax]
mov eax, 0x4d9884
mov edx, 0x7b
nop word [eax + eax]
cmp di, dx
je 0x4188e3
movzx ecx, word [eax + 2]
add eax, 2
mov edx, ecx
test cx, cx
jne 0x4188c0
movzx eax, word [esi + 2]
add esi, 2
mov edi, eax
test ax, ax
jne 0x4188b0
jmp 0x4188ed
cmp word [esi], 0x7b
jne 0x418844
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x5b
call esi
test ax, ax
js 0x418909
push 0x5c
call esi
test ax, ax
jns 0x4187ab
mov edx, 1
mov dword [0x4ea820], 0
mov ecx, 0x8000012f
call fcn.004016d0
mov dword [0x4ea820], 1
jmp 0x4188f3
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x4f06f0]
cmp eax, dword [0x4eada4]
jae 0x41894c
mov ah, byte [0x4f06fa]
and ah, bl
jmp 0x41894e
xor ah, ah
mov cl, ah
mov byte [ebp + 0x65], 0
mov al, byte [0x4f093e]
not cl
and cl, bl
mov byte [ebp + 0x6d], ah
and al, cl
mov byte [ebp + 0x66], 0
cmp byte [0x4f09b4], 0
mov byte [ebp + 0x6f], al
mov byte [0x4f093e], al
je 0x418998
mov al, bl
mov byte [ebp + 0x6f], al
mov byte [ebp + 0x68], al
test bh, bh
je 0x4189a0
mov al, bh
not al
and al, bl
mov bh, al
xor al, bl
mov byte [ebp + 0x6f], bh
mov byte [ebp + 0x68], bh
mov byte [ebp + 0x66], al
jmp 0x4189a3
mov bh, byte [ebp + 0x6f]
mov byte [ebp + 0x68], bh
jmp 0x4189a3
mov bh, byte [ebp + 0x6f]
mov eax, dword [ebp + 0x4c]
cmp byte [eax + 0x90], 0
je 0x4189cf
cmp byte [0x4f09b4], 0
jne 0x4189cf
cmp dword [ebp + 0x54], 2
je 0x4189cf
mov edx, 2
mov cl, 0x14
call fcn.0041bc80
mov dword [ebp + 0x20], eax
jmp 0x4189d6
mov dword [ebp + 0x20], 0
mov edx, dword [ebp + 0x78]
mov eax, 0x1f4
mov dword [0x4f09b0], edx
mov ecx, 0x5dc
test edx, edx
je 0x418a4f
cmp edx, 1
cmovne eax, ecx
mov ecx, 0x2ee0
mov dword [0x4f099c], eax
mov eax, 0x36b0
cmovne eax, ecx
call fcn.004baba0
mov eax, dword [0x4ebf2c]
mov ecx, esp
mov edx, dword [ebp + 0x78]
mov byte [0x4f09a4], bl
mov byte [0x4f09a5], 0
mov dword [eax], ecx
mov dword [0x4f09a8], 0x80000000
mov dword [0x4f09ac], 0x80000000
mov dword [0x4f0998], 0
mov byte [0x4f09a6], 0
mov byte [0x4f09a7], 1
mov al, byte [0x4eee1c]
mov byte [ebp + 0x64], al
mov eax, dword [0x4eacb0]
cmp eax, 7
je 0x418a66
cmp eax, 9
jne 0x418a86
mov esi, dword [ebp + 0x7c]
test edx, edx
jne 0x418a89
test esi, esi
jne 0x418a89
push 1
mov byte [ebp + 0x5a], 1
call dword [sym.imp.USER32.dll_BlockInput]
mov byte [0x4eee1c], 1
jmp 0x418a8d
mov esi, dword [ebp + 0x7c]
mov byte [ebp + 0x5a], 0
xor bl, bl
cmp word [edi], 0
mov byte [ebp + 0x60], bl
je 0x419391
jmp 0x418aa6
mov bh, byte [ebp + 0x6f]
mov esi, dword [ebp + 0x7c]
cmp dword [0x4f09b0], 0
mov byte [ebp + 0x67], 0
jne 0x418b0c
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [0x4ea828]
sub eax, dword [0x4f0734]
cmp eax, dword [ecx + 0x54]
jbe 0x418b0c
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x24]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x418b01
mov edx, 1
mov dword [0x4ea820], 0
or ecx, 0xffffffff
call fcn.004016d0
mov dword [0x4ea820], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x4f0734], eax
mov eax, dword [ebp + 0x54]
test eax, eax
jne 0x4192bf
movzx eax, word [edi]
push eax
push str._
call fcn.004a203f
add esp, 8
test eax, eax
je 0x4192f3
movzx eax, word [edi]
add eax, 0xffffffdf
cmp eax, 0x5c
ja case.0x418b46.34
movzx eax, byte [eax + 0x419748]
jmp dword [eax*4 + 0x41972c]
test bh, 3
jne case.0x418b46.34
or bl, 1
jmp 0x419379
test bh, 0x30
jne case.0x418b46.34
or bl, 0x10
jmp 0x419379
test bh, 0xc
jne case.0x418b46.34
or bl, 4
jmp 0x419379
test bh, 0xc0
jne case.0x418b46.34
or bl, 0x40
jmp 0x419379
lea esi, [edi + 2]
push 0x7d
push esi
call fcn.004a203f
mov edx, eax
add esp, 8
mov dword [ebp + 0x3c], edx
test edx, edx
je case.0x418b46.34
mov edi, esi
nop
movzx ecx, word [edi]
cmp ecx, 0x20
je 0x418bbd
cmp ecx, 9
jne 0x418bc2
add edi, 2
jmp 0x418bb0
mov eax, edx
sub eax, edi
sar eax, 1
mov dword [ebp + 0x44], eax
jne 0x418c63
movzx eax, word [edx + 2]
lea ecx, [edx + 2]
cmp eax, 0x7d
jne 0x418bed
mov eax, 1
mov dword [ebp + 0x3c], ecx
mov dword [ebp + 0x44], eax
jmp 0x418c6e
cmp eax, 0x20
je 0x418bfb
cmp eax, 9
jne 0x4192b7
mov esi, ecx
nop dword [eax]
cmp ax, 0x20
je 0x418c0c
cmp ax, 9
jne 0x418c15
movzx eax, word [esi + 2]
add esi, 2
jmp 0x418c00
push 4
push str.Down
push esi
mov dword [ebp + 0x40], esi
call fcn.004a4632
add esp, 0xc
test eax, eax
je 0x418c44
push 2
push 0x4d86bc
push esi
call fcn.004a4632
add esp, 0xc
test eax, eax
jne 0x4192b7
push 0x7d
push esi
call fcn.004a203f
mov edx, eax
mov dword [ebp + 0x3c], eax
add esp, 8
test edx, edx
je case.0x418b46.34
sub eax, edi
sar eax, 1
mov dword [ebp + 0x44], eax
cmp eax, 0x400
jae 0x4192b7
lea esi, [eax + eax]
push esi
lea eax, [ebp - 0x854]
push edi
push eax
call fcn.004a20f0
xor eax, eax
push 5
mov word [ebp + esi - 0x854], ax
lea eax, [ebp - 0x854]
push str.Click
push eax
call fcn.004a4632
add esp, 0x18
test eax, eax
jne 0x418d2b
lea ecx, [ebp - 0x84a]
nop dword [eax]
movzx eax, word [ecx]
cmp eax, 0x20
je 0x418cbd
cmp eax, 9
jne 0x418cc2
add ecx, 2
jmp 0x418cb0
lea eax, [ebp + 0x24]
push eax
lea eax, [ebp + 0x34]
push eax
lea eax, [ebp + 0x5c]
push eax
lea eax, [ebp + 0x6e]
push eax
lea eax, [ebp + 0x18]
push eax
lea edx, [ebp + 0x2c]
call fcn.0041a440
mov eax, dword [ebp + 0x34]
add esp, 0x14
push dword [ebp + 0x24]
cmp eax, 1
jge 0x418d11
mov eax, dword [ebp + 0x4c]
lea edx, [ebp + 0x18]
lea ecx, [ebp + 0x2c]
movzx eax, byte [eax + 0x8f]
push eax
lea eax, [ebp + 8]
push eax
call fcn.0041b080
mov edi, dword [ebp + 0x3c]
add esp, 0xc
jmp 0x419377
push dword [ebp + 0x18]
mov ecx, dword [ebp + 0x7c]
xor edx, edx
push dword [ebp + 0x2c]
push ecx
mov cl, byte [ebp + 0x6e]
push 0
push dword [ebp + 0x5c]
push eax
jmp 0x4192a9
lea eax, [ebp - 0x854]
push 0x4d98a8
push eax
call fcn.004a44b1
add esp, 8
test eax, eax
jne 0x418d52
mov edi, dword [ebp + 0x3c]
mov dword [ebp + 0x54], 1
jmp 0x419377
lea eax, [ebp - 0x854]
push str.Text
push eax
call fcn.004a44b1
add esp, 8
test eax, eax
jne 0x418d79
mov edi, dword [ebp + 0x3c]
mov dword [ebp + 0x54], 2
jmp 0x419377
mov eax, 1
mov dword [ebp + 0x5c], 2
mov dword [ebp + 0x50], eax
lea edi, [ebp - 0x854]
mov dword [ebp + 0x34], eax
mov eax, dword [ebp + 0x44]
mov dword [ebp + 0x28], eax
mov eax, dword [ebp - 0x854]
test ax, ax
je 0x418f3d
movzx esi, ax
nop dword [eax]
mov edx, 0x4d98bc
mov ecx, 0x20
nop word [eax + eax]
cmp si, cx
je 0x418e76
movzx eax, word [edx + 2]
add edx, 2
mov ecx, eax
test ax, ax
jne 0x418dc0
movzx eax, word [edi + 2]
add edi, 2
mov esi, eax
test ax, ax
jne 0x418db0
mov edi, dword [ebp + 0x50]
push dword [0x4f0990]
lea eax, [ebp + 0x60]
push eax
lea eax, [ebp + 0x14]
push eax
lea edx, [ebp + 0x6e]
lea ecx, [ebp - 0x854]
call fcn.0041cfb0
add esp, 0xc
cmp edi, 1
jl 0x4192b7
mov bh, byte [ebp + 0x6e]
mov esi, dword [ebp + 0x14]
test bh, bh
jne 0x4191f4
test si, si
jne 0x4191f4
cmp dword [ebp + 0x28], 1
jne 0x418f69
cmp dword [ebp + 0x5c], 1
je 0x4192b7
mov ecx, dword [ebp + 0x7c]
test ecx, ecx
je 0x418f47
test edi, edi
jle 0x4192b7
mov ebx, dword [sym.imp.USER32.dll_PostMessageW]
movzx eax, word [ebp - 0x854]
push 0
push eax
push 0x102
push ecx
call ebx
mov ecx, dword [ebp + 0x7c]
sub edi, 1
jne 0x418e54
mov edi, dword [ebp + 0x3c]
jmp 0x419377
test edi, edi
je 0x418de5
xor eax, eax
mov ebx, edi
mov word [edi], ax
lea eax, [ebp - 0x854]
sub ebx, eax
sar ebx, 1
mov dword [ebp + 0x28], ebx
lea ebx, [edi + 2]
movzx eax, word [ebx]
cmp eax, 0x20
je 0x418ea2
cmp eax, 9
jne 0x418ea7
add ebx, 2
jmp 0x418e95
mov eax, dword [ebp + 0x3c]
sub eax, ebx
mov dword [ebp + 0x40], ebx
sar eax, 1
je 0x418de5
push 4
push str.Down
push ebx
call fcn.004a4632
add esp, 0xc
test eax, eax
jne 0x418f0e
push 4
lea esi, [ebx + 8]
mov dword [ebp + 0x5c], eax
push str.Temp
push esi
call fcn.004a4632
add esp, 0xc
test eax, eax
jne 0x418eed
mov dword [ebp + 0x48], eax
jmp 0x418de5
xor eax, eax
cmp word [esi], 0x52
sete al
push eax
call fcn.004aee89
add esp, 4
neg eax
sbb ebx, ebx
neg ebx
inc ebx
mov dword [ebp + 0x48], ebx
jmp 0x418de5
push 0x4d86bc
push ebx
call fcn.004a44b1
add esp, 8
test eax, eax
jne 0x418f2c
mov dword [ebp + 0x5c], 1
jmp 0x418de5
mov ecx, ebx
call fcn.00487070
mov edi, eax
mov dword [ebp + 0x34], edi
jmp 0x418de8
mov edi, 1
jmp 0x418de8
mov al, byte [ebp + 0x60]
mov edx, edi
or al, byte [ebp + 0x6f]
mov ecx, dword [ebp - 0x854]
movzx eax, al
push eax
call fcn.00419970
mov edi, dword [ebp + 0x3c]
add esp, 4
jmp 0x419377
cmp dword [ebp + 0x7c], 0
lea ecx, [ebp - 0x854]
mov esi, dword [ebp + 0x44]
mov edx, esi
sete al
movzx eax, al
push eax
lea eax, [ebp + 0x68]
push eax
lea eax, [ebp + 0x5c]
push eax
call fcn.0041d080
mov bl, al
add esp, 0xc
mov byte [ebp + 0x6e], bl
test bl, bl
je 0x41907a
cmp dword [ebp + 0x7c], 0
mov esi, dword [ebp + 0x5c]
jne 0x418fb5
test esi, esi
jne 0x418fae
mov byte [ebp + 0x67], bl
jmp 0x418fb5
mov cl, bl
call fcn.00418230
cmp dword [0x4f09b0], 0
je 0x418fc5
mov al, byte [0x4f09a4]
jmp 0x418fcc
xor cl, cl
call fcn.0041c490
mov ecx, dword [ebp + 0x7c]
mov dl, al
mov bh, byte [ebp + 0x68]
push 0xffc3d44d
push 0
push 0
push ecx
mov cl, bh
mov byte [ebp + 0x6f], bh
call fcn.0041bd90
add esp, 0x10
test edi, edi
jle 0x4192b7
push 0xffc3d44d
push 1
push dword [ebp + 0x7c]
mov dl, bl
mov ecx, esi
push 0
call fcn.00419d60
add esp, 0x10
cmp dword [0x4f09b0], 0
jne 0x41906d
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [0x4ea828]
sub eax, dword [0x4f0734]
cmp eax, dword [ecx + 0x54]
jbe 0x41906d
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x24]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x419062
mov edx, 1
mov dword [0x4ea820], 0
or ecx, 0xffffffff
call fcn.004016d0
mov dword [0x4ea820], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x4f0734], eax
sub edi, 1
jne 0x418ff3
mov edi, dword [ebp + 0x3c]
jmp 0x419377
cmp esi, 4
jbe 0x4190e0
lea eax, [ebp - 0x854]
push 0x4d98d0
push eax
call fcn.004a44b1
mov edi, dword [ebp + 0x7c]
add esp, 8
test eax, eax
jne 0x4190e8
test edi, edi
jne 0x4190e8
mov ecx, dword [ebp + 0x40]
call fcn.00419a80
cmp dword [0x4f09b0], 2
mov eax, dword [0x4ea828]
jne 0x4190ca
mov ecx, dword [eax + 0x68]
call fcn.0041b900
mov al, byte [ebp + 0x68]
mov edi, dword [ebp + 0x3c]
mov byte [ebp + 0x6f], al
jmp 0x419377
mov ecx, dword [eax + 0x64]
call fcn.0041b900
mov al, byte [ebp + 0x68]
mov edi, dword [ebp + 0x3c]
mov byte [ebp + 0x6f], al
jmp 0x419377
cmp esi, 2
jbe 0x4190d2
mov edi, dword [ebp + 0x7c]
push 2
lea eax, [ebp - 0x854]
push 0x4d98d8
push eax
call fcn.004a4632
add esp, 0xc
test eax, eax
jne 0x4190d2
push 0x10
push eax
lea eax, [ebp - 0x850]
push eax
call fcn.004a9f5d
mov edx, eax
add esp, 0xc
cmp edx, 0x10000
jb 0x419149
sub edx, 0x10000
mov ecx, edx
mov eax, edx
shr ecx, 0xa
and eax, 0x3ff
and ecx, 0x3ff
sub ecx, 0x2800
sub eax, 0x2400
movzx ecx, cx
movzx esi, ax
jmp 0x41914e
movzx ecx, dx
xor esi, esi
mov bh, byte [ebp + 0x68]
mov byte [ebp + 0x6f], bh
test edi, edi
je 0x419181
mov ebx, dword [sym.imp.USER32.dll_PostMessageW]
push 0
movzx eax, cx
push eax
push 0x102
push edi
call ebx
test si, si
je 0x4191c6
push 0
movzx eax, si
push eax
push 0x102
push edi
call ebx
jmp 0x4191c6
cmp dword [0x4f09b0], 2
je 0x4191a6
mov bl, byte [ebp + 0x60]
or bl, bh
mov dl, bl
call fcn.004182b0
test si, si
je 0x4191c6
mov dl, bl
mov ecx, esi
call fcn.004182b0
jmp 0x4191c6
mov eax, 0x30
mov word [ebp - 8], ax
lea eax, [ebp - 6]
push 0xa
push eax
push edx
call fcn.004a9051
add esp, 0xc
lea ecx, [ebp - 8]
call fcn.00419a80
cmp dword [0x4f09b0], 2
mov eax, dword [0x4ea828]
jne 0x4191e4
mov ecx, dword [eax + 0x68]
call fcn.0041b900
mov edi, dword [ebp + 0x3c]
jmp 0x419377
mov ecx, dword [eax + 0x64]
call fcn.0041b900
mov edi, dword [ebp + 0x3c]
jmp 0x419377
push 0
mov edx, esi
mov cl, bh
call fcn.0041c6d0
mov bl, al
add esp, 4
mov eax, dword [ebp + 0x5c]
mov byte [ebp + 0x1c], bl
test bl, bl
je 0x419290
cmp dword [ebp + 0x7c], 0
jne 0x419290
test eax, eax
jne 0x419252
mov ecx, dword [ebp + 0x48]
mov byte [ebp + 0x67], bh
cmp ecx, 1
jne 0x41923a
mov cl, byte [ebp + 0x6f]
or byte [0x4f093e], bl
or cl, bl
mov byte [ebp + 0x6f], cl
mov byte [ebp + 0x68], cl
jmp 0x419290
cmp ecx, 2
jne 0x419245
or byte [0x4f093f], bl
mov cl, byte [ebp + 0x6f]
or cl, bl
mov byte [ebp + 0x6f], cl
mov byte [ebp + 0x68], cl
jmp 0x419290
cmp eax, 1
jne 0x419290
mov cl, bh
call fcn.00418230
not bl
and byte [0x4f093e], bl
and byte [0x4f093f], bl
and bl, byte [ebp + 0x6f]
mov al, bl
mov byte [ebp + 0x6f], al
mov byte [ebp + 0x68], al
cmp bh, 0xa5
jne 0x41928d
cmp dword [0x4f0994], 3
jne 0x41928d
and al, 0xfe
mov byte [ebp + 0x6f], al
mov byte [ebp + 0x68], al
mov eax, dword [ebp + 0x5c]
mov ecx, dword [ebp + 0x7c]
mov edx, esi
push 0
push connect
push connect
push ecx
push dword [ebp + 0x1c]
mov cl, bh
push eax
push edi
push dword [ebp + 0x68]
push dword [ebp + 0x60]
call fcn.004197c0
add esp, 0x24
mov edi, dword [ebp + 0x3c]
jmp 0x419377
cmp eax, 2
jne 0x4192f6
movzx eax, word [edi]
add eax, 0xfffffff8
cmp eax, 5
ja case.0x4192cf.11
jmp dword [eax*4 + 0x4197a8]
cmp word [edi + 2], 0xa
lea eax, [edi + 2]
cmove edi, eax
mov al, 0xd
jmp 0x41931c
mov al, 8
jmp 0x41931c
mov al, 9
jmp 0x41931c
xor al, al
xor cl, cl
jmp 0x41931e
mov eax, dword [ebp + 0x54]
or bl, bh
je 0x419302
test eax, eax
jne 0x419302
mov al, 1
jmp 0x419304
xor al, al
mov cx, word [edi]
lea edx, [ebp + 0x60]
push eax
push dword [0x4f0990]
call fcn.0041cee0
mov bl, byte [ebp + 0x60]
add esp, 8
mov cl, al
mov byte [ebp + 0x6e], al
test cl, cl
je 0x41934c
push 0
push connect
push connect
push esi
push 0
push 2
push 1
push dword [ebp + 0x68]
xor edx, edx
mov cl, al
push dword [ebp + 0x60]
call fcn.004197c0
add esp, 0x24
jmp 0x419377
movzx ecx, word [edi]
test esi, esi
je 0x419364
push 0
push ecx
push 0x102
push esi
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x419377
or bl, bh
mov edx, 1
movzx eax, bl
push eax
call fcn.00419970
add esp, 4
xor bl, bl
mov byte [ebp + 0x60], bl
mov al, byte [ebp + 0x67]
add edi, 2
mov byte [0x4f093d], al
cmp word [edi], 0
jne 0x418aa0
cmp dword [0x4f09b0], 0
je 0x41943d
or esi, 0xffffffff
cmp byte [0x4f09a6], 0
mov dword [ebp + 0x48], esi
jne 0x4193fd
cmp dword [0x4f0998], 0
jbe 0x4193fd
cmp byte [0x4f09b4], 0
je 0x4193c4
mov bl, byte [ebp + 0x66]
jmp 0x4193cc
mov bl, byte [ebp + 0x65]
not bl
and bl, byte [ebp + 0x6d]
or bl, byte [0x4f093f]
or bl, byte [ebp + 0x6f]
mov dl, byte [0x4f09a4]
mov cl, bl
push 0xffc3d44d
push 1
push 1
push 0
call fcn.0041bd90
add esp, 0x10
lea ecx, [ebp + 0x48]
mov dl, bl
call fcn.0041b790
mov esi, dword [ebp + 0x48]
cmp dword [0x4f09b0], 1
mov eax, 0x5dc
mov ecx, 0x1f4
cmove eax, ecx
cmp dword [0x4f099c], eax
jbe 0x419427
push dword [0x4ef18c]
call fcn.004a45b2
add esp, 4
mov ecx, esi
mov dword [0x4f09b0], 0
call fcn.0041b900
jmp 0x4194d0
cmp dword [0x4ef014], 0
je 0x419451
mov cl, byte [0x4ef01d]
mov dl, byte [ebp + 0x6d]
jmp 0x41947a
cmp dword [0x4eada4], 0
jl 0x419475
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x4f06f0]
cmp eax, dword [0x4eada4]
jb 0x419475
mov dl, byte [ebp + 0x6d]
xor cl, cl
jmp 0x41947a
mov dl, byte [ebp + 0x6d]
mov cl, dl
or cl, byte [0x4f093f]
cmp byte [0x4f09b4], 0
je 0x4194a1
mov al, cl
xor al, dl
mov bl, al
and al, cl
and bl, dl
mov dl, byte [ebp + 0x6f]
or dl, byte [ebp + 0x66]
not bl
and bl, dl
or bl, al
jmp 0x4194ab
mov bl, byte [ebp + 0x65]
not bl
and bl, cl
or bl, byte [ebp + 0x6f]
push 0xffc3d44d
push 1
push 1
push dword [ebp + 0x7c]
xor cl, cl
call fcn.0041c490
or al, byte [0x4ef01c]
mov cl, bl
mov dl, al
call fcn.0041bd90
add esp, 0x10
cmp dword [0x4ef014], 0
je 0x4194f3
mov cl, byte [0x4ef01e]
mov al, cl
xor al, byte [0x4ef01f]
and al, cl
not al
and cl, al
mov byte [0x4ef01e], cl
cmp dword [ebp + 0x20], 1
jne 0x41958a
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x14
call esi
test al, 1
jne 0x41958a
push 0x14
call esi
test ax, ax
jns 0x419532
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x14
mov ecx, 1
call fcn.00419d60
add esp, 0x10
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x14
mov ecx, 2
call fcn.00419d60
mov esi, dword [sym.imp.USER32.dll_GetForegroundWindow]
add esp, 0x10
push 0
call esi
mov ebx, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
push eax
call ebx
cmp eax, dword [0x4f0038]
jne 0x419596
mov edx, 1
mov dword [0x4ea820], 0
or ecx, 0xffffffff
call fcn.004016d0
mov dword [0x4ea820], 1
jmp 0x419596
mov esi, dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ebx, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
cmp byte [ebp + 0x5b], 0
je 0x4195ad
push 0
push dword [ebp + 0x38]
push dword [0x4f0038]
call dword [sym.imp.USER32.dll_AttachThreadInput]
cmp byte [ebp + 0x5a], 0
je 0x4195c8
cmp byte [ebp + 0x64], 0
jne 0x4195c8
push 0
call dword [sym.imp.USER32.dll_BlockInput]
mov byte [0x4eee1c], 0
mov eax, dword [ebp + 0x78]
test eax, eax
jne 0x41965a
mov eax, dword [ebp + 0x10]
cmp dword [0x4f0734], eax
je 0x41968f
cmp dword [0x4ea820], 0
je 0x41968f
cmp byte [0x4eedbe], 0
jne 0x41968f
cmp dword [0x4eeddc], 0
je 0x41964b
mov ecx, dword [0x4ea828]
cmp byte [ecx + 0x4e], 0
jne 0x41964b
cmp dword [ecx + 0x44], 0xffffffff
jle 0x419645
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [0x4ea828]
sub eax, dword [ecx + 0x48]
cmp eax, dword [ecx + 0x44]
jb 0x419645
cmp dword [ecx + 0x40], 0
je 0x419645
cmp byte [ecx + 0x8e], 0
mov byte [ecx + 0x4e], 1
jne 0x419645
mov dword [ecx + 0x54], 5
cmp byte [ecx + 0x4e], 0
je 0x41968f
mov edx, 1
or ecx, 0xffffffff
call fcn.004016d0
jmp 0x41968f
cmp eax, 1
jne 0x41968f
push 0
call esi
push eax
call ebx
cmp eax, dword [0x4f0038]
jne 0x41968f
mov edx, 1
mov dword [0x4ea820], 0
or ecx, 0xffffffff
call fcn.004016d0
mov dword [0x4ea820], 1
mov eax, dword [ebp + 0x4c]
mov ecx, dword [ebp + 0xc]
mov dword [eax + 0x64], ecx
mov ecx, dword [ebp + 0x30]
mov dword [eax + 0x6c], ecx
lea esp, [ebp - 0x860]
pop edi
pop esi
pop ebx
lea esp, [ebp + 0x70]
pop ebp
ret