#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ longword;

/* Variables and functions */
int /*<<< orphan*/ abort();
size_t strlen(const char *str) {
  const char *char_ptr;
  const unsigned long int *longword_ptr;
  unsigned long int longword, magic_bits, himagic, lomagic;
  for (char_ptr = str;
       ((unsigned long int)char_ptr & (sizeof(longword) - 1)) != 0; ++char_ptr)
    if (*char_ptr == '\0')
      return char_ptr - str;
  longword_ptr = (unsigned long int *)char_ptr;
  magic_bits = 0x7efefeffL;
  himagic = 0x80808080L;
  lomagic = 0x01010101L;
  if (sizeof(longword) > 4) {
    magic_bits = ((0x7efefefeL << 16) << 16) | 0xfefefeffL;
    himagic = ((himagic << 16) << 16) | himagic;
    lomagic = ((lomagic << 16) << 16) | lomagic;
  }
  if (sizeof(longword) > 8)
    abort();
  for (;;) {
    longword = *longword_ptr++;
    if (((longword - lomagic) & himagic) != 0) {
      const char *cp = (const char *)(longword_ptr - 1);
      if (cp[0] == 0)
        return cp - str;
      if (cp[1] == 0)
        return cp - str + 1;
      if (cp[2] == 0)
        return cp - str + 2;
      if (cp[3] == 0)
        return cp - str + 3;
      if (sizeof(longword) > 4) {
        if (cp[4] == 0)
          return cp - str + 4;
        if (cp[5] == 0)
          return cp - str + 5;
        if (cp[6] == 0)
          return cp - str + 6;
        if (cp[7] == 0)
          return cp - str + 7;
      }
    }
  }
}


