unsigned int hash_crc32(char *buffer, unsigned int size) {
  unsigned long crc_32_tab[] = {
      0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
      0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
      0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
      0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
      0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L,
      0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L,
      0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L,
      0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
      0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L,
      0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL,
      0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L,
      0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
      0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L,
      0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL,
      0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL,
      0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
      0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL,
      0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L,
      0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L,
      0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
      0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL,
      0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
      0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L,
      0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
      0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L,
      0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L,
      0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L,
      0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
      0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L,
      0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL,
      0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL,
      0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
      0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L,
      0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL,
      0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL,
      0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
      0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL,
      0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L,
      0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL,
      0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
      0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL,
      0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L,
      0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L,
      0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
      0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L,
      0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L,
      0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L,
      0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
      0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L,
      0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L,
      0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL,
      0x2d02ef8dL};
  unsigned int check;
  unsigned char *pcheck;
  debug_(1,
         "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
         "2022-01-22/02-19-57/repos/tcell2020/autodafe-0.1-osx/refs/heads/"
         "master/src/autodafe/hash.c",
         96, __func__, "<-----------------------[enter]\n");
  check = 0;
  check ^= 0xffffffffL;
  while (size >= 32) {
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    size -= 32;
  }
  if (size)
    do {
      check = crc_32_tab[((int)check ^ (*buffer++)) & 0xff] ^ (check >> 8);
    } while (--size);
  check ^= 0xffffffffL;
  pcheck = (unsigned char *)&check;
  debug_(1,
         "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
         "2022-01-22/02-19-57/repos/tcell2020/autodafe-0.1-osx/refs/heads/"
         "master/src/autodafe/hash.c",
         133, __func__, "<-----------------------[quit]\n");
  return check;
}


