void inspect(struct list_head const *head) {
  struct node const *node;
  unsigned int __cil_tmp3;
  struct list_head *__cil_tmp4;
  unsigned int __cil_tmp5;
  int __cil_tmp6;
  unsigned int __cil_tmp7;
  unsigned int __cil_tmp8;
  unsigned int __cil_tmp9;
  struct list_head *__cil_tmp10;
  unsigned int __cil_tmp11;
  int __cil_tmp12;
  unsigned int __cil_tmp13;
  unsigned int __cil_tmp14;
  struct list_head *__cil_tmp15;
  unsigned int __cil_tmp16;
  struct list_head *__cil_tmp17;
  unsigned int __cil_tmp18;
  int __cil_tmp19;
  unsigned int __cil_tmp20;
  unsigned int __cil_tmp21;
  unsigned int __cil_tmp22;
  struct list_head *__cil_tmp23;
  unsigned int __cil_tmp24;
  int __cil_tmp25;
  struct node *__cil_tmp26;
  unsigned int __cil_tmp27;
  unsigned int __cil_tmp28;
  struct list_head *__cil_tmp29;
  unsigned long __cil_tmp30;
  char *__cil_tmp31;
  char *__cil_tmp32;
  struct node *__cil_tmp33;
  unsigned int __cil_tmp34;
  unsigned int __cil_tmp35;
  struct list_head const *__cil_tmp36;
  unsigned int __cil_tmp37;
  unsigned int __cil_tmp38;
  unsigned int __cil_tmp39;
  struct list_head *__cil_tmp40;
  unsigned int __cil_tmp41;
  int __cil_tmp42;
  unsigned int __cil_tmp43;
  unsigned int __cil_tmp44;
  struct list_head const *__cil_tmp45;
  unsigned int __cil_tmp46;
  unsigned int __cil_tmp47;
  unsigned int __cil_tmp48;
  unsigned int __cil_tmp49;
  struct list_head *__cil_tmp50;
  unsigned int __cil_tmp51;
  int __cil_tmp52;
  unsigned int __cil_tmp53;
  unsigned int __cil_tmp54;
  struct list_head const *__cil_tmp55;
  unsigned int __cil_tmp56;
  unsigned int __cil_tmp57;
  unsigned int __cil_tmp58;
  struct list_head *__cil_tmp59;
  unsigned int __cil_tmp60;
  int __cil_tmp61;
  unsigned int __cil_tmp62;
  unsigned int __cil_tmp63;
  struct list_head const *__cil_tmp64;
  unsigned int __cil_tmp65;
  unsigned int __cil_tmp66;
  unsigned int __cil_tmp67;
  unsigned int __cil_tmp68;
  struct list_head *__cil_tmp69;
  unsigned int __cil_tmp70;
  int __cil_tmp71;
  struct node const *__cil_tmp72;
  unsigned int __cil_tmp73;
  unsigned int __cil_tmp74;
  int __cil_tmp75;
  unsigned int __cil_tmp76;
  unsigned int __cil_tmp77;
  struct list_head const *__cil_tmp78;
  struct node const *__cil_tmp79;
  unsigned int __cil_tmp80;
  unsigned int __cil_tmp81;
  int __cil_tmp82;
  int const *__cil_tmp83;
  struct node const *__cil_tmp84;
  unsigned int __cil_tmp85;
  unsigned int __cil_tmp86;
  int __cil_tmp87;
  unsigned int __cil_tmp88;
  unsigned int __cil_tmp89;
  struct list_head *__cil_tmp90;
  unsigned int __cil_tmp91;
  unsigned int __cil_tmp92;
  struct list_head *__cil_tmp93;
  unsigned int __cil_tmp94;
  unsigned int __cil_tmp95;
  int __cil_tmp96;
  unsigned int __cil_tmp97;
  unsigned int __cil_tmp98;
  unsigned int __cil_tmp99;
  struct list_head *__cil_tmp100;
  struct list_head *__cil_tmp101;
  unsigned int __cil_tmp102;
  unsigned int __cil_tmp103;
  int __cil_tmp104;
  struct list_head *__cil_tmp105;
  unsigned int __cil_tmp106;
  unsigned int __cil_tmp107;
  unsigned int __cil_tmp108;
  struct list_head const *__cil_tmp109;
  unsigned int __cil_tmp110;
  struct list_head *__cil_tmp111;
  unsigned int __cil_tmp112;
  struct node *__cil_tmp113;
  unsigned int __cil_tmp114;
  unsigned int __cil_tmp115;
  struct list_head *__cil_tmp116;
  unsigned long __cil_tmp117;
  char *__cil_tmp118;
  char *__cil_tmp119;
  struct node *__cil_tmp120;
  unsigned int __cil_tmp121;
  int __cil_tmp122;
  {
    {
      while (1) {
      while_0_continue:;
        if (!head) {
          { fail(); }
        } else {
        }
        goto while_0_break;
      }
    while_0_break:;
    }
    {
      while (1) {
      while_1_continue:;
        {
          __cil_tmp3 = (unsigned int)head;
          __cil_tmp4 = *((struct list_head *const *)head);
          __cil_tmp5 = (unsigned int)__cil_tmp4;
          __cil_tmp6 = __cil_tmp5 != __cil_tmp3;
          if (!__cil_tmp6) {
            { fail(); }
          } else {
          }
        }
        goto while_1_break;
      }
    while_1_break:;
    }
    {
      while (1) {
      while_2_continue:;
        {
          __cil_tmp7 = (unsigned int)head;
          __cil_tmp8 = (unsigned int)head;
          __cil_tmp9 = __cil_tmp8 + 4;
          __cil_tmp10 = *((struct list_head *const *)__cil_tmp9);
          __cil_tmp11 = (unsigned int)__cil_tmp10;
          __cil_tmp12 = __cil_tmp11 != __cil_tmp7;
          if (!__cil_tmp12) {
            { fail(); }
          } else {
          }
        }
        goto while_2_break;
      }
    while_2_break:;
    }
    __cil_tmp13 = (unsigned int)head;
    __cil_tmp14 = __cil_tmp13 + 4;
    __cil_tmp15 = *((struct list_head *const *)__cil_tmp14);
    head = (struct list_head const *)__cil_tmp15;
    {
      while (1) {
      while_3_continue:;
        if (!head) {
          { fail(); }
        } else {
        }
        goto while_3_break;
      }
    while_3_break:;
    }
    {
      while (1) {
      while_4_continue:;
        {
          __cil_tmp16 = (unsigned int)head;
          __cil_tmp17 = *((struct list_head *const *)head);
          __cil_tmp18 = (unsigned int)__cil_tmp17;
          __cil_tmp19 = __cil_tmp18 != __cil_tmp16;
          if (!__cil_tmp19) {
            { fail(); }
          } else {
          }
        }
        goto while_4_break;
      }
    while_4_break:;
    }
    {
      while (1) {
      while_5_continue:;
        {
          __cil_tmp20 = (unsigned int)head;
          __cil_tmp21 = (unsigned int)head;
          __cil_tmp22 = __cil_tmp21 + 4;
          __cil_tmp23 = *((struct list_head *const *)__cil_tmp22);
          __cil_tmp24 = (unsigned int)__cil_tmp23;
          __cil_tmp25 = __cil_tmp24 != __cil_tmp20;
          if (!__cil_tmp25) {
            { fail(); }
          } else {
          }
        }
        goto while_5_break;
      }
    while_5_break:;
    }
    __cil_tmp26 = (struct node *)0;
    __cil_tmp27 = (unsigned int)__cil_tmp26;
    __cil_tmp28 = __cil_tmp27 + 4;
    __cil_tmp29 = (struct list_head *)__cil_tmp28;
    __cil_tmp30 = (unsigned long)__cil_tmp29;
    __cil_tmp31 = (char *)head;
    __cil_tmp32 = __cil_tmp31 - __cil_tmp30;
    __cil_tmp33 = (struct node *)__cil_tmp32;
    node = (struct node const *)__cil_tmp33;
    {
      while (1) {
      while_6_continue:;
        if (!node) {
          { fail(); }
        } else {
        }
        goto while_6_break;
      }
    while_6_break:;
    }
    {
      while (1) {
      while_7_continue:;
        {
          __cil_tmp34 = (unsigned int)node;
          __cil_tmp35 = __cil_tmp34 + 12;
          __cil_tmp36 = (struct list_head const *)__cil_tmp35;
          __cil_tmp37 = (unsigned int)__cil_tmp36;
          __cil_tmp38 = (unsigned int)node;
          __cil_tmp39 = __cil_tmp38 + 12;
          __cil_tmp40 = *((struct list_head *const *)__cil_tmp39);
          __cil_tmp41 = (unsigned int)__cil_tmp40;
          __cil_tmp42 = __cil_tmp41 == __cil_tmp37;
          if (!__cil_tmp42) {
            { fail(); }
          } else {
          }
        }
        goto while_7_break;
      }
    while_7_break:;
    }
    {
      while (1) {
      while_8_continue:;
        {
          __cil_tmp43 = (unsigned int)node;
          __cil_tmp44 = __cil_tmp43 + 12;
          __cil_tmp45 = (struct list_head const *)__cil_tmp44;
          __cil_tmp46 = (unsigned int)__cil_tmp45;
          __cil_tmp47 = 12 + 4;
          __cil_tmp48 = (unsigned int)node;
          __cil_tmp49 = __cil_tmp48 + __cil_tmp47;
          __cil_tmp50 = *((struct list_head *const *)__cil_tmp49);
          __cil_tmp51 = (unsigned int)__cil_tmp50;
          __cil_tmp52 = __cil_tmp51 == __cil_tmp46;
          if (!__cil_tmp52) {
            { fail(); }
          } else {
          }
        }
        goto while_8_break;
      }
    while_8_break:;
    }
    {
      while (1) {
      while_9_continue:;
        {
          __cil_tmp53 = (unsigned int)node;
          __cil_tmp54 = __cil_tmp53 + 4;
          __cil_tmp55 = (struct list_head const *)__cil_tmp54;
          __cil_tmp56 = (unsigned int)__cil_tmp55;
          __cil_tmp57 = (unsigned int)node;
          __cil_tmp58 = __cil_tmp57 + 12;
          __cil_tmp59 = *((struct list_head *const *)__cil_tmp58);
          __cil_tmp60 = (unsigned int)__cil_tmp59;
          __cil_tmp61 = __cil_tmp60 != __cil_tmp56;
          if (!__cil_tmp61) {
            { fail(); }
          } else {
          }
        }
        goto while_9_break;
      }
    while_9_break:;
    }
    {
      while (1) {
      while_10_continue:;
        {
          __cil_tmp62 = (unsigned int)node;
          __cil_tmp63 = __cil_tmp62 + 4;
          __cil_tmp64 = (struct list_head const *)__cil_tmp63;
          __cil_tmp65 = (unsigned int)__cil_tmp64;
          __cil_tmp66 = 12 + 4;
          __cil_tmp67 = (unsigned int)node;
          __cil_tmp68 = __cil_tmp67 + __cil_tmp66;
          __cil_tmp69 = *((struct list_head *const *)__cil_tmp68);
          __cil_tmp70 = (unsigned int)__cil_tmp69;
          __cil_tmp71 = __cil_tmp70 != __cil_tmp65;
          if (!__cil_tmp71) {
            { fail(); }
          } else {
          }
        }
        goto while_10_break;
      }
    while_10_break:;
    }
    {
      while (1) {
      while_11_continue:;
        {
          __cil_tmp72 = (struct node const *)head;
          __cil_tmp73 = (unsigned int)__cil_tmp72;
          __cil_tmp74 = (unsigned int)node;
          __cil_tmp75 = __cil_tmp74 != __cil_tmp73;
          if (!__cil_tmp75) {
            { fail(); }
          } else {
          }
        }
        goto while_11_break;
      }
    while_11_break:;
    }
    {
      while (1) {
      while_12_continue:;
        {
          __cil_tmp76 = (unsigned int)node;
          __cil_tmp77 = __cil_tmp76 + 4;
          __cil_tmp78 = (struct list_head const *)__cil_tmp77;
          __cil_tmp79 = (struct node const *)__cil_tmp78;
          __cil_tmp80 = (unsigned int)__cil_tmp79;
          __cil_tmp81 = (unsigned int)node;
          __cil_tmp82 = __cil_tmp81 != __cil_tmp80;
          if (!__cil_tmp82) {
            { fail(); }
          } else {
          }
        }
        goto while_12_break;
      }
    while_12_break:;
    }
    {
      while (1) {
      while_13_continue:;
        {
          __cil_tmp83 = (int const *)node;
          __cil_tmp84 = (struct node const *)__cil_tmp83;
          __cil_tmp85 = (unsigned int)__cil_tmp84;
          __cil_tmp86 = (unsigned int)node;
          __cil_tmp87 = __cil_tmp86 == __cil_tmp85;
          if (!__cil_tmp87) {
            { fail(); }
          } else {
          }
        }
        goto while_13_break;
      }
    while_13_break:;
    }
    {
      while (1) {
      while_14_continue:;
        {
          __cil_tmp88 = (unsigned int)node;
          __cil_tmp89 = __cil_tmp88 + 4;
          __cil_tmp90 = *((struct list_head *const *)__cil_tmp89);
          __cil_tmp91 = (unsigned int)__cil_tmp90;
          __cil_tmp92 = __cil_tmp91 + 4;
          __cil_tmp93 = *((struct list_head **)__cil_tmp92);
          __cil_tmp94 = (unsigned int)__cil_tmp93;
          __cil_tmp95 = (unsigned int)head;
          __cil_tmp96 = __cil_tmp95 == __cil_tmp94;
          if (!__cil_tmp96) {
            { fail(); }
          } else {
          }
        }
        goto while_14_break;
      }
    while_14_break:;
    }
    {
      while (1) {
      while_15_continue:;
        {
          __cil_tmp97 = 4 + 4;
          __cil_tmp98 = (unsigned int)node;
          __cil_tmp99 = __cil_tmp98 + __cil_tmp97;
          __cil_tmp100 = *((struct list_head *const *)__cil_tmp99);
          __cil_tmp101 = *((struct list_head **)__cil_tmp100);
          __cil_tmp102 = (unsigned int)__cil_tmp101;
          __cil_tmp103 = (unsigned int)head;
          __cil_tmp104 = __cil_tmp103 == __cil_tmp102;
          if (!__cil_tmp104) {
            { fail(); }
          } else {
          }
        }
        goto while_15_break;
      }
    while_15_break:;
    }
    __cil_tmp105 = *((struct list_head *const *)head);
    head = (struct list_head const *)__cil_tmp105;
    {
      while (1) {
      while_16_continue:;
        {
          __cil_tmp106 = (unsigned int)head;
          __cil_tmp107 = (unsigned int)node;
          __cil_tmp108 = __cil_tmp107 + 4;
          __cil_tmp109 = (struct list_head const *)__cil_tmp108;
          __cil_tmp110 = (unsigned int)__cil_tmp109;
          if (__cil_tmp110 != __cil_tmp106) {
          } else {
            goto while_16_break;
          }
        }
        __cil_tmp111 = *((struct list_head *const *)head);
        head = (struct list_head const *)__cil_tmp111;
      }
    while_16_break:;
    }
    {
      while (1) {
      while_17_continue:;
        {
          __cil_tmp112 = (unsigned int)node;
          __cil_tmp113 = (struct node *)0;
          __cil_tmp114 = (unsigned int)__cil_tmp113;
          __cil_tmp115 = __cil_tmp114 + 4;
          __cil_tmp116 = (struct list_head *)__cil_tmp115;
          __cil_tmp117 = (unsigned long)__cil_tmp116;
          __cil_tmp118 = (char *)head;
          __cil_tmp119 = __cil_tmp118 - __cil_tmp117;
          __cil_tmp120 = (struct node *)__cil_tmp119;
          __cil_tmp121 = (unsigned int)__cil_tmp120;
          __cil_tmp122 = __cil_tmp121 == __cil_tmp112;
          if (!__cil_tmp122) {
            { fail(); }
          } else {
          }
        }
        goto while_17_break;
      }
    while_17_break:;
    }
    return;
  }
}


