Function at 0x4187a0
Capabilities:
Check for foreground window switch
Check for time delay via gettickcount
Get keyboard layout
Log keystrokes
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x9c
push ebx
push esi
push edi
mov edi, ecx
mov ebx, edx
mov dword [ebp - 0x1c], ebx
cmp word [edi], 0
je 0x4197ea
mov eax, dword [0x4e40f4]
mov esi, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsnicmp]
mov dword [ebp - 0x28], eax
mov eax, dword [0x4e9690]
mov dword [ebp - 0x68], eax
mov eax, dword fs:[0x24]
mov dword [ebp - 0x48], eax
test ebx, ebx
jne 0x4187fd
push 7
push str.Blind
push edi
call esi
add esp, 0xc
test eax, eax
jne 0x4187fd
mov byte [0x4e992c], 1
add edi, 0xe
jmp 0x418808
mov byte [0x4e992c], 0
test ebx, ebx
jne 0x418823
push 6
push str.Text
push edi
call esi
add esp, 0xc
test eax, eax
jne 0x418823
mov dword [ebp - 0x1c], 2
add edi, 0xc
mov edx, dword [ebp - 0x28]
mov ecx, dword [ebp + 8]
mov eax, dword [edx + 0x5c]
mov dword [ebp - 0x6c], eax
mov eax, dword [edx + 0x64]
mov dword [ebp - 0x54], eax
cmp ecx, 1
je 0x418843
cmp ecx, 3
jne 0x4188ef
mov eax, dword [0x4e988c]
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x418855
push eax
call ebx
push str.AHK_Keybd
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp dword [0x4e988c], 0
mov dword [ebp - 0x30], eax
je 0x418880
mov dword [0x4e988c], esi
jmp 0x41888a
test esi, esi
je 0x41888a
push esi
call ebx
mov eax, dword [ebp - 0x30]
cmp eax, 0xb7
je 0x4188b9
cmp dword [ebp - 0x1c], 0
jne 0x4188b0
call fcn.00412c80
test al, al
je 0x4188b0
mov edx, str.Click
mov ecx, edi
call fcn.0049d970
test eax, eax
jne 0x4188b9
mov dword [ebp + 8], 1
jmp 0x4188ef
cmp dword [ebp + 8], 3
jne 0x4188c8
mov dword [ebp + 8], 2
jmp 0x4188ef
mov edx, dword [ebp - 0x28]
mov dword [ebp + 8], 0
cmp dword [edx + 0x5c], 0
jge 0x4188e3
cmp dword [edx + 0x64], 0
jge 0x4188e3
or eax, 0xffffffff
jmp 0x4188e5
xor eax, eax
mov dword [edx + 0x64], eax
mov dword [edx + 0x5c], 0xffffffff
mov ebx, dword [ebp + 0xc]
xor esi, esi
mov byte [ebp - 0xb], 0
test ebx, ebx
je 0x418949
push esi
push ebx
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov dword [ebp - 0x38], eax
test eax, eax
je 0x4189ec
cmp eax, dword [0x4e82ec]
je 0x4189ec
mov ecx, ebx
call fcn.004a3870
test al, al
jne 0x4189ec
mov ebx, dword [ebp - 0x38]
push 1
push ebx
push dword [0x4e82ec]
call dword [sym.imp.USER32.dll_AttachThreadInput]
test eax, eax
mov esi, ebx
setne byte [ebp - 0xb]
jmp 0x4189ec
test byte [0x4e9656], 0xc0
je 0x4189d7
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x4e964c]
cmp eax, 0x32
jae 0x4189d7
cmp dword [ebp + 8], 2
je 0x4189d7
cmp byte [0x4e992c], 0
jne 0x4189d7
mov ebx, dword [ebp - 0x1c]
cmp ebx, 2
je 0x4189d7
cmp byte [0x4e985b], 0
je 0x4189d7
mov eax, dword [ebp - 0x48]
cmp eax, dword [0x4e82ec]
jne 0x4189d7
mov edx, 0x4d1c84
mov ecx, edi
call fcn.004065e0
test ebx, ebx
jne 0x418a33
test eax, eax
je 0x4189d7
nop word [eax + eax]
lea ecx, [eax + 2]
mov edx, 0x4d1c8c
call fcn.004065e0
test eax, eax
je 0x418a37
cmp word [eax], 0x7b
je 0x418a37
mov edx, 0x4d1c84
mov ecx, eax
call fcn.004065e0
test eax, eax
jne 0x4189b0
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov edx, eax
call fcn.0041c9d0
mov esi, eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x38], eax
push esi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
xor edx, edx
mov dword [0x4e9908], eax
mov ecx, eax
call fcn.0041ca70
mov cl, 1
mov dword [0x4e990c], eax
call fcn.0041c400
mov bl, al
and byte [0x4e98b7], bl
cmp dword [0x4e6a08], 0
je 0x418a79
mov al, byte [0x4e73de]
mov cl, byte [0x4e73dc]
mov bh, al
not al
and bh, cl
and al, cl
jmp 0x418a9d
test eax, eax
je 0x4189d7
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ebx, 0x8000
push 0x5b
call esi
test bx, ax
jne 0x418a54
push 0x5c
call esi
test bx, ax
je 0x4189d7
mov edx, 1
mov dword [0x4e40ec], 0
mov ecx, 0x8000012f
call fcn.004019f0
mov dword [0x4e40ec], 1
jmp 0x418a42
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x4e964c]
cmp eax, dword [0x4e5360]
jae 0x418a97
mov cl, byte [0x4e9656]
and cl, bl
jmp 0x418a99
xor cl, cl
mov bh, cl
xor al, al
not bh
mov byte [ebp - 3], cl
and bh, byte [0x4e98b6]
and bh, bl
mov byte [ebp - 6], al
cmp byte [0x4e992c], 0
mov byte [ebp - 1], bh
mov byte [0x4e98b6], bh
je 0x418acc
not bh
and bh, bl
mov al, bh
mov bh, bl
mov byte [ebp - 1], bh
jmp 0x418ace
xor al, al
mov byte [ebp - 4], al
mov eax, dword [ebp - 0x28]
mov byte [ebp - 0x10], bh
cmp byte [eax + 0xf3], 0
je 0x418b00
cmp byte [0x4e992c], 0
jne 0x418b00
cmp dword [ebp - 0x1c], 2
je 0x418b00
mov edx, 2
mov cl, 0x14
call fcn.0041bc80
mov dword [ebp - 0x30], eax
jmp 0x418b07
mov dword [ebp - 0x30], 0
mov ecx, dword [ebp + 8]
mov eax, 0x1f4
mov dword [0x4e9928], ecx
mov edx, 0x5dc
test ecx, ecx
je 0x418b80
cmp ecx, 1
cmovne eax, edx
mov edx, 0x2ee0
mov dword [0x4e9914], eax
mov eax, 0x36b0
cmovne eax, edx
call fcn.004b8430
mov eax, dword [0x4e5b58]
mov ecx, esp
mov byte [0x4e991c], bl
mov byte [0x4e991d], 0
mov dword [0x4e9910], 0
mov dword [eax], ecx
mov ecx, dword [ebp + 8]
mov dword [0x4e9920], 0x80000000
mov dword [0x4e9924], 0x80000000
mov byte [0x4e991e], 0
mov byte [0x4e991f], 1
mov al, byte [0x4e6a6e]
mov byte [ebp - 0x1d], al
mov eax, dword [0x4e4104]
cmp eax, 8
je 0x418b97
cmp eax, 0xa
jne 0x418bb7
mov esi, dword [ebp + 0xc]
test ecx, ecx
jne 0x418bba
test esi, esi
jne 0x418bba
push 1
mov byte [ebp - 0xc], 1
call dword [sym.imp.USER32.dll_BlockInput]
mov byte [0x4e6a6e], 1
jmp 0x418bbe
mov esi, dword [ebp + 0xc]
mov byte [ebp - 0xc], 0
xor bl, bl
cmp word [edi], 0
mov byte [ebp - 0xa], bl
je 0x419548
jmp 0x418bd3
mov esi, dword [ebp + 0xc]
cmp dword [0x4e9928], 0
mov byte [ebp - 5], 0
jne 0x418c3f
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [0x4e40f4]
sub eax, dword [0x4e9694]
cmp eax, dword [ecx + 0xd8]
jbe 0x418c3f
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x9c]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x418c34
mov edx, 1
mov dword [0x4e40ec], 0
or ecx, 0xffffffff
call fcn.004019f0
mov dword [0x4e40ec], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x4e9694], eax
mov eax, dword [ebp - 0x1c]
test eax, eax
jne 0x41946f
movzx eax, word [edi]
push eax
push 0x4d1c94
call dword [sym.imp.VCRUNTIME140.dll_wcschr]
add esp, 8
test eax, eax
je 0x4194ac
movzx eax, word [edi]
add eax, 0xffffffdf
cmp eax, 0x5c
ja case.0x418c7a.34
movzx eax, byte [eax + 0x419814]
jmp dword [eax*4 + 0x4197f8]
test bh, 3
jne case.0x418c7a.34
or bl, 1
jmp 0x419530
test bh, 0x30
jne case.0x418c7a.34
or bl, 0x10
jmp 0x419530
test bh, 0xc
jne case.0x418c7a.34
or bl, 4
jmp 0x419530
test bh, 0xc0
jne case.0x418c7a.34
or bl, 0x40
jmp 0x419530
lea esi, [edi + 2]
push 0x7d
push esi
call dword [sym.imp.VCRUNTIME140.dll_wcschr]
add esp, 8
mov dword [ebp - 0x18], eax
test eax, eax
je case.0x418c7a.34
mov edi, esi
movzx ecx, word [edi]
cmp ecx, 0x20
je 0x418cee
cmp ecx, 9
jne 0x418cf3
add edi, 2
jmp 0x418ce1
mov esi, eax
sub esi, edi
sar esi, 1
mov dword [ebp - 0x34], esi
jne 0x418d86
lea esi, [eax + 2]
movzx eax, word [esi]
cmp eax, 0x7d
jne 0x418d15
mov dword [ebp - 0x18], esi
lea esi, [eax - 0x7c]
jmp 0x418d83
cmp eax, 0x20
je 0x418d23
cmp eax, 9
jne 0x419467
cmp ax, 0x20
je 0x418d2f
cmp ax, 9
jne 0x418d38
movzx eax, word [esi + 2]
add esi, 2
jmp 0x418d23
push 4
push str.Down
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsnicmp]
add esp, 0xc
test eax, eax
je 0x418d66
push 2
push 0x4d07a4
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsnicmp]
add esp, 0xc
test eax, eax
jne 0x419467
push 0x7d
push esi
call dword [sym.imp.VCRUNTIME140.dll_wcschr]
add esp, 8
mov dword [ebp - 0x18], eax
test eax, eax
je case.0x418c7a.34
mov esi, eax
sub esi, edi
sar esi, 1
mov dword [ebp - 0x34], esi
push 5
push 0x4cec50
push edi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsnicmp]
add esp, 0xc
test eax, eax
jne 0x418e46
mov eax, dword [ebp - 0x18]
xor ecx, ecx
mov word [eax], cx
lea ecx, [edi + 0xa]
nop word [eax + eax]
movzx eax, word [ecx]
cmp eax, 0x20
je 0x418dbd
cmp eax, 9
jne 0x418dc2
add ecx, 2
jmp 0x418db0
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 2]
push eax
lea eax, [ebp - 0x50]
push eax
lea edx, [ebp - 0x44]
call fcn.0041a490
mov eax, dword [ebp - 0x18]
add esp, 0x14
mov ecx, 0x7d
push dword [ebp - 0x4c]
mov word [eax], cx
mov eax, dword [ebp - 0x3c]
cmp eax, 1
jge 0x418e1c
mov eax, dword [ebp - 0x28]
lea edx, [ebp - 0x50]
lea ecx, [ebp - 0x44]
movzx eax, byte [eax + 0xef]
push eax
lea eax, [ebp - 0x70]
push eax
call fcn.0041b120
mov edi, dword [ebp - 0x18]
add esp, 0xc
jmp 0x41952e
push dword [ebp - 0x50]
mov cl, byte [ebp - 2]
xor edx, edx
push dword [ebp - 0x44]
push dword [ebp + 0xc]
push 0
push dword [ebp - 0x14]
push eax
push dword [ebp - 0x10]
push dword [ebp - 0xa]
call fcn.00419890
mov edi, dword [ebp - 0x18]
add esp, 0x24
jmp 0x41952e
push 3
push 0x4d1ca4
push edi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsnicmp]
add esp, 0xc
test eax, eax
jne 0x418e6a
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x1c], 1
jmp 0x41952e
push 4
push 0x4d1bf4
push edi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsnicmp]
add esp, 0xc
test eax, eax
jne 0x418eac
lea ecx, [edi + 8]
movzx eax, word [ecx]
cmp eax, 0x20
je 0x418e8f
cmp eax, 9
jne 0x418e94
add ecx, 2
jmp 0x418e82
cmp ecx, dword [ebp - 0x18]
jne 0x419467
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x1c], 2
jmp 0x41952e
mov eax, dword [ebp - 0x18]
xor ecx, ecx
mov ebx, 1
mov dword [ebp - 0x14], 2
mov edx, 0x4d1604
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x3c], ebx
mov word [eax], cx
mov ecx, edi
mov dword [ebp - 0x40], esi
call fcn.004065e0
mov dword [ebp - 0x58], eax
test eax, eax
je 0x418f93
movzx ecx, word [eax]
lea esi, [eax + 2]
mov dword [ebp - 0x5c], ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, eax
sub ecx, edi
sar ecx, 1
mov dword [ebp - 0x40], ecx
movzx eax, word [esi]
cmp eax, 0x20
je 0x418f04
cmp eax, 9
jne 0x418f09
add esi, 2
jmp 0x418ef7
mov eax, dword [ebp - 0x18]
sub eax, esi
sar eax, 1
je 0x418f93
push 4
push str.Down
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsnicmp]
add esp, 0xc
test eax, eax
jne 0x418f6c
push 4
add esi, 8
mov dword [ebp - 0x14], eax
push str.Temp
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsnicmp]
add esp, 0xc
test eax, eax
jne 0x418f4b
mov dword [ebp - 0x2c], eax
jmp 0x418f93
xor eax, eax
cmp word [esi], 0x52
sete al
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_toupper]
add esp, 4
mov esi, eax
neg esi
sbb esi, esi
neg esi
inc esi
mov dword [ebp - 0x2c], esi
jmp 0x418f93
push 0x4d07a4
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
add esp, 8
test eax, eax
jne 0x418f84
mov dword [ebp - 0x14], ebx
jmp 0x418f93
mov ecx, esi
call fcn.00418450
mov ebx, eax
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x3c], ebx
push dword [0x4e9908]
lea eax, [ebp - 0xa]
mov ecx, edi
push eax
lea eax, [ebp - 0x60]
push eax
lea edx, [ebp - 2]
call fcn.0041d080
mov eax, dword [ebp - 0x58]
add esp, 0xc
test eax, eax
je 0x418fbb
mov ecx, dword [ebp - 0x5c]
mov word [eax], cx
mov eax, dword [ebp - 0x18]
mov ecx, 0x7d
mov word [eax], cx
cmp ebx, 1
jl 0x419464
mov bh, byte [ebp - 2]
mov esi, dword [ebp - 0x60]
test bh, bh
jne 0x4193a5
test si, si
jne 0x4193a5
movzx eax, byte [edi]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isdigit]
add esp, 4
test eax, eax
mov eax, dword [ebp - 0x40]
je 0x41909e
cmp eax, 1
jbe 0x4190a1
cmp dword [0x4e9928], 0
je 0x419033
mov ecx, edi
call fcn.00418450
push eax
push 0
push 0
xor dl, dl
xor cl, cl
call fcn.0041b450
mov bh, byte [ebp - 1]
add esp, 0xc
mov edi, dword [ebp - 0x18]
jmp 0x41952e
mov eax, dword [ebp - 0x48]
mov dword [0x4e40ec], 0
cmp dword [0x4e82ec], eax
je 0x419076
mov ecx, edi
call fcn.00418450
test eax, eax
js 0x419076
mov ecx, edi
call fcn.00418450
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
mov bh, byte [ebp - 1]
mov edi, dword [ebp - 0x18]
mov dword [0x4e40ec], 1
jmp 0x41952e
mov ecx, edi
call fcn.00418450
mov edx, 1
mov ecx, eax
call fcn.004019f0
mov bh, byte [ebp - 1]
mov edi, dword [ebp - 0x18]
mov dword [0x4e40ec], 1
jmp 0x41952e
cmp eax, 1
jne 0x419107
cmp dword [ebp - 0x14], 1
je 0x419464
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x4190e5
mov ebx, dword [ebp - 0x24]
test ebx, ebx
jle 0x419464
nop
movzx eax, word [edi]
push 0
push eax
push 0x102
push ecx
call dword [sym.imp.USER32.dll_PostMessageW]
mov ecx, dword [ebp + 0xc]
sub ebx, 1
jne 0x4190c0
mov bh, byte [ebp - 1]
mov edi, dword [ebp - 0x18]
jmp 0x41952e
mov al, byte [ebp - 0xa]
mov bh, byte [ebp - 1]
mov edx, dword [ebp - 0x24]
or al, bh
mov cx, word [edi]
movzx eax, al
push eax
call fcn.00419a40
mov edi, dword [ebp - 0x18]
add esp, 4
jmp 0x41952e
mov ebx, dword [ebp + 0xc]
mov ecx, edi
mov esi, dword [ebp - 0x34]
test ebx, ebx
mov edx, esi
sete al
movzx eax, al
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.0041d150
add esp, 0xc
mov byte [ebp - 2], al
test al, al
je 0x419223
mov esi, dword [ebp - 0x14]
mov edi, ebx
test edi, edi
jne 0x41914e
test esi, esi
jne 0x419147
mov byte [ebp - 5], al
jmp 0x41914e
mov cl, al
call fcn.00418620
cmp dword [0x4e9928], 0
je 0x41915e
mov al, byte [0x4e991c]
jmp 0x419165
xor cl, cl
call fcn.0041c400
push 0xffc3d44d
push 0
mov dl, al
mov al, byte [ebp - 0x10]
push 0
push edi
mov cl, al
mov byte [ebp - 1], al
call fcn.0041bd90
mov ebx, dword [ebp - 0x24]
add esp, 0x10
test ebx, ebx
jle 0x419464
nop dword [eax]
mov dl, byte [ebp - 2]
mov ecx, esi
push 0xffc3d44d
push 1
push edi
push 0
call fcn.00419e30
add esp, 0x10
cmp dword [0x4e9928], 0
jne 0x41920f
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [0x4e40f4]
sub eax, dword [0x4e9694]
cmp eax, dword [ecx + 0xd8]
jbe 0x41920f
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x9c]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x419204
mov edx, 1
mov dword [0x4e40ec], 0
or ecx, 0xffffffff
call fcn.004019f0
mov dword [0x4e40ec], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x4e9694], eax
sub ebx, 1
jne 0x419190
mov bh, byte [ebp - 1]
mov edi, dword [ebp - 0x18]
jmp 0x41952e
cmp esi, 4
jbe 0x419295
push 4
push str.ASC
push edi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsnicmp]
add esp, 0xc
test eax, eax
jne 0x419295
test ebx, ebx
jne 0x419295
lea ecx, [edi + 6]
movzx eax, word [ecx]
cmp eax, 0x20
je 0x419251
cmp eax, 9
jne 0x419256
add ecx, 2
jmp 0x419244
call fcn.00419b50
cmp dword [0x4e9928], 2
mov eax, dword [0x4e40f4]
jne 0x41927f
mov ecx, dword [eax + 0x60]
call fcn.0041ba50
mov bh, byte [ebp - 0x10]
mov edi, dword [ebp - 0x18]
mov byte [ebp - 1], bh
jmp 0x41952e
mov ecx, dword [eax + 0x5c]
call fcn.0041ba50
mov bh, byte [ebp - 0x10]
mov edi, dword [ebp - 0x18]
mov byte [ebp - 1], bh
jmp 0x41952e
cmp esi, 2
jbe 0x419287
push 2
push 0x4d1cc4
push edi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsnicmp]
add esp, 0xc
test eax, eax
jne 0x419287
push 0x10
push eax
lea eax, [edi + 4]
push eax
call dword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_wcstol]
mov edx, eax
add esp, 0xc
cmp edx, 0x10000
jb 0x4192f4
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 0x4192f9
movzx ecx, dx
xor esi, esi
test ebx, ebx
mov bh, byte [ebp - 0x10]
mov byte [ebp - 1], bh
je 0x419331
mov edi, dword [ebp + 0xc]
push 0
movzx eax, cx
push eax
push 0x102
push edi
call dword [sym.imp.USER32.dll_PostMessageW]
test si, si
je 0x419377
push 0
movzx eax, si
push eax
push 0x102
push edi
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x419377
cmp dword [0x4e9928], 2
je 0x419356
mov bl, byte [ebp - 0xa]
or bl, bh
mov dl, bl
call fcn.004186a0
test si, si
je 0x419377
mov dl, bl
mov ecx, esi
call fcn.004186a0
jmp 0x419377
mov eax, 0x30
mov word [ebp - 0x80], ax
lea eax, [ebp - 0x7e]
push 0xa
push eax
push edx
call dword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll__itow]
add esp, 0xc
lea ecx, [ebp - 0x80]
call fcn.00419b50
cmp dword [0x4e9928], 2
mov eax, dword [0x4e40f4]
jne 0x419395
mov ecx, dword [eax + 0x60]
call fcn.0041ba50
mov edi, dword [ebp - 0x18]
jmp 0x41952e
mov ecx, dword [eax + 0x5c]
call fcn.0041ba50
mov edi, dword [ebp - 0x18]
jmp 0x41952e
push 0
mov edx, esi
mov cl, bh
call fcn.0041c610
mov edi, dword [ebp - 0x14]
mov bl, al
add esp, 4
mov byte [ebp - 0x64], bl
test bl, bl
je 0x41943c
cmp dword [ebp + 0xc], 0
jne 0x41943c
test edi, edi
jne 0x4193f7
mov eax, dword [ebp - 0x2c]
mov byte [ebp - 5], bh
cmp eax, 1
jne 0x4193e5
mov al, byte [ebp - 1]
or byte [0x4e98b6], bl
or al, bl
jmp 0x419436
cmp eax, 2
jne 0x4193f0
or byte [0x4e98b7], bl
mov al, byte [ebp - 1]
or al, bl
jmp 0x419436
cmp edi, 1
jne 0x41943c
mov cl, bh
call fcn.00418620
mov cl, byte [ebp - 4]
not bl
and byte [0x4e98b7], bl
mov al, bl
and al, byte [0x4e98b6]
and cl, bl
mov byte [0x4e98b6], al
mov byte [ebp - 4], cl
cmp bh, 0xa5
jne 0x419434
cmp dword [0x4e990c], 3
jne 0x419434
and cl, 0xfe
mov byte [ebp - 4], cl
or al, cl
mov byte [ebp - 0x10], al
mov byte [ebp - 1], al
push 0
push SysReAllocString
push SysReAllocString
push dword [ebp + 0xc]
mov edx, esi
mov cl, bh
push dword [ebp - 0x64]
push edi
push dword [ebp - 0x24]
push dword [ebp - 0x10]
push dword [ebp - 0xa]
call fcn.00419890
add esp, 0x24
mov bh, byte [ebp - 1]
mov edi, dword [ebp - 0x18]
jmp 0x41952e
cmp eax, 2
jne 0x4194af
movzx eax, word [edi]
add eax, 0xfffffff8
cmp eax, 5
ja case.0x41947f.11
jmp dword [eax*4 + 0x419874]
cmp word [edi + 2], 0xa
lea eax, [edi + 2]
cmove edi, eax
mov al, 0xd
mov byte [ebp - 2], al
jmp 0x4194d9
mov al, 8
mov byte [ebp - 2], al
jmp 0x4194d9
mov al, 9
mov byte [ebp - 2], al
jmp 0x4194d9
mov byte [ebp - 2], 0
jmp 0x419503
mov eax, dword [ebp - 0x1c]
or bl, bh
je 0x4194bb
test eax, eax
jne 0x4194bb
mov al, 1
jmp 0x4194bd
xor al, al
mov cx, word [edi]
lea edx, [ebp - 0xa]
push eax
push dword [0x4e9908]
call fcn.0041cfc0
add esp, 8
mov byte [ebp - 2], al
test al, al
je 0x419500
push 0
push SysReAllocString
push SysReAllocString
push esi
push 0
push 2
push 1
push dword [ebp - 0x10]
xor edx, edx
mov cl, al
push dword [ebp - 0xa]
call fcn.00419890
add esp, 0x24
jmp 0x41952e
mov bl, byte [ebp - 0xa]
movzx ecx, word [edi]
test esi, esi
je 0x41951b
push 0
push ecx
push 0x102
push esi
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x41952e
or bl, bh
mov edx, 1
movzx eax, bl
push eax
call fcn.00419a40
add esp, 4
xor bl, bl
mov byte [ebp - 0xa], bl
mov al, byte [ebp - 5]
add edi, 2
mov byte [0x4e98b5], al
cmp word [edi], 0
jne 0x418bd0
cmp dword [0x4e9928], 0
je 0x4195f3
or esi, 0xffffffff
cmp byte [0x4e991e], 0
mov dword [ebp - 0x2c], esi
jne 0x4195b2
cmp dword [0x4e9910], 0
jbe 0x4195b2
cmp byte [0x4e992c], 0
je 0x41957a
xor bl, bl
jmp 0x419582
mov bl, byte [ebp - 6]
not bl
and bl, byte [ebp - 3]
or bl, byte [0x4e98b7]
mov dl, byte [0x4e991c]
or bl, bh
push 0xffc3d44d
push 1
push 1
push 0
mov cl, bl
call fcn.0041bd90
add esp, 0x10
lea ecx, [ebp - 0x2c]
mov dl, bl
call fcn.0041b840
mov esi, dword [ebp - 0x2c]
cmp dword [0x4e9928], 1
mov eax, 0x5dc
mov ecx, 0x1f4
cmove eax, ecx
cmp dword [0x4e9914], eax
jbe 0x4195dd
push dword [0x4e7568]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
mov ecx, esi
mov dword [0x4e9928], 0
call fcn.0041ba50
jmp 0x41967f
cmp dword [0x4e6a08], 0
je 0x419607
mov cl, byte [0x4e73dc]
mov dl, byte [ebp - 3]
jmp 0x419630
cmp dword [0x4e5360], 0
jl 0x41962b
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x4e964c]
cmp eax, dword [0x4e5360]
jb 0x41962b
mov dl, byte [ebp - 3]
xor cl, cl
jmp 0x419630
mov dl, byte [ebp - 3]
mov cl, dl
or cl, byte [0x4e98b7]
cmp byte [0x4e992c], 0
je 0x419651
mov al, cl
xor al, dl
mov bl, al
and al, cl
and bl, dl
not bl
and bl, bh
or bl, al
jmp 0x41965a
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.0041c400
or al, byte [0x4e6aa3]
mov cl, bl
mov dl, al
call fcn.0041bd90
add esp, 0x10
cmp dword [0x4e6a08], 0
je 0x4196a2
mov cl, byte [0x4e73dd]
mov al, cl
xor al, byte [0x4e73de]
and al, cl
not al
and cl, al
mov byte [0x4e73dd], cl
cmp dword [ebp - 0x30], 1
jne 0x41973e
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x14
call esi
test al, 1
jne 0x41973e
push 0x14
call esi
mov ecx, 0x8000
test cx, ax
je 0x4196e6
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x14
mov ecx, 1
call fcn.00419e30
add esp, 0x10
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x14
mov ecx, 2
call fcn.00419e30
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 [0x4e82ec]
jne 0x41974a
mov edx, 1
mov dword [0x4e40ec], 0
or ecx, 0xffffffff
call fcn.004019f0
mov dword [0x4e40ec], 1
jmp 0x41974a
mov ebx, dword [sym.imp.USER32.dll_GetForegroundWindow]
mov esi, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
cmp byte [ebp - 0xb], 0
je 0x419761
push 0
push dword [ebp - 0x38]
push dword [0x4e82ec]
call dword [sym.imp.USER32.dll_AttachThreadInput]
cmp byte [ebp - 0xc], 0
je 0x41977c
cmp byte [ebp - 0x1d], 0
jne 0x41977c
push 0
call dword [sym.imp.USER32.dll_BlockInput]
mov byte [0x4e6a6e], 0
mov eax, dword [ebp + 8]
test eax, eax
jne 0x4197a6
mov eax, dword [ebp - 0x68]
cmp dword [0x4e9690], eax
je 0x4197db
call fcn.00404930
test eax, eax
je 0x4197db
mov edx, 1
or ecx, 0xffffffff
call fcn.004019f0
jmp 0x4197db
cmp eax, 1
jne 0x4197db
push 0
call ebx
push eax
call esi
cmp eax, dword [0x4e82ec]
jne 0x4197db
mov edx, 1
mov dword [0x4e40ec], 0
or ecx, 0xffffffff
call fcn.004019f0
mov dword [0x4e40ec], 1
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x6c]
mov dword [eax + 0x5c], ecx
mov ecx, dword [ebp - 0x54]
mov dword [eax + 0x64], ecx
lea esp, [ebp - 0xa8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret