question: private static int [ ] mult256 ( int [ ] a , int [ ] b ) { int [ ] result = new int [ 16 ] ; int [ ] a0 = new int [ 4 ] ; System . arraycopy ( a , 0 , a0 , 0 , Math . min ( 4 , a . length ) ) ; int [ ] a1 = new int [ 4 ] ; if ( a . length > 4 ) { System . arraycopy ( a , 4 , a1 , 0 , Math . min ( 4 , a . length - 4 ) ) ; } int [ ] b0 = new int [ 4 ] ; System . arraycopy ( b , 0 , b0 , 0 , Math . min ( 4 , b . length ) ) ; int [ ] b1 = new int [ 4 ] ; if ( b . length > 4 ) { System . arraycopy ( b , 4 , b1 , 0 , Math . min ( 4 , b . length - 4 ) ) ; } if ( a1 [ 3 ] == 0 && a1 [ 2 ] == 0 && b1 [ 3 ] == 0 && b1 [ 2 ] == 0 ) { if ( a1 [ 1 ] == 0 && b1 [ 1 ] == 0 ) { if ( a1 [ 0 ] != 0 || b1 [ 0 ] != 0 ) { int [ ] c = mult32 ( a1 [ 0 ] , b1 [ 0 ] ) ; result [ 9 ] ^= c [ 1 ] ; result [ 8 ] ^= c [ 0 ] ; result [ 5 ] ^= c [ 1 ] ; result [ 4 ] ^= c [ 0 ] ; } } else { int [ ] c = mult64 ( a1 , b1 ) ; result [ 11 ] ^= c [ 3 ] ; result [ 10 ] ^= c [ 2 ] ; result [ 9 ] ^= c [ 1 ] ; result [ 8 ] ^= c [ 0 ] ; result [ 7 ] ^= c [ 3 ] ; result [ 6 ] ^= c [ 2 ] ; result [ 5 ] ^= c [ 1 ] ; result [ 4 ] ^= c [ 0 ] ; } } else { int [ ] c = mult128 ( a1 , b1 ) ; result [ 15 ] ^= c [ 7 ] ; result [ 14 ] ^= c [ 6 ] ; result [ 13 ] ^= c [ 5 ] ; result [ 12 ] ^= c [ 4 ] ; result [ 11 ] ^= c [ 3 ] ^ c [ 7 ] ; result [ 10 ] ^= c [ 2 ] ^ c [ 6 ] ; result [ 9 ] ^= c [ 1 ] ^ c [ 5 ] ; result [ 8 ] ^= c [ 0 ] ^ c [ 4 ] ; result [ 7 ] ^= c [ 3 ] ; result [ 6 ] ^= c [ 2 ] ; result [ 5 ] ^= c [ 1 ] ; result [ 4 ] ^= c [ 0 ] ; } a1 [ 0 ] ^= a0 [ 0 ] ; a1 [ 1 ] ^= a0 [ 1 ] ; a1 [ 2 ] ^= a0 [ 2 ] ; a1 [ 3 ] ^= a0 [ 3 ] ; b1 [ 0 ] ^= b0 [ 0 ] ; b1 [ 1 ] ^= b0 [ 1 ] ; b1 [ 2 ] ^= b0 [ 2 ] ; b1 [ 3 ] ^= b0 [ 3 ] ; int [ ] d = mult128 ( a1 , b1 ) ; result [ 11 ] ^= d [ 7 ] ; result [ 10 ] ^= d [ 6 ] ; result [ 9 ] ^= d [ 5 ] ; result [ 8 ] ^= d [ 4 ] ; result [ 7 ] ^= d [ 3 ] ; result [ 6 ] ^= d [ 2 ] ; result [ 5 ] ^= d [ 1 ] ; result [ 4 ] ^= d [ 0 ] ; int [ ] e = mult128 ( a0 , b0 ) ; result [ 11 ] ^= e [ 7 ] ; result [ 10 ] ^= e [ 6 ] ; result [ 9 ] ^= e [ 5 ] ; result [ 8 ] ^= e [ 4 ] ; result [ 7 ] ^= e [ 3 ] ^ e [ 7 ] ; result [ 6 ] ^= e [ 2 ] ^ e [ 6 ] ; result [ 5 ] ^= e [ 1 ] ^ e [ 5 ] ; result [ 4 ] ^= e [ 0 ] ^ e [ 4 ] ; result [ 3 ] ^= e [ 3 ] ; result [ 2 ] ^= e [ 2 ] ; result [ 1 ] ^= e [ 1 ] ; result [ 0 ] ^= e [ 0 ] ; return result ; }
target:  8-Integer Version of Karatzuba multiplication.