question: public int readSI32 ( ) throws IOException { synchBits ( ) ; int b0 = in . read ( ) ; if ( b0 < 0 ) { throw new IOException ( "Unexpected end of input" ) ; } int b1 = in . read ( ) ; if ( b1 < 0 ) { throw new IOException ( "Unexpected end of input" ) ; } int b2 = in . read ( ) ; if ( b2 < 0 ) { throw new IOException ( "Unexpected end of input" ) ; } byte [ ] aByte = new byte [ 1 ] ; int count = in . read ( aByte ) ; if ( count < 1 ) { throw new IOException ( "Unexpected end of input" ) ; } bytesRead += 4 ; return ( int ) ( ( aByte [ 0 ] * 256 * 256 * 256 ) + ( b2 * 256 * 256 ) + ( b1 * 256 ) + b0 ) ; }
target:  Read a 32 bit signed number