text: 
  /*
   * Copyright (C) Igor Sysoev
   * Copyright (C) Nginx, Inc.
   */
  
  
  #ifndef _NGX_CRC_H_INCLUDED_
  #define _NGX_CRC_H_INCLUDED_
  
  
  #include <ngx_config.h>
  #include <ngx_core.h>
  
  
  /* 32-bit crc16 */
  
  static ngx_inline uint32_t
  ngx_crc(u_char *data, size_t len)
  {
      uint32_t  sum;
  
      for (sum = 0; len; len--) {
  
          /*
           * gcc 2.95.2 x86 and icc 7.1.006 compile
           * that operator into the single "rol" opcode,
           * msvc 6.0sp2 compiles it into four opcodes.
           */
          sum = sum >> 1 | sum << 31;
  
          sum += *data++;
      }
  
      return sum;
  }
  
  
  #endif /* _NGX_CRC_H_INCLUDED_ */
  