greetings, if anyone has sometime to rewrite this little snippet it would be appreciated as it seems really slow and i feel it could be done alot better.

Code:
alias clonescan {
  if ($ial == $false) .ial on 
  var %i 1,%chan $1
  if (!$window($+(@clones,.,$network,.,%chan))) { window -Czd $+(@clones,.,$network,.,%chan) 100 50 690 460 | titlebar $+(@clones,.,$network,.,%chan) Clones list for $+($network,:) $nick(%chan,0) users currently on %chan | font $+(@clones,.,$network,.,%chan)) 12 arial bold }
  if (%chan !ischan) { aline -p $+(@clones,.,$network,.,%chan) 4ERROR no such channel $iif(%chan,as %chan) | return }
  while (%i <= $nick(%chan,0)) {
    if ($ialchan($address($nick(%chan,%i),2),%chan,0) > 1) && ($address($nick(%chan,%i),2) !isin %addr) {
      var %addr = %addr $address($nick(%chan,%i),2)
      aline -p 12 $+(@clones,.,$network,.,%chan) $timestamp $chr(42) Found ( $+ $ialchan($address($nick(%chan,%i),2),%chan,0) $+ ) Clones in $+($chr(40),%chan,$chr(41)) from ( $+ $gettok($address($nick(%chan,%i),2),2,64) $+ )
      var %cnt 1
      while (%cnt <= $ialchan($address($nick(%chan,%i),2),%chan,0)) {
        aline -p $+(@clones,.,$network,.,%chan) $timestamp $chr(42) $+(%cnt,.) $ialchan($address($nick(%chan,%i),2),%chan,%cnt).nick
        inc %cnt
      }
      aline -p $+(@clones,.,$network,.,%chan) -
    }
    inc %i
  }
  if (!%addr) { aline $+(@clones,.,$network,.,%chan) $timestamp 4,1No clones found on %chan }
}