Element Position Vars Self#.Pos dd ? Self#.tmp dd ? Create xor eax,eax mov [Self#.Pos],eax PointWork doSearch \local str,targ,pos,L1,L2,sv.t DataSave data,data.type,[Self#.tmp],sv.t sub esp,8 ReadStr str,[Self#.tmp],data.type,Self#.Str,0 mov_ex eax,str mov edx,esp call __strdupnoclear ReadStr targ,[Self#.tmp],data.type,Self#.Target,Self#.prop.Target mov_ex eax,targ lea edx,[esp+4] call __strdupnoclear if Self#.prop.ShortSearch eq 0 mov eax,[Self#.Pos] or eax,eax jne L1 end if ReadInt pos,[Self#.tmp],data.type,Self#.StartPos,Self#.prop.StartPos mov_ex [Self#.Pos],pos L1: mov ecx,[Self#.Pos] test ecx,ecx jg @f mov ecx,1 @@: mov eax,[esp] mov edx,[esp+4] call __strpos mov [Self#.Pos],eax if Self#.prop.ZeroPos eq 1 test eax,eax jle L2 end if Self#.onSearch [Self#.Pos],data_int L2: mov eax,[Self#.Pos] test eax,eax jle @f mov eax,[esp+4] call __strlen dec eax add [Self#.Pos],eax @@: lea edx,[esp+4] call __strclear mov edx,esp call __strclear add esp,8 DataClear [Self#.tmp],sv.t EndPoint PointWork doReset \local res ReadInt res,data,data.type,Self#.StartPos,Self#.prop.StartPos mov_ex [Self#.Pos],res EndPoint PointVar Position,data_int result equ [Self#.Pos] EndPoint EndElement