x86 assembly (clang, -O0):
<inspect>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2c0,%rsp
mov    %rdi,-0x8(%rbp)
jmp    1124 <inspect+0x14>
cmpq   $0x0,-0x8(%rbp)
jne    113b <inspect+0x2b>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    1140 <inspect+0x30>
jmp    1140 <inspect+0x30>
jmp    1145 <inspect+0x35>
jmp    114a <inspect+0x3a>
jmp    114f <inspect+0x3f>
mov    -0x8(%rbp),%rax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x14(%rbp),%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x0,-0x28(%rbp)
jne    118f <inspect+0x7f>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    1194 <inspect+0x84>
jmp    1194 <inspect+0x84>
jmp    1199 <inspect+0x89>
jmp    119e <inspect+0x8e>
jmp    11a3 <inspect+0x93>
mov    -0x8(%rbp),%rax
mov    %eax,-0x2c(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    (%rax),%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x2c(%rbp),%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x48(%rbp)
cmpl   $0x0,-0x48(%rbp)
jne    11f2 <inspect+0xe2>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    11f7 <inspect+0xe7>
jmp    11f7 <inspect+0xe7>
jmp    11fc <inspect+0xec>
mov    -0x8(%rbp),%rax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%eax
mov    (%rax),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1223 <inspect+0x113>
cmpq   $0x0,-0x8(%rbp)
jne    123a <inspect+0x12a>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    123f <inspect+0x12f>
jmp    123f <inspect+0x12f>
jmp    1244 <inspect+0x134>
jmp    1249 <inspect+0x139>
jmp    124e <inspect+0x13e>
mov    -0x8(%rbp),%rax
mov    %eax,-0x5c(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
mov    %eax,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0x5c(%rbp),%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x70(%rbp)
cmpl   $0x0,-0x70(%rbp)
jne    128e <inspect+0x17e>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    1293 <inspect+0x183>
jmp    1293 <inspect+0x183>
jmp    1298 <inspect+0x188>
jmp    129d <inspect+0x18d>
jmp    12a2 <inspect+0x192>
mov    -0x8(%rbp),%rax
mov    %eax,-0x74(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0x78(%rbp)
mov    -0x78(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
mov    (%rax),%rax
mov    %rax,-0x88(%rbp)
mov    -0x88(%rbp),%rax
mov    %eax,-0x8c(%rbp)
mov    -0x8c(%rbp),%eax
cmp    -0x74(%rbp),%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x90(%rbp)
cmpl   $0x0,-0x90(%rbp)
jne    1303 <inspect+0x1f3>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    1308 <inspect+0x1f8>
jmp    1308 <inspect+0x1f8>
jmp    130d <inspect+0x1fd>
movq   $0x0,-0x98(%rbp)
mov    -0x98(%rbp),%rax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
mov    %rax,-0xa8(%rbp)
mov    -0xa8(%rbp),%rax
mov    %rax,-0xb0(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
xor    %ecx,%ecx
sub    -0xb0(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0xc0(%rbp)
mov    -0xc0(%rbp),%rax
mov    %rax,-0xc8(%rbp)
mov    -0xc8(%rbp),%rax
mov    %rax,-0x10(%rbp)
jmp    1392 <inspect+0x282>
cmpq   $0x0,-0x10(%rbp)
jne    13a9 <inspect+0x299>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    13ae <inspect+0x29e>
jmp    13ae <inspect+0x29e>
jmp    13b3 <inspect+0x2a3>
jmp    13b8 <inspect+0x2a8>
jmp    13bd <inspect+0x2ad>
mov    -0x10(%rbp),%rax
mov    %eax,-0xcc(%rbp)
mov    -0xcc(%rbp),%eax
add    $0xc,%eax
mov    %eax,-0xd0(%rbp)
mov    -0xd0(%rbp),%eax
mov    %rax,-0xd8(%rbp)
mov    -0xd8(%rbp),%rax
mov    %eax,-0xdc(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0xe0(%rbp)
mov    -0xe0(%rbp),%eax
add    $0xc,%eax
mov    %eax,-0xe4(%rbp)
mov    -0xe4(%rbp),%eax
mov    (%rax),%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
cmp    -0xdc(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0xf8(%rbp)
cmpl   $0x0,-0xf8(%rbp)
jne    1459 <inspect+0x349>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    145e <inspect+0x34e>
jmp    145e <inspect+0x34e>
jmp    1463 <inspect+0x353>
jmp    1468 <inspect+0x358>
jmp    146d <inspect+0x35d>
mov    -0x10(%rbp),%rax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
add    $0xc,%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
mov    %rax,-0x108(%rbp)
mov    -0x108(%rbp),%rax
mov    %eax,-0x10c(%rbp)
movl   $0x10,-0x110(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x114(%rbp)
mov    -0x114(%rbp),%eax
add    -0x110(%rbp),%eax
mov    %eax,-0x118(%rbp)
mov    -0x118(%rbp),%eax
mov    (%rax),%rax
mov    %rax,-0x120(%rbp)
mov    -0x120(%rbp),%rax
mov    %eax,-0x124(%rbp)
mov    -0x124(%rbp),%eax
cmp    -0x10c(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x128(%rbp)
cmpl   $0x0,-0x128(%rbp)
jne    1516 <inspect+0x406>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    151b <inspect+0x40b>
jmp    151b <inspect+0x40b>
jmp    1520 <inspect+0x410>
jmp    1525 <inspect+0x415>
jmp    152a <inspect+0x41a>
mov    -0x10(%rbp),%rax
mov    %eax,-0x12c(%rbp)
mov    -0x12c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x130(%rbp)
mov    -0x130(%rbp),%eax
mov    %rax,-0x138(%rbp)
mov    -0x138(%rbp),%rax
mov    %eax,-0x13c(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x140(%rbp)
mov    -0x140(%rbp),%eax
add    $0xc,%eax
mov    %eax,-0x144(%rbp)
mov    -0x144(%rbp),%eax
mov    (%rax),%rax
mov    %rax,-0x150(%rbp)
mov    -0x150(%rbp),%rax
mov    %eax,-0x154(%rbp)
mov    -0x154(%rbp),%eax
cmp    -0x13c(%rbp),%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x158(%rbp)
cmpl   $0x0,-0x158(%rbp)
jne    15c6 <inspect+0x4b6>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    15cb <inspect+0x4bb>
jmp    15cb <inspect+0x4bb>
jmp    15d0 <inspect+0x4c0>
jmp    15d5 <inspect+0x4c5>
jmp    15da <inspect+0x4ca>
mov    -0x10(%rbp),%rax
mov    %eax,-0x15c(%rbp)
mov    -0x15c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x160(%rbp)
mov    -0x160(%rbp),%eax
mov    %rax,-0x168(%rbp)
mov    -0x168(%rbp),%rax
mov    %eax,-0x16c(%rbp)
movl   $0x10,-0x170(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x174(%rbp)
mov    -0x174(%rbp),%eax
add    -0x170(%rbp),%eax
mov    %eax,-0x178(%rbp)
mov    -0x178(%rbp),%eax
mov    (%rax),%rax
mov    %rax,-0x180(%rbp)
mov    -0x180(%rbp),%rax
mov    %eax,-0x184(%rbp)
mov    -0x184(%rbp),%eax
cmp    -0x16c(%rbp),%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x188(%rbp)
cmpl   $0x0,-0x188(%rbp)
jne    1683 <inspect+0x573>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    1688 <inspect+0x578>
jmp    1688 <inspect+0x578>
jmp    168d <inspect+0x57d>
jmp    1692 <inspect+0x582>
jmp    1697 <inspect+0x587>
mov    -0x8(%rbp),%rax
mov    %rax,-0x190(%rbp)
mov    -0x190(%rbp),%rax
mov    %eax,-0x194(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x198(%rbp)
mov    -0x198(%rbp),%eax
cmp    -0x194(%rbp),%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x19c(%rbp)
cmpl   $0x0,-0x19c(%rbp)
jne    16ec <inspect+0x5dc>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    16f1 <inspect+0x5e1>
jmp    16f1 <inspect+0x5e1>
jmp    16f6 <inspect+0x5e6>
jmp    16fb <inspect+0x5eb>
jmp    1700 <inspect+0x5f0>
mov    -0x10(%rbp),%rax
mov    %eax,-0x1a0(%rbp)
mov    -0x1a0(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x1a4(%rbp)
mov    -0x1a4(%rbp),%eax
mov    %rax,-0x1b0(%rbp)
mov    -0x1b0(%rbp),%rax
mov    %rax,-0x1b8(%rbp)
mov    -0x1b8(%rbp),%rax
mov    %eax,-0x1bc(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x1c0(%rbp)
mov    -0x1c0(%rbp),%eax
cmp    -0x1bc(%rbp),%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x1c4(%rbp)
cmpl   $0x0,-0x1c4(%rbp)
jne    177e <inspect+0x66e>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    1783 <inspect+0x673>
jmp    1783 <inspect+0x673>
jmp    1788 <inspect+0x678>
jmp    178d <inspect+0x67d>
jmp    1792 <inspect+0x682>
mov    -0x10(%rbp),%rax
mov    %rax,-0x1d0(%rbp)
mov    -0x1d0(%rbp),%rax
mov    %rax,-0x1d8(%rbp)
mov    -0x1d8(%rbp),%rax
mov    %eax,-0x1dc(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x1e0(%rbp)
mov    -0x1e0(%rbp),%eax
cmp    -0x1dc(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x1e4(%rbp)
cmpl   $0x0,-0x1e4(%rbp)
jne    17f5 <inspect+0x6e5>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    17fa <inspect+0x6ea>
jmp    17fa <inspect+0x6ea>
jmp    17ff <inspect+0x6ef>
jmp    1804 <inspect+0x6f4>
jmp    1809 <inspect+0x6f9>
mov    -0x10(%rbp),%rax
mov    %eax,-0x1e8(%rbp)
mov    -0x1e8(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x1ec(%rbp)
mov    -0x1ec(%rbp),%eax
mov    (%rax),%rax
mov    %rax,-0x1f8(%rbp)
mov    -0x1f8(%rbp),%rax
mov    %eax,-0x1fc(%rbp)
mov    -0x1fc(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x200(%rbp)
mov    -0x200(%rbp),%eax
mov    (%rax),%rax
mov    %rax,-0x208(%rbp)
mov    -0x208(%rbp),%rax
mov    %eax,-0x20c(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0x210(%rbp)
mov    -0x210(%rbp),%eax
cmp    -0x20c(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x214(%rbp)
cmpl   $0x0,-0x214(%rbp)
jne    18a8 <inspect+0x798>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    18ad <inspect+0x79d>
jmp    18ad <inspect+0x79d>
jmp    18b2 <inspect+0x7a2>
jmp    18b7 <inspect+0x7a7>
jmp    18bc <inspect+0x7ac>
movl   $0x8,-0x218(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x21c(%rbp)
mov    -0x21c(%rbp),%eax
add    -0x218(%rbp),%eax
mov    %eax,-0x220(%rbp)
mov    -0x220(%rbp),%eax
mov    (%rax),%rax
mov    %rax,-0x228(%rbp)
mov    -0x228(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x230(%rbp)
mov    -0x230(%rbp),%rax
mov    %eax,-0x234(%rbp)
mov    -0x8(%rbp),%rax
mov    %eax,-0x238(%rbp)
mov    -0x238(%rbp),%eax
cmp    -0x234(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x23c(%rbp)
cmpl   $0x0,-0x23c(%rbp)
jne    194d <inspect+0x83d>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    1952 <inspect+0x842>
jmp    1952 <inspect+0x842>
jmp    1957 <inspect+0x847>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x248(%rbp)
mov    -0x248(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1975 <inspect+0x865>
mov    -0x8(%rbp),%rax
mov    %eax,-0x24c(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x250(%rbp)
mov    -0x250(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x254(%rbp)
mov    -0x254(%rbp),%eax
mov    %rax,-0x260(%rbp)
mov    -0x260(%rbp),%rax
mov    %eax,-0x264(%rbp)
mov    -0x264(%rbp),%eax
cmp    -0x24c(%rbp),%eax
je     19c9 <inspect+0x8b9>
jmp    19ce <inspect+0x8be>
jmp    19ec <inspect+0x8dc>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x270(%rbp)
mov    -0x270(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1970 <inspect+0x860>
jmp    19f1 <inspect+0x8e1>
jmp    19f6 <inspect+0x8e6>
mov    -0x10(%rbp),%rax
mov    %eax,-0x274(%rbp)
movq   $0x0,-0x280(%rbp)
mov    -0x280(%rbp),%rax
mov    %eax,-0x284(%rbp)
mov    -0x284(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x288(%rbp)
mov    -0x288(%rbp),%eax
mov    %rax,-0x290(%rbp)
mov    -0x290(%rbp),%rax
mov    %rax,-0x298(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x2a0(%rbp)
mov    -0x2a0(%rbp),%rax
xor    %ecx,%ecx
sub    -0x298(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0x2a8(%rbp)
mov    -0x2a8(%rbp),%rax
mov    %rax,-0x2b0(%rbp)
mov    -0x2b0(%rbp),%rax
mov    %eax,-0x2b4(%rbp)
mov    -0x2b4(%rbp),%eax
cmp    -0x274(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x2b8(%rbp)
cmpl   $0x0,-0x2b8(%rbp)
jne    1ab5 <inspect+0x9a5>
mov    $0x0,%al
call   1030 <fail@plt>
jmp    1aba <inspect+0x9aa>
jmp    1aba <inspect+0x9aa>
jmp    1abf <inspect+0x9af>
add    $0x2c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<inspect>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rdi,%r15
test   %rdi,%rdi
je     1251 <inspect+0x141>
cmp    %r15d,(%r15)
jne    1131 <inspect+0x21>
xor    %eax,%eax
call   1030 <fail@plt>
mov    %r15d,%ebx
add    $0x4,%ebx
mov    (%rbx),%r14
cmp    %r15d,%r14d
je     1219 <inspect+0x109>
test   %r14,%r14
je     122c <inspect+0x11c>
cmp    %r14d,(%r14)
jne    1158 <inspect+0x48>
xor    %eax,%eax
call   1030 <fail@plt>
lea    0x4(%r14),%eax
cmp    %r14d,(%rax)
jne    1168 <inspect+0x58>
xor    %eax,%eax
call   1030 <fail@plt>
lea    -0x4(%r14),%r15
lea    0x8(%r14),%rbx
mov    %ebx,%r12d
cmp    %ebx,(%r12)
je     1180 <inspect+0x70>
xor    %eax,%eax
call   1030 <fail@plt>
lea    0x10(%r15),%r13d
cmp    %ebx,0x0(%r13)
je     1191 <inspect+0x81>
xor    %eax,%eax
call   1030 <fail@plt>
lea    0x4(%r15),%rbx
cmp    %ebx,(%r12)
jne    11a2 <inspect+0x92>
xor    %eax,%eax
call   1030 <fail@plt>
cmp    %ebx,0x0(%r13)
jne    11af <inspect+0x9f>
xor    %eax,%eax
call   1030 <fail@plt>
mov    %ebx,%r12d
cmp    %r14d,%r15d
jne    11be <inspect+0xae>
xor    %eax,%eax
call   1030 <fail@plt>
cmp    %ebx,%r15d
jne    11ca <inspect+0xba>
xor    %eax,%eax
call   1030 <fail@plt>
mov    (%r12),%eax
add    $0x4,%eax
cmp    (%rax),%r14d
je     11dd <inspect+0xcd>
xor    %eax,%eax
call   1030 <fail@plt>
mov    %r15d,%eax
add    $0x8,%eax
mov    (%rax),%rax
cmp    (%rax),%r14d
je     11f2 <inspect+0xe2>
xor    %eax,%eax
call   1030 <fail@plt>
mov    (%r14),%rax
cmp    %eax,%ebx
je     1207 <inspect+0xf7>
nopl   0x0(%rax)
mov    (%rax),%rax
cmp    %eax,%ebx
jne    1200 <inspect+0xf0>
add    $0xfffffffc,%eax
cmp    %r15d,%eax
jne    1241 <inspect+0x131>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret
xor    %eax,%eax
call   1030 <fail@plt>
mov    (%rbx),%r14
test   %r14,%r14
jne    114c <inspect+0x3c>
xor    %eax,%eax
call   1030 <fail@plt>
cmp    %r14d,(%r14)
je     1151 <inspect+0x41>
jmp    1158 <inspect+0x48>
xor    %eax,%eax
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
jmp    1030 <fail@plt>
xor    %eax,%eax
call   1030 <fail@plt>
cmp    %r15d,(%r15)
je     112a <inspect+0x1a>
jmp    1131 <inspect+0x21>

LLVM IR (-O0):
%struct.list_head = type opaque
%struct.node = type opaque
define void @inspect(%struct.list_head* %0) {
%2 = alloca %struct.list_head*
%3 = alloca %struct.node*
%4 = alloca i32
%5 = alloca %struct.list_head*
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca %struct.list_head*
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca %struct.list_head*
%17 = alloca i32
%18 = alloca %struct.list_head*
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca %struct.list_head*
%25 = alloca i32
%26 = alloca i32
%27 = alloca %struct.node*
%28 = alloca i32
%29 = alloca i32
%30 = alloca %struct.list_head*
%31 = alloca i64
%32 = alloca i8*
%33 = alloca i8*
%34 = alloca %struct.node*
%35 = alloca i32
%36 = alloca i32
%37 = alloca %struct.list_head*
%38 = alloca i32
%39 = alloca i32
%40 = alloca i32
%41 = alloca %struct.list_head*
%42 = alloca i32
%43 = alloca i32
%44 = alloca i32
%45 = alloca i32
%46 = alloca %struct.list_head*
%47 = alloca i32
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32
%51 = alloca %struct.list_head*
%52 = alloca i32
%53 = alloca i32
%54 = alloca i32
%55 = alloca i32
%56 = alloca %struct.list_head*
%57 = alloca i32
%58 = alloca i32
%59 = alloca i32
%60 = alloca %struct.list_head*
%61 = alloca i32
%62 = alloca i32
%63 = alloca i32
%64 = alloca i32
%65 = alloca %struct.list_head*
%66 = alloca i32
%67 = alloca i32
%68 = alloca i32
%69 = alloca i32
%70 = alloca %struct.list_head*
%71 = alloca i32
%72 = alloca i32
%73 = alloca %struct.node*
%74 = alloca i32
%75 = alloca i32
%76 = alloca i32
%77 = alloca i32
%78 = alloca i32
%79 = alloca %struct.list_head*
%80 = alloca %struct.node*
%81 = alloca i32
%82 = alloca i32
%83 = alloca i32
%84 = alloca i32*
%85 = alloca %struct.node*
%86 = alloca i32
%87 = alloca i32
%88 = alloca i32
%89 = alloca i32
%90 = alloca i32
%91 = alloca %struct.list_head*
%92 = alloca i32
%93 = alloca i32
%94 = alloca %struct.list_head*
%95 = alloca i32
%96 = alloca i32
%97 = alloca i32
%98 = alloca i32
%99 = alloca i32
%100 = alloca i32
%101 = alloca %struct.list_head*
%102 = alloca %struct.list_head*
%103 = alloca i32
%104 = alloca i32
%105 = alloca i32
%106 = alloca %struct.list_head*
%107 = alloca i32
%108 = alloca i32
%109 = alloca i32
%110 = alloca %struct.list_head*
%111 = alloca i32
%112 = alloca %struct.list_head*
%113 = alloca i32
%114 = alloca %struct.node*
%115 = alloca i32
%116 = alloca i32
%117 = alloca %struct.list_head*
%118 = alloca i64
%119 = alloca i8*
%120 = alloca i8*
%121 = alloca %struct.node*
%122 = alloca i32
%123 = alloca i32
store %struct.list_head* %0, %struct.list_head** %2
br label %124
124: ; preds = %1
br label %125
125: ; preds = %124
%126 = load %struct.list_head*, %struct.list_head** %2
%127 = icmp ne %struct.list_head* %126, null
br i1 %127, label %130, label %128
128: ; preds = %125
%129 = call i32 (...) @fail()
br label %131
130: ; preds = %125
br label %131
131: ; preds = %130, %128
br label %132
132: ; preds = %131
br label %133
133: ; preds = %132
br label %134
134: ; preds = %133
%135 = load %struct.list_head*, %struct.list_head** %2
%136 = ptrtoint %struct.list_head* %135 to i32
store i32 %136, i32* %4
%137 = load %struct.list_head*, %struct.list_head** %2
%138 = bitcast %struct.list_head* %137 to %struct.list_head**
%139 = load %struct.list_head*, %struct.list_head** %138
store %struct.list_head* %139, %struct.list_head** %5
%140 = load %struct.list_head*, %struct.list_head** %5
%141 = ptrtoint %struct.list_head* %140 to i32
store i32 %141, i32* %6
%142 = load i32, i32* %6
%143 = load i32, i32* %4
%144 = icmp ne i32 %142, %143
%145 = zext i1 %144 to i32
store i32 %145, i32* %7
%146 = load i32, i32* %7
%147 = icmp ne i32 %146, 0
br i1 %147, label %150, label %148
148: ; preds = %134
%149 = call i32 (...) @fail()
br label %151
150: ; preds = %134
br label %151
151: ; preds = %150, %148
br label %152
152: ; preds = %151
br label %153
153: ; preds = %152
br label %154
154: ; preds = %153
%155 = load %struct.list_head*, %struct.list_head** %2
%156 = ptrtoint %struct.list_head* %155 to i32
store i32 %156, i32* %8
%157 = load %struct.list_head*, %struct.list_head** %2
%158 = ptrtoint %struct.list_head* %157 to i32
store i32 %158, i32* %9
%159 = load i32, i32* %9
%160 = add i32 %159, 4
store i32 %160, i32* %10
%161 = load i32, i32* %10
%162 = zext i32 %161 to i64
%163 = inttoptr i64 %162 to %struct.list_head**
%164 = load %struct.list_head*, %struct.list_head** %163
store %struct.list_head* %164, %struct.list_head** %11
%165 = load %struct.list_head*, %struct.list_head** %11
%166 = ptrtoint %struct.list_head* %165 to i32
store i32 %166, i32* %12
%167 = load i32, i32* %12
%168 = load i32, i32* %8
%169 = icmp ne i32 %167, %168
%170 = zext i1 %169 to i32
store i32 %170, i32* %13
%171 = load i32, i32* %13
%172 = icmp ne i32 %171, 0
br i1 %172, label %175, label %173
173: ; preds = %154
%174 = call i32 (...) @fail()
br label %176
175: ; preds = %154
br label %176
176: ; preds = %175, %173
br label %177
177: ; preds = %176
%178 = load %struct.list_head*, %struct.list_head** %2
%179 = ptrtoint %struct.list_head* %178 to i32
store i32 %179, i32* %14
%180 = load i32, i32* %14
%181 = add i32 %180, 4
store i32 %181, i32* %15
%182 = load i32, i32* %15
%183 = zext i32 %182 to i64
%184 = inttoptr i64 %183 to %struct.list_head**
%185 = load %struct.list_head*, %struct.list_head** %184
store %struct.list_head* %185, %struct.list_head** %16
%186 = load %struct.list_head*, %struct.list_head** %16
store %struct.list_head* %186, %struct.list_head** %2
br label %187
187: ; preds = %177
br label %188
188: ; preds = %187
%189 = load %struct.list_head*, %struct.list_head** %2
%190 = icmp ne %struct.list_head* %189, null
br i1 %190, label %193, label %191
191: ; preds = %188
%192 = call i32 (...) @fail()
br label %194
193: ; preds = %188
br label %194
194: ; preds = %193, %191
br label %195
195: ; preds = %194
br label %196
196: ; preds = %195
br label %197
197: ; preds = %196
%198 = load %struct.list_head*, %struct.list_head** %2
%199 = ptrtoint %struct.list_head* %198 to i32
store i32 %199, i32* %17
%200 = load %struct.list_head*, %struct.list_head** %2
%201 = bitcast %struct.list_head* %200 to %struct.list_head**
%202 = load %struct.list_head*, %struct.list_head** %201
store %struct.list_head* %202, %struct.list_head** %18
%203 = load %struct.list_head*, %struct.list_head** %18
%204 = ptrtoint %struct.list_head* %203 to i32
store i32 %204, i32* %19
%205 = load i32, i32* %19
%206 = load i32, i32* %17
%207 = icmp ne i32 %205, %206
%208 = zext i1 %207 to i32
store i32 %208, i32* %20
%209 = load i32, i32* %20
%210 = icmp ne i32 %209, 0
br i1 %210, label %213, label %211
211: ; preds = %197
%212 = call i32 (...) @fail()
br label %214
213: ; preds = %197
br label %214
214: ; preds = %213, %211
br label %215
215: ; preds = %214
br label %216
216: ; preds = %215
br label %217
217: ; preds = %216
%218 = load %struct.list_head*, %struct.list_head** %2
%219 = ptrtoint %struct.list_head* %218 to i32
store i32 %219, i32* %21
%220 = load %struct.list_head*, %struct.list_head** %2
%221 = ptrtoint %struct.list_head* %220 to i32
store i32 %221, i32* %22
%222 = load i32, i32* %22
%223 = add i32 %222, 4
store i32 %223, i32* %23
%224 = load i32, i32* %23
%225 = zext i32 %224 to i64
%226 = inttoptr i64 %225 to %struct.list_head**
%227 = load %struct.list_head*, %struct.list_head** %226
store %struct.list_head* %227, %struct.list_head** %24
%228 = load %struct.list_head*, %struct.list_head** %24
%229 = ptrtoint %struct.list_head* %228 to i32
store i32 %229, i32* %25
%230 = load i32, i32* %25
%231 = load i32, i32* %21
%232 = icmp ne i32 %230, %231
%233 = zext i1 %232 to i32
store i32 %233, i32* %26
%234 = load i32, i32* %26
%235 = icmp ne i32 %234, 0
br i1 %235, label %238, label %236
236: ; preds = %217
%237 = call i32 (...) @fail()
br label %239
238: ; preds = %217
br label %239
239: ; preds = %238, %236
br label %240
240: ; preds = %239
store %struct.node* null, %struct.node** %27
%241 = load %struct.node*, %struct.node** %27
%242 = ptrtoint %struct.node* %241 to i32
store i32 %242, i32* %28
%243 = load i32, i32* %28
%244 = add i32 %243, 4
store i32 %244, i32* %29
%245 = load i32, i32* %29
%246 = zext i32 %245 to i64
%247 = inttoptr i64 %246 to %struct.list_head*
store %struct.list_head* %247, %struct.list_head** %30
%248 = load %struct.list_head*, %struct.list_head** %30
%249 = ptrtoint %struct.list_head* %248 to i64
store i64 %249, i64* %31
%250 = load %struct.list_head*, %struct.list_head** %2
%251 = bitcast %struct.list_head* %250 to i8*
store i8* %251, i8** %32
%252 = load i8*, i8** %32
%253 = load i64, i64* %31
%254 = sub i64 0, %253
%255 = getelementptr inbounds i8, i8* %252, i64 %254
store i8* %255, i8** %33
%256 = load i8*, i8** %33
%257 = bitcast i8* %256 to %struct.node*
store %struct.node* %257, %struct.node** %34
%258 = load %struct.node*, %struct.node** %34
store %struct.node* %258, %struct.node** %3
br label %259
259: ; preds = %240
br label %260
260: ; preds = %259
%261 = load %struct.node*, %struct.node** %3
%262 = icmp ne %struct.node* %261, null
br i1 %262, label %265, label %263
263: ; preds = %260
%264 = call i32 (...) @fail()
br label %266
265: ; preds = %260
br label %266
266: ; preds = %265, %263
br label %267
267: ; preds = %266
br label %268
268: ; preds = %267
br label %269
269: ; preds = %268
%270 = load %struct.node*, %struct.node** %3
%271 = ptrtoint %struct.node* %270 to i32
store i32 %271, i32* %35
%272 = load i32, i32* %35
%273 = add i32 %272, 12
store i32 %273, i32* %36
%274 = load i32, i32* %36
%275 = zext i32 %274 to i64
%276 = inttoptr i64 %275 to %struct.list_head*
store %struct.list_head* %276, %struct.list_head** %37
%277 = load %struct.list_head*, %struct.list_head** %37
%278 = ptrtoint %struct.list_head* %277 to i32
store i32 %278, i32* %38
%279 = load %struct.node*, %struct.node** %3
%280 = ptrtoint %struct.node* %279 to i32
store i32 %280, i32* %39
%281 = load i32, i32* %39
%282 = add i32 %281, 12
store i32 %282, i32* %40
%283 = load i32, i32* %40
%284 = zext i32 %283 to i64
%285 = inttoptr i64 %284 to %struct.list_head**
%286 = load %struct.list_head*, %struct.list_head** %285
store %struct.list_head* %286, %struct.list_head** %41
%287 = load %struct.list_head*, %struct.list_head** %41
%288 = ptrtoint %struct.list_head* %287 to i32
store i32 %288, i32* %42
%289 = load i32, i32* %42
%290 = load i32, i32* %38
%291 = icmp eq i32 %289, %290
%292 = zext i1 %291 to i32
store i32 %292, i32* %43
%293 = load i32, i32* %43
%294 = icmp ne i32 %293, 0
br i1 %294, label %297, label %295
295: ; preds = %269
%296 = call i32 (...) @fail()
br label %298
297: ; preds = %269
br label %298
298: ; preds = %297, %295
br label %299
299: ; preds = %298
br label %300
300: ; preds = %299
br label %301
301: ; preds = %300
%302 = load %struct.node*, %struct.node** %3
%303 = ptrtoint %struct.node* %302 to i32
store i32 %303, i32* %44
%304 = load i32, i32* %44
%305 = add i32 %304, 12
store i32 %305, i32* %45
%306 = load i32, i32* %45
%307 = zext i32 %306 to i64
%308 = inttoptr i64 %307 to %struct.list_head*
store %struct.list_head* %308, %struct.list_head** %46
%309 = load %struct.list_head*, %struct.list_head** %46
%310 = ptrtoint %struct.list_head* %309 to i32
store i32 %310, i32* %47
store i32 16, i32* %48
%311 = load %struct.node*, %struct.node** %3
%312 = ptrtoint %struct.node* %311 to i32
store i32 %312, i32* %49
%313 = load i32, i32* %49
%314 = load i32, i32* %48
%315 = add i32 %313, %314
store i32 %315, i32* %50
%316 = load i32, i32* %50
%317 = zext i32 %316 to i64
%318 = inttoptr i64 %317 to %struct.list_head**
%319 = load %struct.list_head*, %struct.list_head** %318
store %struct.list_head* %319, %struct.list_head** %51
%320 = load %struct.list_head*, %struct.list_head** %51
%321 = ptrtoint %struct.list_head* %320 to i32
store i32 %321, i32* %52
%322 = load i32, i32* %52
%323 = load i32, i32* %47
%324 = icmp eq i32 %322, %323
%325 = zext i1 %324 to i32
store i32 %325, i32* %53
%326 = load i32, i32* %53
%327 = icmp ne i32 %326, 0
br i1 %327, label %330, label %328
328: ; preds = %301
%329 = call i32 (...) @fail()
br label %331
330: ; preds = %301
br label %331
331: ; preds = %330, %328
br label %332
332: ; preds = %331
br label %333
333: ; preds = %332
br label %334
334: ; preds = %333
%335 = load %struct.node*, %struct.node** %3
%336 = ptrtoint %struct.node* %335 to i32
store i32 %336, i32* %54
%337 = load i32, i32* %54
%338 = add i32 %337, 4
store i32 %338, i32* %55
%339 = load i32, i32* %55
%340 = zext i32 %339 to i64
%341 = inttoptr i64 %340 to %struct.list_head*
store %struct.list_head* %341, %struct.list_head** %56
%342 = load %struct.list_head*, %struct.list_head** %56
%343 = ptrtoint %struct.list_head* %342 to i32
store i32 %343, i32* %57
%344 = load %struct.node*, %struct.node** %3
%345 = ptrtoint %struct.node* %344 to i32
store i32 %345, i32* %58
%346 = load i32, i32* %58
%347 = add i32 %346, 12
store i32 %347, i32* %59
%348 = load i32, i32* %59
%349 = zext i32 %348 to i64
%350 = inttoptr i64 %349 to %struct.list_head**
%351 = load %struct.list_head*, %struct.list_head** %350
store %struct.list_head* %351, %struct.list_head** %60
%352 = load %struct.list_head*, %struct.list_head** %60
%353 = ptrtoint %struct.list_head* %352 to i32
store i32 %353, i32* %61
%354 = load i32, i32* %61
%355 = load i32, i32* %57
%356 = icmp ne i32 %354, %355
%357 = zext i1 %356 to i32
store i32 %357, i32* %62
%358 = load i32, i32* %62
%359 = icmp ne i32 %358, 0
br i1 %359, label %362, label %360
360: ; preds = %334
%361 = call i32 (...) @fail()
br label %363
362: ; preds = %334
br label %363
363: ; preds = %362, %360
br label %364
364: ; preds = %363
br label %365
365: ; preds = %364
br label %366
366: ; preds = %365
%367 = load %struct.node*, %struct.node** %3
%368 = ptrtoint %struct.node* %367 to i32
store i32 %368, i32* %63
%369 = load i32, i32* %63
%370 = add i32 %369, 4
store i32 %370, i32* %64
%371 = load i32, i32* %64
%372 = zext i32 %371 to i64
%373 = inttoptr i64 %372 to %struct.list_head*
store %struct.list_head* %373, %struct.list_head** %65
%374 = load %struct.list_head*, %struct.list_head** %65
%375 = ptrtoint %struct.list_head* %374 to i32
store i32 %375, i32* %66
store i32 16, i32* %67
%376 = load %struct.node*, %struct.node** %3
%377 = ptrtoint %struct.node* %376 to i32
store i32 %377, i32* %68
%378 = load i32, i32* %68
%379 = load i32, i32* %67
%380 = add i32 %378, %379
store i32 %380, i32* %69
%381 = load i32, i32* %69
%382 = zext i32 %381 to i64
%383 = inttoptr i64 %382 to %struct.list_head**
%384 = load %struct.list_head*, %struct.list_head** %383
store %struct.list_head* %384, %struct.list_head** %70
%385 = load %struct.list_head*, %struct.list_head** %70
%386 = ptrtoint %struct.list_head* %385 to i32
store i32 %386, i32* %71
%387 = load i32, i32* %71
%388 = load i32, i32* %66
%389 = icmp ne i32 %387, %388
%390 = zext i1 %389 to i32
store i32 %390, i32* %72
%391 = load i32, i32* %72
%392 = icmp ne i32 %391, 0
br i1 %392, label %395, label %393
393: ; preds = %366
%394 = call i32 (...) @fail()
br label %396
395: ; preds = %366
br label %396
396: ; preds = %395, %393
br label %397
397: ; preds = %396
br label %398
398: ; preds = %397
br label %399
399: ; preds = %398
%400 = load %struct.list_head*, %struct.list_head** %2
%401 = bitcast %struct.list_head* %400 to %struct.node*
store %struct.node* %401, %struct.node** %73
%402 = load %struct.node*, %struct.node** %73
%403 = ptrtoint %struct.node* %402 to i32
store i32 %403, i32* %74
%404 = load %struct.node*, %struct.node** %3
%405 = ptrtoint %struct.node* %404 to i32
store i32 %405, i32* %75
%406 = load i32, i32* %75
%407 = load i32, i32* %74
%408 = icmp ne i32 %406, %407
%409 = zext i1 %408 to i32
store i32 %409, i32* %76
%410 = load i32, i32* %76
%411 = icmp ne i32 %410, 0
br i1 %411, label %414, label %412
412: ; preds = %399
%413 = call i32 (...) @fail()
br label %415
414: ; preds = %399
br label %415
415: ; preds = %414, %412
br label %416
416: ; preds = %415
br label %417
417: ; preds = %416
br label %418
418: ; preds = %417
%419 = load %struct.node*, %struct.node** %3
%420 = ptrtoint %struct.node* %419 to i32
store i32 %420, i32* %77
%421 = load i32, i32* %77
%422 = add i32 %421, 4
store i32 %422, i32* %78
%423 = load i32, i32* %78
%424 = zext i32 %423 to i64
%425 = inttoptr i64 %424 to %struct.list_head*
store %struct.list_head* %425, %struct.list_head** %79
%426 = load %struct.list_head*, %struct.list_head** %79
%427 = bitcast %struct.list_head* %426 to %struct.node*
store %struct.node* %427, %struct.node** %80
%428 = load %struct.node*, %struct.node** %80
%429 = ptrtoint %struct.node* %428 to i32
store i32 %429, i32* %81
%430 = load %struct.node*, %struct.node** %3
%431 = ptrtoint %struct.node* %430 to i32
store i32 %431, i32* %82
%432 = load i32, i32* %82
%433 = load i32, i32* %81
%434 = icmp ne i32 %432, %433
%435 = zext i1 %434 to i32
store i32 %435, i32* %83
%436 = load i32, i32* %83
%437 = icmp ne i32 %436, 0
br i1 %437, label %440, label %438
438: ; preds = %418
%439 = call i32 (...) @fail()
br label %441
440: ; preds = %418
br label %441
441: ; preds = %440, %438
br label %442
442: ; preds = %441
br label %443
443: ; preds = %442
br label %444
444: ; preds = %443
%445 = load %struct.node*, %struct.node** %3
%446 = bitcast %struct.node* %445 to i32*
store i32* %446, i32** %84
%447 = load i32*, i32** %84
%448 = bitcast i32* %447 to %struct.node*
store %struct.node* %448, %struct.node** %85
%449 = load %struct.node*, %struct.node** %85
%450 = ptrtoint %struct.node* %449 to i32
store i32 %450, i32* %86
%451 = load %struct.node*, %struct.node** %3
%452 = ptrtoint %struct.node* %451 to i32
store i32 %452, i32* %87
%453 = load i32, i32* %87
%454 = load i32, i32* %86
%455 = icmp eq i32 %453, %454
%456 = zext i1 %455 to i32
store i32 %456, i32* %88
%457 = load i32, i32* %88
%458 = icmp ne i32 %457, 0
br i1 %458, label %461, label %459
459: ; preds = %444
%460 = call i32 (...) @fail()
br label %462
461: ; preds = %444
br label %462
462: ; preds = %461, %459
br label %463
463: ; preds = %462
br label %464
464: ; preds = %463
br label %465
465: ; preds = %464
%466 = load %struct.node*, %struct.node** %3
%467 = ptrtoint %struct.node* %466 to i32
store i32 %467, i32* %89
%468 = load i32, i32* %89
%469 = add i32 %468, 4
store i32 %469, i32* %90
%470 = load i32, i32* %90
%471 = zext i32 %470 to i64
%472 = inttoptr i64 %471 to %struct.list_head**
%473 = load %struct.list_head*, %struct.list_head** %472
store %struct.list_head* %473, %struct.list_head** %91
%474 = load %struct.list_head*, %struct.list_head** %91
%475 = ptrtoint %struct.list_head* %474 to i32
store i32 %475, i32* %92
%476 = load i32, i32* %92
%477 = add i32 %476, 4
store i32 %477, i32* %93
%478 = load i32, i32* %93
%479 = zext i32 %478 to i64
%480 = inttoptr i64 %479 to %struct.list_head**
%481 = load %struct.list_head*, %struct.list_head** %480
store %struct.list_head* %481, %struct.list_head** %94
%482 = load %struct.list_head*, %struct.list_head** %94
%483 = ptrtoint %struct.list_head* %482 to i32
store i32 %483, i32* %95
%484 = load %struct.list_head*, %struct.list_head** %2
%485 = ptrtoint %struct.list_head* %484 to i32
store i32 %485, i32* %96
%486 = load i32, i32* %96
%487 = load i32, i32* %95
%488 = icmp eq i32 %486, %487
%489 = zext i1 %488 to i32
store i32 %489, i32* %97
%490 = load i32, i32* %97
%491 = icmp ne i32 %490, 0
br i1 %491, label %494, label %492
492: ; preds = %465
%493 = call i32 (...) @fail()
br label %495
494: ; preds = %465
br label %495
495: ; preds = %494, %492
br label %496
496: ; preds = %495
br label %497
497: ; preds = %496
br label %498
498: ; preds = %497
store i32 8, i32* %98
%499 = load %struct.node*, %struct.node** %3
%500 = ptrtoint %struct.node* %499 to i32
store i32 %500, i32* %99
%501 = load i32, i32* %99
%502 = load i32, i32* %98
%503 = add i32 %501, %502
store i32 %503, i32* %100
%504 = load i32, i32* %100
%505 = zext i32 %504 to i64
%506 = inttoptr i64 %505 to %struct.list_head**
%507 = load %struct.list_head*, %struct.list_head** %506
store %struct.list_head* %507, %struct.list_head** %101
%508 = load %struct.list_head*, %struct.list_head** %101
%509 = bitcast %struct.list_head* %508 to %struct.list_head**
%510 = load %struct.list_head*, %struct.list_head** %509
store %struct.list_head* %510, %struct.list_head** %102
%511 = load %struct.list_head*, %struct.list_head** %102
%512 = ptrtoint %struct.list_head* %511 to i32
store i32 %512, i32* %103
%513 = load %struct.list_head*, %struct.list_head** %2
%514 = ptrtoint %struct.list_head* %513 to i32
store i32 %514, i32* %104
%515 = load i32, i32* %104
%516 = load i32, i32* %103
%517 = icmp eq i32 %515, %516
%518 = zext i1 %517 to i32
store i32 %518, i32* %105
%519 = load i32, i32* %105
%520 = icmp ne i32 %519, 0
br i1 %520, label %523, label %521
521: ; preds = %498
%522 = call i32 (...) @fail()
br label %524
523: ; preds = %498
br label %524
524: ; preds = %523, %521
br label %525
525: ; preds = %524
%526 = load %struct.list_head*, %struct.list_head** %2
%527 = bitcast %struct.list_head* %526 to %struct.list_head**
%528 = load %struct.list_head*, %struct.list_head** %527
store %struct.list_head* %528, %struct.list_head** %106
%529 = load %struct.list_head*, %struct.list_head** %106
store %struct.list_head* %529, %struct.list_head** %2
br label %530
530: ; preds = %525, %548
br label %531
531: ; preds = %530
%532 = load %struct.list_head*, %struct.list_head** %2
%533 = ptrtoint %struct.list_head* %532 to i32
store i32 %533, i32* %107
%534 = load %struct.node*, %struct.node** %3
%535 = ptrtoint %struct.node* %534 to i32
store i32 %535, i32* %108
%536 = load i32, i32* %108
%537 = add i32 %536, 4
store i32 %537, i32* %109
%538 = load i32, i32* %109
%539 = zext i32 %538 to i64
%540 = inttoptr i64 %539 to %struct.list_head*
store %struct.list_head* %540, %struct.list_head** %110
%541 = load %struct.list_head*, %struct.list_head** %110
%542 = ptrtoint %struct.list_head* %541 to i32
store i32 %542, i32* %111
%543 = load i32, i32* %111
%544 = load i32, i32* %107
%545 = icmp ne i32 %543, %544
br i1 %545, label %546, label %547
546: ; preds = %531
br label %548
547: ; preds = %531
br label %553
548: ; preds = %546
%549 = load %struct.list_head*, %struct.list_head** %2
%550 = bitcast %struct.list_head* %549 to %struct.list_head**
%551 = load %struct.list_head*, %struct.list_head** %550
store %struct.list_head* %551, %struct.list_head** %112
%552 = load %struct.list_head*, %struct.list_head** %112
store %struct.list_head* %552, %struct.list_head** %2
br label %530
553: ; preds = %547
br label %554
554: ; preds = %553
br label %555
555: ; preds = %554
%556 = load %struct.node*, %struct.node** %3
%557 = ptrtoint %struct.node* %556 to i32
store i32 %557, i32* %113
store %struct.node* null, %struct.node** %114
%558 = load %struct.node*, %struct.node** %114
%559 = ptrtoint %struct.node* %558 to i32
store i32 %559, i32* %115
%560 = load i32, i32* %115
%561 = add i32 %560, 4
store i32 %561, i32* %116
%562 = load i32, i32* %116
%563 = zext i32 %562 to i64
%564 = inttoptr i64 %563 to %struct.list_head*
store %struct.list_head* %564, %struct.list_head** %117
%565 = load %struct.list_head*, %struct.list_head** %117
%566 = ptrtoint %struct.list_head* %565 to i64
store i64 %566, i64* %118
%567 = load %struct.list_head*, %struct.list_head** %2
%568 = bitcast %struct.list_head* %567 to i8*
store i8* %568, i8** %119
%569 = load i8*, i8** %119
%570 = load i64, i64* %118
%571 = sub i64 0, %570
%572 = getelementptr inbounds i8, i8* %569, i64 %571
store i8* %572, i8** %120
%573 = load i8*, i8** %120
%574 = bitcast i8* %573 to %struct.node*
store %struct.node* %574, %struct.node** %121
%575 = load %struct.node*, %struct.node** %121
%576 = ptrtoint %struct.node* %575 to i32
store i32 %576, i32* %122
%577 = load i32, i32* %122
%578 = load i32, i32* %113
%579 = icmp eq i32 %577, %578
%580 = zext i1 %579 to i32
store i32 %580, i32* %123
%581 = load i32, i32* %123
%582 = icmp ne i32 %581, 0
br i1 %582, label %585, label %583
583: ; preds = %555
%584 = call i32 (...) @fail()
br label %586
585: ; preds = %555
br label %586
586: ; preds = %585, %583
br label %587
587: ; preds = %586
ret void
}

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