unsigned int hash_keys(str, len)
register const char *str;
register unsigned int len;
{
  static unsigned short asso_values[] = {
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 1,     2,     13682, 1,     13682, 13682, 3,     1296,
      1027,  1628,  977,   133,   153,   119,   213,   9,     1,     13682,
      13682, 13682, 13682, 13682, 13682, 1523,  1656,  489,   88,    925,
      625,   1283,  687,   1301,  406,   27,    850,   803,   842,   184,
      104,   105,   1643,  257,   241,   1478,  1487,  379,   40,    94,
      6,     13682, 13682, 13682, 13682, 198,   260,   3,     111,   33,
      15,    2,     35,    76,    404,   21,    897,   1149,  47,    9,
      4,     1,     3,     1970,  5,     1,     1,     9,     372,   1736,
      832,   318,   2115,  13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682, 13682,
      13682, 13682, 13682, 13682, 13682, 13682, 13682};
  register int hval = len;
  switch (hval) {
  default:
    hval += asso_values[(unsigned char)str[26]];
  case 26:
  case 25:
    hval += asso_values[(unsigned char)str[24]];
  case 24:
  case 23:
    hval += asso_values[(unsigned char)str[22]];
  case 22:
  case 21:
  case 20:
    hval += asso_values[(unsigned char)str[19]];
  case 19:
  case 18:
  case 17:
  case 16:
  case 15:
    hval += asso_values[(unsigned char)str[14]];
  case 14:
    hval += asso_values[(unsigned char)str[13] + 1];
  case 13:
    hval += asso_values[(unsigned char)str[12]];
  case 12:
    hval += asso_values[(unsigned char)str[11]];
  case 11:
    hval += asso_values[(unsigned char)str[10]];
  case 10:
    hval += asso_values[(unsigned char)str[9]];
  case 9:
    hval += asso_values[(unsigned char)str[8]];
  case 8:
    hval += asso_values[(unsigned char)str[7]];
  case 7:
  case 6:
    hval += asso_values[(unsigned char)str[5] + 1];
  case 5:
    hval += asso_values[(unsigned char)str[4]];
  case 4:
    hval += asso_values[(unsigned char)str[3]];
  case 3:
    hval += asso_values[(unsigned char)str[2]];
  case 2:
    hval += asso_values[(unsigned char)str[1]];
  case 1:
    hval += asso_values[(unsigned char)str[0]];
    break;
  }
  return hval + asso_values[(unsigned char)str[len - 1]];
}


