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