words[]: void sort ( int8 * a , int8 * e , bool ( int8 , int8 ) gt ) { if ( a >= e ) return ; e -- ; do { assert ( a <= e ) ; switch ( e - a ) { case 2 : if ( gt ( * a , * -- e ) ) swap ( * a , * e ) ; if ( gt ( * a , * ++ e ) ) swap ( * a , * e ) ; a ++ ; case 1 : if ( gt ( * a , * e ) ) swap ( * a , * e ) ; case 0 : return ; } int8 * a0 = a ; int8 * e0 = e ; if ( gt ( * a , * e ) ) swap ( * a , * e ) ; { int8 a_lim = * a ++ ; int8 e_lim = * e -- ; do { until ( a >= e ) ; if ( gt ( * a , a_lim ) ) if ( gt ( e_lim , * a ) ) a_lim = * a ++ ; else swap ( * a , * e -- ) ; else a ++ ; until ( a >= e ) ; if ( gt ( e_lim , * e ) ) if ( gt ( * e , a_lim ) ) e_lim = * e -- ; else swap ( * a ++ , * e ) ; else e -- ; } if ( gt ( * a , a_lim ) ) e -- ; else a ++ ; } if ( e - a0 > e0 - a ) { sort ( a0 , e , gt ) ; a = e ; e = e0 ; } else { sort ( a , e0 , gt ) ; a = a0 ; } } } ""