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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x90
push ebx
push esi
mov esi, ecx
mov ebx, edx
push edi
mov dword [ebp - 0x20], ebx
cmp word [esi], 0
je 0x41381d
mov edi, dword [0x4d89c0]
mov dword [ebp - 0x30], edi
test ebx, ebx
jne 0x4127ea
push 7
push str.Blind
push esi
call fcn.00495d63
add esp, 0xc
test eax, eax
jne 0x4127ea
mov byte [0x4dee27], 1
add esi, 0xe
jmp 0x4127f5
mov byte [0x4dee27], 0
test ebx, ebx
jne 0x412814
push 6
push 0x4c8bbc
push esi
call fcn.00495d63
add esp, 0xc
test eax, eax
jne 0x412814
mov ebx, 2
add esi, 0xc
mov dword [ebp - 0x20], ebx
mov eax, dword [edi + 0x5c]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x60], eax
mov eax, dword [edi + 0x64]
mov dword [ebp - 0x50], eax
cmp ecx, 1
je 0x41282d
cmp ecx, 3
jne 0x41289a
cmp dword [0x4deda4], 0
je 0x412868
call fcn.0040dcb0
test al, al
jne 0x412865
test ebx, ebx
jne 0x41285c
call fcn.0040dd10
test al, al
je 0x41285c
mov edx, str.Click
mov ecx, esi
call fcn.004786c0
test eax, eax
jne 0x412865
mov dword [ebp + 8], 1
jmp 0x41289a
mov ecx, dword [ebp + 8]
cmp ecx, 3
jne 0x412876
mov dword [ebp + 8], 2
jmp 0x41289a
cmp dword [edi + 0x5c], 0
mov dword [ebp + 8], 0
jge 0x41288e
cmp dword [edi + 0x64], 0
jge 0x41288e
or eax, 0xffffffff
jmp 0x412890
xor eax, eax
mov dword [edi + 0x64], eax
mov dword [edi + 0x5c], 0xffffffff
mov ebx, dword [ebp + 0xc]
xor edi, edi
mov byte [ebp - 0xb], 0
test ebx, ebx
je 0x4128f4
push edi
push ebx
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov dword [ebp - 0x3c], eax
test eax, eax
je 0x4129fc
cmp eax, dword [0x4de014]
je 0x4129fc
mov ecx, ebx
call fcn.0047d150
test al, al
jne 0x4129fc
mov ebx, dword [ebp - 0x3c]
push 1
push ebx
push dword [0x4de014]
call dword [sym.imp.USER32.dll_AttachThreadInput]
test eax, eax
mov edi, ebx
setne byte [ebp - 0xb]
jmp 0x4129fc
test byte [0x4deb92], 0xc0
je 0x4129e7
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x4deb88]
cmp eax, 0x32
jae 0x4129e7
cmp dword [ebp + 8], 2
je 0x4129e7
cmp byte [0x4dee27], 0
jne 0x4129e7
mov ebx, dword [ebp - 0x20]
cmp ebx, 2
je 0x4129e7
cmp byte [0x4ded93], 0
je 0x4129e7
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [0x4de014]
jne 0x4129e7
mov edx, 0x4c8e1c
mov ecx, esi
call fcn.004053e1
test ebx, ebx
je 0x4129b7
test eax, eax
setne al
test al, al
je 0x4129e7
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ebx, 0x8000
nop dword [eax]
push 0x5b
call edi
test bx, ax
jne 0x412992
push 0x5c
call edi
test bx, ax
je 0x4129e7
mov edx, 1
mov dword [0x4d89b8], 0
mov ecx, 0x8000012f
call fcn.004016e0
mov dword [0x4d89b8], 1
jmp 0x412980
test eax, eax
je 0x4129e7
nop dword [eax + eax]
lea ecx, [eax + 2]
mov edx, 0x4c8e24
call fcn.004053e1
test eax, eax
je 0x412971
cmp word [eax], 0x7b
je 0x412971
mov edx, 0x4c8e1c
mov ecx, eax
call fcn.004053e1
test eax, eax
jne 0x4129c0
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov edx, eax
call fcn.004168c0
mov edi, eax
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x3c], eax
push edi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
xor edx, edx
mov dword [0x4dee08], eax
mov ecx, eax
call fcn.004169f0
mov cl, 1
mov dword [0x4dee0c], eax
call fcn.00416310
mov bl, al
and byte [0x4dd224], bl
cmp dword [0x4db79c], 0
je 0x412a46
mov al, byte [0x4dc212]
mov dl, byte [0x4dc210]
mov cl, al
not al
and cl, dl
and al, dl
mov byte [ebp - 6], al
jmp 0x412a6c
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x4deb88]
cmp eax, dword [0x4d9bbc]
jae 0x412a64
mov dl, byte [0x4deb92]
and dl, bl
jmp 0x412a66
xor dl, dl
mov cl, dl
mov byte [ebp - 6], 0
mov bh, byte [0x4dd225]
not cl
and cl, bl
mov byte [ebp - 3], dl
and bh, cl
cmp byte [0x4dee27], 0
mov byte [ebp - 1], bh
mov byte [0x4dd225], bh
je 0x412a9b
not bh
and bh, bl
mov byte [ebp - 4], bh
mov bh, bl
mov byte [ebp - 1], bh
jmp 0x412aa0
xor al, al
mov byte [ebp - 4], al
mov eax, dword [ebp - 0x30]
mov byte [ebp - 0x10], bh
cmp byte [eax + 0xf3], 0
je 0x412acf
cmp byte [0x4dee27], 0
jne 0x412acf
cmp dword [ebp - 0x20], 2
je 0x412acf
mov edx, 2
mov cl, 0x14
call fcn.00415be0
mov dword [ebp - 0x4c], eax
jmp 0x412ad6
mov dword [ebp - 0x4c], 0
mov ecx, dword [ebp + 8]
mov dword [0x4dd21c], ecx
test ecx, ecx
je 0x412b52
cmp ecx, 1
jne 0x412af9
mov eax, 0x36b0
mov dword [0x4dee14], 0x1f4
jmp 0x412b08
mov eax, 0x2ee0
mov dword [0x4dee14], 0x5dc
call fcn.004ab330
mov eax, dword [0x4d9bc4]
mov ecx, esp
mov byte [0x4dee03], bl
mov byte [0x4dee24], 0
mov dword [0x4dee10], 0
mov dword [eax], ecx
mov ecx, dword [ebp + 8]
mov dword [0x4dee1c], 0x80000000
mov dword [0x4dee20], 0x80000000
mov byte [0x4dee25], 0
mov byte [0x4dee26], 1
mov al, byte [0x4db7d4]
mov byte [ebp - 0x19], al
mov eax, dword [0x4d89cc]
cmp eax, 8
je 0x412b69
cmp eax, 0xa
jne 0x412be3
mov edi, dword [ebp + 0xc]
test ecx, ecx
jne 0x412be6
test edi, edi
jne 0x412be6
mov ecx, dword fs:[0x2c]
mov eax, dword [0x4e02c4]
mov byte [ebp - 0xc], 1
mov ecx, dword [ecx]
cmp eax, dword [ecx + 4]
jle 0x412bcd
push 0x4e02c4
call fcn.00490bb6
add esp, 4
cmp dword [0x4e02c4], 0xffffffff
jne 0x412bcd
push str.BlockInput
push str.user32
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x4e02c4
mov dword [0x4e02c8], eax
call fcn.00490b77
add esp, 4
mov eax, dword [0x4e02c8]
test eax, eax
je 0x412bda
push 1
call eax
mov byte [0x4db7d4], 1
jmp 0x412bea
mov edi, dword [ebp + 0xc]
mov byte [ebp - 0xc], 0
xor bl, bl
cmp word [esi], 0
mov byte [ebp - 0xa], bl
je 0x413553
jmp 0x412c03
mov edi, dword [ebp + 0xc]
cmp dword [0x4dd21c], 0
mov byte [ebp - 5], 0
jne 0x412c6f
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [0x4d89c0]
sub eax, dword [0x4debcc]
cmp eax, dword [ecx + 0xd8]
jbe 0x412c6f
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x90]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x412c64
mov edx, 1
mov dword [0x4d89b8], 0
or ecx, 0xffffffff
call fcn.004016e0
mov dword [0x4d89b8], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x4debcc], eax
mov eax, dword [ebp - 0x20]
test eax, eax
jne 0x413477
movzx eax, word [esi]
push eax
push str._
call fcn.00492ca4
add esp, 8
test eax, eax
je 0x4134b4
movzx eax, word [esi]
add eax, 0xffffffdf
cmp eax, 0x5c
ja case.0x412ca9.34
movzx eax, byte [eax + 0x413848]
jmp dword [eax*4 + 0x41382c]
test bh, 3
jne case.0x412ca9.34
or bl, 1
jmp 0x41353b
test bh, 0x30
jne case.0x412ca9.34
or bl, 0x10
jmp 0x41353b
test bh, 0xc
jne case.0x412ca9.34
or bl, 4
jmp 0x41353b
test bh, 0xc0
jne case.0x412ca9.34
or bl, 0x40
jmp 0x41353b
lea edi, [esi + 2]
push 0x7d
push edi
call fcn.00492ca4
add esp, 8
mov dword [ebp - 0x18], eax
test eax, eax
je case.0x412ca9.34
mov ecx, edi
call fcn.0040e490
mov esi, eax
mov eax, dword [ebp - 0x18]
mov edi, eax
sub edi, esi
sar edi, 1
mov dword [ebp - 0x28], edi
jne 0x412d96
lea ecx, [eax + 2]
movzx eax, word [ecx]
cmp eax, 0x7d
jne 0x412d37
mov dword [ebp - 0x18], ecx
lea ebx, [eax - 0x7c]
jmp 0x412d99
cmp eax, 0x20
je 0x412d45
cmp eax, 9
jne 0x41346f
call fcn.0040e490
push 4
mov edi, eax
push str.Down
push edi
call fcn.00495d63
add esp, 0xc
test eax, eax
je 0x412d78
push 2
push 0x4c7b3c
push edi
call fcn.00495d63
add esp, 0xc
test eax, eax
jne 0x41346f
push 0x7d
push edi
call fcn.00492ca4
add esp, 8
mov dword [ebp - 0x18], eax
test eax, eax
je case.0x412ca9.34
mov ebx, eax
sub ebx, esi
sar ebx, 1
jmp 0x412d99
mov ebx, dword [ebp - 0x28]
push 5
push 0x4c6060
push esi
call fcn.00495d63
add esp, 0xc
test eax, eax
jne 0x412e35
mov ebx, dword [ebp - 0x18]
lea ecx, [esi + 0xa]
mov word [ebx], ax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 2]
push eax
lea eax, [ebp - 0x44]
push eax
call fcn.0040e490
lea edx, [ebp - 0x48]
mov ecx, eax
call fcn.00414560
add esp, 0x14
mov eax, 0x7d
mov word [ebx], ax
mov eax, dword [ebp - 0x38]
push dword [ebp - 0x40]
cmp eax, 1
jge 0x412e1b
mov eax, dword [ebp - 0x30]
lea edx, [ebp - 0x44]
lea ecx, [ebp - 0x48]
movzx eax, byte [eax + 0xef]
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.00415280
mov bh, byte [ebp - 1]
add esp, 0xc
mov esi, dword [ebp - 0x18]
jmp 0x413539
push dword [ebp - 0x44]
mov edi, dword [ebp + 0xc]
xor edx, edx
push dword [ebp - 0x48]
mov cl, byte [ebp - 2]
push edi
push 0
push dword [ebp - 0x14]
push eax
jmp 0x41345e
push 3
push 0x4c8e3c
push esi
call fcn.00495d63
add esp, 0xc
test eax, eax
jne 0x412e5b
mov bh, byte [ebp - 1]
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x20], 1
jmp 0x413539
push 4
push str.Text
push esi
call fcn.00495d63
add esp, 0xc
test eax, eax
jne 0x412e92
lea ecx, [esi + 8]
call fcn.0040e490
cmp eax, dword [ebp - 0x18]
jne 0x41346c
mov bh, byte [ebp - 1]
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x20], 2
jmp 0x413539
mov eax, dword [ebp - 0x18]
xor ecx, ecx
mov edi, 1
mov dword [ebp - 0x14], 2
mov edx, 0x4c89b4
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x28], ebx
mov word [eax], cx
mov ecx, esi
call fcn.004053e1
mov dword [ebp - 0x54], eax
test eax, eax
je 0x412f71
movzx ecx, word [eax]
mov dword [ebp - 0x58], ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, eax
sub ecx, esi
sar ecx, 1
mov dword [ebp - 0x28], ecx
lea ecx, [eax + 2]
call fcn.0040e490
mov ecx, dword [ebp - 0x18]
sub ecx, eax
mov dword [ebp - 0x34], eax
sar ecx, 1
je 0x412f71
push 4
push str.Down
push eax
call fcn.00495d63
add esp, 0xc
test eax, eax
mov eax, dword [ebp - 0x34]
jne 0x412f4d
push 4
add eax, 8
mov dword [ebp - 0x14], 0
push str.Temp
push eax
mov dword [ebp - 0x2c], eax
call fcn.00495d63
add esp, 0xc
test eax, eax
jne 0x412f2c
mov dword [ebp - 0x2c], eax
jmp 0x412f71
mov ecx, dword [ebp - 0x2c]
xor eax, eax
cmp word [ecx], 0x52
sete al
push eax
call fcn.0049e3e8
add esp, 4
neg eax
sbb eax, eax
neg eax
inc eax
mov dword [ebp - 0x2c], eax
jmp 0x412f71
push 0x4c7b3c
push eax
call fcn.0049466a
add esp, 8
test eax, eax
jne 0x412f64
mov dword [ebp - 0x14], edi
jmp 0x412f71
mov ecx, dword [ebp - 0x34]
call fcn.004124b0
mov edi, eax
mov dword [ebp - 0x38], edi
push dword [0x4dee08]
lea eax, [ebp - 0xa]
mov ecx, esi
push eax
lea eax, [ebp - 0x24]
push eax
lea edx, [ebp - 2]
call fcn.00416f10
mov eax, dword [ebp - 0x54]
add esp, 0xc
test eax, eax
je 0x412f99
mov ecx, dword [ebp - 0x58]
mov word [eax], cx
mov eax, dword [ebp - 0x18]
mov ecx, 0x7d
mov word [eax], cx
cmp edi, 1
jl 0x41346c
cmp byte [ebp - 2], 0
mov edx, dword [ebp - 0x24]
jne 0x41332b
test dx, dx
jne 0x41332b
cmp dword [ebp - 0x28], 1
jne 0x413028
cmp dword [ebp - 0x14], 1
je 0x41346c
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x413007
test edi, edi
jle 0x41346c
movzx eax, word [esi]
push 0
push eax
push 0x102
push ecx
call dword [sym.imp.USER32.dll_PostMessageW]
mov ecx, dword [ebp + 0xc]
sub edi, 1
jne 0x412fe2
mov bh, byte [ebp - 1]
mov esi, dword [ebp - 0x18]
jmp 0x413539
mov al, byte [ebp - 0xa]
mov edx, edi
mov bh, byte [ebp - 1]
mov cx, word [esi]
or al, bh
movzx eax, al
push eax
call fcn.00413a70
mov esi, dword [ebp - 0x18]
add esp, 4
jmp 0x413539
cmp dword [ebp + 0xc], 0
mov edx, ebx
mov ecx, esi
sete al
movzx eax, al
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.00416fe0
add esp, 0xc
mov byte [ebp - 2], al
test al, al
je 0x4131b5
cmp dword [ebp + 0xc], 0
mov bl, al
mov esi, dword [ebp - 0x14]
jne 0x4130e6
test esi, esi
jne 0x41306d
mov byte [ebp - 5], bl
jmp 0x4130e6
cmp dword [0x4dee04], 0
jne 0x4130e6
cmp byte [0x4dd226], bl
je 0x4130e6
cmp byte [0x4dee27], 0
jne 0x4130e6
mov al, byte [0x4dd227]
cmp bl, 0x5b
je 0x413096
cmp bl, 0x5c
jne 0x4130a7
cmp al, 0x5b
je 0x41309e
cmp al, 0x5c
jne 0x4130a7
cmp dword [0x4dd21c], 2
jne 0x4130c2
cmp bl, 0xa4
je 0x4130ba
cmp bl, 0xa5
jne 0x4130e6
cmp dword [0x4dee0c], 3
je 0x4130e6
cmp al, 0xa4
je 0x4130c2
cmp al, 0xa5
jne 0x4130e6
movzx eax, word [0x4d9bc0]
mov ecx, 2
mov dl, byte [0x4d9b9b]
push 0xffc3d44d
push 0
push 0
push eax
call fcn.00413e60
add esp, 0x10
cmp dword [0x4dd21c], 0
je 0x4130f6
mov al, byte [0x4dee03]
jmp 0x4130fd
xor cl, cl
call fcn.00416310
mov ecx, dword [ebp + 0xc]
mov dl, al
mov bh, byte [ebp - 0x10]
push 0xffc3d44d
push 0
push 0
push ecx
mov cl, bh
mov byte [ebp - 1], bh
call fcn.00415cf0
add esp, 0x10
test edi, edi
jle 0x41346f
push 0xffc3d44d
push 1
push dword [ebp + 0xc]
mov dl, bl
mov ecx, esi
push 0
call fcn.00413e60
add esp, 0x10
cmp dword [0x4dd21c], 0
jne 0x4131a4
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [0x4d89c0]
sub eax, dword [0x4debcc]
cmp eax, dword [ecx + 0xd8]
jbe 0x4131a4
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x90]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x413199
mov edx, 1
mov dword [0x4d89b8], 0
or ecx, 0xffffffff
call fcn.004016e0
mov dword [0x4d89b8], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x4debcc], eax
sub edi, 1
jne 0x413124
mov esi, dword [ebp - 0x18]
jmp 0x413539
cmp ebx, 4
jbe 0x41321e
push 4
push str.ASC
push esi
call fcn.00495d63
mov edi, dword [ebp + 0xc]
add esp, 0xc
test eax, eax
jne 0x413221
test edi, edi
jne 0x413221
lea ecx, [esi + 6]
call fcn.0040e490
mov ecx, eax
call fcn.00413b80
cmp dword [0x4dd21c], 2
mov eax, dword [0x4d89c0]
jne 0x413208
mov ecx, dword [eax + 0x60]
call fcn.004159f0
mov bh, byte [ebp - 0x10]
mov esi, dword [ebp - 0x18]
mov byte [ebp - 1], bh
jmp 0x413539
mov ecx, dword [eax + 0x5c]
call fcn.004159f0
mov bh, byte [ebp - 0x10]
mov esi, dword [ebp - 0x18]
mov byte [ebp - 1], bh
jmp 0x413539
mov edi, dword [ebp + 0xc]
cmp ebx, 2
jbe 0x413210
push 2
push 0x4c8e5c
push esi
call fcn.00495d63
add esp, 0xc
test eax, eax
jne 0x413210
push 0x10
push eax
lea eax, [esi + 4]
push eax
call fcn.00495c2d
mov edx, eax
add esp, 0xc
cmp edx, 0x10000
jb 0x41327e
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 0x413283
movzx ecx, dx
xor esi, esi
mov bh, byte [ebp - 0x10]
mov byte [ebp - 1], bh
test edi, edi
je 0x4132b8
push 0
movzx eax, cx
push eax
push 0x102
push edi
call dword [sym.imp.USER32.dll_PostMessageW]
test si, si
je 0x4132fd
push 0
movzx eax, si
push eax
push 0x102
push edi
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x4132fd
cmp dword [0x4dd21c], 2
je 0x4132dd
mov bl, byte [ebp - 0xa]
or bl, bh
mov dl, bl
call fcn.004126a0
test si, si
je 0x4132fd
mov dl, bl
mov ecx, esi
call fcn.004126a0
jmp 0x4132fd
mov eax, 0x30
mov word [ebp - 0x74], ax
lea eax, [ebp - 0x72]
push 0xa
push eax
push edx
call fcn.00494572
add esp, 0xc
lea ecx, [ebp - 0x74]
call fcn.00413b80
cmp dword [0x4dd21c], 2
mov eax, dword [0x4d89c0]
jne 0x41331b
mov ecx, dword [eax + 0x60]
call fcn.004159f0
mov esi, dword [ebp - 0x18]
jmp 0x413539
mov ecx, dword [eax + 0x5c]
call fcn.004159f0
mov esi, dword [ebp - 0x18]
jmp 0x413539
mov bh, byte [ebp - 2]
push 0
mov cl, bh
call fcn.004164f0
mov bl, al
add esp, 4
mov byte [ebp - 0x5c], bl
test bl, bl
je 0x413446
mov ecx, dword [ebp + 0xc]
test ecx, ecx
jne 0x413446
mov eax, dword [ebp - 0x14]
test eax, eax
jne 0x413389
mov eax, dword [ebp - 0x2c]
mov byte [ebp - 5], bh
cmp eax, 1
jne 0x413374
mov al, byte [ebp - 1]
or byte [0x4dd225], bl
or al, bl
jmp 0x413440
cmp eax, 2
jne 0x41337f
or byte [0x4dd224], bl
mov al, byte [ebp - 1]
or al, bl
jmp 0x413440
cmp eax, 1
jne 0x413446
cmp dword [0x4dee04], 0
jne 0x41340e
cmp byte [0x4dd226], bh
je 0x41340e
cmp byte [0x4dee27], 0
jne 0x41340e
mov al, byte [0x4dd227]
cmp bh, 0x5b
je 0x4133bb
cmp bh, 0x5c
jne 0x4133cc
cmp al, 0x5b
je 0x4133c3
cmp al, 0x5c
jne 0x4133cc
cmp dword [0x4dd21c], 2
jne 0x4133e7
cmp bh, 0xa4
je 0x4133df
cmp bh, 0xa5
jne 0x41340e
cmp dword [0x4dee0c], 3
je 0x41340e
cmp al, 0xa4
je 0x4133e7
cmp al, 0xa5
jne 0x41340e
movzx eax, word [0x4d9bc0]
mov ecx, 2
mov dl, byte [0x4d9b9b]
push 0xffc3d44d
push 0
push 0
push eax
call fcn.00413e60
mov edx, dword [ebp - 0x24]
add esp, 0x10
mov al, byte [0x4dd225]
not bl
mov cl, byte [ebp - 4]
and al, bl
and byte [0x4dd224], bl
and cl, bl
mov byte [0x4dd225], al
mov byte [ebp - 4], cl
cmp bh, 0xa5
jne 0x41343e
cmp dword [0x4dee0c], 3
jne 0x41343e
and cl, 0xfe
mov byte [ebp - 4], cl
or al, cl
mov byte [ebp - 0x10], al
mov byte [ebp - 1], al
push 0
push closesocket
push closesocket
push dword [ebp + 0xc]
mov cl, bh
push dword [ebp - 0x5c]
push dword [ebp - 0x14]
push edi
push dword [ebp - 0x10]
push dword [ebp - 0xa]
call fcn.004138c0
add esp, 0x24
mov bh, byte [ebp - 1]
mov esi, dword [ebp - 0x18]
jmp 0x413539
cmp eax, 2
jne 0x4134b7
movzx eax, word [esi]
add eax, 0xfffffff8
cmp eax, 5
ja case.0x413487.11
jmp dword [eax*4 + 0x4138a8]
cmp word [esi + 2], 0xa
lea eax, [esi + 2]
cmove esi, eax
mov al, 0xd
mov byte [ebp - 2], al
jmp 0x4134e1
mov al, 8
mov byte [ebp - 2], al
jmp 0x4134e1
mov al, 9
mov byte [ebp - 2], al
jmp 0x4134e1
mov byte [ebp - 2], 0
jmp 0x41350b
mov eax, dword [ebp - 0x20]
or bl, bh
je 0x4134c3
test eax, eax
jne 0x4134c3
mov al, 1
jmp 0x4134c5
xor al, al
mov cx, word [esi]
lea edx, [ebp - 0xa]
push eax
push dword [0x4dee08]
call fcn.00416e40
add esp, 8
mov byte [ebp - 2], al
test al, al
je 0x413508
push 0
push closesocket
push closesocket
push edi
push 0
push 2
push 1
push dword [ebp - 0x10]
xor edx, edx
mov cl, al
push dword [ebp - 0xa]
call fcn.004138c0
add esp, 0x24
jmp 0x413539
mov bl, byte [ebp - 0xa]
test edi, edi
je 0x413523
movzx eax, word [esi]
push 0
push eax
push 0x102
push edi
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x413539
mov cx, word [esi]
or bl, bh
movzx eax, bl
mov edx, 1
push eax
call fcn.00413a70
add esp, 4
xor bl, bl
mov byte [ebp - 0xa], bl
mov al, byte [ebp - 5]
add esi, 2
mov byte [0x4dd226], al
cmp word [esi], 0
jne 0x412c00
cmp dword [0x4dd21c], 0
je 0x4135fc
or esi, 0xffffffff
cmp byte [0x4dee25], 0
mov dword [ebp - 0x24], esi
jne 0x4135bc
cmp dword [0x4dee10], 0
jbe 0x4135bc
cmp byte [0x4dee27], 0
je 0x413585
xor ebx, ebx
jmp 0x413591
movzx ebx, byte [ebp - 6]
movzx eax, byte [ebp - 3]
not ebx
and ebx, eax
or bl, byte [ebp - 1]
mov dl, byte [0x4dee03]
mov cl, bl
push 0xffc3d44d
push 1
push 1
push 0
call fcn.00415cf0
add esp, 0x10
lea ecx, [ebp - 0x24]
mov dl, bl
call fcn.004158a0
mov esi, dword [ebp - 0x24]
cmp dword [0x4dd21c], 1
mov eax, 0x5dc
mov ecx, 0x1f4
cmove eax, ecx
cmp dword [0x4dee14], eax
jbe 0x4135e6
push dword [0x4dd220]
call fcn.00495d53
add esp, 4
mov ecx, esi
mov dword [0x4dd21c], 0
call fcn.004159f0
jmp 0x413682
cmp dword [0x4db79c], 0
je 0x413610
mov cl, byte [0x4dc210]
mov dl, byte [ebp - 3]
jmp 0x413639
cmp dword [0x4d9bbc], 0
jl 0x413634
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x4deb88]
cmp eax, dword [0x4d9bbc]
jb 0x413634
mov dl, byte [ebp - 3]
xor cl, cl
jmp 0x413639
mov dl, byte [ebp - 3]
mov cl, dl
or cl, byte [0x4dd224]
cmp byte [0x4dee27], 0
je 0x41365a
mov al, cl
xor al, dl
mov bl, al
and al, cl
and bl, dl
not bl
and bl, bh
or bl, al
jmp 0x413663
mov bl, byte [ebp - 6]
not bl
and bl, cl
or bl, bh
push 0xffc3d44d
push 1
push 1
push dword [ebp + 0xc]
xor cl, cl
call fcn.00416310
mov dl, al
mov cl, bl
call fcn.00415cf0
add esp, 0x10
cmp dword [0x4db79c], 0
je 0x4136a5
mov cl, byte [0x4dc211]
mov al, cl
xor al, byte [0x4dc212]
and al, cl
not al
and cl, al
mov byte [0x4dc211], cl
cmp dword [ebp - 0x4c], 1
jne 0x413741
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x14
call esi
test al, 1
jne 0x413741
push 0x14
call esi
mov ecx, 0x8000
test cx, ax
je 0x4136e9
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x14
mov ecx, 1
call fcn.00413e60
add esp, 0x10
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x14
mov ecx, 2
call fcn.00413e60
mov ebx, dword [sym.imp.USER32.dll_GetForegroundWindow]
add esp, 0x10
push 0
call ebx
mov esi, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
push eax
call esi
cmp eax, dword [0x4de014]
jne 0x41374d
mov edx, 1
mov dword [0x4d89b8], 0
or ecx, 0xffffffff
call fcn.004016e0
mov dword [0x4d89b8], 1
jmp 0x41374d
mov ebx, dword [sym.imp.USER32.dll_GetForegroundWindow]
mov esi, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
cmp byte [ebp - 0xb], 0
je 0x413764
push 0
push dword [ebp - 0x3c]
push dword [0x4de014]
call dword [sym.imp.USER32.dll_AttachThreadInput]
cmp byte [ebp - 0xc], 0
je 0x4137d8
cmp byte [ebp - 0x19], 0
jne 0x4137d8
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
mov eax, dword [0x4e02c4]
cmp eax, dword [ecx + 4]
jle 0x4137c4
push 0x4e02c4
call fcn.00490bb6
add esp, 4
cmp dword [0x4e02c4], 0xffffffff
jne 0x4137c4
push str.BlockInput
push str.user32
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x4e02c4
mov dword [0x4e02c8], eax
call fcn.00490b77
add esp, 4
mov eax, dword [0x4e02c8]
test eax, eax
je 0x4137d1
push 0
call eax
mov byte [0x4db7d4], 0
cmp dword [ebp + 8], 1
jne 0x41380e
push 0
call ebx
push eax
call esi
cmp eax, dword [0x4de014]
jne 0x41380e
mov edx, 1
mov dword [0x4d89b8], 0
or ecx, 0xffffffff
call fcn.004016e0
mov dword [0x4d89b8], 1
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x60]
mov dword [eax + 0x5c], ecx
mov ecx, dword [ebp - 0x50]
mov dword [eax + 0x64], ecx
lea esp, [ebp - 0x9c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret