Another way of doing it is to use HSAVE, as on tables of any size say the 4000 one he said he had, its much faster to output the hashtable to a file and sort it there.
Code:
alias pfind2 {
  var %tbl = pinfo
  ;
  ; save table (data only)
  hsave -n %tbl temp.txt
  ;
  ; sort
  if     ($1 == size)      { filter -ffctuen 5 9 temp.txt temp.txt }
  elseif ($1 == score)     { filter -ffctuen 6 9 temp.txt temp.txt }
  elseif ($1 == sizedesc)  { filter -ffctun  5 9 temp.txt temp.txt }
  elseif ($1 == scoredesc) { filter -ffctun  6 9 temp.txt temp.txt }
  else                     { return } | ; no valid sort directive
  ;
  ; Output for example
  var %i = 1, %m = 5
  while (%i <= %m) {
    echo -s $+(%i,.) RAWinFILE = $read(temp.txt,nt,%i)
    inc %i
  }
  echo -s 
  var %i = 1, %m = 5
  while (%i <= %m) {
    echo -s $+(%i,.) PROCESSED = item $hget(%tbl,$gettok($read(temp.txt,nt,%i),1,32)).item data $hget(%tbl,$gettok($read(temp.txt,nt,%i),1,32)).data
    inc %i
  }
  echo -s 
  .remove temp.txt
}


example
/pfind2 score
1. RAWinFILE = 2431 2<tab>1<tab>4<tab>pguyda<tab>915<tab>65534
2. RAWinFILE = 3683 9<tab>3<tab>8<tab>cnitrkds<tab>557<tab>65529
3. RAWinFILE = 1046 10<tab>2<tab>6<tab>xmzdtttgus<tab>528<tab>65525
4. RAWinFILE = 3016 3<tab>9<tab>10<tab>hvvzem<tab>423<tab>65518
5. RAWinFILE = 1497 1<tab>8<tab>8<tab>quifcdp<tab>144<tab>65515

1. PROCESSED = item 3635 data 2<tab>1<tab>4<tab>pguyda<tab>915<tab>65534
2. PROCESSED = item 2828 data 9<tab>3<tab>8<tab>cnitrkds<tab>557<tab>65529
3. PROCESSED = item 2036 data 10<tab>2<tab>6<tab>xmzdtttgus<tab>528<tab>65525
4. PROCESSED = item 1130 data 3<tab>9<tab>10<tab>hvvzem<tab>423<tab>65518
5. PROCESSED = item 2022 data 1<tab>8<tab>8<tab>quifcdp<tab>144<tab>65515

The methodology (i think thats the right word for it), is that when u hsave a hashtable, it is saved in the same order as you can access it using the $hget(table,N).item & .data properties (i would assume this is physical order in memory).
So you hsave just the data, but when u filter sort it, u add the -n option that adds line numbers to the output file (line number of the line from the input file), this gives u the N value to backrefrence into the table using $hget(table,N).item

*
Considering also what the OP has stated about the hashtable being loaded from a file in the first place, the key might infact be to filter sort the file before its even loaded into the table, thus giving the actual itemnames 1,2,3,4,5 the 5 in order he wants. Im still a bit unclear on what hes doing with that tho. sicne the sort might be something he wants done afterwards at some later time.

**
On a personal note, glad to see you back KT, You were here in a major way when i first started using mirc to script stuff, and I respected your input on anything i was doing, yours and a few others i wont name here tho incase i miss someone in the list, although the initials FO come bounding out of the page as someone who also deserves credit for his help.