x86 assembly (clang, -O0):
<hash_crc32>:
push   %rbp
mov    %rsp,%rbp
sub    $0x820,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
lea    -0x810(%rbp),%rdi
lea    0xec0(%rip),%rsi
mov    $0x800,%edx
call   1030 <memcpy@plt>
mov    $0x1,%edi
lea    0x16aa(%rip),%rsi
mov    $0x60,%edx
lea    0x1739(%rip),%rcx
lea    0x173d(%rip),%r8
mov    $0x0,%al
call   1040 <debug_@plt>
movl   $0x0,-0x814(%rbp)
mov    -0x814(%rbp),%eax
movabs $0xffffffff,%rcx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
cmpl   $0x20,-0xc(%rbp)
jb     194b <hash_crc32+0x82b>
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x20,%eax
mov    %eax,-0xc(%rbp)
jmp    1193 <hash_crc32+0x73>
cmpl   $0x0,-0xc(%rbp)
je     19ae <hash_crc32+0x88e>
jmp    195a <hash_crc32+0x83a>
mov    -0x814(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
movsbl (%rcx),%ecx
xor    %ecx,%eax
and    $0xff,%eax
cltq
mov    -0x810(%rbp,%rax,8),%rax
ff
mov    -0x814(%rbp),%ecx
shr    $0x8,%ecx
mov    %ecx,%ecx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
cmp    $0x0,%eax
jne    195a <hash_crc32+0x83a>
jmp    19ae <hash_crc32+0x88e>
mov    -0x814(%rbp),%eax
movabs $0xffffffff,%rcx
xor    %rcx,%rax
mov    %eax,-0x814(%rbp)
lea    -0x814(%rbp),%rax
mov    %rax,-0x820(%rbp)
mov    $0x1,%edi
lea    0xe1f(%rip),%rsi
mov    $0x85,%edx
lea    0xeae(%rip),%rcx
lea    0xed3(%rip),%r8
mov    $0x0,%al
call   1040 <debug_@plt>
mov    -0x814(%rbp),%eax
add    $0x820,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<hash_crc32>:
push   %r15
push   %r14
push   %rbx
mov    %esi,%r15d
mov    %rdi,%r14
lea    0x16de(%rip),%rsi
lea    0x1772(%rip),%rcx
lea    0x1776(%rip),%r8
mov    $0x1,%edi
mov    $0x60,%edx
xor    %eax,%eax
call   1030 <debug_@plt>
mov    $0xffffffff,%ebx
cmp    $0x20,%r15d
jb     1371 <hash_crc32+0x261>
mov    $0xffffffff,%ebx
lea    0xea4(%rip),%rax
nopl   0x0(%rax)
movzbl (%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x1(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x2(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x3(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x4(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x5(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x6(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x7(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x8(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x9(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0xa(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0xb(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0xc(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0xd(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0xe(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0xf(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x10(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x11(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x12(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x13(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x14(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x15(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x16(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x17(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x18(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x19(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x1a(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x1b(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x1c(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x1d(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x1e(%r14),%ecx
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
movzbl 0x1f(%r14),%ecx
add    $0x20,%r14
movzbl %bl,%edx
xor    %ecx,%edx
shr    $0x8,%ebx
xor    (%rax,%rdx,8),%ebx
add    $0xffffffe0,%r15d
cmp    $0x1f,%r15d
ja     1160 <hash_crc32+0x50>
test   %r15d,%r15d
je     13e9 <hash_crc32+0x2d9>
test   $0x1,%r15b
jne    1387 <hash_crc32+0x277>
mov    %r15d,%eax
cmp    $0x1,%r15d
jne    13ab <hash_crc32+0x29b>
jmp    13e9 <hash_crc32+0x2d9>
movzbl (%r14),%eax
add    $0x1,%r14
movzbl %bl,%ecx
xor    %eax,%ecx
lea    0xc65(%rip),%rax
shr    $0x8,%ebx
xor    (%rax,%rcx,8),%ebx
lea    -0x1(%r15),%eax
cmp    $0x1,%r15d
je     13e9 <hash_crc32+0x2d9>
mov    %eax,%eax
xor    %ecx,%ecx
lea    0xc4a(%rip),%rdx
cs nopw 0x0(%rax,%rax,1)
movzbl (%r14,%rcx,1),%esi
movzbl %bl,%edi
xor    %esi,%edi
shr    $0x8,%ebx
xor    (%rdx,%rdi,8),%ebx
movzbl 0x1(%r14,%rcx,1),%esi
movzbl %bl,%edi
xor    %esi,%edi
shr    $0x8,%ebx
xor    (%rdx,%rdi,8),%ebx
add    $0x2,%rcx
cmp    %ecx,%eax
jne    13c0 <hash_crc32+0x2b0>
not    %ebx
lea    0x140e(%rip),%rsi
lea    0x14a2(%rip),%rcx
lea    0x14c7(%rip),%r8
mov    $0x1,%edi
mov    $0x85,%edx
xor    %eax,%eax
call   1030 <debug_@plt>
mov    %ebx,%eax
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@__const.hash_crc32.crc_32_tab = [256 x i64] [i64 0, i64 1996959894, i64 3993919788, i64 2567524794, i64 124634137, i64 1886057615, i64 3915621685, i64 2657392035, i64 249268274, i64 2044508324, i64 3772115230, i64 2547177864, i64 162941995, i64 2125561021, i64 3887607047, i64 2428444049, i64 498536548, i64 1789927666, i64 4089016648, i64 2227061214, i64 450548861, i64 1843258603, i64 4107580753, i64 2211677639, i64 325883990, i64 1684777152, i64 4251122042, i64 2321926636, i64 335633487, i64 1661365465, i64 4195302755, i64 2366115317, i64 997073096, i64 1281953886, i64 3579855332, i64 2724688242, i64 1006888145, i64 1258607687, i64 3524101629, i64 2768942443, i64 901097722, i64 1119000684, i64 3686517206, i64 2898065728, i64 853044451, i64 1172266101, i64 3705015759, i64 2882616665, i64 651767980, i64 1373503546, i64 3369554304, i64 3218104598, i64 565507253, i64 1454621731, i64 3485111705, i64 3099436303, i64 671266974, i64 1594198024, i64 3322730930, i64 2970347812, i64 795835527, i64 1483230225, i64 3244367275, i64 3060149565, i64 1994146192, i64 31158534, i64 2563907772, i64 4023717930, i64 1907459465, i64 112637215, i64 2680153253, i64 3904427059, i64 2013776290, i64 251722036, i64 2517215374, i64 3775830040, i64 2137656763, i64 141376813, i64 2439277719, i64 3865271297, i64 1802195444, i64 476864866, i64 2238001368, i64 4066508878, i64 1812370925, i64 453092731, i64 2181625025, i64 4111451223, i64 1706088902, i64 314042704, i64 2344532202, i64 4240017532, i64 1658658271, i64 366619977, i64 2362670323, i64 4224994405, i64 1303535960, i64 984961486, i64 2747007092, i64 3569037538, i64 1256170817, i64 1037604311, i64 2765210733, i64 3554079995, i64 1131014506, i64 879679996, i64 2909243462, i64 3663771856, i64 1141124467, i64 855842277, i64 2852801631, i64 3708648649, i64 1342533948, i64 654459306, i64 3188396048, i64 3373015174, i64 1466479909, i64 544179635, i64 3110523913, i64 3462522015, i64 1591671054, i64 702138776, i64 2966460450, i64 3352799412, i64 1504918807, i64 783551873, i64 3082640443, i64 3233442989, i64 3988292384, i64 2596254646, i64 62317068, i64 1957810842, i64 3939845945, i64 2647816111, i64 81470997, i64 1943803523, i64 3814918930, i64 2489596804, i64 225274430, i64 2053790376, i64 3826175755, i64 2466906013, i64 167816743, i64 2097651377, i64 4027552580, i64 2265490386, i64 503444072, i64 1762050814, i64 4150417245, i64 2154129355, i64 426522225, i64 1852507879, i64 4275313526, i64 2312317920, i64 282753626, i64 1742555852, i64 4189708143, i64 2394877945, i64 397917763, i64 1622183637, i64 3604390888, i64 2714866558, i64 953729732, i64 1340076626, i64 3518719985, i64 2797360999, i64 1068828381, i64 1219638859, i64 3624741850, i64 2936675148, i64 906185462, i64 1090812512, i64 3747672003, i64 2825379669, i64 829329135, i64 1181335161, i64 3412177804, i64 3160834842, i64 628085408, i64 1382605366, i64 3423369109, i64 3138078467, i64 570562233, i64 1426400815, i64 3317316542, i64 2998733608, i64 733239954, i64 1555261956, i64 3268935591, i64 3050360625, i64 752459403, i64 1541320221, i64 2607071920, i64 3965973030, i64 1969922972, i64 40735498, i64 2617837225, i64 3943577151, i64 1913087877, i64 83908371, i64 2512341634, i64 3803740692, i64 2075208622, i64 213261112, i64 2463272603, i64 3855990285, i64 2094854071, i64 198958881, i64 2262029012, i64 4057260610, i64 1759359992, i64 534414190, i64 2176718541, i64 4139329115, i64 1873836001, i64 414664567, i64 2282248934, i64 4279200368, i64 1711684554, i64 285281116, i64 2405801727, i64 4167216745, i64 1634467795, i64 376229701, i64 2685067896, i64 3608007406, i64 1308918612, i64 956543938, i64 2808555105, i64 3495958263, i64 1231636301, i64 1047427035, i64 2932959818, i64 3654703836, i64 1088359270, i64 936918000, i64 2847714899, i64 3736837829, i64 1202900863, i64 817233897, i64 3183342108, i64 3401237130, i64 1404277552, i64 615818150, i64 3134207493, i64 3453421203, i64 1423857449, i64 601450431, i64 3009837614, i64 3294710456, i64 1567103746, i64 711928724, i64 3020668471, i64 3272380065, i64 1510334235, i64 755167117]
@.str = [155 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/tcell2020/autodafe-0.1-osx/refs/heads/master/src/autodafe/hash.c\00"
@__func__.hash_crc32 = [11 x i8] c"hash_crc32\00"
@.str.1 = [33 x i8] c"<-----------------------[enter]\0A\00"
@.str.2 = [32 x i8] c"<-----------------------[quit]\0A\00"
define i32 @hash_crc32(i8* %0, i32 %1) {
%3 = alloca i8*
%4 = alloca i32
%5 = alloca [256 x i64]
%6 = alloca i32
%7 = alloca i8*
store i8* %0, i8** %3
store i32 %1, i32* %4
%8 = bitcast [256 x i64]* %5 to i8*
%9 = call i32 (i32, i8*, i32, i8*, i8*, ...) bitcast (i32 (...)* @debug_ to i32 (i32, i8*, i32, i8*, i8*, ...)*)(i32 1, i8* getelementptr inbounds ([155 x i8], [155 x i8]* @.str, i64 0, i64 0), i32 96, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__func__.hash_crc32, i64 0, i64 0), i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %6
%10 = load i32, i32* %6
%11 = zext i32 %10 to i64
%12 = xor i64 %11, 4294967295
%13 = trunc i64 %12 to i32
store i32 %13, i32* %6
br label %14
14: ; preds = %17, %2
%15 = load i32, i32* %4
%16 = icmp uge i32 %15, 32
br i1 %16, label %17, label %500
17: ; preds = %14
%18 = load i32, i32* %6
%19 = load i8*, i8** %3
%20 = getelementptr inbounds i8, i8* %19, i32 1
store i8* %20, i8** %3
%21 = load i8, i8* %19
%22 = sext i8 %21 to i32
%23 = xor i32 %18, %22
%24 = and i32 %23, 255
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %25
%27 = load i64, i64* %26
%28 = load i32, i32* %6
%29 = lshr i32 %28, 8
%30 = zext i32 %29 to i64
%31 = xor i64 %27, %30
%32 = trunc i64 %31 to i32
store i32 %32, i32* %6
%33 = load i32, i32* %6
%34 = load i8*, i8** %3
%35 = getelementptr inbounds i8, i8* %34, i32 1
store i8* %35, i8** %3
%36 = load i8, i8* %34
%37 = sext i8 %36 to i32
%38 = xor i32 %33, %37
%39 = and i32 %38, 255
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %40
%42 = load i64, i64* %41
%43 = load i32, i32* %6
%44 = lshr i32 %43, 8
%45 = zext i32 %44 to i64
%46 = xor i64 %42, %45
%47 = trunc i64 %46 to i32
store i32 %47, i32* %6
%48 = load i32, i32* %6
%49 = load i8*, i8** %3
%50 = getelementptr inbounds i8, i8* %49, i32 1
store i8* %50, i8** %3
%51 = load i8, i8* %49
%52 = sext i8 %51 to i32
%53 = xor i32 %48, %52
%54 = and i32 %53, 255
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %55
%57 = load i64, i64* %56
%58 = load i32, i32* %6
%59 = lshr i32 %58, 8
%60 = zext i32 %59 to i64
%61 = xor i64 %57, %60
%62 = trunc i64 %61 to i32
store i32 %62, i32* %6
%63 = load i32, i32* %6
%64 = load i8*, i8** %3
%65 = getelementptr inbounds i8, i8* %64, i32 1
store i8* %65, i8** %3
%66 = load i8, i8* %64
%67 = sext i8 %66 to i32
%68 = xor i32 %63, %67
%69 = and i32 %68, 255
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %70
%72 = load i64, i64* %71
%73 = load i32, i32* %6
%74 = lshr i32 %73, 8
%75 = zext i32 %74 to i64
%76 = xor i64 %72, %75
%77 = trunc i64 %76 to i32
store i32 %77, i32* %6
%78 = load i32, i32* %6
%79 = load i8*, i8** %3
%80 = getelementptr inbounds i8, i8* %79, i32 1
store i8* %80, i8** %3
%81 = load i8, i8* %79
%82 = sext i8 %81 to i32
%83 = xor i32 %78, %82
%84 = and i32 %83, 255
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %85
%87 = load i64, i64* %86
%88 = load i32, i32* %6
%89 = lshr i32 %88, 8
%90 = zext i32 %89 to i64
%91 = xor i64 %87, %90
%92 = trunc i64 %91 to i32
store i32 %92, i32* %6
%93 = load i32, i32* %6
%94 = load i8*, i8** %3
%95 = getelementptr inbounds i8, i8* %94, i32 1
store i8* %95, i8** %3
%96 = load i8, i8* %94
%97 = sext i8 %96 to i32
%98 = xor i32 %93, %97
%99 = and i32 %98, 255
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %100
%102 = load i64, i64* %101
%103 = load i32, i32* %6
%104 = lshr i32 %103, 8
%105 = zext i32 %104 to i64
%106 = xor i64 %102, %105
%107 = trunc i64 %106 to i32
store i32 %107, i32* %6
%108 = load i32, i32* %6
%109 = load i8*, i8** %3
%110 = getelementptr inbounds i8, i8* %109, i32 1
store i8* %110, i8** %3
%111 = load i8, i8* %109
%112 = sext i8 %111 to i32
%113 = xor i32 %108, %112
%114 = and i32 %113, 255
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %115
%117 = load i64, i64* %116
%118 = load i32, i32* %6
%119 = lshr i32 %118, 8
%120 = zext i32 %119 to i64
%121 = xor i64 %117, %120
%122 = trunc i64 %121 to i32
store i32 %122, i32* %6
%123 = load i32, i32* %6
%124 = load i8*, i8** %3
%125 = getelementptr inbounds i8, i8* %124, i32 1
store i8* %125, i8** %3
%126 = load i8, i8* %124
%127 = sext i8 %126 to i32
%128 = xor i32 %123, %127
%129 = and i32 %128, 255
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %130
%132 = load i64, i64* %131
%133 = load i32, i32* %6
%134 = lshr i32 %133, 8
%135 = zext i32 %134 to i64
%136 = xor i64 %132, %135
%137 = trunc i64 %136 to i32
store i32 %137, i32* %6
%138 = load i32, i32* %6
%139 = load i8*, i8** %3
%140 = getelementptr inbounds i8, i8* %139, i32 1
store i8* %140, i8** %3
%141 = load i8, i8* %139
%142 = sext i8 %141 to i32
%143 = xor i32 %138, %142
%144 = and i32 %143, 255
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %145
%147 = load i64, i64* %146
%148 = load i32, i32* %6
%149 = lshr i32 %148, 8
%150 = zext i32 %149 to i64
%151 = xor i64 %147, %150
%152 = trunc i64 %151 to i32
store i32 %152, i32* %6
%153 = load i32, i32* %6
%154 = load i8*, i8** %3
%155 = getelementptr inbounds i8, i8* %154, i32 1
store i8* %155, i8** %3
%156 = load i8, i8* %154
%157 = sext i8 %156 to i32
%158 = xor i32 %153, %157
%159 = and i32 %158, 255
%160 = sext i32 %159 to i64
%161 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %160
%162 = load i64, i64* %161
%163 = load i32, i32* %6
%164 = lshr i32 %163, 8
%165 = zext i32 %164 to i64
%166 = xor i64 %162, %165
%167 = trunc i64 %166 to i32
store i32 %167, i32* %6
%168 = load i32, i32* %6
%169 = load i8*, i8** %3
%170 = getelementptr inbounds i8, i8* %169, i32 1
store i8* %170, i8** %3
%171 = load i8, i8* %169
%172 = sext i8 %171 to i32
%173 = xor i32 %168, %172
%174 = and i32 %173, 255
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %175
%177 = load i64, i64* %176
%178 = load i32, i32* %6
%179 = lshr i32 %178, 8
%180 = zext i32 %179 to i64
%181 = xor i64 %177, %180
%182 = trunc i64 %181 to i32
store i32 %182, i32* %6
%183 = load i32, i32* %6
%184 = load i8*, i8** %3
%185 = getelementptr inbounds i8, i8* %184, i32 1
store i8* %185, i8** %3
%186 = load i8, i8* %184
%187 = sext i8 %186 to i32
%188 = xor i32 %183, %187
%189 = and i32 %188, 255
%190 = sext i32 %189 to i64
%191 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %190
%192 = load i64, i64* %191
%193 = load i32, i32* %6
%194 = lshr i32 %193, 8
%195 = zext i32 %194 to i64
%196 = xor i64 %192, %195
%197 = trunc i64 %196 to i32
store i32 %197, i32* %6
%198 = load i32, i32* %6
%199 = load i8*, i8** %3
%200 = getelementptr inbounds i8, i8* %199, i32 1
store i8* %200, i8** %3
%201 = load i8, i8* %199
%202 = sext i8 %201 to i32
%203 = xor i32 %198, %202
%204 = and i32 %203, 255
%205 = sext i32 %204 to i64
%206 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %205
%207 = load i64, i64* %206
%208 = load i32, i32* %6
%209 = lshr i32 %208, 8
%210 = zext i32 %209 to i64
%211 = xor i64 %207, %210
%212 = trunc i64 %211 to i32
store i32 %212, i32* %6
%213 = load i32, i32* %6
%214 = load i8*, i8** %3
%215 = getelementptr inbounds i8, i8* %214, i32 1
store i8* %215, i8** %3
%216 = load i8, i8* %214
%217 = sext i8 %216 to i32
%218 = xor i32 %213, %217
%219 = and i32 %218, 255
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %220
%222 = load i64, i64* %221
%223 = load i32, i32* %6
%224 = lshr i32 %223, 8
%225 = zext i32 %224 to i64
%226 = xor i64 %222, %225
%227 = trunc i64 %226 to i32
store i32 %227, i32* %6
%228 = load i32, i32* %6
%229 = load i8*, i8** %3
%230 = getelementptr inbounds i8, i8* %229, i32 1
store i8* %230, i8** %3
%231 = load i8, i8* %229
%232 = sext i8 %231 to i32
%233 = xor i32 %228, %232
%234 = and i32 %233, 255
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %235
%237 = load i64, i64* %236
%238 = load i32, i32* %6
%239 = lshr i32 %238, 8
%240 = zext i32 %239 to i64
%241 = xor i64 %237, %240
%242 = trunc i64 %241 to i32
store i32 %242, i32* %6
%243 = load i32, i32* %6
%244 = load i8*, i8** %3
%245 = getelementptr inbounds i8, i8* %244, i32 1
store i8* %245, i8** %3
%246 = load i8, i8* %244
%247 = sext i8 %246 to i32
%248 = xor i32 %243, %247
%249 = and i32 %248, 255
%250 = sext i32 %249 to i64
%251 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %250
%252 = load i64, i64* %251
%253 = load i32, i32* %6
%254 = lshr i32 %253, 8
%255 = zext i32 %254 to i64
%256 = xor i64 %252, %255
%257 = trunc i64 %256 to i32
store i32 %257, i32* %6
%258 = load i32, i32* %6
%259 = load i8*, i8** %3
%260 = getelementptr inbounds i8, i8* %259, i32 1
store i8* %260, i8** %3
%261 = load i8, i8* %259
%262 = sext i8 %261 to i32
%263 = xor i32 %258, %262
%264 = and i32 %263, 255
%265 = sext i32 %264 to i64
%266 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %265
%267 = load i64, i64* %266
%268 = load i32, i32* %6
%269 = lshr i32 %268, 8
%270 = zext i32 %269 to i64
%271 = xor i64 %267, %270
%272 = trunc i64 %271 to i32
store i32 %272, i32* %6
%273 = load i32, i32* %6
%274 = load i8*, i8** %3
%275 = getelementptr inbounds i8, i8* %274, i32 1
store i8* %275, i8** %3
%276 = load i8, i8* %274
%277 = sext i8 %276 to i32
%278 = xor i32 %273, %277
%279 = and i32 %278, 255
%280 = sext i32 %279 to i64
%281 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %280
%282 = load i64, i64* %281
%283 = load i32, i32* %6
%284 = lshr i32 %283, 8
%285 = zext i32 %284 to i64
%286 = xor i64 %282, %285
%287 = trunc i64 %286 to i32
store i32 %287, i32* %6
%288 = load i32, i32* %6
%289 = load i8*, i8** %3
%290 = getelementptr inbounds i8, i8* %289, i32 1
store i8* %290, i8** %3
%291 = load i8, i8* %289
%292 = sext i8 %291 to i32
%293 = xor i32 %288, %292
%294 = and i32 %293, 255
%295 = sext i32 %294 to i64
%296 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %295
%297 = load i64, i64* %296
%298 = load i32, i32* %6
%299 = lshr i32 %298, 8
%300 = zext i32 %299 to i64
%301 = xor i64 %297, %300
%302 = trunc i64 %301 to i32
store i32 %302, i32* %6
%303 = load i32, i32* %6
%304 = load i8*, i8** %3
%305 = getelementptr inbounds i8, i8* %304, i32 1
store i8* %305, i8** %3
%306 = load i8, i8* %304
%307 = sext i8 %306 to i32
%308 = xor i32 %303, %307
%309 = and i32 %308, 255
%310 = sext i32 %309 to i64
%311 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %310
%312 = load i64, i64* %311
%313 = load i32, i32* %6
%314 = lshr i32 %313, 8
%315 = zext i32 %314 to i64
%316 = xor i64 %312, %315
%317 = trunc i64 %316 to i32
store i32 %317, i32* %6
%318 = load i32, i32* %6
%319 = load i8*, i8** %3
%320 = getelementptr inbounds i8, i8* %319, i32 1
store i8* %320, i8** %3
%321 = load i8, i8* %319
%322 = sext i8 %321 to i32
%323 = xor i32 %318, %322
%324 = and i32 %323, 255
%325 = sext i32 %324 to i64
%326 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %325
%327 = load i64, i64* %326
%328 = load i32, i32* %6
%329 = lshr i32 %328, 8
%330 = zext i32 %329 to i64
%331 = xor i64 %327, %330
%332 = trunc i64 %331 to i32
store i32 %332, i32* %6
%333 = load i32, i32* %6
%334 = load i8*, i8** %3
%335 = getelementptr inbounds i8, i8* %334, i32 1
store i8* %335, i8** %3
%336 = load i8, i8* %334
%337 = sext i8 %336 to i32
%338 = xor i32 %333, %337
%339 = and i32 %338, 255
%340 = sext i32 %339 to i64
%341 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %340
%342 = load i64, i64* %341
%343 = load i32, i32* %6
%344 = lshr i32 %343, 8
%345 = zext i32 %344 to i64
%346 = xor i64 %342, %345
%347 = trunc i64 %346 to i32
store i32 %347, i32* %6
%348 = load i32, i32* %6
%349 = load i8*, i8** %3
%350 = getelementptr inbounds i8, i8* %349, i32 1
store i8* %350, i8** %3
%351 = load i8, i8* %349
%352 = sext i8 %351 to i32
%353 = xor i32 %348, %352
%354 = and i32 %353, 255
%355 = sext i32 %354 to i64
%356 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %355
%357 = load i64, i64* %356
%358 = load i32, i32* %6
%359 = lshr i32 %358, 8
%360 = zext i32 %359 to i64
%361 = xor i64 %357, %360
%362 = trunc i64 %361 to i32
store i32 %362, i32* %6
%363 = load i32, i32* %6
%364 = load i8*, i8** %3
%365 = getelementptr inbounds i8, i8* %364, i32 1
store i8* %365, i8** %3
%366 = load i8, i8* %364
%367 = sext i8 %366 to i32
%368 = xor i32 %363, %367
%369 = and i32 %368, 255
%370 = sext i32 %369 to i64
%371 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %370
%372 = load i64, i64* %371
%373 = load i32, i32* %6
%374 = lshr i32 %373, 8
%375 = zext i32 %374 to i64
%376 = xor i64 %372, %375
%377 = trunc i64 %376 to i32
store i32 %377, i32* %6
%378 = load i32, i32* %6
%379 = load i8*, i8** %3
%380 = getelementptr inbounds i8, i8* %379, i32 1
store i8* %380, i8** %3
%381 = load i8, i8* %379
%382 = sext i8 %381 to i32
%383 = xor i32 %378, %382
%384 = and i32 %383, 255
%385 = sext i32 %384 to i64
%386 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %385
%387 = load i64, i64* %386
%388 = load i32, i32* %6
%389 = lshr i32 %388, 8
%390 = zext i32 %389 to i64
%391 = xor i64 %387, %390
%392 = trunc i64 %391 to i32
store i32 %392, i32* %6
%393 = load i32, i32* %6
%394 = load i8*, i8** %3
%395 = getelementptr inbounds i8, i8* %394, i32 1
store i8* %395, i8** %3
%396 = load i8, i8* %394
%397 = sext i8 %396 to i32
%398 = xor i32 %393, %397
%399 = and i32 %398, 255
%400 = sext i32 %399 to i64
%401 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %400
%402 = load i64, i64* %401
%403 = load i32, i32* %6
%404 = lshr i32 %403, 8
%405 = zext i32 %404 to i64
%406 = xor i64 %402, %405
%407 = trunc i64 %406 to i32
store i32 %407, i32* %6
%408 = load i32, i32* %6
%409 = load i8*, i8** %3
%410 = getelementptr inbounds i8, i8* %409, i32 1
store i8* %410, i8** %3
%411 = load i8, i8* %409
%412 = sext i8 %411 to i32
%413 = xor i32 %408, %412
%414 = and i32 %413, 255
%415 = sext i32 %414 to i64
%416 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %415
%417 = load i64, i64* %416
%418 = load i32, i32* %6
%419 = lshr i32 %418, 8
%420 = zext i32 %419 to i64
%421 = xor i64 %417, %420
%422 = trunc i64 %421 to i32
store i32 %422, i32* %6
%423 = load i32, i32* %6
%424 = load i8*, i8** %3
%425 = getelementptr inbounds i8, i8* %424, i32 1
store i8* %425, i8** %3
%426 = load i8, i8* %424
%427 = sext i8 %426 to i32
%428 = xor i32 %423, %427
%429 = and i32 %428, 255
%430 = sext i32 %429 to i64
%431 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %430
%432 = load i64, i64* %431
%433 = load i32, i32* %6
%434 = lshr i32 %433, 8
%435 = zext i32 %434 to i64
%436 = xor i64 %432, %435
%437 = trunc i64 %436 to i32
store i32 %437, i32* %6
%438 = load i32, i32* %6
%439 = load i8*, i8** %3
%440 = getelementptr inbounds i8, i8* %439, i32 1
store i8* %440, i8** %3
%441 = load i8, i8* %439
%442 = sext i8 %441 to i32
%443 = xor i32 %438, %442
%444 = and i32 %443, 255
%445 = sext i32 %444 to i64
%446 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %445
%447 = load i64, i64* %446
%448 = load i32, i32* %6
%449 = lshr i32 %448, 8
%450 = zext i32 %449 to i64
%451 = xor i64 %447, %450
%452 = trunc i64 %451 to i32
store i32 %452, i32* %6
%453 = load i32, i32* %6
%454 = load i8*, i8** %3
%455 = getelementptr inbounds i8, i8* %454, i32 1
store i8* %455, i8** %3
%456 = load i8, i8* %454
%457 = sext i8 %456 to i32
%458 = xor i32 %453, %457
%459 = and i32 %458, 255
%460 = sext i32 %459 to i64
%461 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %460
%462 = load i64, i64* %461
%463 = load i32, i32* %6
%464 = lshr i32 %463, 8
%465 = zext i32 %464 to i64
%466 = xor i64 %462, %465
%467 = trunc i64 %466 to i32
store i32 %467, i32* %6
%468 = load i32, i32* %6
%469 = load i8*, i8** %3
%470 = getelementptr inbounds i8, i8* %469, i32 1
store i8* %470, i8** %3
%471 = load i8, i8* %469
%472 = sext i8 %471 to i32
%473 = xor i32 %468, %472
%474 = and i32 %473, 255
%475 = sext i32 %474 to i64
%476 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %475
%477 = load i64, i64* %476
%478 = load i32, i32* %6
%479 = lshr i32 %478, 8
%480 = zext i32 %479 to i64
%481 = xor i64 %477, %480
%482 = trunc i64 %481 to i32
store i32 %482, i32* %6
%483 = load i32, i32* %6
%484 = load i8*, i8** %3
%485 = getelementptr inbounds i8, i8* %484, i32 1
store i8* %485, i8** %3
%486 = load i8, i8* %484
%487 = sext i8 %486 to i32
%488 = xor i32 %483, %487
%489 = and i32 %488, 255
%490 = sext i32 %489 to i64
%491 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %490
%492 = load i64, i64* %491
%493 = load i32, i32* %6
%494 = lshr i32 %493, 8
%495 = zext i32 %494 to i64
%496 = xor i64 %492, %495
%497 = trunc i64 %496 to i32
store i32 %497, i32* %6
%498 = load i32, i32* %4
%499 = sub i32 %498, 32
store i32 %499, i32* %4
br label %14
500: ; preds = %14
%501 = load i32, i32* %4
%502 = icmp ne i32 %501, 0
br i1 %502, label %503, label %525
503: ; preds = %500
br label %504
504: ; preds = %520, %503
%505 = load i32, i32* %6
%506 = load i8*, i8** %3
%507 = getelementptr inbounds i8, i8* %506, i32 1
store i8* %507, i8** %3
%508 = load i8, i8* %506
%509 = sext i8 %508 to i32
%510 = xor i32 %505, %509
%511 = and i32 %510, 255
%512 = sext i32 %511 to i64
%513 = getelementptr inbounds [256 x i64], [256 x i64]* %5, i64 0, i64 %512
%514 = load i64, i64* %513
%515 = load i32, i32* %6
%516 = lshr i32 %515, 8
%517 = zext i32 %516 to i64
%518 = xor i64 %514, %517
%519 = trunc i64 %518 to i32
store i32 %519, i32* %6
br label %520
520: ; preds = %504
%521 = load i32, i32* %4
%522 = add i32 %521, -1
store i32 %522, i32* %4
%523 = icmp ne i32 %522, 0
br i1 %523, label %504, label %524
524: ; preds = %520
br label %525
525: ; preds = %524, %500
%526 = load i32, i32* %6
%527 = zext i32 %526 to i64
%528 = xor i64 %527, 4294967295
%529 = trunc i64 %528 to i32
store i32 %529, i32* %6
%530 = bitcast i32* %6 to i8*
store i8* %530, i8** %7
%531 = call i32 (i32, i8*, i32, i8*, i8*, ...) bitcast (i32 (...)* @debug_ to i32 (i32, i8*, i32, i8*, i8*, ...)*)(i32 1, i8* getelementptr inbounds ([155 x i8], [155 x i8]* @.str, i64 0, i64 0), i32 133, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__func__.hash_crc32, i64 0, i64 0), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.2, i64 0, i64 0))
%532 = load i32, i32* %6
ret i32 %532
}

LLVM IR (-O2):
@__const.hash_crc32.crc_32_tab = [256 x i64] [i64 0, i64 1996959894, i64 3993919788, i64 2567524794, i64 124634137, i64 1886057615, i64 3915621685, i64 2657392035, i64 249268274, i64 2044508324, i64 3772115230, i64 2547177864, i64 162941995, i64 2125561021, i64 3887607047, i64 2428444049, i64 498536548, i64 1789927666, i64 4089016648, i64 2227061214, i64 450548861, i64 1843258603, i64 4107580753, i64 2211677639, i64 325883990, i64 1684777152, i64 4251122042, i64 2321926636, i64 335633487, i64 1661365465, i64 4195302755, i64 2366115317, i64 997073096, i64 1281953886, i64 3579855332, i64 2724688242, i64 1006888145, i64 1258607687, i64 3524101629, i64 2768942443, i64 901097722, i64 1119000684, i64 3686517206, i64 2898065728, i64 853044451, i64 1172266101, i64 3705015759, i64 2882616665, i64 651767980, i64 1373503546, i64 3369554304, i64 3218104598, i64 565507253, i64 1454621731, i64 3485111705, i64 3099436303, i64 671266974, i64 1594198024, i64 3322730930, i64 2970347812, i64 795835527, i64 1483230225, i64 3244367275, i64 3060149565, i64 1994146192, i64 31158534, i64 2563907772, i64 4023717930, i64 1907459465, i64 112637215, i64 2680153253, i64 3904427059, i64 2013776290, i64 251722036, i64 2517215374, i64 3775830040, i64 2137656763, i64 141376813, i64 2439277719, i64 3865271297, i64 1802195444, i64 476864866, i64 2238001368, i64 4066508878, i64 1812370925, i64 453092731, i64 2181625025, i64 4111451223, i64 1706088902, i64 314042704, i64 2344532202, i64 4240017532, i64 1658658271, i64 366619977, i64 2362670323, i64 4224994405, i64 1303535960, i64 984961486, i64 2747007092, i64 3569037538, i64 1256170817, i64 1037604311, i64 2765210733, i64 3554079995, i64 1131014506, i64 879679996, i64 2909243462, i64 3663771856, i64 1141124467, i64 855842277, i64 2852801631, i64 3708648649, i64 1342533948, i64 654459306, i64 3188396048, i64 3373015174, i64 1466479909, i64 544179635, i64 3110523913, i64 3462522015, i64 1591671054, i64 702138776, i64 2966460450, i64 3352799412, i64 1504918807, i64 783551873, i64 3082640443, i64 3233442989, i64 3988292384, i64 2596254646, i64 62317068, i64 1957810842, i64 3939845945, i64 2647816111, i64 81470997, i64 1943803523, i64 3814918930, i64 2489596804, i64 225274430, i64 2053790376, i64 3826175755, i64 2466906013, i64 167816743, i64 2097651377, i64 4027552580, i64 2265490386, i64 503444072, i64 1762050814, i64 4150417245, i64 2154129355, i64 426522225, i64 1852507879, i64 4275313526, i64 2312317920, i64 282753626, i64 1742555852, i64 4189708143, i64 2394877945, i64 397917763, i64 1622183637, i64 3604390888, i64 2714866558, i64 953729732, i64 1340076626, i64 3518719985, i64 2797360999, i64 1068828381, i64 1219638859, i64 3624741850, i64 2936675148, i64 906185462, i64 1090812512, i64 3747672003, i64 2825379669, i64 829329135, i64 1181335161, i64 3412177804, i64 3160834842, i64 628085408, i64 1382605366, i64 3423369109, i64 3138078467, i64 570562233, i64 1426400815, i64 3317316542, i64 2998733608, i64 733239954, i64 1555261956, i64 3268935591, i64 3050360625, i64 752459403, i64 1541320221, i64 2607071920, i64 3965973030, i64 1969922972, i64 40735498, i64 2617837225, i64 3943577151, i64 1913087877, i64 83908371, i64 2512341634, i64 3803740692, i64 2075208622, i64 213261112, i64 2463272603, i64 3855990285, i64 2094854071, i64 198958881, i64 2262029012, i64 4057260610, i64 1759359992, i64 534414190, i64 2176718541, i64 4139329115, i64 1873836001, i64 414664567, i64 2282248934, i64 4279200368, i64 1711684554, i64 285281116, i64 2405801727, i64 4167216745, i64 1634467795, i64 376229701, i64 2685067896, i64 3608007406, i64 1308918612, i64 956543938, i64 2808555105, i64 3495958263, i64 1231636301, i64 1047427035, i64 2932959818, i64 3654703836, i64 1088359270, i64 936918000, i64 2847714899, i64 3736837829, i64 1202900863, i64 817233897, i64 3183342108, i64 3401237130, i64 1404277552, i64 615818150, i64 3134207493, i64 3453421203, i64 1423857449, i64 601450431, i64 3009837614, i64 3294710456, i64 1567103746, i64 711928724, i64 3020668471, i64 3272380065, i64 1510334235, i64 755167117]
@.str = [155 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/tcell2020/autodafe-0.1-osx/refs/heads/master/src/autodafe/hash.c\00"
@__func__.hash_crc32 = [11 x i8] c"hash_crc32\00"
@.str.1 = [33 x i8] c"<-----------------------[enter]\0A\00"
@.str.2 = [32 x i8] c"<-----------------------[quit]\0A\00"
define i32 @hash_crc32(i8* %0, i32 %1) {
%3 = tail call i32 (i32, i8*, i32, i8*, i8*, ...) bitcast (i32 (...)* @debug_ to i32 (i32, i8*, i32, i8*, i8*, ...)*)(i32 1, i8* getelementptr inbounds ([155 x i8], [155 x i8]* @.str, i64 0, i64 0), i32 96, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__func__.hash_crc32, i64 0, i64 0), i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.1, i64 0, i64 0))
%4 = icmp ugt i32 %1, 31
br i1 %4, label %5, label %363
5: ; preds = %2, %5
%6 = phi i8* [ %350, %5 ], [ %0, %2 ]
%7 = phi i32 [ %361, %5 ], [ %1, %2 ]
%8 = phi i32 [ %360, %5 ], [ -1, %2 ]
%9 = getelementptr inbounds i8, i8* %6, i64 1
%10 = load i8, i8* %6
%11 = zext i8 %10 to i32
%12 = and i32 %8, 255
%13 = xor i32 %12, %11
%14 = zext i32 %13 to i64
%15 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %14
%16 = load i64, i64* %15
%17 = lshr i32 %8, 8
%18 = trunc i64 %16 to i32
%19 = xor i32 %17, %18
%20 = getelementptr inbounds i8, i8* %6, i64 2
%21 = load i8, i8* %9
%22 = zext i8 %21 to i32
%23 = and i32 %19, 255
%24 = xor i32 %23, %22
%25 = zext i32 %24 to i64
%26 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %25
%27 = load i64, i64* %26
%28 = lshr i32 %19, 8
%29 = trunc i64 %27 to i32
%30 = xor i32 %28, %29
%31 = getelementptr inbounds i8, i8* %6, i64 3
%32 = load i8, i8* %20
%33 = zext i8 %32 to i32
%34 = and i32 %30, 255
%35 = xor i32 %34, %33
%36 = zext i32 %35 to i64
%37 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %36
%38 = load i64, i64* %37
%39 = lshr i32 %30, 8
%40 = trunc i64 %38 to i32
%41 = xor i32 %39, %40
%42 = getelementptr inbounds i8, i8* %6, i64 4
%43 = load i8, i8* %31
%44 = zext i8 %43 to i32
%45 = and i32 %41, 255
%46 = xor i32 %45, %44
%47 = zext i32 %46 to i64
%48 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %47
%49 = load i64, i64* %48
%50 = lshr i32 %41, 8
%51 = trunc i64 %49 to i32
%52 = xor i32 %50, %51
%53 = getelementptr inbounds i8, i8* %6, i64 5
%54 = load i8, i8* %42
%55 = zext i8 %54 to i32
%56 = and i32 %52, 255
%57 = xor i32 %56, %55
%58 = zext i32 %57 to i64
%59 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %58
%60 = load i64, i64* %59
%61 = lshr i32 %52, 8
%62 = trunc i64 %60 to i32
%63 = xor i32 %61, %62
%64 = getelementptr inbounds i8, i8* %6, i64 6
%65 = load i8, i8* %53
%66 = zext i8 %65 to i32
%67 = and i32 %63, 255
%68 = xor i32 %67, %66
%69 = zext i32 %68 to i64
%70 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %69
%71 = load i64, i64* %70
%72 = lshr i32 %63, 8
%73 = trunc i64 %71 to i32
%74 = xor i32 %72, %73
%75 = getelementptr inbounds i8, i8* %6, i64 7
%76 = load i8, i8* %64
%77 = zext i8 %76 to i32
%78 = and i32 %74, 255
%79 = xor i32 %78, %77
%80 = zext i32 %79 to i64
%81 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %80
%82 = load i64, i64* %81
%83 = lshr i32 %74, 8
%84 = trunc i64 %82 to i32
%85 = xor i32 %83, %84
%86 = getelementptr inbounds i8, i8* %6, i64 8
%87 = load i8, i8* %75
%88 = zext i8 %87 to i32
%89 = and i32 %85, 255
%90 = xor i32 %89, %88
%91 = zext i32 %90 to i64
%92 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %91
%93 = load i64, i64* %92
%94 = lshr i32 %85, 8
%95 = trunc i64 %93 to i32
%96 = xor i32 %94, %95
%97 = getelementptr inbounds i8, i8* %6, i64 9
%98 = load i8, i8* %86
%99 = zext i8 %98 to i32
%100 = and i32 %96, 255
%101 = xor i32 %100, %99
%102 = zext i32 %101 to i64
%103 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %102
%104 = load i64, i64* %103
%105 = lshr i32 %96, 8
%106 = trunc i64 %104 to i32
%107 = xor i32 %105, %106
%108 = getelementptr inbounds i8, i8* %6, i64 10
%109 = load i8, i8* %97
%110 = zext i8 %109 to i32
%111 = and i32 %107, 255
%112 = xor i32 %111, %110
%113 = zext i32 %112 to i64
%114 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %113
%115 = load i64, i64* %114
%116 = lshr i32 %107, 8
%117 = trunc i64 %115 to i32
%118 = xor i32 %116, %117
%119 = getelementptr inbounds i8, i8* %6, i64 11
%120 = load i8, i8* %108
%121 = zext i8 %120 to i32
%122 = and i32 %118, 255
%123 = xor i32 %122, %121
%124 = zext i32 %123 to i64
%125 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %124
%126 = load i64, i64* %125
%127 = lshr i32 %118, 8
%128 = trunc i64 %126 to i32
%129 = xor i32 %127, %128
%130 = getelementptr inbounds i8, i8* %6, i64 12
%131 = load i8, i8* %119
%132 = zext i8 %131 to i32
%133 = and i32 %129, 255
%134 = xor i32 %133, %132
%135 = zext i32 %134 to i64
%136 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %135
%137 = load i64, i64* %136
%138 = lshr i32 %129, 8
%139 = trunc i64 %137 to i32
%140 = xor i32 %138, %139
%141 = getelementptr inbounds i8, i8* %6, i64 13
%142 = load i8, i8* %130
%143 = zext i8 %142 to i32
%144 = and i32 %140, 255
%145 = xor i32 %144, %143
%146 = zext i32 %145 to i64
%147 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %146
%148 = load i64, i64* %147
%149 = lshr i32 %140, 8
%150 = trunc i64 %148 to i32
%151 = xor i32 %149, %150
%152 = getelementptr inbounds i8, i8* %6, i64 14
%153 = load i8, i8* %141
%154 = zext i8 %153 to i32
%155 = and i32 %151, 255
%156 = xor i32 %155, %154
%157 = zext i32 %156 to i64
%158 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %157
%159 = load i64, i64* %158
%160 = lshr i32 %151, 8
%161 = trunc i64 %159 to i32
%162 = xor i32 %160, %161
%163 = getelementptr inbounds i8, i8* %6, i64 15
%164 = load i8, i8* %152
%165 = zext i8 %164 to i32
%166 = and i32 %162, 255
%167 = xor i32 %166, %165
%168 = zext i32 %167 to i64
%169 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %168
%170 = load i64, i64* %169
%171 = lshr i32 %162, 8
%172 = trunc i64 %170 to i32
%173 = xor i32 %171, %172
%174 = getelementptr inbounds i8, i8* %6, i64 16
%175 = load i8, i8* %163
%176 = zext i8 %175 to i32
%177 = and i32 %173, 255
%178 = xor i32 %177, %176
%179 = zext i32 %178 to i64
%180 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %179
%181 = load i64, i64* %180
%182 = lshr i32 %173, 8
%183 = trunc i64 %181 to i32
%184 = xor i32 %182, %183
%185 = getelementptr inbounds i8, i8* %6, i64 17
%186 = load i8, i8* %174
%187 = zext i8 %186 to i32
%188 = and i32 %184, 255
%189 = xor i32 %188, %187
%190 = zext i32 %189 to i64
%191 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %190
%192 = load i64, i64* %191
%193 = lshr i32 %184, 8
%194 = trunc i64 %192 to i32
%195 = xor i32 %193, %194
%196 = getelementptr inbounds i8, i8* %6, i64 18
%197 = load i8, i8* %185
%198 = zext i8 %197 to i32
%199 = and i32 %195, 255
%200 = xor i32 %199, %198
%201 = zext i32 %200 to i64
%202 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %201
%203 = load i64, i64* %202
%204 = lshr i32 %195, 8
%205 = trunc i64 %203 to i32
%206 = xor i32 %204, %205
%207 = getelementptr inbounds i8, i8* %6, i64 19
%208 = load i8, i8* %196
%209 = zext i8 %208 to i32
%210 = and i32 %206, 255
%211 = xor i32 %210, %209
%212 = zext i32 %211 to i64
%213 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %212
%214 = load i64, i64* %213
%215 = lshr i32 %206, 8
%216 = trunc i64 %214 to i32
%217 = xor i32 %215, %216
%218 = getelementptr inbounds i8, i8* %6, i64 20
%219 = load i8, i8* %207
%220 = zext i8 %219 to i32
%221 = and i32 %217, 255
%222 = xor i32 %221, %220
%223 = zext i32 %222 to i64
%224 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %223
%225 = load i64, i64* %224
%226 = lshr i32 %217, 8
%227 = trunc i64 %225 to i32
%228 = xor i32 %226, %227
%229 = getelementptr inbounds i8, i8* %6, i64 21
%230 = load i8, i8* %218
%231 = zext i8 %230 to i32
%232 = and i32 %228, 255
%233 = xor i32 %232, %231
%234 = zext i32 %233 to i64
%235 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %234
%236 = load i64, i64* %235
%237 = lshr i32 %228, 8
%238 = trunc i64 %236 to i32
%239 = xor i32 %237, %238
%240 = getelementptr inbounds i8, i8* %6, i64 22
%241 = load i8, i8* %229
%242 = zext i8 %241 to i32
%243 = and i32 %239, 255
%244 = xor i32 %243, %242
%245 = zext i32 %244 to i64
%246 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %245
%247 = load i64, i64* %246
%248 = lshr i32 %239, 8
%249 = trunc i64 %247 to i32
%250 = xor i32 %248, %249
%251 = getelementptr inbounds i8, i8* %6, i64 23
%252 = load i8, i8* %240
%253 = zext i8 %252 to i32
%254 = and i32 %250, 255
%255 = xor i32 %254, %253
%256 = zext i32 %255 to i64
%257 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %256
%258 = load i64, i64* %257
%259 = lshr i32 %250, 8
%260 = trunc i64 %258 to i32
%261 = xor i32 %259, %260
%262 = getelementptr inbounds i8, i8* %6, i64 24
%263 = load i8, i8* %251
%264 = zext i8 %263 to i32
%265 = and i32 %261, 255
%266 = xor i32 %265, %264
%267 = zext i32 %266 to i64
%268 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %267
%269 = load i64, i64* %268
%270 = lshr i32 %261, 8
%271 = trunc i64 %269 to i32
%272 = xor i32 %270, %271
%273 = getelementptr inbounds i8, i8* %6, i64 25
%274 = load i8, i8* %262
%275 = zext i8 %274 to i32
%276 = and i32 %272, 255
%277 = xor i32 %276, %275
%278 = zext i32 %277 to i64
%279 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %278
%280 = load i64, i64* %279
%281 = lshr i32 %272, 8
%282 = trunc i64 %280 to i32
%283 = xor i32 %281, %282
%284 = getelementptr inbounds i8, i8* %6, i64 26
%285 = load i8, i8* %273
%286 = zext i8 %285 to i32
%287 = and i32 %283, 255
%288 = xor i32 %287, %286
%289 = zext i32 %288 to i64
%290 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %289
%291 = load i64, i64* %290
%292 = lshr i32 %283, 8
%293 = trunc i64 %291 to i32
%294 = xor i32 %292, %293
%295 = getelementptr inbounds i8, i8* %6, i64 27
%296 = load i8, i8* %284
%297 = zext i8 %296 to i32
%298 = and i32 %294, 255
%299 = xor i32 %298, %297
%300 = zext i32 %299 to i64
%301 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %300
%302 = load i64, i64* %301
%303 = lshr i32 %294, 8
%304 = trunc i64 %302 to i32
%305 = xor i32 %303, %304
%306 = getelementptr inbounds i8, i8* %6, i64 28
%307 = load i8, i8* %295
%308 = zext i8 %307 to i32
%309 = and i32 %305, 255
%310 = xor i32 %309, %308
%311 = zext i32 %310 to i64
%312 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %311
%313 = load i64, i64* %312
%314 = lshr i32 %305, 8
%315 = trunc i64 %313 to i32
%316 = xor i32 %314, %315
%317 = getelementptr inbounds i8, i8* %6, i64 29
%318 = load i8, i8* %306
%319 = zext i8 %318 to i32
%320 = and i32 %316, 255
%321 = xor i32 %320, %319
%322 = zext i32 %321 to i64
%323 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %322
%324 = load i64, i64* %323
%325 = lshr i32 %316, 8
%326 = trunc i64 %324 to i32
%327 = xor i32 %325, %326
%328 = getelementptr inbounds i8, i8* %6, i64 30
%329 = load i8, i8* %317
%330 = zext i8 %329 to i32
%331 = and i32 %327, 255
%332 = xor i32 %331, %330
%333 = zext i32 %332 to i64
%334 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %333
%335 = load i64, i64* %334
%336 = lshr i32 %327, 8
%337 = trunc i64 %335 to i32
%338 = xor i32 %336, %337
%339 = getelementptr inbounds i8, i8* %6, i64 31
%340 = load i8, i8* %328
%341 = zext i8 %340 to i32
%342 = and i32 %338, 255
%343 = xor i32 %342, %341
%344 = zext i32 %343 to i64
%345 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %344
%346 = load i64, i64* %345
%347 = lshr i32 %338, 8
%348 = trunc i64 %346 to i32
%349 = xor i32 %347, %348
%350 = getelementptr inbounds i8, i8* %6, i64 32
%351 = load i8, i8* %339
%352 = zext i8 %351 to i32
%353 = and i32 %349, 255
%354 = xor i32 %353, %352
%355 = zext i32 %354 to i64
%356 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %355
%357 = load i64, i64* %356
%358 = lshr i32 %349, 8
%359 = trunc i64 %357 to i32
%360 = xor i32 %358, %359
%361 = add i32 %7, -32
%362 = icmp ugt i32 %361, 31
br i1 %362, label %5, label %363
363: ; preds = %5, %2
%364 = phi i32 [ -1, %2 ], [ %360, %5 ]
%365 = phi i32 [ %1, %2 ], [ %361, %5 ]
%366 = phi i8* [ %0, %2 ], [ %350, %5 ]
%367 = icmp eq i32 %365, 0
br i1 %367, label %418, label %368
368: ; preds = %363
%369 = and i32 %365, 1
%370 = icmp eq i32 %369, 0
br i1 %370, label %384, label %371
371: ; preds = %368
%372 = getelementptr inbounds i8, i8* %366, i64 1
%373 = load i8, i8* %366
%374 = zext i8 %373 to i32
%375 = and i32 %364, 255
%376 = xor i32 %375, %374
%377 = zext i32 %376 to i64
%378 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %377
%379 = load i64, i64* %378
%380 = lshr i32 %364, 8
%381 = trunc i64 %379 to i32
%382 = xor i32 %380, %381
%383 = add i32 %365, -1
br label %384
384: ; preds = %371, %368
%385 = phi i32 [ undef, %368 ], [ %382, %371 ]
%386 = phi i32 [ %364, %368 ], [ %382, %371 ]
%387 = phi i32 [ %365, %368 ], [ %383, %371 ]
%388 = phi i8* [ %366, %368 ], [ %372, %371 ]
%389 = icmp eq i32 %365, 1
br i1 %389, label %418, label %390
390: ; preds = %384, %390
%391 = phi i32 [ %415, %390 ], [ %386, %384 ]
%392 = phi i32 [ %416, %390 ], [ %387, %384 ]
%393 = phi i8* [ %405, %390 ], [ %388, %384 ]
%394 = getelementptr inbounds i8, i8* %393, i64 1
%395 = load i8, i8* %393
%396 = zext i8 %395 to i32
%397 = and i32 %391, 255
%398 = xor i32 %397, %396
%399 = zext i32 %398 to i64
%400 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %399
%401 = load i64, i64* %400
%402 = lshr i32 %391, 8
%403 = trunc i64 %401 to i32
%404 = xor i32 %402, %403
%405 = getelementptr inbounds i8, i8* %393, i64 2
%406 = load i8, i8* %394
%407 = zext i8 %406 to i32
%408 = and i32 %404, 255
%409 = xor i32 %408, %407
%410 = zext i32 %409 to i64
%411 = getelementptr inbounds [256 x i64], [256 x i64]* @__const.hash_crc32.crc_32_tab, i64 0, i64 %410
%412 = load i64, i64* %411
%413 = lshr i32 %404, 8
%414 = trunc i64 %412 to i32
%415 = xor i32 %413, %414
%416 = add i32 %392, -2
%417 = icmp eq i32 %416, 0
br i1 %417, label %418, label %390
418: ; preds = %384, %390, %363
%419 = phi i32 [ %364, %363 ], [ %385, %384 ], [ %415, %390 ]
%420 = xor i32 %419, -1
%421 = tail call i32 (i32, i8*, i32, i8*, i8*, ...) bitcast (i32 (...)* @debug_ to i32 (i32, i8*, i32, i8*, i8*, ...)*)(i32 1, i8* getelementptr inbounds ([155 x i8], [155 x i8]* @.str, i64 0, i64 0), i32 133, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @__func__.hash_crc32, i64 0, i64 0), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.2, i64 0, i64 0))
ret i32 %420
}