x86 assembly (clang, -O0):
<strlen>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
and    $0x7,%rax
cmp    $0x0,%rax
je     115c <strlen+0x5c>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1146 <strlen+0x46>
mov    -0x18(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    %rcx,%rax
mov    %rax,-0x8(%rbp)
jmp    1338 <strlen+0x238>
jmp    114b <strlen+0x4b>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1110 <strlen+0x10>
mov    -0x18(%rbp),%rax
mov    %rax,-0x20(%rbp)
movq   $0x7efefeff,-0x30(%rbp)
7e
mov    $0x80808080,%eax
mov    %rax,-0x38(%rbp)
movq   $0x1010101,-0x40(%rbp)
01
movabs $0x7efefefefefefeff,%rax
fe fe 7e
mov    %rax,-0x30(%rbp)
mov    -0x38(%rbp),%rax
shl    $0x10,%rax
shl    $0x10,%rax
or     -0x38(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x40(%rbp),%rax
shl    $0x10,%rax
shl    $0x10,%rax
or     -0x40(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
sub    -0x40(%rbp),%rax
and    -0x38(%rbp),%rax
cmp    $0x0,%rax
je     1333 <strlen+0x233>
mov    -0x20(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    120f <strlen+0x10f>
mov    -0x48(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    %rcx,%rax
mov    %rax,-0x8(%rbp)
jmp    1338 <strlen+0x238>
mov    -0x48(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x0,%eax
jne    1238 <strlen+0x138>
mov    -0x48(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    %rcx,%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    1338 <strlen+0x238>
mov    -0x48(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
jne    1261 <strlen+0x161>
mov    -0x48(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    %rcx,%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
jmp    1338 <strlen+0x238>
mov    -0x48(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x0,%eax
jne    128a <strlen+0x18a>
mov    -0x48(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    %rcx,%rax
add    $0x3,%rax
mov    %rax,-0x8(%rbp)
jmp    1338 <strlen+0x238>
mov    -0x48(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x0,%eax
jne    12b3 <strlen+0x1b3>
mov    -0x48(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    %rcx,%rax
add    $0x4,%rax
mov    %rax,-0x8(%rbp)
jmp    1338 <strlen+0x238>
mov    -0x48(%rbp),%rax
movsbl 0x5(%rax),%eax
cmp    $0x0,%eax
jne    12dc <strlen+0x1dc>
mov    -0x48(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    %rcx,%rax
add    $0x5,%rax
mov    %rax,-0x8(%rbp)
jmp    1338 <strlen+0x238>
mov    -0x48(%rbp),%rax
movsbl 0x6(%rax),%eax
cmp    $0x0,%eax
jne    1305 <strlen+0x205>
mov    -0x48(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    %rcx,%rax
add    $0x6,%rax
mov    %rax,-0x8(%rbp)
jmp    1338 <strlen+0x238>
mov    -0x48(%rbp),%rax
movsbl 0x7(%rax),%eax
cmp    $0x0,%eax
jne    132e <strlen+0x22e>
mov    -0x48(%rbp),%rax
mov    -0x10(%rbp),%rcx
sub    %rcx,%rax
add    $0x7,%rax
mov    %rax,-0x8(%rbp)
jmp    1338 <strlen+0x238>
jmp    1333 <strlen+0x233>
jmp    11b3 <strlen+0xb3>
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<strlen>:
push   %rbx
mov    %rdi,%rax
test   $0x7,%dil
je     1195 <strlen+0x95>
cmpb   $0x0,(%rdi)
mov    %rdi,%rax
je     121e <strlen+0x11e>
lea    0x1(%rdi),%rax
test   $0x7,%al
je     1195 <strlen+0x95>
cmpb   $0x0,(%rax)
je     121e <strlen+0x11e>
lea    0x2(%rdi),%rax
test   $0x7,%al
je     1195 <strlen+0x95>
cmpb   $0x0,(%rax)
je     121e <strlen+0x11e>
lea    0x3(%rdi),%rax
test   $0x7,%al
je     1195 <strlen+0x95>
cmpb   $0x0,(%rax)
je     121e <strlen+0x11e>
lea    0x4(%rdi),%rax
test   $0x7,%al
je     1195 <strlen+0x95>
cmpb   $0x0,(%rax)
je     121e <strlen+0x11e>
lea    0x5(%rdi),%rax
test   $0x7,%al
je     1195 <strlen+0x95>
cmpb   $0x0,(%rax)
je     121e <strlen+0x11e>
lea    0x6(%rdi),%rax
test   $0x7,%al
je     1195 <strlen+0x95>
cmpb   $0x0,(%rax)
je     121e <strlen+0x11e>
lea    0x7(%rdi),%rax
test   $0x7,%al
je     1195 <strlen+0x95>
cmpb   $0x0,(%rax)
je     121e <strlen+0x11e>
lea    0x8(%rdi),%rax
xor    %ecx,%ecx
movabs $0xfefefefefefefeff,%r11
fe fe fe
movabs $0x8080808080808080,%rsi
80 80 80
movabs $0xff00000000,%r8
movabs $0xff0000000000,%r9
movabs $0xff000000000000,%r10
jmp    11d4 <strlen+0xd4>
nopl   0x0(%rax,%rax,1)
add    $0x8,%rcx
mov    (%rax,%rcx,1),%rdx
lea    (%rdx,%r11,1),%rbx
test   %rsi,%rbx
je     11d0 <strlen+0xd0>
test   %dl,%dl
je     1223 <strlen+0x123>
test   $0xff00,%edx
je     122b <strlen+0x12b>
test   $0xff0000,%edx
je     1237 <strlen+0x137>
test   $0xff000000,%edx
je     1243 <strlen+0x143>
test   %r8,%rdx
je     124f <strlen+0x14f>
test   %r9,%rdx
je     125b <strlen+0x15b>
test   %r10,%rdx
je     1267 <strlen+0x167>
shr    $0x38,%rdx
jne    11d0 <strlen+0xd0>
sub    %rdi,%rax
add    %rcx,%rax
add    $0x7,%rax
pop    %rbx
ret
sub    %rdi,%rax
pop    %rbx
ret
sub    %rdi,%rax
add    %rcx,%rax
pop    %rbx
ret
sub    %rdi,%rax
add    %rcx,%rax
add    $0x1,%rax
pop    %rbx
ret
sub    %rdi,%rax
add    %rcx,%rax
add    $0x2,%rax
pop    %rbx
ret
sub    %rdi,%rax
add    %rcx,%rax
add    $0x3,%rax
pop    %rbx
ret
sub    %rdi,%rax
add    %rcx,%rax
add    $0x4,%rax
pop    %rbx
ret
sub    %rdi,%rax
add    %rcx,%rax
add    $0x5,%rax
pop    %rbx
ret
sub    %rdi,%rax
add    %rcx,%rax
add    $0x6,%rax
pop    %rbx
ret

LLVM IR (-O0):
define i64 @strlen(i8* %0) {
%2 = alloca i64
%3 = alloca i8*
%4 = alloca i8*
%5 = alloca i64*
%6 = alloca i64
%7 = alloca i64
%8 = alloca i64
%9 = alloca i64
%10 = alloca i8*
store i8* %0, i8** %3
%11 = load i8*, i8** %3
store i8* %11, i8** %4
br label %12
12: ; preds = %29, %1
%13 = load i8*, i8** %4
%14 = ptrtoint i8* %13 to i64
%15 = and i64 %14, 7
%16 = icmp ne i64 %15, 0
br i1 %16, label %17, label %32
17: ; preds = %12
%18 = load i8*, i8** %4
%19 = load i8, i8* %18
%20 = sext i8 %19 to i32
%21 = icmp eq i32 %20, 0
br i1 %21, label %22, label %28
22: ; preds = %17
%23 = load i8*, i8** %4
%24 = load i8*, i8** %3
%25 = ptrtoint i8* %23 to i64
%26 = ptrtoint i8* %24 to i64
%27 = sub i64 %25, %26
store i64 %27, i64* %2
br label %163
28: ; preds = %17
br label %29
29: ; preds = %28
%30 = load i8*, i8** %4
%31 = getelementptr inbounds i8, i8* %30, i32 1
store i8* %31, i8** %4
br label %12
32: ; preds = %12
%33 = load i8*, i8** %4
%34 = bitcast i8* %33 to i64*
store i64* %34, i64** %5
store i64 2130640639, i64* %7
store i64 2155905152, i64* %8
store i64 16843009, i64* %9
store i64 9151031864016699135, i64* %7
%35 = load i64, i64* %8
%36 = shl i64 %35, 16
%37 = shl i64 %36, 16
%38 = load i64, i64* %8
%39 = or i64 %37, %38
store i64 %39, i64* %8
%40 = load i64, i64* %9
%41 = shl i64 %40, 16
%42 = shl i64 %41, 16
%43 = load i64, i64* %9
%44 = or i64 %42, %43
store i64 %44, i64* %9
br label %45
45: ; preds = %162, %32
%46 = load i64*, i64** %5
%47 = getelementptr inbounds i64, i64* %46, i32 1
store i64* %47, i64** %5
%48 = load i64, i64* %46
store i64 %48, i64* %6
%49 = load i64, i64* %6
%50 = load i64, i64* %9
%51 = sub i64 %49, %50
%52 = load i64, i64* %8
%53 = and i64 %51, %52
%54 = icmp ne i64 %53, 0
br i1 %54, label %55, label %162
55: ; preds = %45
%56 = load i64*, i64** %5
%57 = getelementptr inbounds i64, i64* %56, i64 -1
%58 = bitcast i64* %57 to i8*
store i8* %58, i8** %10
%59 = load i8*, i8** %10
%60 = getelementptr inbounds i8, i8* %59, i64 0
%61 = load i8, i8* %60
%62 = sext i8 %61 to i32
%63 = icmp eq i32 %62, 0
br i1 %63, label %64, label %70
64: ; preds = %55
%65 = load i8*, i8** %10
%66 = load i8*, i8** %3
%67 = ptrtoint i8* %65 to i64
%68 = ptrtoint i8* %66 to i64
%69 = sub i64 %67, %68
store i64 %69, i64* %2
br label %163
70: ; preds = %55
%71 = load i8*, i8** %10
%72 = getelementptr inbounds i8, i8* %71, i64 1
%73 = load i8, i8* %72
%74 = sext i8 %73 to i32
%75 = icmp eq i32 %74, 0
br i1 %75, label %76, label %83
76: ; preds = %70
%77 = load i8*, i8** %10
%78 = load i8*, i8** %3
%79 = ptrtoint i8* %77 to i64
%80 = ptrtoint i8* %78 to i64
%81 = sub i64 %79, %80
%82 = add nsw i64 %81, 1
store i64 %82, i64* %2
br label %163
83: ; preds = %70
%84 = load i8*, i8** %10
%85 = getelementptr inbounds i8, i8* %84, i64 2
%86 = load i8, i8* %85
%87 = sext i8 %86 to i32
%88 = icmp eq i32 %87, 0
br i1 %88, label %89, label %96
89: ; preds = %83
%90 = load i8*, i8** %10
%91 = load i8*, i8** %3
%92 = ptrtoint i8* %90 to i64
%93 = ptrtoint i8* %91 to i64
%94 = sub i64 %92, %93
%95 = add nsw i64 %94, 2
store i64 %95, i64* %2
br label %163
96: ; preds = %83
%97 = load i8*, i8** %10
%98 = getelementptr inbounds i8, i8* %97, i64 3
%99 = load i8, i8* %98
%100 = sext i8 %99 to i32
%101 = icmp eq i32 %100, 0
br i1 %101, label %102, label %109
102: ; preds = %96
%103 = load i8*, i8** %10
%104 = load i8*, i8** %3
%105 = ptrtoint i8* %103 to i64
%106 = ptrtoint i8* %104 to i64
%107 = sub i64 %105, %106
%108 = add nsw i64 %107, 3
store i64 %108, i64* %2
br label %163
109: ; preds = %96
%110 = load i8*, i8** %10
%111 = getelementptr inbounds i8, i8* %110, i64 4
%112 = load i8, i8* %111
%113 = sext i8 %112 to i32
%114 = icmp eq i32 %113, 0
br i1 %114, label %115, label %122
115: ; preds = %109
%116 = load i8*, i8** %10
%117 = load i8*, i8** %3
%118 = ptrtoint i8* %116 to i64
%119 = ptrtoint i8* %117 to i64
%120 = sub i64 %118, %119
%121 = add nsw i64 %120, 4
store i64 %121, i64* %2
br label %163
122: ; preds = %109
%123 = load i8*, i8** %10
%124 = getelementptr inbounds i8, i8* %123, i64 5
%125 = load i8, i8* %124
%126 = sext i8 %125 to i32
%127 = icmp eq i32 %126, 0
br i1 %127, label %128, label %135
128: ; preds = %122
%129 = load i8*, i8** %10
%130 = load i8*, i8** %3
%131 = ptrtoint i8* %129 to i64
%132 = ptrtoint i8* %130 to i64
%133 = sub i64 %131, %132
%134 = add nsw i64 %133, 5
store i64 %134, i64* %2
br label %163
135: ; preds = %122
%136 = load i8*, i8** %10
%137 = getelementptr inbounds i8, i8* %136, i64 6
%138 = load i8, i8* %137
%139 = sext i8 %138 to i32
%140 = icmp eq i32 %139, 0
br i1 %140, label %141, label %148
141: ; preds = %135
%142 = load i8*, i8** %10
%143 = load i8*, i8** %3
%144 = ptrtoint i8* %142 to i64
%145 = ptrtoint i8* %143 to i64
%146 = sub i64 %144, %145
%147 = add nsw i64 %146, 6
store i64 %147, i64* %2
br label %163
148: ; preds = %135
%149 = load i8*, i8** %10
%150 = getelementptr inbounds i8, i8* %149, i64 7
%151 = load i8, i8* %150
%152 = sext i8 %151 to i32
%153 = icmp eq i32 %152, 0
br i1 %153, label %154, label %161
154: ; preds = %148
%155 = load i8*, i8** %10
%156 = load i8*, i8** %3
%157 = ptrtoint i8* %155 to i64
%158 = ptrtoint i8* %156 to i64
%159 = sub i64 %157, %158
%160 = add nsw i64 %159, 7
store i64 %160, i64* %2
br label %163
161: ; preds = %148
br label %162
162: ; preds = %161, %45
br label %45
163: ; preds = %154, %141, %128, %115, %102, %89, %76, %64, %22
%164 = load i64, i64* %2
ret i64 %164
}

LLVM IR (-O2):
define i64 @strlen(i8* %0) {
%2 = ptrtoint i8* %0 to i64
%3 = and i64 %2, 7
%4 = icmp eq i64 %3, 0
br i1 %4, label %70, label %5
5: ; preds = %1
%6 = load i8, i8* %0
%7 = icmp eq i8 %6, 0
br i1 %7, label %8, label %12
8: ; preds = %65, %57, %49, %41, %33, %25, %17, %5
%9 = phi i8* [ %0, %5 ], [ %13, %17 ], [ %21, %25 ], [ %29, %33 ], [ %37, %41 ], [ %45, %49 ], [ %53, %57 ], [ %61, %65 ]
%10 = ptrtoint i8* %9 to i64
%11 = sub i64 %10, %2
br label %135
12: ; preds = %5
%13 = getelementptr inbounds i8, i8* %0, i64 1
%14 = ptrtoint i8* %13 to i64
%15 = and i64 %14, 7
%16 = icmp eq i64 %15, 0
br i1 %16, label %70, label %17
17: ; preds = %12
%18 = load i8, i8* %13
%19 = icmp eq i8 %18, 0
br i1 %19, label %8, label %20
20: ; preds = %17
%21 = getelementptr inbounds i8, i8* %0, i64 2
%22 = ptrtoint i8* %21 to i64
%23 = and i64 %22, 7
%24 = icmp eq i64 %23, 0
br i1 %24, label %70, label %25
25: ; preds = %20
%26 = load i8, i8* %21
%27 = icmp eq i8 %26, 0
br i1 %27, label %8, label %28
28: ; preds = %25
%29 = getelementptr inbounds i8, i8* %0, i64 3
%30 = ptrtoint i8* %29 to i64
%31 = and i64 %30, 7
%32 = icmp eq i64 %31, 0
br i1 %32, label %70, label %33
33: ; preds = %28
%34 = load i8, i8* %29
%35 = icmp eq i8 %34, 0
br i1 %35, label %8, label %36
36: ; preds = %33
%37 = getelementptr inbounds i8, i8* %0, i64 4
%38 = ptrtoint i8* %37 to i64
%39 = and i64 %38, 7
%40 = icmp eq i64 %39, 0
br i1 %40, label %70, label %41
41: ; preds = %36
%42 = load i8, i8* %37
%43 = icmp eq i8 %42, 0
br i1 %43, label %8, label %44
44: ; preds = %41
%45 = getelementptr inbounds i8, i8* %0, i64 5
%46 = ptrtoint i8* %45 to i64
%47 = and i64 %46, 7
%48 = icmp eq i64 %47, 0
br i1 %48, label %70, label %49
49: ; preds = %44
%50 = load i8, i8* %45
%51 = icmp eq i8 %50, 0
br i1 %51, label %8, label %52
52: ; preds = %49
%53 = getelementptr inbounds i8, i8* %0, i64 6
%54 = ptrtoint i8* %53 to i64
%55 = and i64 %54, 7
%56 = icmp eq i64 %55, 0
br i1 %56, label %70, label %57
57: ; preds = %52
%58 = load i8, i8* %53
%59 = icmp eq i8 %58, 0
br i1 %59, label %8, label %60
60: ; preds = %57
%61 = getelementptr inbounds i8, i8* %0, i64 7
%62 = ptrtoint i8* %61 to i64
%63 = and i64 %62, 7
%64 = icmp eq i64 %63, 0
br i1 %64, label %70, label %65
65: ; preds = %60
%66 = load i8, i8* %61
%67 = icmp eq i8 %66, 0
br i1 %67, label %8, label %68
68: ; preds = %65
%69 = getelementptr inbounds i8, i8* %0, i64 8
br label %70
70: ; preds = %12, %20, %28, %36, %44, %52, %60, %68, %1
%71 = phi i8* [ %0, %1 ], [ %13, %12 ], [ %21, %20 ], [ %29, %28 ], [ %37, %36 ], [ %45, %44 ], [ %53, %52 ], [ %61, %60 ], [ %69, %68 ]
%72 = bitcast i8* %71 to i64*
br label %73
73: ; preds = %130, %70
%74 = phi i64* [ %72, %70 ], [ %75, %130 ]
%75 = getelementptr inbounds i64, i64* %74, i64 1
%76 = load i64, i64* %74
%77 = add i64 %76, -72340172838076673
%78 = and i64 %77, -9187201950435737472
%79 = icmp eq i64 %78, 0
br i1 %79, label %130, label %80
80: ; preds = %73
%81 = trunc i64 %76 to i8
%82 = icmp eq i8 %81, 0
br i1 %82, label %83, label %86
83: ; preds = %80
%84 = ptrtoint i64* %74 to i64
%85 = sub i64 %84, %2
br label %135
86: ; preds = %80
%87 = and i64 %76, 65280
%88 = icmp eq i64 %87, 0
br i1 %88, label %89, label %93
89: ; preds = %86
%90 = ptrtoint i64* %74 to i64
%91 = sub i64 1, %2
%92 = add i64 %91, %90
br label %135
93: ; preds = %86
%94 = and i64 %76, 16711680
%95 = icmp eq i64 %94, 0
br i1 %95, label %96, label %100
96: ; preds = %93
%97 = ptrtoint i64* %74 to i64
%98 = sub i64 2, %2
%99 = add i64 %98, %97
br label %135
100: ; preds = %93
%101 = and i64 %76, 4278190080
%102 = icmp eq i64 %101, 0
br i1 %102, label %103, label %107
103: ; preds = %100
%104 = ptrtoint i64* %74 to i64
%105 = sub i64 3, %2
%106 = add i64 %105, %104
br label %135
107: ; preds = %100
%108 = and i64 %76, 1095216660480
%109 = icmp eq i64 %108, 0
br i1 %109, label %110, label %114
110: ; preds = %107
%111 = ptrtoint i64* %74 to i64
%112 = sub i64 4, %2
%113 = add i64 %112, %111
br label %135
114: ; preds = %107
%115 = and i64 %76, 280375465082880
%116 = icmp eq i64 %115, 0
br i1 %116, label %117, label %121
117: ; preds = %114
%118 = ptrtoint i64* %74 to i64
%119 = sub i64 5, %2
%120 = add i64 %119, %118
br label %135
121: ; preds = %114
%122 = and i64 %76, 71776119061217280
%123 = icmp eq i64 %122, 0
br i1 %123, label %124, label %128
124: ; preds = %121
%125 = ptrtoint i64* %74 to i64
%126 = sub i64 6, %2
%127 = add i64 %126, %125
br label %135
128: ; preds = %121
%129 = icmp ult i64 %76, 72057594037927936
br i1 %129, label %131, label %130
130: ; preds = %128, %73
br label %73
131: ; preds = %128
%132 = ptrtoint i64* %74 to i64
%133 = sub i64 7, %2
%134 = add i64 %133, %132
br label %135
135: ; preds = %83, %89, %96, %103, %110, %117, %124, %131, %8
%136 = phi i64 [ %11, %8 ], [ %85, %83 ], [ %92, %89 ], [ %99, %96 ], [ %106, %103 ], [ %113, %110 ], [ %120, %117 ], [ %127, %124 ], [ %134, %131 ]
ret i64 %136
}