externalintegerfn  search(integer  start, finish, char)
  label  found, loop, rest, notfound
  *movl_start,1
  *subl3_1,finish,2
  *incl_2
  *blss_notfound
loop:
  *cmpl_2,#65535
  *bleq_rest
  *subl2_#65535,2
  *locc_char,#65535,(1)
  *bneq_found
  *brb_loop
rest:
  *locc_char,2,(1)
  *bneq_found
notfound:
  result  = 0
found:
  *movl_1,start
  result  = start
end 

external  integer  fn  search back(integer  start, finish, char)
  label  loop, found, notfound
  *movzbl_char,2
  *addl3_#1,finish,1
  *subl3_start,1,0
  *bgtr_loop
  *brb_notfound
loop:
  *cmpb_2,-(1)
  *beql_found
  *sobgtr_0,loop
notfound:
  result  = 0
found:
  *movl_1,start
  result  = start
end 
external  integer  fn  count(integer  start, finish, char)
  label  loop, again, end
  *movl_start,1
  *subl3_1,finish,2
  *incl_2
  *movzbl_char,3  
  *clrl_4
  *movzwl_#65535,5
loop:  *movl_2,0
       *blss_end
       *decl_1
       *subl2_5,2
       *blss_again
       *movl_5,0
again: *locc_3,0,1(1)
       *beql_loop
       *incl_4
       *decl_0
       *brb_again

end:   *movl_4,start  
       result  = start
end 

endoffile