Function at 0x402870
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x290
push ebx
mov dword [ebp - 4], 0
lea eax, [ebp - 0x108]
push eax
push edi
mov edi, eax
xor eax, eax
mov ecx, 0x41
rep stosd dword es:[edi], eax
pop edi
pop eax
lea eax, [ebp - 0x20c]
push eax
push edi
mov edi, eax
xor eax, eax
mov ecx, 0x41
rep stosd dword es:[edi], eax
pop edi
pop eax
lea eax, [ebp - 0x23c]
push eax
push edi
mov edi, eax
xor eax, eax
mov ecx, 0xc
rep stosd dword es:[edi], eax
pop edi
pop eax
lea eax, [ebp - 0x258]
push eax
push edi
mov edi, eax
xor eax, eax
mov ecx, 7
rep stosd dword es:[edi], eax
pop edi
pop eax
mov dword [ebp - 0x268], 0
mov dword [ebp - 0x264], 0
mov dword [ebp - 0x260], 0
mov dword [ebp - 0x25c], 0
mov dword [ebp - 0x26c], 0
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x274], 0
mov dword [ebp - 0x278], 0
mov dword [ebp - 0x27c], 0
mov dword [ebp - 0x280], 0
mov dword [ebp - 0x284], 0
push 0
push 0x1c
push str.FORM_HEALFILTER_FORM1_CLASS
push 0x104
lea eax, [ebp - 0x108]
push eax
call fcn.00407114
mov dword [ebp - 0x23c], 0x30
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x108]
push eax
push dword [0x4136a0]
call sub.USER32.dll_GetClassInfoExA
mov dword [0x413010], eax
cmp dword [0x413010], 0
jne 0x402a5f
mov dword [ebp - 0x23c], 0x30
mov dword [ebp - 0x238], 0xb
mov eax, 0x404910
mov dword [ebp - 0x234], eax
mov dword [ebp - 0x230], 0
mov dword [ebp - 0x22c], 0
mov eax, dword [0x4136a0]
mov dword [ebp - 0x228], eax
push 0x8000
push 0x20
push 0x20
push 1
push str.IMAGE_MAIN
push dword [0x4136a0]
call sub.USER32.dll_LoadImageA
mov dword [ebp - 0x224], eax
push 0x7f00
push 0
call sub.USER32.dll_LoadCursorA
mov dword [ebp - 0x220], eax
mov dword [ebp - 0x21c], 0x10
mov dword [ebp - 0x218], 0
lea eax, [ebp - 0x108]
mov dword [ebp - 0x214], eax
push 0x8000
push 0x10
push 0x10
push 1
push str.IMAGE_MAIN
push dword [0x4136a0]
call sub.USER32.dll_LoadImageA
mov dword [ebp - 0x210], eax
lea eax, [ebp - 0x23c]
push eax
call sub.USER32.dll_RegisterClassExA
test ax, ax
je 0x402a5f
mov dword [0x413010], 1
mov dword [ebp - 0x26c], 0
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x274], 0xed
mov dword [ebp - 0x278], 0xce
push 0
call sub.USER32.dll_GetSystemMetrics
sub eax, dword [ebp - 0x274]
mov ecx, 2
cdq
idiv ecx
mov dword [ebp - 0x26c], eax
push 1
call sub.USER32.dll_GetSystemMetrics
sub eax, dword [ebp - 0x278]
mov ecx, 2
cdq
idiv ecx
mov dword [ebp - 0x270], eax
push dword [ebp + 0x10]
push dword [0x4136a0]
push 0
push dword [ebp + 8]
push dword [ebp - 0x278]
push dword [ebp - 0x274]
push dword [ebp - 0x270]
push dword [ebp - 0x26c]
push 0x96ca0000
push str.Heal_Filter_v4.0_Alpha
lea eax, [ebp - 0x108]
push eax
push 0x10100
call sub.USER32.dll_CreateWindowExA
mov dword [ebp - 0x27c], eax
push dword [ebp - 0x27c]
call sub.USER32.dll_IsWindow
test eax, eax
jne 0x402b1f
mov dword [ebp - 4], 0
jmp 0x402e29
push 0xffffffffffffffec
push dword [ebp - 0x27c]
call sub.USER32.dll_GetWindowLongA
and eax, 0x40
cmp eax, 0x40
jne 0x402b3b
mov dword [ebp + 0xc], 0
cmp dword [ebp + 0xc], 1
jne 0x402e20
push 0xfffffffffffffff0
push dword [ebp + 8]
call sub.USER32.dll_GetWindowLongA
and eax, 0x40000000
test eax, eax
je 0x402b78
push dword [ebp + 8]
call sub.USER32.dll_GetParent
mov dword [ebp + 8], eax
push 0xffffffffffffffec
push dword [ebp + 8]
call sub.USER32.dll_GetWindowLongA
and eax, 0x40
test eax, eax
je 0x402b76
jmp 0x402b78
jmp 0x402b45
push str.FLY_PTR
push dword [ebp - 0x27c]
call sub.USER32.dll_GetPropA
mov dword [ebp - 0x284], eax
cmp dword [ebp - 0x284], 0
je 0x402bb0
mov eax, dword [ebp - 0x284]
mov dword [eax + 0x10], 1
mov eax, dword [ebp - 0x284]
mov ebx, dword [ebp + 8]
mov dword [eax + 8], ebx
cmp dword [ebp + 8], 0
je 0x402bc0
push 0
push dword [ebp + 8]
call sub.USER32.dll_EnableWindow
push 1
push dword [ebp - 0x27c]
call sub.USER32.dll_ShowWindow
push dword [ebp - 0x27c]
call sub.USER32.dll_UpdateWindow
push 0
push 0
push 0
lea ebx, [ebp - 0x258]
push ebx
call sub.USER32.dll_GetMessageA
test eax, eax
je 0x402e0c
push dword [ebp - 0x27c]
call sub.USER32.dll_IsWindow
test eax, eax
jne 0x402c06
jmp 0x402e0c
cmp dword [ebp - 0x254], 0x12
jne 0x402c14
jmp 0x402e0c
lea eax, [ebp - 0x258]
push eax
call fcn.00405b60
test eax, eax
jne 0x402e07
push dword [0x41328c]
call fcn.00406480
mov dword [ebp - 0x280], eax
push 0x104
lea eax, [ebp - 0x108]
push eax
call sub.USER32.dll_GetFocus
push eax
call sub.USER32.dll_GetClassNameA
push 0
push 0xffffffffffffffff
lea eax, [ebp - 0x108]
push eax
call fcn.00407f0c
push eax
call fcn.00408a30
push eax
push 0xffffffffffffffff
mov dword [ebp - 0x290], 0
mov dword [ebp - 0x28c], 0
mov dword [ebp - 0x288], 0
lea eax, [ebp - 0x290]
push eax
call fcn.00407114
push 5
push str.EDIT
push 0xffffffffffffffff
lea eax, [ebp - 0x290]
push eax
call fcn.0040751c
test eax, eax
je 0x402cd5
push 0xffffffffffffffff
push 0x413080
call fcn.00407f0c
push eax
call fcn.00408a30
push eax
push 0xffffffffffffffff
lea eax, [ebp - 0x290]
push eax
call fcn.0040751c
test eax, eax
jne 0x402db4
push 0xfffffffffffffff0
call sub.USER32.dll_GetFocus
push eax
call sub.USER32.dll_GetWindowLongA
and eax, 4
cmp eax, 4
jne 0x402db4
cmp dword [ebp - 0x254], 0x100
sete al
shr eax, 1
sbb eax, eax
cmp dword [ebp - 0x250], 0x1b
sete bl
shr ebx, 1
sbb ebx, ebx
and eax, ebx
je 0x402d34
mov dword [ebp - 0x254], 0x111
mov dword [ebp - 0x250], 2
mov dword [ebp - 0x24c], 0
jmp 0x402db4
cmp dword [ebp - 0x254], 0x102
sete bl
shr ebx, 1
sbb ebx, ebx
cmp dword [ebp - 0x250], 9
sete al
shr eax, 1
sbb eax, eax
and ebx, eax
je 0x402db4
push 0x10
call sub.USER32.dll_GetAsyncKeyState
movsx eax, ax
and eax, 0x8000
test eax, eax
jne 0x402d8b
push 0
push dword [ebp - 0x258]
push dword [ebp - 0x258]
call sub.USER32.dll_GetParent
push eax
call sub.USER32.dll_GetNextDlgTabItem
push eax
call sub.USER32.dll_SetFocus
jmp 0x402daa
push 1
push dword [ebp - 0x258]
push dword [ebp - 0x258]
call sub.USER32.dll_GetParent
push eax
call sub.USER32.dll_GetNextDlgTabItem
push eax
call sub.USER32.dll_SetFocus
mov dword [ebp - 0x254], 0
lea eax, [ebp - 0x290]
push eax
call fcn.004071d0
cmp dword [ebp - 0x280], 0
sete al
shr eax, 1
sbb eax, eax
lea ebx, [ebp - 0x258]
push ebx
push dword [ebp - 0x280]
mov ebx, eax
call sub.USER32.dll_IsDialogMessageA
test eax, eax
sete al
shr eax, 1
sbb eax, eax
or ebx, eax
je 0x402e07
lea eax, [ebp - 0x258]
push eax
call sub.USER32.dll_TranslateMessage
lea eax, [ebp - 0x258]
push eax
call sub.USER32.dll_DispatchMessageA
jmp 0x402bd8
mov eax, dword [0x413ad4]
mov dword [ebp - 4], eax
mov dword [0x413ad4], 0
jmp 0x402e29
mov eax, dword [ebp - 0x27c]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
pop ebx
mov esp, ebp
pop ebp
ret 0xc