| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -122,6 +122,7 @@ extern "C" { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			struct sinfl { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  const unsigned char *bitptr; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  const unsigned char *bitend;      // @raysan5: added | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  unsigned long long bitbuf; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  int bitcnt; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -185,9 +186,10 @@ sinfl_read64(const void *p) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static void | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			sinfl_copy64(unsigned char **dst, unsigned char **src) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  unsigned long long n; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  memcpy(&n, *src, 8); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  memcpy(*dst, &n, 8); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  //unsigned long long n; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  //memcpy(&n, *src, 8); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  //memcpy(*dst, &n, 8); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  memcpy(*dst, *src, 8);    // @raysan5 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  *dst += 8, *src += 8; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static unsigned char* | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -210,9 +212,22 @@ sinfl_copy128(unsigned char **dst, unsigned char **src) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static void | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			sinfl_refill(struct sinfl *s) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  s->bitbuf |= sinfl_read64(s->bitptr) << s->bitcnt; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  s->bitptr += (63 - s->bitcnt) >> 3; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  s->bitcnt |= 56; /* bitcount in range [56,63] */ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  if (s->bitend - s->bitptr >= 8) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      // @raysan5: original code, only those 3 lines | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      s->bitbuf |= sinfl_read64(s->bitptr) << s->bitcnt; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      s->bitptr += (63 - s->bitcnt) >> 3; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      s->bitcnt |= 56; /* bitcount in range [56,63] */ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  } else { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      // @raysan5: added this case when bits remaining < 8 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      int bitswant = 63 - s->bitcnt; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      int byteswant = bitswant >> 3; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      int bytesuse = s->bitend - s->bitptr <= byteswant ? (int)(s->bitend - s->bitptr) : byteswant; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      unsigned long long n = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      memcpy(&n, s->bitptr, bytesuse); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      s->bitbuf |= n << s->bitcnt; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      s->bitptr += bytesuse; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			      s->bitcnt += bytesuse << 3; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static int | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			sinfl_peek(struct sinfl *s, int cnt) { | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -384,6 +399,7 @@ sinfl_decompress(unsigned char *out, int cap, const unsigned char *in, int size) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  int last = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  s.bitptr = in; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  s.bitend = e;     // @raysan5: added | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			  while (1) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    switch (state) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    case hdr: { | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |