Element BlockFind Vars Self#.Stop db ? PointWork doSearch \local s1,s2,res,sz1,sz2,sz3,L1,L8,L9 \\match st,Self#.prop.StartBlock \\{ sz1 equ st\\#.size \\} \\match st,Self#.prop.EndBlock \\{ sz2 equ st\\#.size \\} \\match st,Self#.prop.ReplaceStr \\{ sz3 equ st\\#.size \\\match =0.size,sz3 \\\{ restore sz3 sz3 equ 0 \\\} \\} push esi edi push 0 ReadStr s1,data,data.type,Self#.Text,0 mov_ex eax,s1 mov edx,esp call __strpcopy mov [Self#.Stop],0 mov edi,1 L1: mov eax,dword [esp] mov edx,Self#.prop.StartBlock mov ecx,edi call __strpos or eax,eax je L9 mov esi,eax mov eax,dword [esp] mov edx,Self#.prop.EndBlock lea ecx,[esi+sz1] call __strpos or eax,eax je L9 mov edi,eax mov eax,dword [esp] add eax,esi dec eax mov ecx,edi sub ecx,esi if Self#.prop.IncludeBlock eq 1 add ecx,sz2 else add eax,sz1 sub ecx,sz1 end if push 0 mov edx,esp call __strnpcopy mov eax,dword [esp] Self#.onSearch eax,data_str pop eax test [Self#.Stop],1 jne L9 if Self#.prop.Delete eq 0 add edi,sz2 else if Self#.prop.UserReplace eq 1 ReadInt res,0,0,Self#.Replace,0 mov_ex eax,res or eax,eax je L8 test [Self#.Stop],1 jne L9 end if mov ecx,edi sub ecx,esi if Self#.prop.IncludeBlock eq 1 add ecx,sz2 else add esi,sz1 sub ecx,sz1 end if mov eax,esi mov edx,esp call __strdelete if ~ Self#.prop.ReplaceStr eq 0 mov eax,Self#.prop.ReplaceStr mov ecx,esi mov edx,esp call __strinsert add esi,sz3 end if lea edi,[esi+1] end if L8: test [Self#.Stop],1 je L1 L9: mov eax,dword [esp] Self#.onEndSearch eax,data_str mov edx,esp call __strclear pop eax edi esi EndPoint PointWork doStop mov [Self#.Stop],1 EndPoint EndElement