x86 assembly (clang, -O0):
<hash_keys>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x18(%rbp)
sub    $0x19,%eax
ja     113a <hash_keys+0x3a>
mov    -0x18(%rbp),%rax
lea    0xecf(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x8(%rbp),%rax
movzbl 0x1a(%rax),%eax
mov    %eax,%ecx
lea    0x2ee5(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x18(%rax),%eax
mov    %eax,%ecx
lea    0x2eca(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x16(%rax),%eax
mov    %eax,%ecx
lea    0x2eaf(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x13(%rax),%eax
mov    %eax,%ecx
lea    0x2e94(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0xe(%rax),%eax
mov    %eax,%ecx
lea    0x2e79(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0xd(%rax),%eax
add    $0x1,%eax
movslq %eax,%rcx
lea    0x2e5a(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0xc(%rax),%eax
mov    %eax,%ecx
lea    0x2e3f(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0xb(%rax),%eax
mov    %eax,%ecx
lea    0x2e24(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0xa(%rax),%eax
mov    %eax,%ecx
lea    0x2e09(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x9(%rax),%eax
mov    %eax,%ecx
lea    0x2dee(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x8(%rax),%eax
mov    %eax,%ecx
lea    0x2dd3(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x7(%rax),%eax
mov    %eax,%ecx
lea    0x2db8(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x5(%rax),%eax
add    $0x1,%eax
movslq %eax,%rcx
lea    0x2d99(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x4(%rax),%eax
mov    %eax,%ecx
lea    0x2d7e(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x3(%rax),%eax
mov    %eax,%ecx
lea    0x2d63(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x2(%rax),%eax
mov    %eax,%ecx
lea    0x2d48(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
mov    %eax,%ecx
lea    0x2d2d(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
mov    %eax,%ecx
lea    0x2d13(%rip),%rax
movzwl (%rax,%rcx,2),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0xc(%rbp),%edx
sub    $0x1,%edx
mov    %edx,%edx
movzbl (%rcx,%rdx,1),%ecx
mov    %ecx,%edx
lea    0x2ced(%rip),%rcx
movzwl (%rcx,%rdx,2),%ecx
add    %ecx,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<hash_keys>:
lea    -0x1(%rsi),%eax
cmp    $0x19,%eax
ja     1118 <hash_keys+0x18>
lea    0xef1(%rip),%rcx
movslq (%rcx,%rax,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
movzbl 0x1a(%rdi),%ecx
lea    0xf4d(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %esi,%ecx
mov    %ecx,%esi
movzbl 0x18(%rdi),%ecx
lea    0xf3a(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0x16(%rdi),%ecx
lea    0xf29(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0x13(%rdi),%ecx
lea    0xf18(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0xe(%rdi),%ecx
lea    0xf07(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0xd(%rdi),%ecx
lea    0xef6(%rip),%rdx
movzwl 0x2(%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0xc(%rdi),%ecx
lea    0xee4(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0xb(%rdi),%ecx
lea    0xed3(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0xa(%rdi),%ecx
lea    0xec2(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0x9(%rdi),%ecx
lea    0xeb1(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0x8(%rdi),%ecx
lea    0xea0(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0x7(%rdi),%ecx
lea    0xe8f(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0x5(%rdi),%ecx
lea    0xe7e(%rip),%rdx
movzwl 0x2(%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0x4(%rdi),%ecx
lea    0xe6c(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0x3(%rdi),%ecx
lea    0xe5b(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0x2(%rdi),%ecx
lea    0xe4a(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl 0x1(%rdi),%ecx
lea    0xe39(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %ecx,%esi
movzbl (%rdi),%ecx
lea    0xe29(%rip),%rdx
movzwl (%rdx,%rcx,2),%ecx
add    %esi,%ecx
movzbl (%rdi,%rax,1),%eax
movzwl (%rdx,%rax,2),%eax
add    %ecx,%eax
ret

LLVM IR (-O0):
@hash_keys.asso_values = internal global [257 x i16] [i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 1, i16 2, i16 13682, i16 1, i16 13682, i16 13682, i16 3, i16 1296, i16 1027, i16 1628, i16 977, i16 133, i16 153, i16 119, i16 213, i16 9, i16 1, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 1523, i16 1656, i16 489, i16 88, i16 925, i16 625, i16 1283, i16 687, i16 1301, i16 406, i16 27, i16 850, i16 803, i16 842, i16 184, i16 104, i16 105, i16 1643, i16 257, i16 241, i16 1478, i16 1487, i16 379, i16 40, i16 94, i16 6, i16 13682, i16 13682, i16 13682, i16 13682, i16 198, i16 260, i16 3, i16 111, i16 33, i16 15, i16 2, i16 35, i16 76, i16 404, i16 21, i16 897, i16 1149, i16 47, i16 9, i16 4, i16 1, i16 3, i16 1970, i16 5, i16 1, i16 1, i16 9, i16 372, i16 1736, i16 832, i16 318, i16 2115, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682]
define i32 @hash_keys(i8* %0, i32 %1) {
%3 = alloca i8*
%4 = alloca i32
%5 = alloca i32
store i8* %0, i8** %3
store i32 %1, i32* %4
%6 = load i32, i32* %4
store i32 %6, i32* %5
%7 = load i32, i32* %5
switch i32 %7, label %8 [
i32 26, label %18
i32 25, label %18
i32 24, label %28
i32 23, label %28
i32 22, label %38
i32 21, label %38
i32 20, label %38
i32 19, label %48
i32 18, label %48
i32 17, label %48
i32 16, label %48
i32 15, label %48
i32 14, label %58
i32 13, label %70
i32 12, label %80
i32 11, label %90
i32 10, label %100
i32 9, label %110
i32 8, label %120
i32 7, label %130
i32 6, label %130
i32 5, label %142
i32 4, label %152
i32 3, label %162
i32 2, label %172
i32 1, label %182
]
8: ; preds = %2
%9 = load i8*, i8** %3
%10 = getelementptr inbounds i8, i8* %9, i64 26
%11 = load i8, i8* %10
%12 = zext i8 %11 to i64
%13 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %12
%14 = load i16, i16* %13
%15 = zext i16 %14 to i32
%16 = load i32, i32* %5
%17 = add nsw i32 %16, %15
store i32 %17, i32* %5
br label %18
18: ; preds = %2, %2, %8
%19 = load i8*, i8** %3
%20 = getelementptr inbounds i8, i8* %19, i64 24
%21 = load i8, i8* %20
%22 = zext i8 %21 to i64
%23 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %22
%24 = load i16, i16* %23
%25 = zext i16 %24 to i32
%26 = load i32, i32* %5
%27 = add nsw i32 %26, %25
store i32 %27, i32* %5
br label %28
28: ; preds = %2, %2, %18
%29 = load i8*, i8** %3
%30 = getelementptr inbounds i8, i8* %29, i64 22
%31 = load i8, i8* %30
%32 = zext i8 %31 to i64
%33 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %32
%34 = load i16, i16* %33
%35 = zext i16 %34 to i32
%36 = load i32, i32* %5
%37 = add nsw i32 %36, %35
store i32 %37, i32* %5
br label %38
38: ; preds = %2, %2, %2, %28
%39 = load i8*, i8** %3
%40 = getelementptr inbounds i8, i8* %39, i64 19
%41 = load i8, i8* %40
%42 = zext i8 %41 to i64
%43 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %42
%44 = load i16, i16* %43
%45 = zext i16 %44 to i32
%46 = load i32, i32* %5
%47 = add nsw i32 %46, %45
store i32 %47, i32* %5
br label %48
48: ; preds = %2, %2, %2, %2, %2, %38
%49 = load i8*, i8** %3
%50 = getelementptr inbounds i8, i8* %49, i64 14
%51 = load i8, i8* %50
%52 = zext i8 %51 to i64
%53 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %52
%54 = load i16, i16* %53
%55 = zext i16 %54 to i32
%56 = load i32, i32* %5
%57 = add nsw i32 %56, %55
store i32 %57, i32* %5
br label %58
58: ; preds = %2, %48
%59 = load i8*, i8** %3
%60 = getelementptr inbounds i8, i8* %59, i64 13
%61 = load i8, i8* %60
%62 = zext i8 %61 to i32
%63 = add nsw i32 %62, 1
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %64
%66 = load i16, i16* %65
%67 = zext i16 %66 to i32
%68 = load i32, i32* %5
%69 = add nsw i32 %68, %67
store i32 %69, i32* %5
br label %70
70: ; preds = %2, %58
%71 = load i8*, i8** %3
%72 = getelementptr inbounds i8, i8* %71, i64 12
%73 = load i8, i8* %72
%74 = zext i8 %73 to i64
%75 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %74
%76 = load i16, i16* %75
%77 = zext i16 %76 to i32
%78 = load i32, i32* %5
%79 = add nsw i32 %78, %77
store i32 %79, i32* %5
br label %80
80: ; preds = %2, %70
%81 = load i8*, i8** %3
%82 = getelementptr inbounds i8, i8* %81, i64 11
%83 = load i8, i8* %82
%84 = zext i8 %83 to i64
%85 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %84
%86 = load i16, i16* %85
%87 = zext i16 %86 to i32
%88 = load i32, i32* %5
%89 = add nsw i32 %88, %87
store i32 %89, i32* %5
br label %90
90: ; preds = %2, %80
%91 = load i8*, i8** %3
%92 = getelementptr inbounds i8, i8* %91, i64 10
%93 = load i8, i8* %92
%94 = zext i8 %93 to i64
%95 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %94
%96 = load i16, i16* %95
%97 = zext i16 %96 to i32
%98 = load i32, i32* %5
%99 = add nsw i32 %98, %97
store i32 %99, i32* %5
br label %100
100: ; preds = %2, %90
%101 = load i8*, i8** %3
%102 = getelementptr inbounds i8, i8* %101, i64 9
%103 = load i8, i8* %102
%104 = zext i8 %103 to i64
%105 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %104
%106 = load i16, i16* %105
%107 = zext i16 %106 to i32
%108 = load i32, i32* %5
%109 = add nsw i32 %108, %107
store i32 %109, i32* %5
br label %110
110: ; preds = %2, %100
%111 = load i8*, i8** %3
%112 = getelementptr inbounds i8, i8* %111, i64 8
%113 = load i8, i8* %112
%114 = zext i8 %113 to i64
%115 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %114
%116 = load i16, i16* %115
%117 = zext i16 %116 to i32
%118 = load i32, i32* %5
%119 = add nsw i32 %118, %117
store i32 %119, i32* %5
br label %120
120: ; preds = %2, %110
%121 = load i8*, i8** %3
%122 = getelementptr inbounds i8, i8* %121, i64 7
%123 = load i8, i8* %122
%124 = zext i8 %123 to i64
%125 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %124
%126 = load i16, i16* %125
%127 = zext i16 %126 to i32
%128 = load i32, i32* %5
%129 = add nsw i32 %128, %127
store i32 %129, i32* %5
br label %130
130: ; preds = %2, %2, %120
%131 = load i8*, i8** %3
%132 = getelementptr inbounds i8, i8* %131, i64 5
%133 = load i8, i8* %132
%134 = zext i8 %133 to i32
%135 = add nsw i32 %134, 1
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %136
%138 = load i16, i16* %137
%139 = zext i16 %138 to i32
%140 = load i32, i32* %5
%141 = add nsw i32 %140, %139
store i32 %141, i32* %5
br label %142
142: ; preds = %2, %130
%143 = load i8*, i8** %3
%144 = getelementptr inbounds i8, i8* %143, i64 4
%145 = load i8, i8* %144
%146 = zext i8 %145 to i64
%147 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %146
%148 = load i16, i16* %147
%149 = zext i16 %148 to i32
%150 = load i32, i32* %5
%151 = add nsw i32 %150, %149
store i32 %151, i32* %5
br label %152
152: ; preds = %2, %142
%153 = load i8*, i8** %3
%154 = getelementptr inbounds i8, i8* %153, i64 3
%155 = load i8, i8* %154
%156 = zext i8 %155 to i64
%157 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %156
%158 = load i16, i16* %157
%159 = zext i16 %158 to i32
%160 = load i32, i32* %5
%161 = add nsw i32 %160, %159
store i32 %161, i32* %5
br label %162
162: ; preds = %2, %152
%163 = load i8*, i8** %3
%164 = getelementptr inbounds i8, i8* %163, i64 2
%165 = load i8, i8* %164
%166 = zext i8 %165 to i64
%167 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %166
%168 = load i16, i16* %167
%169 = zext i16 %168 to i32
%170 = load i32, i32* %5
%171 = add nsw i32 %170, %169
store i32 %171, i32* %5
br label %172
172: ; preds = %2, %162
%173 = load i8*, i8** %3
%174 = getelementptr inbounds i8, i8* %173, i64 1
%175 = load i8, i8* %174
%176 = zext i8 %175 to i64
%177 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %176
%178 = load i16, i16* %177
%179 = zext i16 %178 to i32
%180 = load i32, i32* %5
%181 = add nsw i32 %180, %179
store i32 %181, i32* %5
br label %182
182: ; preds = %2, %172
%183 = load i8*, i8** %3
%184 = getelementptr inbounds i8, i8* %183, i64 0
%185 = load i8, i8* %184
%186 = zext i8 %185 to i64
%187 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %186
%188 = load i16, i16* %187
%189 = zext i16 %188 to i32
%190 = load i32, i32* %5
%191 = add nsw i32 %190, %189
store i32 %191, i32* %5
br label %192
192: ; preds = %182
%193 = load i32, i32* %5
%194 = load i8*, i8** %3
%195 = load i32, i32* %4
%196 = sub i32 %195, 1
%197 = zext i32 %196 to i64
%198 = getelementptr inbounds i8, i8* %194, i64 %197
%199 = load i8, i8* %198
%200 = zext i8 %199 to i64
%201 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %200
%202 = load i16, i16* %201
%203 = zext i16 %202 to i32
%204 = add nsw i32 %193, %203
ret i32 %204
}

LLVM IR (-O2):
@hash_keys.asso_values = internal unnamed_addr constant [257 x i16] [i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 1, i16 2, i16 13682, i16 1, i16 13682, i16 13682, i16 3, i16 1296, i16 1027, i16 1628, i16 977, i16 133, i16 153, i16 119, i16 213, i16 9, i16 1, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 1523, i16 1656, i16 489, i16 88, i16 925, i16 625, i16 1283, i16 687, i16 1301, i16 406, i16 27, i16 850, i16 803, i16 842, i16 184, i16 104, i16 105, i16 1643, i16 257, i16 241, i16 1478, i16 1487, i16 379, i16 40, i16 94, i16 6, i16 13682, i16 13682, i16 13682, i16 13682, i16 198, i16 260, i16 3, i16 111, i16 33, i16 15, i16 2, i16 35, i16 76, i16 404, i16 21, i16 897, i16 1149, i16 47, i16 9, i16 4, i16 1, i16 3, i16 1970, i16 5, i16 1, i16 1, i16 9, i16 372, i16 1736, i16 832, i16 318, i16 2115, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682, i16 13682]
define i32 @hash_keys(i8* nocapture %0, i32 %1) {
switch i32 %1, label %3 [
i32 26, label %11
i32 25, label %11
i32 24, label %20
i32 23, label %20
i32 22, label %29
i32 21, label %29
i32 20, label %29
i32 19, label %38
i32 18, label %38
i32 17, label %38
i32 16, label %38
i32 15, label %38
i32 14, label %47
i32 13, label %57
i32 12, label %66
i32 11, label %75
i32 10, label %84
i32 9, label %93
i32 8, label %102
i32 7, label %111
i32 6, label %111
i32 5, label %121
i32 4, label %130
i32 3, label %139
i32 2, label %148
i32 1, label %157
]
3: ; preds = %2
%4 = getelementptr inbounds i8, i8* %0, i64 26
%5 = load i8, i8* %4
%6 = zext i8 %5 to i64
%7 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %6
%8 = load i16, i16* %7
%9 = zext i16 %8 to i32
%10 = add nsw i32 %9, %1
br label %11
11: ; preds = %2, %2, %3
%12 = phi i32 [ %10, %3 ], [ %1, %2 ], [ %1, %2 ]
%13 = getelementptr inbounds i8, i8* %0, i64 24
%14 = load i8, i8* %13
%15 = zext i8 %14 to i64
%16 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %15
%17 = load i16, i16* %16
%18 = zext i16 %17 to i32
%19 = add nsw i32 %12, %18
br label %20
20: ; preds = %2, %2, %11
%21 = phi i32 [ %19, %11 ], [ %1, %2 ], [ %1, %2 ]
%22 = getelementptr inbounds i8, i8* %0, i64 22
%23 = load i8, i8* %22
%24 = zext i8 %23 to i64
%25 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %24
%26 = load i16, i16* %25
%27 = zext i16 %26 to i32
%28 = add nsw i32 %21, %27
br label %29
29: ; preds = %2, %2, %2, %20
%30 = phi i32 [ %28, %20 ], [ %1, %2 ], [ %1, %2 ], [ %1, %2 ]
%31 = getelementptr inbounds i8, i8* %0, i64 19
%32 = load i8, i8* %31
%33 = zext i8 %32 to i64
%34 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %33
%35 = load i16, i16* %34
%36 = zext i16 %35 to i32
%37 = add nsw i32 %30, %36
br label %38
38: ; preds = %2, %2, %2, %2, %2, %29
%39 = phi i32 [ %37, %29 ], [ %1, %2 ], [ %1, %2 ], [ %1, %2 ], [ %1, %2 ], [ %1, %2 ]
%40 = getelementptr inbounds i8, i8* %0, i64 14
%41 = load i8, i8* %40
%42 = zext i8 %41 to i64
%43 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %42
%44 = load i16, i16* %43
%45 = zext i16 %44 to i32
%46 = add nsw i32 %39, %45
br label %47
47: ; preds = %2, %38
%48 = phi i32 [ %46, %38 ], [ %1, %2 ]
%49 = getelementptr inbounds i8, i8* %0, i64 13
%50 = load i8, i8* %49
%51 = zext i8 %50 to i64
%52 = add nuw nsw i64 %51, 1
%53 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %52
%54 = load i16, i16* %53
%55 = zext i16 %54 to i32
%56 = add nsw i32 %48, %55
br label %57
57: ; preds = %2, %47
%58 = phi i32 [ %56, %47 ], [ %1, %2 ]
%59 = getelementptr inbounds i8, i8* %0, i64 12
%60 = load i8, i8* %59
%61 = zext i8 %60 to i64
%62 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %61
%63 = load i16, i16* %62
%64 = zext i16 %63 to i32
%65 = add nsw i32 %58, %64
br label %66
66: ; preds = %2, %57
%67 = phi i32 [ %65, %57 ], [ %1, %2 ]
%68 = getelementptr inbounds i8, i8* %0, i64 11
%69 = load i8, i8* %68
%70 = zext i8 %69 to i64
%71 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %70
%72 = load i16, i16* %71
%73 = zext i16 %72 to i32
%74 = add nsw i32 %67, %73
br label %75
75: ; preds = %2, %66
%76 = phi i32 [ %74, %66 ], [ %1, %2 ]
%77 = getelementptr inbounds i8, i8* %0, i64 10
%78 = load i8, i8* %77
%79 = zext i8 %78 to i64
%80 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %79
%81 = load i16, i16* %80
%82 = zext i16 %81 to i32
%83 = add nsw i32 %76, %82
br label %84
84: ; preds = %2, %75
%85 = phi i32 [ %83, %75 ], [ %1, %2 ]
%86 = getelementptr inbounds i8, i8* %0, i64 9
%87 = load i8, i8* %86
%88 = zext i8 %87 to i64
%89 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %88
%90 = load i16, i16* %89
%91 = zext i16 %90 to i32
%92 = add nsw i32 %85, %91
br label %93
93: ; preds = %2, %84
%94 = phi i32 [ %92, %84 ], [ %1, %2 ]
%95 = getelementptr inbounds i8, i8* %0, i64 8
%96 = load i8, i8* %95
%97 = zext i8 %96 to i64
%98 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %97
%99 = load i16, i16* %98
%100 = zext i16 %99 to i32
%101 = add nsw i32 %94, %100
br label %102
102: ; preds = %2, %93
%103 = phi i32 [ %101, %93 ], [ %1, %2 ]
%104 = getelementptr inbounds i8, i8* %0, i64 7
%105 = load i8, i8* %104
%106 = zext i8 %105 to i64
%107 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %106
%108 = load i16, i16* %107
%109 = zext i16 %108 to i32
%110 = add nsw i32 %103, %109
br label %111
111: ; preds = %2, %2, %102
%112 = phi i32 [ %110, %102 ], [ %1, %2 ], [ %1, %2 ]
%113 = getelementptr inbounds i8, i8* %0, i64 5
%114 = load i8, i8* %113
%115 = zext i8 %114 to i64
%116 = add nuw nsw i64 %115, 1
%117 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %116
%118 = load i16, i16* %117
%119 = zext i16 %118 to i32
%120 = add nsw i32 %112, %119
br label %121
121: ; preds = %2, %111
%122 = phi i32 [ %120, %111 ], [ %1, %2 ]
%123 = getelementptr inbounds i8, i8* %0, i64 4
%124 = load i8, i8* %123
%125 = zext i8 %124 to i64
%126 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %125
%127 = load i16, i16* %126
%128 = zext i16 %127 to i32
%129 = add nsw i32 %122, %128
br label %130
130: ; preds = %2, %121
%131 = phi i32 [ %129, %121 ], [ %1, %2 ]
%132 = getelementptr inbounds i8, i8* %0, i64 3
%133 = load i8, i8* %132
%134 = zext i8 %133 to i64
%135 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %134
%136 = load i16, i16* %135
%137 = zext i16 %136 to i32
%138 = add nsw i32 %131, %137
br label %139
139: ; preds = %2, %130
%140 = phi i32 [ %138, %130 ], [ %1, %2 ]
%141 = getelementptr inbounds i8, i8* %0, i64 2
%142 = load i8, i8* %141
%143 = zext i8 %142 to i64
%144 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %143
%145 = load i16, i16* %144
%146 = zext i16 %145 to i32
%147 = add nsw i32 %140, %146
br label %148
148: ; preds = %2, %139
%149 = phi i32 [ %147, %139 ], [ %1, %2 ]
%150 = getelementptr inbounds i8, i8* %0, i64 1
%151 = load i8, i8* %150
%152 = zext i8 %151 to i64
%153 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %152
%154 = load i16, i16* %153
%155 = zext i16 %154 to i32
%156 = add nsw i32 %149, %155
br label %157
157: ; preds = %2, %148
%158 = phi i32 [ %156, %148 ], [ %1, %2 ]
%159 = load i8, i8* %0
%160 = zext i8 %159 to i64
%161 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %160
%162 = load i16, i16* %161
%163 = zext i16 %162 to i32
%164 = add nsw i32 %158, %163
%165 = add i32 %1, -1
%166 = zext i32 %165 to i64
%167 = getelementptr inbounds i8, i8* %0, i64 %166
%168 = load i8, i8* %167
%169 = zext i8 %168 to i64
%170 = getelementptr inbounds [257 x i16], [257 x i16]* @hash_keys.asso_values, i64 0, i64 %169
%171 = load i16, i16* %170
%172 = zext i16 %171 to i32
%173 = add nsw i32 %164, %172
ret i32 %173
}