question: private void hsmooth64 ( LongArrayPointer a , int nxtop , int nytop ) { int i , j ; int ny2 , s10 , s00 ; long hm , h0 , hp , hmm , hpm , hmp , hpp , hx2 , hy2 , diff , dmax , dmin , s , smax , m1 , m2 ; smax = this . scale > > 1 ; if ( smax <= 0 ) { return ; } ny2 = this . ny << 1 ; for ( i = 2 ; i < nxtop - 2 ; i += 2 ) { s00 = this . ny * i ; s10 = s00 + this . ny ; for ( j = 0 ; j < nytop ; j += 2 ) { hm = a . get ( s00 - ny2 ) ; h0 = a . get ( s00 ) ; hp = a . get ( s00 + ny2 ) ; diff = hp - hm ; dmax = Math . max ( Math . min ( hp - h0 , h0 - hm ) , 0 ) << 2 ; dmin = Math . min ( Math . max ( hp - h0 , h0 - hm ) , 0 ) << 2 ; if ( dmin < dmax ) { diff = Math . max ( Math . min ( diff , dmax ) , dmin ) ; s = diff - ( a . get ( s10 ) << N03 ) ; s = s >= 0 ? s > > N03 : s + N07 > > N03 ; s = Math . max ( Math . min ( s , smax ) , - smax ) ; a . set ( s10 , a . get ( s10 ) + s ) ; } s00 += 2 ; s10 += 2 ; } } for ( i = 0 ; i < nxtop ; i += 2 ) { s00 = this . ny * i + 2 ; s10 = s00 + this . ny ; for ( j = 2 ; j < nytop - 2 ; j += 2 ) { hm = a . get ( s00 - 2 ) ; h0 = a . get ( s00 ) ; hp = a . get ( s00 + 2 ) ; diff = hp - hm ; dmax = Math . max ( Math . min ( hp - h0 , h0 - hm ) , 0 ) << 2 ; dmin = Math . min ( Math . max ( hp - h0 , h0 - hm ) , 0 ) << 2 ; if ( dmin < dmax ) { diff = Math . max ( Math . min ( diff , dmax ) , dmin ) ; s = diff - ( a . get ( s00 + 1 ) << N03 ) ; s = s >= 0 ? s > > N03 : s + N07 > > N03 ; s = Math . max ( Math . min ( s , smax ) , - smax ) ; a . set ( s00 + 1 , a . get ( s00 + 1 ) + s ) ; } s00 += 2 ; s10 += 2 ; } } for ( i = 2 ; i < nxtop - 2 ; i += 2 ) { s00 = this . ny * i + 2 ; s10 = s00 + this . ny ; for ( j = 2 ; j < nytop - 2 ; j += 2 ) { hmm = a . get ( s00 - ny2 - 2 ) ; hpm = a . get ( s00 + ny2 - 2 ) ; hmp = a . get ( s00 - ny2 + 2 ) ; hpp = a . get ( s00 + ny2 + 2 ) ; h0 = a . get ( s00 ) ; diff = hpp + hmm - hmp - hpm ; hx2 = a . get ( s10 ) << 1 ; hy2 = a . get ( s00 + 1 ) << 1 ; m1 = Math . min ( Math . max ( hpp - h0 , 0 ) - hx2 - hy2 , Math . max ( h0 - hpm , 0 ) + hx2 - hy2 ) ; m2 = Math . min ( Math . max ( h0 - hmp , 0 ) - hx2 + hy2 , Math . max ( hmm - h0 , 0 ) + hx2 + hy2 ) ; dmax = Math . min ( m1 , m2 ) << BITS_OF_1_NYBBLE ; m1 = Math . max ( Math . min ( hpp - h0 , 0 ) - hx2 - hy2 , Math . min ( h0 - hpm , 0 ) + hx2 - hy2 ) ; m2 = Math . max ( Math . min ( h0 - hmp , 0 ) - hx2 + hy2 , Math . min ( hmm - h0 , 0 ) + hx2 + hy2 ) ; dmin = Math . max ( m1 , m2 ) << BITS_OF_1_NYBBLE ; if ( dmin < dmax ) { diff = Math . max ( Math . min ( diff , dmax ) , dmin ) ; s = diff - ( a . get ( s10 + 1 ) << N06 ) ; s = s >= 0 ? s > > N06 : s + N63 > > N06 ; s = Math . max ( Math . min ( s , smax ) , - smax ) ; a . set ( s10 + 1 , a . get ( s10 + 1 ) + s ) ; } s00 += 2 ; s10 += 2 ; } } }
target:  long a[]; tiledImageOperation of H-transform coefficients int nxtop,nytop; size of coefficient block to use int ny; actual 1st dimension of tiledImageOperation int scale; truncation scale factor that was used