int main(void) {
  int side1;
  int side2;
  int side3;
  int triang;
  int __retres5;
  {
    __globinit_triangle();
    __CrestCall(1, 1);
    __CrestInt(&side1);
    __CrestInt(&side2);
    __CrestInt(&side3);
    __CrestLoad(4, (unsigned long)(&side1), (long long)side1);
    __CrestLoad(3, (unsigned long)0, (long long)0);
    __CrestApply2(2, 16, (long long)(side1 < 0));
    if (side1 < 0) {
      __CrestBranch(5, 3, 1);
      printf((char const *__restrict)"Illegal arguments !! \n");
      __CrestClearStack(7);
    } else {
      __CrestBranch(6, 4, 0);
      {
        __CrestLoad(10, (unsigned long)(&side2), (long long)side2);
        __CrestLoad(9, (unsigned long)0, (long long)0);
        __CrestApply2(8, 16, (long long)(side2 < 0));
        if (side2 < 0) {
          __CrestBranch(11, 5, 1);
          printf((char const *__restrict)"Illegal arguments !! \n");
          __CrestClearStack(13);
        } else {
          __CrestBranch(12, 6, 0);
          {
            __CrestLoad(16, (unsigned long)(&side3), (long long)side3);
            __CrestLoad(15, (unsigned long)0, (long long)0);
            __CrestApply2(14, 16, (long long)(side3 < 0));
            if (side3 < 0) {
              __CrestBranch(17, 7, 1);
              printf((char const *__restrict)"Illegal arguments !! \n");
              __CrestClearStack(19);
            } else {
              __CrestBranch(18, 8, 0);
              __CrestLoad(20, (unsigned long)0, (long long)0);
              __CrestStore(21, (unsigned long)(&triang));
              triang = 0;
              {
                __CrestLoad(24, (unsigned long)(&side1), (long long)side1);
                __CrestLoad(23, (unsigned long)(&side2), (long long)side2);
                __CrestApply2(22, 12, (long long)(side1 == side2));
                if (side1 == side2) {
                  __CrestBranch(25, 10, 1);
                  __CrestLoad(29, (unsigned long)(&triang), (long long)triang);
                  __CrestLoad(28, (unsigned long)0, (long long)1);
                  __CrestApply2(27, 0, (long long)(triang + 1));
                  __CrestStore(30, (unsigned long)(&triang));
                  triang++;
                } else {
                  __CrestBranch(26, 11, 0);
                  printf(
                      (char const *__restrict)"not equal side1 and side2 \n");
                  __CrestClearStack(31);
                }
              }
              {
                __CrestLoad(34, (unsigned long)(&side2), (long long)side2);
                __CrestLoad(33, (unsigned long)(&side3), (long long)side3);
                __CrestApply2(32, 12, (long long)(side2 == side3));
                if (side2 == side3) {
                  __CrestBranch(35, 13, 1);
                  __CrestLoad(39, (unsigned long)(&triang), (long long)triang);
                  __CrestLoad(38, (unsigned long)0, (long long)2);
                  __CrestApply2(37, 0, (long long)(triang + 2));
                  __CrestStore(40, (unsigned long)(&triang));
                  triang += 2;
                } else {
                  __CrestBranch(36, 14, 0);
                  printf(
                      (char const *__restrict)"not equal side2 and side3 \n");
                  __CrestClearStack(41);
                }
              }
              {
                __CrestLoad(44, (unsigned long)(&side1), (long long)side1);
                __CrestLoad(43, (unsigned long)(&side3), (long long)side3);
                __CrestApply2(42, 12, (long long)(side1 == side3));
                if (side1 == side3) {
                  __CrestBranch(45, 16, 1);
                  __CrestLoad(49, (unsigned long)(&triang), (long long)triang);
                  __CrestLoad(48, (unsigned long)0, (long long)3);
                  __CrestApply2(47, 0, (long long)(triang + 3));
                  __CrestStore(50, (unsigned long)(&triang));
                  triang += 3;
                } else {
                  __CrestBranch(46, 17, 0);
                  printf(
                      (char const *__restrict)"not equal side1 and side3 \n");
                  __CrestClearStack(51);
                }
              }
              __CrestLoad(52, (unsigned long)(&side1), (long long)side1);
              __CrestLoad(53, (unsigned long)(&side2), (long long)side2);
              __CrestLoad(54, (unsigned long)(&side3), (long long)side3);
              __CrestLoad(55, (unsigned long)(&triang), (long long)triang);
              printf((char const *__restrict)"side1=%d, side2=%d, side3=%d, "
                                             "triang = %d\n",
                     side1, side2, side3, triang);
              __CrestClearStack(56);
              {
                __CrestLoad(59, (unsigned long)(&triang), (long long)triang);
                __CrestLoad(58, (unsigned long)0, (long long)0);
                __CrestApply2(57, 12, (long long)(triang == 0));
                if (triang == 0) {
                  __CrestBranch(60, 20, 1);
                  {
                    __CrestLoad(66, (unsigned long)(&side1), (long long)side1);
                    __CrestLoad(65, (unsigned long)(&side2), (long long)side2);
                    __CrestApply2(64, 0, (long long)(side1 + side2));
                    __CrestLoad(63, (unsigned long)(&side3), (long long)side3);
                    __CrestApply2(62, 16, (long long)(side1 + side2 < side3));
                    if (side1 + side2 < side3) {
                      __CrestBranch(67, 21, 1);
                      printf((char const *__restrict)"Illegal arguments !! \n");
                      __CrestClearStack(69);
                    } else {
                      __CrestBranch(68, 22, 0);
                      {
                        __CrestLoad(74, (unsigned long)(&side2),
                                    (long long)side2);
                        __CrestLoad(73, (unsigned long)(&side3),
                                    (long long)side3);
                        __CrestApply2(72, 0, (long long)(side2 + side3));
                        __CrestLoad(71, (unsigned long)(&side1),
                                    (long long)side1);
                        __CrestApply2(70, 16,
                                      (long long)(side2 + side3 < side1));
                        if (side2 + side3 < side1) {
                          __CrestBranch(75, 23, 1);
                          printf((
                              char const *__restrict)"Illegal arguments !! \n");
                          __CrestClearStack(77);
                        } else {
                          __CrestBranch(76, 24, 0);
                          {
                            __CrestLoad(82, (unsigned long)(&side1),
                                        (long long)side1);
                            __CrestLoad(81, (unsigned long)(&side2),
                                        (long long)side2);
                            __CrestApply2(80, 0, (long long)(side1 + side2));
                            __CrestLoad(79, (unsigned long)(&side3),
                                        (long long)side3);
                            __CrestApply2(78, 16,
                                          (long long)(side1 + side2 < side3));
                            if (side1 + side2 < side3) {
                              __CrestBranch(83, 25, 1);
                              printf(
                                  (char const
                                       *__restrict)"Illegal arguments !! \n");
                              __CrestClearStack(85);
                            } else {
                              __CrestBranch(84, 26, 0);
                              printf((
                                  char const *__restrict)"Scalene triangle \n");
                              __CrestClearStack(86);
                            }
                          }
                        }
                      }
                    }
                  }
                } else {
                  __CrestBranch(61, 27, 0);
                  {
                    __CrestLoad(89, (unsigned long)(&triang),
                                (long long)triang);
                    __CrestLoad(88, (unsigned long)0, (long long)3);
                    __CrestApply2(87, 14, (long long)(triang > 3));
                    if (triang > 3) {
                      __CrestBranch(90, 28, 1);
                      printf((char const *__restrict)"Equilateral triangle \n");
                      __CrestClearStack(92);
                    } else {
                      __CrestBranch(91, 29, 0);
                      {
                        __CrestLoad(95, (unsigned long)(&triang),
                                    (long long)triang);
                        __CrestLoad(94, (unsigned long)0, (long long)1);
                        __CrestApply2(93, 12, (long long)(triang == 1));
                        if (triang == 1) {
                          __CrestBranch(96, 30, 1);
                          {
                            __CrestLoad(102, (unsigned long)(&side1),
                                        (long long)side1);
                            __CrestLoad(101, (unsigned long)(&side2),
                                        (long long)side2);
                            __CrestApply2(100, 0, (long long)(side1 + side2));
                            __CrestLoad(99, (unsigned long)(&side3),
                                        (long long)side3);
                            __CrestApply2(98, 14,
                                          (long long)(side1 + side2 > side3));
                            if (side1 + side2 > side3) {
                              __CrestBranch(103, 31, 1);
                              printf((char const
                                          *__restrict)"Isosceles triangle \n");
                              __CrestClearStack(105);
                            } else {
                              __CrestBranch(104, 32, 0);
                              goto _L___0;
                            }
                          }
                        } else {
                          __CrestBranch(97, 33, 0);
                        _L___0 : {
                          __CrestLoad(108, (unsigned long)(&triang),
                                      (long long)triang);
                          __CrestLoad(107, (unsigned long)0, (long long)2);
                          __CrestApply2(106, 12, (long long)(triang == 2));
                          if (triang == 2) {
                            __CrestBranch(109, 34, 1);
                            {
                              __CrestLoad(115, (unsigned long)(&side2),
                                          (long long)side2);
                              __CrestLoad(114, (unsigned long)(&side3),
                                          (long long)side3);
                              __CrestApply2(113, 0, (long long)(side2 + side3));
                              __CrestLoad(112, (unsigned long)(&side1),
                                          (long long)side1);
                              __CrestApply2(111, 14,
                                            (long long)(side2 + side3 > side1));
                              if (side2 + side3 > side1) {
                                __CrestBranch(116, 35, 1);
                                printf(
                                    (char const
                                         *__restrict)"Isosceles triangle \n");
                                __CrestClearStack(118);
                              } else {
                                __CrestBranch(117, 36, 0);
                                goto _L;
                              }
                            }
                          } else {
                            __CrestBranch(110, 37, 0);
                          _L : {
                            __CrestLoad(121, (unsigned long)(&triang),
                                        (long long)triang);
                            __CrestLoad(120, (unsigned long)0, (long long)3);
                            __CrestApply2(119, 12, (long long)(triang == 3));
                            if (triang == 3) {
                              __CrestBranch(122, 38, 1);
                              {
                                __CrestLoad(128, (unsigned long)(&side1),
                                            (long long)side1);
                                __CrestLoad(127, (unsigned long)(&side3),
                                            (long long)side3);
                                __CrestApply2(126, 0,
                                              (long long)(side1 + side3));
                                __CrestLoad(125, (unsigned long)(&side2),
                                            (long long)side2);
                                __CrestApply2(
                                    124, 14,
                                    (long long)(side1 + side3 > side2));
                                if (side1 + side3 > side2) {
                                  __CrestBranch(129, 39, 1);
                                  printf(
                                      (char const
                                           *__restrict)"Isosceles triangle \n");
                                  __CrestClearStack(131);
                                } else {
                                  __CrestBranch(130, 40, 0);
                                  printf(
                                      (char const *__restrict)"ILLegal !!! \n");
                                  __CrestClearStack(132);
                                }
                              }
                            } else {
                              __CrestBranch(123, 41, 0);
                              printf((char const *__restrict)"ILLegal !!! \n");
                              __CrestClearStack(133);
                            }
                          }
                          }
                        }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    __CrestLoad(134, (unsigned long)0, (long long)0);
    __CrestStore(135, (unsigned long)(&__retres5));
    __retres5 = 0;
    __CrestLoad(136, (unsigned long)(&__retres5), (long long)__retres5);
    __CrestReturn(137);
    return (__retres5);
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x0,%al
call   10c0 <__globinit_triangle@plt>
mov    $0x1,%esi
mov    %esi,%edi
mov    $0x0,%al
call   1080 <__CrestCall@plt>
lea    -0x8(%rbp),%rdi
mov    $0x0,%al
call   1090 <__CrestInt@plt>
lea    -0xc(%rbp),%rdi
mov    $0x0,%al
call   1090 <__CrestInt@plt>
lea    -0x10(%rbp),%rdi
mov    $0x0,%al
call   1090 <__CrestInt@plt>
lea    -0x8(%rbp),%rsi
movslq -0x8(%rbp),%rdx
mov    $0x4,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    $0x3,%edi
xor    %eax,%eax
mov    %eax,%edx
mov    %rdx,%rsi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
cmpl   $0x0,-0x8(%rbp)
setl   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x2,%edi
mov    $0x10,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
cmpl   $0x0,-0x8(%rbp)
jge    126b <main+0xcb>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0xdad(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x7,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1f32 <main+0xd92>
mov    $0x6,%edi
mov    $0x4,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0xc(%rbp),%rsi
movslq -0xc(%rbp),%rdx
mov    $0xa,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    $0x9,%edi
xor    %eax,%eax
mov    %eax,%edx
mov    %rdx,%rsi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
cmpl   $0x0,-0xc(%rbp)
setl   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x8,%edi
mov    $0x10,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
cmpl   $0x0,-0xc(%rbp)
jge    1304 <main+0x164>
mov    $0xb,%edi
mov    $0x5,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0xd14(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0xd,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1f2d <main+0xd8d>
mov    $0xc,%edi
mov    $0x6,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0x10(%rbp),%rsi
movslq -0x10(%rbp),%rdx
mov    $0x10,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    $0xf,%edi
xor    %eax,%eax
mov    %eax,%edx
mov    %rdx,%rsi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
cmpl   $0x0,-0x10(%rbp)
setl   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0xe,%edi
mov    $0x10,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
cmpl   $0x0,-0x10(%rbp)
jge    139d <main+0x1fd>
mov    $0x11,%edi
mov    $0x7,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0xc7b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x13,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1f28 <main+0xd88>
mov    $0x12,%edi
mov    $0x8,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
mov    $0x14,%edi
xor    %eax,%eax
mov    %eax,%edx
mov    %rdx,%rsi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0x14(%rbp),%rsi
mov    $0x15,%edi
mov    $0x0,%al
call   1060 <__CrestStore@plt>
movl   $0x0,-0x14(%rbp)
lea    -0x8(%rbp),%rsi
movslq -0x8(%rbp),%rdx
mov    $0x18,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0xc(%rbp),%rsi
movslq -0xc(%rbp),%rdx
mov    $0x17,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x8(%rbp),%eax
cmp    -0xc(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x16,%edi
mov    $0xc,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
mov    -0x8(%rbp),%eax
cmp    -0xc(%rbp),%eax
jne    14a4 <main+0x304>
mov    $0x19,%edi
mov    $0xa,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0x14(%rbp),%rsi
movslq -0x14(%rbp),%rdx
mov    $0x1d,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    $0x1c,%edi
xor    %eax,%eax
mov    %eax,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rdx
mov    $0x1b,%edi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
lea    -0x14(%rbp),%rsi
mov    $0x1e,%edi
mov    $0x0,%al
call   1060 <__CrestStore@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    14d1 <main+0x331>
mov    $0x1a,%edi
mov    $0xb,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0xb59(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x1f,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
lea    -0xc(%rbp),%rsi
movslq -0xc(%rbp),%rdx
mov    $0x22,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0x10(%rbp),%rsi
movslq -0x10(%rbp),%rdx
mov    $0x21,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x20,%edi
mov    $0xc,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jne    159b <main+0x3fb>
mov    $0x23,%edi
mov    $0xd,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0x14(%rbp),%rsi
movslq -0x14(%rbp),%rdx
mov    $0x27,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    $0x26,%edi
xor    %eax,%eax
mov    %eax,%esi
mov    $0x2,%edx
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x14(%rbp),%eax
add    $0x2,%eax
movslq %eax,%rdx
mov    $0x25,%edi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
lea    -0x14(%rbp),%rsi
mov    $0x28,%edi
mov    $0x0,%al
call   1060 <__CrestStore@plt>
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
jmp    15c8 <main+0x428>
mov    $0x24,%edi
mov    $0xe,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0xa7e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x29,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
lea    -0x8(%rbp),%rsi
movslq -0x8(%rbp),%rdx
mov    $0x2c,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0x10(%rbp),%rsi
movslq -0x10(%rbp),%rdx
mov    $0x2b,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x2a,%edi
mov    $0xc,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jne    1692 <main+0x4f2>
mov    $0x2d,%edi
mov    $0x10,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0x14(%rbp),%rsi
movslq -0x14(%rbp),%rdx
mov    $0x31,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    $0x30,%edi
xor    %eax,%eax
mov    %eax,%esi
mov    $0x3,%edx
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x14(%rbp),%eax
add    $0x3,%eax
movslq %eax,%rdx
mov    $0x2f,%edi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
lea    -0x14(%rbp),%rsi
mov    $0x32,%edi
mov    $0x0,%al
call   1060 <__CrestStore@plt>
mov    -0x14(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x14(%rbp)
jmp    16bf <main+0x51f>
mov    $0x2e,%edi
mov    $0x11,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0x9a3(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x33,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
lea    -0x8(%rbp),%rsi
movslq -0x8(%rbp),%rdx
mov    $0x34,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0xc(%rbp),%rsi
movslq -0xc(%rbp),%rdx
mov    $0x35,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0x10(%rbp),%rsi
movslq -0x10(%rbp),%rdx
mov    $0x36,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0x14(%rbp),%rsi
movslq -0x14(%rbp),%rdx
mov    $0x37,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x8(%rbp),%esi
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%ecx
mov    -0x14(%rbp),%r8d
lea    0x948(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x38,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
lea    -0x14(%rbp),%rsi
movslq -0x14(%rbp),%rdx
mov    $0x3b,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    $0x3a,%edi
xor    %eax,%eax
mov    %eax,%edx
mov    %rdx,%rsi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
cmpl   $0x0,-0x14(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x39,%edi
mov    $0xc,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
cmpl   $0x0,-0x14(%rbp)
jne    1a33 <main+0x893>
mov    $0x3c,%edi
mov    $0x14,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0x8(%rbp),%rsi
movslq -0x8(%rbp),%rdx
mov    $0x42,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0xc(%rbp),%rsi
movslq -0xc(%rbp),%rdx
mov    $0x41,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
movslq %eax,%rdx
mov    $0x40,%edi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
lea    -0x10(%rbp),%rsi
movslq -0x10(%rbp),%rdx
mov    $0x3f,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x3e,%edi
mov    $0x10,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1859 <main+0x6b9>
mov    $0x43,%edi
mov    $0x15,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0x7bf(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x45,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1a2e <main+0x88e>
mov    $0x44,%edi
mov    $0x16,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0xc(%rbp),%rsi
movslq -0xc(%rbp),%rdx
mov    $0x4a,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0x10(%rbp),%rsi
movslq -0x10(%rbp),%rdx
mov    $0x49,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
movslq %eax,%rdx
mov    $0x48,%edi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
lea    -0x8(%rbp),%rsi
movslq -0x8(%rbp),%rdx
mov    $0x47,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x46,%edi
mov    $0x10,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1928 <main+0x788>
mov    $0x4b,%edi
mov    $0x17,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0x6f0(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x4d,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1a29 <main+0x889>
mov    $0x4c,%edi
mov    $0x18,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0x8(%rbp),%rsi
movslq -0x8(%rbp),%rdx
mov    $0x52,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0xc(%rbp),%rsi
movslq -0xc(%rbp),%rdx
mov    $0x51,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
movslq %eax,%rdx
mov    $0x50,%edi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
lea    -0x10(%rbp),%rsi
movslq -0x10(%rbp),%rdx
mov    $0x4f,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x4e,%edi
mov    $0x10,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    19f7 <main+0x857>
mov    $0x53,%edi
mov    $0x19,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0x621(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x55,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1a24 <main+0x884>
mov    $0x54,%edi
mov    $0x1a,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0x685(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x56,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1a29 <main+0x889>
jmp    1a2e <main+0x88e>
jmp    1f23 <main+0xd83>
mov    $0x3d,%edi
mov    $0x1b,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0x14(%rbp),%rsi
movslq -0x14(%rbp),%rdx
mov    $0x59,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    $0x58,%edi
xor    %eax,%eax
mov    %eax,%esi
mov    $0x3,%edx
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
cmpl   $0x3,-0x14(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x57,%edi
mov    $0xe,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
cmpl   $0x3,-0x14(%rbp)
jle    1ace <main+0x92e>
mov    $0x5a,%edi
mov    $0x1c,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0x5f3(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x5c,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1f1e <main+0xd7e>
mov    $0x5b,%edi
mov    $0x1d,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0x14(%rbp),%rsi
movslq -0x14(%rbp),%rdx
mov    $0x5f,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    $0x5e,%edi
xor    %eax,%eax
mov    %eax,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
cmpl   $0x1,-0x14(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x5d,%edi
mov    $0xc,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
cmpl   $0x1,-0x14(%rbp)
jne    1c23 <main+0xa83>
mov    $0x60,%edi
mov    $0x1e,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0x8(%rbp),%rsi
movslq -0x8(%rbp),%rdx
mov    $0x66,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0xc(%rbp),%rsi
movslq -0xc(%rbp),%rdx
mov    $0x65,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
movslq %eax,%rdx
mov    $0x64,%edi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
lea    -0x10(%rbp),%rsi
movslq -0x10(%rbp),%rdx
mov    $0x63,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
setg   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x62,%edi
mov    $0xe,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
mov    -0x8(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jle    1c06 <main+0xa66>
mov    $0x67,%edi
mov    $0x1f,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0x4d2(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x69,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1c1e <main+0xa7e>
mov    $0x68,%edi
mov    $0x20,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
jmp    1c36 <main+0xa96>
jmp    1f19 <main+0xd79>
mov    $0x61,%edi
mov    $0x21,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0x14(%rbp),%rsi
movslq -0x14(%rbp),%rdx
mov    $0x6c,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    $0x6b,%edi
xor    %eax,%eax
mov    %eax,%esi
mov    $0x2,%edx
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
cmpl   $0x2,-0x14(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x6a,%edi
mov    $0xc,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
cmpl   $0x2,-0x14(%rbp)
jne    1d78 <main+0xbd8>
mov    $0x6d,%edi
mov    $0x22,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0xc(%rbp),%rsi
movslq -0xc(%rbp),%rdx
mov    $0x73,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0x10(%rbp),%rsi
movslq -0x10(%rbp),%rdx
mov    $0x72,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
movslq %eax,%rdx
mov    $0x71,%edi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
lea    -0x8(%rbp),%rsi
movslq -0x8(%rbp),%rdx
mov    $0x70,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
setg   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x6f,%edi
mov    $0xe,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
jle    1d5b <main+0xbbb>
mov    $0x74,%edi
mov    $0x23,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0x37d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x76,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1d73 <main+0xbd3>
mov    $0x75,%edi
mov    $0x24,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
jmp    1d8b <main+0xbeb>
jmp    1f14 <main+0xd74>
mov    $0x6e,%edi
mov    $0x25,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0x14(%rbp),%rsi
movslq -0x14(%rbp),%rdx
mov    $0x79,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    $0x78,%edi
xor    %eax,%eax
mov    %eax,%esi
mov    $0x3,%edx
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
cmpl   $0x3,-0x14(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x77,%edi
mov    $0xc,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
cmpl   $0x3,-0x14(%rbp)
jne    1ee2 <main+0xd42>
mov    $0x7a,%edi
mov    $0x26,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    -0x8(%rbp),%rsi
movslq -0x8(%rbp),%rdx
mov    $0x80,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0x10(%rbp),%rsi
movslq -0x10(%rbp),%rdx
mov    $0x7f,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x8(%rbp),%eax
add    -0x10(%rbp),%eax
movslq %eax,%rdx
mov    $0x7e,%edi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
lea    -0xc(%rbp),%rsi
movslq -0xc(%rbp),%rdx
mov    $0x7d,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    -0x8(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
setg   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rdx
mov    $0x7c,%edi
mov    $0xe,%esi
mov    $0x0,%al
call   1030 <__CrestApply2@plt>
mov    -0x8(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jle    1eb0 <main+0xd10>
mov    $0x81,%edi
mov    $0x27,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0x228(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x83,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1edd <main+0xd3d>
mov    $0x82,%edi
mov    $0x28,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0x20b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x84,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1f0f <main+0xd6f>
mov    $0x7b,%edi
mov    $0x29,%esi
xor    %edx,%edx
mov    $0x0,%al
call   1050 <__CrestBranch@plt>
lea    0x1d9(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x85,%edi
mov    $0x0,%al
call   10b0 <__CrestClearStack@plt>
jmp    1f14 <main+0xd74>
jmp    1f19 <main+0xd79>
jmp    1f1e <main+0xd7e>
jmp    1f23 <main+0xd83>
jmp    1f28 <main+0xd88>
jmp    1f2d <main+0xd8d>
jmp    1f32 <main+0xd92>
mov    $0x86,%edi
xor    %eax,%eax
mov    %eax,%edx
mov    %rdx,%rsi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
lea    -0x18(%rbp),%rsi
mov    $0x87,%edi
mov    $0x0,%al
call   1060 <__CrestStore@plt>
movl   $0x0,-0x18(%rbp)
lea    -0x18(%rbp),%rsi
movslq -0x18(%rbp),%rdx
mov    $0x88,%edi
mov    $0x0,%al
call   10a0 <__CrestLoad@plt>
mov    $0x89,%edi
mov    $0x0,%al
call   1070 <__CrestReturn@plt>
mov    -0x18(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0x20,%rsp
xor    %eax,%eax
call   10d0 <__globinit_triangle@plt>
mov    $0x1,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1090 <__CrestCall@plt>
lea    0x14(%rsp),%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   10a0 <__CrestInt@plt>
lea    0xc(%rsp),%rdi
xor    %eax,%eax
call   10a0 <__CrestInt@plt>
lea    0x10(%rsp),%rdi
xor    %eax,%eax
call   10a0 <__CrestInt@plt>
movslq 0x14(%rsp),%rdx
mov    $0x4,%edi
mov    %rbx,%rsi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    $0x3,%edi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0x14(%rsp),%edx
shr    $0x1f,%rdx
mov    $0x2,%edi
mov    $0x10,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
cmpl   $0x0,0x14(%rsp)
js     13fc <main+0x24c>
mov    $0x6,%edi
mov    $0x4,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0xc(%rsp),%rdx
lea    0xc(%rsp),%rsi
mov    $0xa,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    $0x9,%edi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0xc(%rsp),%edx
shr    $0x1f,%rdx
mov    $0x8,%edi
mov    $0x10,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
cmpl   $0x0,0xc(%rsp)
js     1423 <main+0x273>
mov    $0xc,%edi
mov    $0x6,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0x10(%rsp),%rdx
lea    0x10(%rsp),%rsi
mov    $0x10,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    $0xf,%edi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0x10(%rsp),%edx
shr    $0x1f,%rdx
mov    $0xe,%edi
mov    $0x10,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
cmpl   $0x0,0x10(%rsp)
js     144a <main+0x29a>
mov    $0x12,%edi
mov    $0x8,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x14,%edi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
lea    0x18(%rsp),%rsi
mov    $0x15,%edi
xor    %eax,%eax
call   1070 <__CrestStore@plt>
movl   $0x0,0x18(%rsp)
movslq 0x14(%rsp),%rdx
lea    0x14(%rsp),%rsi
mov    $0x18,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0xc(%rsp),%rdx
lea    0xc(%rsp),%rsi
mov    $0x17,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0x14(%rsp),%eax
xor    %edx,%edx
cmp    0xc(%rsp),%eax
sete   %dl
mov    $0x16,%edi
mov    $0xc,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
mov    0x14(%rsp),%eax
cmp    0xc(%rsp),%eax
jne    1471 <main+0x2c1>
mov    $0x19,%edi
mov    $0xa,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0x18(%rsp),%rdx
lea    0x18(%rsp),%rbx
mov    $0x1d,%edi
mov    %rbx,%rsi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    $0x1,%edx
mov    $0x1c,%edi
xor    %esi,%esi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x18(%rsp),%rdx
add    $0x1,%rdx
mov    $0x1b,%edi
xor    %esi,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
mov    $0x1e,%edi
mov    %rbx,%rsi
xor    %eax,%eax
call   1070 <__CrestStore@plt>
addl   $0x1,0x18(%rsp)
jmp    149c <main+0x2ec>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x7,%ebx
lea    0xca7(%rip),%rdi
jmp    1e2b <main+0xc7b>
mov    $0xb,%edi
mov    $0x5,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0xd,%ebx
lea    0xc80(%rip),%rdi
jmp    1e2b <main+0xc7b>
mov    $0x11,%edi
mov    $0x7,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x13,%ebx
lea    0xc59(%rip),%rdi
jmp    1e2b <main+0xc7b>
mov    $0x1a,%edi
mov    $0xb,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
lea    0xba0(%rip),%rdi
call   1040 <puts@plt>
mov    $0x1f,%edi
xor    %eax,%eax
call   10c0 <__CrestClearStack@plt>
movslq 0xc(%rsp),%rdx
lea    0xc(%rsp),%rsi
mov    $0x22,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x10(%rsp),%rdx
lea    0x10(%rsp),%rsi
mov    $0x21,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0xc(%rsp),%eax
xor    %edx,%edx
cmp    0x10(%rsp),%eax
sete   %dl
mov    $0x20,%edi
mov    $0xc,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
mov    0xc(%rsp),%eax
cmp    0x10(%rsp),%eax
jne    155f <main+0x3af>
mov    $0x23,%edi
mov    $0xd,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0x18(%rsp),%rdx
lea    0x18(%rsp),%rbx
mov    $0x27,%edi
mov    %rbx,%rsi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    $0x2,%edx
mov    $0x26,%edi
xor    %esi,%esi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x18(%rsp),%rdx
add    $0x2,%rdx
mov    $0x25,%edi
xor    %esi,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
mov    $0x28,%edi
mov    %rbx,%rsi
xor    %eax,%eax
call   1070 <__CrestStore@plt>
addl   $0x2,0x18(%rsp)
jmp    158a <main+0x3da>
mov    $0x24,%edi
mov    $0xe,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
lea    0xacd(%rip),%rdi
call   1040 <puts@plt>
mov    $0x29,%edi
xor    %eax,%eax
call   10c0 <__CrestClearStack@plt>
movslq 0x14(%rsp),%rdx
lea    0x14(%rsp),%rsi
mov    $0x2c,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x10(%rsp),%rdx
lea    0x10(%rsp),%rsi
mov    $0x2b,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0x14(%rsp),%eax
xor    %edx,%edx
cmp    0x10(%rsp),%eax
sete   %dl
mov    $0x2a,%edi
mov    $0xc,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
mov    0x14(%rsp),%eax
cmp    0x10(%rsp),%eax
jne    164d <main+0x49d>
mov    $0x2d,%edi
mov    $0x10,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0x18(%rsp),%rdx
lea    0x18(%rsp),%rbx
mov    $0x31,%edi
mov    %rbx,%rsi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    $0x3,%edx
mov    $0x30,%edi
xor    %esi,%esi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x18(%rsp),%rdx
add    $0x3,%rdx
mov    $0x2f,%edi
xor    %esi,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
mov    $0x32,%edi
mov    %rbx,%rsi
xor    %eax,%eax
call   1070 <__CrestStore@plt>
addl   $0x3,0x18(%rsp)
jmp    1678 <main+0x4c8>
mov    $0x2e,%edi
mov    $0x11,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
lea    0x9fa(%rip),%rdi
call   1040 <puts@plt>
mov    $0x33,%edi
xor    %eax,%eax
call   10c0 <__CrestClearStack@plt>
movslq 0x14(%rsp),%rdx
lea    0x14(%rsp),%rsi
mov    $0x34,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0xc(%rsp),%rdx
lea    0xc(%rsp),%rsi
mov    $0x35,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x10(%rsp),%rdx
lea    0x10(%rsp),%rsi
mov    $0x36,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x18(%rsp),%rdx
lea    0x18(%rsp),%rbx
mov    $0x37,%edi
mov    %rbx,%rsi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0x14(%rsp),%esi
mov    0xc(%rsp),%edx
mov    0x10(%rsp),%ecx
mov    0x18(%rsp),%r8d
lea    0x915(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x38,%edi
xor    %eax,%eax
call   10c0 <__CrestClearStack@plt>
movslq 0x18(%rsp),%rdx
mov    $0x3b,%edi
mov    %rbx,%rsi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    $0x3a,%edi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
xor    %edx,%edx
cmpl   $0x0,0x18(%rsp)
sete   %dl
mov    $0x39,%edi
mov    $0xc,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
cmpl   $0x0,0x18(%rsp)
je     17d1 <main+0x621>
mov    $0x3d,%edi
mov    $0x1b,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0x18(%rsp),%rdx
lea    0x18(%rsp),%rsi
mov    $0x59,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    $0x3,%edx
mov    $0x58,%edi
xor    %esi,%esi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
xor    %edx,%edx
cmpl   $0x4,0x18(%rsp)
setge  %dl
mov    $0x57,%edi
mov    $0xe,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
cmpl   $0x4,0x18(%rsp)
jl     189f <main+0x6ef>
mov    $0x5a,%edi
mov    $0x1c,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x5c,%ebx
lea    0x8d1(%rip),%rdi
jmp    1e2b <main+0xc7b>
mov    $0x3c,%edi
mov    $0x14,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0x14(%rsp),%rdx
lea    0x14(%rsp),%rsi
mov    $0x42,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0xc(%rsp),%rdx
lea    0xc(%rsp),%rsi
mov    $0x41,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x14(%rsp),%rax
movslq 0xc(%rsp),%rdx
add    %rax,%rdx
mov    $0x40,%edi
xor    %esi,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
movslq 0x10(%rsp),%rdx
lea    0x10(%rsp),%rsi
mov    $0x3f,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0xc(%rsp),%eax
add    0x14(%rsp),%eax
xor    %edx,%edx
cmp    0x10(%rsp),%eax
setl   %dl
mov    $0x3e,%edi
mov    $0x10,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
mov    0xc(%rsp),%eax
add    0x14(%rsp),%eax
cmp    0x10(%rsp),%eax
jge    19cf <main+0x81f>
mov    $0x43,%edi
mov    $0x15,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x45,%ebx
lea    0x82b(%rip),%rdi
jmp    1e2b <main+0xc7b>
mov    $0x5b,%edi
mov    $0x1d,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0x18(%rsp),%rdx
lea    0x18(%rsp),%rsi
mov    $0x5f,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    $0x1,%edx
mov    $0x5e,%edi
xor    %esi,%esi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
xor    %edx,%edx
cmpl   $0x1,0x18(%rsp)
sete   %dl
mov    $0x5d,%edi
mov    $0xc,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
cmpl   $0x1,0x18(%rsp)
jne    1a96 <main+0x8e6>
mov    $0x60,%edi
mov    $0x1e,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0x14(%rsp),%rdx
lea    0x14(%rsp),%rsi
mov    $0x66,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0xc(%rsp),%rdx
lea    0xc(%rsp),%rsi
mov    $0x65,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x14(%rsp),%rax
movslq 0xc(%rsp),%rdx
add    %rax,%rdx
mov    $0x64,%edi
xor    %esi,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
movslq 0x10(%rsp),%rdx
lea    0x10(%rsp),%rsi
mov    $0x63,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0xc(%rsp),%eax
add    0x14(%rsp),%eax
xor    %edx,%edx
cmp    0x10(%rsp),%eax
setg   %dl
mov    $0x62,%edi
mov    $0xe,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
mov    0xc(%rsp),%eax
add    0x14(%rsp),%eax
cmp    0x10(%rsp),%eax
jle    1b70 <main+0x9c0>
mov    $0x67,%edi
mov    $0x1f,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x69,%ebx
lea    0x6bf(%rip),%rdi
jmp    1e2b <main+0xc7b>
mov    $0x44,%edi
mov    $0x16,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0xc(%rsp),%rdx
lea    0xc(%rsp),%rsi
mov    $0x4a,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x10(%rsp),%rdx
lea    0x10(%rsp),%rsi
mov    $0x49,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0xc(%rsp),%rax
movslq 0x10(%rsp),%rdx
add    %rax,%rdx
mov    $0x48,%edi
xor    %esi,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
movslq 0x14(%rsp),%rdx
lea    0x14(%rsp),%rsi
mov    $0x47,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0x10(%rsp),%eax
add    0xc(%rsp),%eax
xor    %edx,%edx
cmp    0x14(%rsp),%eax
setl   %dl
mov    $0x46,%edi
mov    $0x10,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
mov    0x10(%rsp),%eax
add    0xc(%rsp),%eax
cmp    0x14(%rsp),%eax
jge    1aa5 <main+0x8f5>
mov    $0x4b,%edi
mov    $0x17,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x4d,%ebx
lea    0x634(%rip),%rdi
jmp    1e2b <main+0xc7b>
mov    $0x61,%edi
mov    $0x21,%esi
jmp    1b7a <main+0x9ca>
mov    $0x4c,%edi
mov    $0x18,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0x14(%rsp),%rdx
lea    0x14(%rsp),%rsi
mov    $0x52,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0xc(%rsp),%rdx
lea    0xc(%rsp),%rsi
mov    $0x51,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x14(%rsp),%rax
movslq 0xc(%rsp),%rdx
add    %rax,%rdx
mov    $0x50,%edi
xor    %esi,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
movslq 0x10(%rsp),%rdx
lea    0x10(%rsp),%rsi
mov    $0x4f,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0xc(%rsp),%eax
add    0x14(%rsp),%eax
xor    %edx,%edx
cmp    0x10(%rsp),%eax
setl   %dl
mov    $0x4e,%edi
mov    $0x10,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
mov    0xc(%rsp),%eax
add    0x14(%rsp),%eax
cmp    0x10(%rsp),%eax
jge    1deb <main+0xc3b>
mov    $0x53,%edi
mov    $0x19,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x55,%ebx
lea    0x55a(%rip),%rdi
jmp    1e2b <main+0xc7b>
mov    $0x68,%edi
mov    $0x20,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0x18(%rsp),%rdx
lea    0x18(%rsp),%rsi
mov    $0x6c,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    $0x2,%edx
mov    $0x6b,%edi
xor    %esi,%esi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
xor    %edx,%edx
cmpl   $0x2,0x18(%rsp)
sete   %dl
mov    $0x6a,%edi
mov    $0xc,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
cmpl   $0x2,0x18(%rsp)
jne    1c9c <main+0xaec>
mov    $0x6d,%edi
mov    $0x22,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0xc(%rsp),%rdx
lea    0xc(%rsp),%rsi
mov    $0x73,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x10(%rsp),%rdx
lea    0x10(%rsp),%rsi
mov    $0x72,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0xc(%rsp),%rax
movslq 0x10(%rsp),%rdx
add    %rax,%rdx
mov    $0x71,%edi
xor    %esi,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
movslq 0x14(%rsp),%rdx
lea    0x14(%rsp),%rsi
mov    $0x70,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0x10(%rsp),%eax
add    0xc(%rsp),%eax
xor    %edx,%edx
cmp    0x14(%rsp),%eax
setg   %dl
mov    $0x6f,%edi
mov    $0xe,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
mov    0x10(%rsp),%eax
add    0xc(%rsp),%eax
cmp    0x14(%rsp),%eax
jle    1ca8 <main+0xaf8>
mov    $0x74,%edi
mov    $0x23,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x76,%ebx
lea    0x3f2(%rip),%rdi
jmp    1e2b <main+0xc7b>
mov    $0x6e,%edi
mov    $0x25,%esi
jmp    1cb2 <main+0xb02>
mov    $0x75,%edi
mov    $0x24,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0x18(%rsp),%rdx
lea    0x18(%rsp),%rsi
mov    $0x79,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    $0x3,%edx
mov    $0x78,%edi
xor    %esi,%esi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
xor    %edx,%edx
cmpl   $0x3,0x18(%rsp)
sete   %dl
mov    $0x77,%edi
mov    $0xc,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
cmpl   $0x3,0x18(%rsp)
jne    1dd1 <main+0xc21>
mov    $0x7a,%edi
mov    $0x26,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
movslq 0x14(%rsp),%rdx
lea    0x14(%rsp),%rsi
mov    $0x80,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x10(%rsp),%rdx
lea    0x10(%rsp),%rsi
mov    $0x7f,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
movslq 0x14(%rsp),%rax
movslq 0x10(%rsp),%rdx
add    %rax,%rdx
mov    $0x7e,%edi
xor    %esi,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
movslq 0xc(%rsp),%rdx
lea    0xc(%rsp),%rsi
mov    $0x7d,%edi
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    0x10(%rsp),%eax
add    0x14(%rsp),%eax
xor    %edx,%edx
cmp    0xc(%rsp),%eax
setg   %dl
mov    $0x7c,%edi
mov    $0xe,%esi
xor    %eax,%eax
call   1030 <__CrestApply2@plt>
mov    0x10(%rsp),%eax
add    0x14(%rsp),%eax
cmp    0xc(%rsp),%eax
jle    1e0c <main+0xc5c>
mov    $0x81,%edi
mov    $0x27,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x83,%ebx
lea    0x2ba(%rip),%rdi
jmp    1e2b <main+0xc7b>
mov    $0x7b,%edi
mov    $0x29,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x85,%ebx
jmp    1e24 <main+0xc74>
mov    $0x54,%edi
mov    $0x1a,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x56,%ebx
lea    0x2a9(%rip),%rdi
jmp    1e2b <main+0xc7b>
mov    $0x82,%edi
mov    $0x28,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1060 <__CrestBranch@plt>
mov    $0x84,%ebx
lea    0x251(%rip),%rdi
call   1040 <puts@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   10c0 <__CrestClearStack@plt>
mov    $0x86,%edi
xor    %esi,%esi
xor    %edx,%edx
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
lea    0x1c(%rsp),%rbx
mov    $0x87,%edi
mov    %rbx,%rsi
xor    %eax,%eax
call   1070 <__CrestStore@plt>
movl   $0x0,0x1c(%rsp)
mov    $0x88,%edi
mov    %rbx,%rsi
xor    %edx,%edx
xor    %eax,%eax
call   10b0 <__CrestLoad@plt>
mov    $0x89,%edi
xor    %eax,%eax
call   1080 <__CrestReturn@plt>
mov    0x1c(%rsp),%eax
add    $0x20,%rsp
pop    %rbx
ret

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

LLVM IR (-O2):
@.str.4 = [43 x i8] c"side1=%d, side2=%d, side3=%d, triang = %d\0A\00"
@str = [27 x i8] c"not equal side1 and side2 \00"
@str.9 = [27 x i8] c"not equal side2 and side3 \00"
@str.10 = [27 x i8] c"not equal side1 and side3 \00"
@str.12 = [13 x i8] c"ILLegal !!! \00"
@str.15 = [20 x i8] c"Isosceles triangle \00"
@str.16 = [22 x i8] c"Equilateral triangle \00"
@str.17 = [18 x i8] c"Scalene triangle \00"
@str.23 = [22 x i8] c"Illegal arguments !! \00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = bitcast i32* %1 to i8*
%7 = bitcast i32* %2 to i8*
%8 = bitcast i32* %3 to i8*
%9 = bitcast i32* %4 to i8*
%10 = bitcast i32* %5 to i8*
%11 = tail call i32 (...) @__globinit_triangle()
%12 = tail call i32 (i32, i32, ...) bitcast (i32 (...)* @__CrestCall to i32 (i32, i32, ...)*)(i32 1, i32 1)
%13 = call i32 (i32*, ...) bitcast (i32 (...)* @__CrestInt to i32 (i32*, ...)*)(i32* %1)
%14 = call i32 (i32*, ...) bitcast (i32 (...)* @__CrestInt to i32 (i32*, ...)*)(i32* %2)
%15 = call i32 (i32*, ...) bitcast (i32 (...)* @__CrestInt to i32 (i32*, ...)*)(i32* %3)
%16 = ptrtoint i32* %1 to i64
%17 = load i32, i32* %1
%18 = sext i32 %17 to i64
%19 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 4, i64 %16, i64 %18)
%20 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 3, i64 0, i64 0)
%21 = load i32, i32* %1
%22 = lshr i32 %21, 31
%23 = zext i32 %22 to i64
%24 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 2, i32 16, i64 %23)
%25 = load i32, i32* %1
%26 = icmp slt i32 %25, 0
br i1 %26, label %27, label %29
27: ; preds = %0
%28 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 5, i32 3, i32 1)
br label %430
29: ; preds = %0
%30 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 6, i32 4, i32 0)
%31 = ptrtoint i32* %2 to i64
%32 = load i32, i32* %2
%33 = sext i32 %32 to i64
%34 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 10, i64 %31, i64 %33)
%35 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 9, i64 0, i64 0)
%36 = load i32, i32* %2
%37 = lshr i32 %36, 31
%38 = zext i32 %37 to i64
%39 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 8, i32 16, i64 %38)
%40 = load i32, i32* %2
%41 = icmp slt i32 %40, 0
br i1 %41, label %42, label %44
42: ; preds = %29
%43 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 11, i32 5, i32 1)
br label %430
44: ; preds = %29
%45 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 12, i32 6, i32 0)
%46 = ptrtoint i32* %3 to i64
%47 = load i32, i32* %3
%48 = sext i32 %47 to i64
%49 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 16, i64 %46, i64 %48)
%50 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 15, i64 0, i64 0)
%51 = load i32, i32* %3
%52 = lshr i32 %51, 31
%53 = zext i32 %52 to i64
%54 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 14, i32 16, i64 %53)
%55 = load i32, i32* %3
%56 = icmp slt i32 %55, 0
br i1 %56, label %57, label %59
57: ; preds = %44
%58 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 17, i32 7, i32 1)
br label %430
59: ; preds = %44
%60 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 18, i32 8, i32 0)
%61 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 20, i64 0, i64 0)
%62 = ptrtoint i32* %4 to i64
%63 = call i32 (i32, i64, ...) bitcast (i32 (...)* @__CrestStore to i32 (i32, i64, ...)*)(i32 21, i64 %62)
store i32 0, i32* %4
%64 = load i32, i32* %1
%65 = sext i32 %64 to i64
%66 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 24, i64 %16, i64 %65)
%67 = load i32, i32* %2
%68 = sext i32 %67 to i64
%69 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 23, i64 %31, i64 %68)
%70 = load i32, i32* %1
%71 = load i32, i32* %2
%72 = icmp eq i32 %70, %71
%73 = zext i1 %72 to i64
%74 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 22, i32 12, i64 %73)
%75 = load i32, i32* %1
%76 = load i32, i32* %2
%77 = icmp eq i32 %75, %76
br i1 %77, label %78, label %91
78: ; preds = %59
%79 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 25, i32 10, i32 1)
%80 = load i32, i32* %4
%81 = sext i32 %80 to i64
%82 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 29, i64 %62, i64 %81)
%83 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 28, i64 0, i64 1)
%84 = load i32, i32* %4
%85 = add nsw i32 %84, 1
%86 = sext i32 %85 to i64
%87 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 27, i32 0, i64 %86)
%88 = call i32 (i32, i64, ...) bitcast (i32 (...)* @__CrestStore to i32 (i32, i64, ...)*)(i32 30, i64 %62)
%89 = load i32, i32* %4
%90 = add nsw i32 %89, 1
store i32 %90, i32* %4
br label %95
91: ; preds = %59
%92 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 26, i32 11, i32 0)
%93 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str, i64 0, i64 0))
%94 = call i32 (i32, ...) bitcast (i32 (...)* @__CrestClearStack to i32 (i32, ...)*)(i32 31)
br label %95
95: ; preds = %91, %78
%96 = load i32, i32* %2
%97 = sext i32 %96 to i64
%98 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 34, i64 %31, i64 %97)
%99 = load i32, i32* %3
%100 = sext i32 %99 to i64
%101 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 33, i64 %46, i64 %100)
%102 = load i32, i32* %2
%103 = load i32, i32* %3
%104 = icmp eq i32 %102, %103
%105 = zext i1 %104 to i64
%106 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 32, i32 12, i64 %105)
%107 = load i32, i32* %2
%108 = load i32, i32* %3
%109 = icmp eq i32 %107, %108
br i1 %109, label %110, label %123
110: ; preds = %95
%111 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 35, i32 13, i32 1)
%112 = load i32, i32* %4
%113 = sext i32 %112 to i64
%114 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 39, i64 %62, i64 %113)
%115 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 38, i64 0, i64 2)
%116 = load i32, i32* %4
%117 = add nsw i32 %116, 2
%118 = sext i32 %117 to i64
%119 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 37, i32 0, i64 %118)
%120 = call i32 (i32, i64, ...) bitcast (i32 (...)* @__CrestStore to i32 (i32, i64, ...)*)(i32 40, i64 %62)
%121 = load i32, i32* %4
%122 = add nsw i32 %121, 2
store i32 %122, i32* %4
br label %127
123: ; preds = %95
%124 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 36, i32 14, i32 0)
%125 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.9, i64 0, i64 0))
%126 = call i32 (i32, ...) bitcast (i32 (...)* @__CrestClearStack to i32 (i32, ...)*)(i32 41)
br label %127
127: ; preds = %123, %110
%128 = load i32, i32* %1
%129 = sext i32 %128 to i64
%130 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 44, i64 %16, i64 %129)
%131 = load i32, i32* %3
%132 = sext i32 %131 to i64
%133 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 43, i64 %46, i64 %132)
%134 = load i32, i32* %1
%135 = load i32, i32* %3
%136 = icmp eq i32 %134, %135
%137 = zext i1 %136 to i64
%138 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 42, i32 12, i64 %137)
%139 = load i32, i32* %1
%140 = load i32, i32* %3
%141 = icmp eq i32 %139, %140
br i1 %141, label %142, label %155
142: ; preds = %127
%143 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 45, i32 16, i32 1)
%144 = load i32, i32* %4
%145 = sext i32 %144 to i64
%146 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 49, i64 %62, i64 %145)
%147 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 48, i64 0, i64 3)
%148 = load i32, i32* %4
%149 = add nsw i32 %148, 3
%150 = sext i32 %149 to i64
%151 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 47, i32 0, i64 %150)
%152 = call i32 (i32, i64, ...) bitcast (i32 (...)* @__CrestStore to i32 (i32, i64, ...)*)(i32 50, i64 %62)
%153 = load i32, i32* %4
%154 = add nsw i32 %153, 3
store i32 %154, i32* %4
br label %159
155: ; preds = %127
%156 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 46, i32 17, i32 0)
%157 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.10, i64 0, i64 0))
%158 = call i32 (i32, ...) bitcast (i32 (...)* @__CrestClearStack to i32 (i32, ...)*)(i32 51)
br label %159
159: ; preds = %155, %142
%160 = load i32, i32* %1
%161 = sext i32 %160 to i64
%162 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 52, i64 %16, i64 %161)
%163 = load i32, i32* %2
%164 = sext i32 %163 to i64
%165 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 53, i64 %31, i64 %164)
%166 = load i32, i32* %3
%167 = sext i32 %166 to i64
%168 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 54, i64 %46, i64 %167)
%169 = load i32, i32* %4
%170 = sext i32 %169 to i64
%171 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 55, i64 %62, i64 %170)
%172 = load i32, i32* %1
%173 = load i32, i32* %2
%174 = load i32, i32* %3
%175 = load i32, i32* %4
%176 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.4, i64 0, i64 0), i32 %172, i32 %173, i32 %174, i32 %175)
%177 = call i32 (i32, ...) bitcast (i32 (...)* @__CrestClearStack to i32 (i32, ...)*)(i32 56)
%178 = load i32, i32* %4
%179 = sext i32 %178 to i64
%180 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 59, i64 %62, i64 %179)
%181 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 58, i64 0, i64 0)
%182 = load i32, i32* %4
%183 = icmp eq i32 %182, 0
%184 = zext i1 %183 to i64
%185 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 57, i32 12, i64 %184)
%186 = load i32, i32* %4
%187 = icmp eq i32 %186, 0
br i1 %187, label %188, label %280
188: ; preds = %159
%189 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 60, i32 20, i32 1)
%190 = load i32, i32* %1
%191 = sext i32 %190 to i64
%192 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 66, i64 %16, i64 %191)
%193 = load i32, i32* %2
%194 = sext i32 %193 to i64
%195 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 65, i64 %31, i64 %194)
%196 = load i32, i32* %1
%197 = load i32, i32* %2
%198 = add nsw i32 %197, %196
%199 = sext i32 %198 to i64
%200 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 64, i32 0, i64 %199)
%201 = load i32, i32* %3
%202 = sext i32 %201 to i64
%203 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 63, i64 %46, i64 %202)
%204 = load i32, i32* %1
%205 = load i32, i32* %2
%206 = add nsw i32 %205, %204
%207 = load i32, i32* %3
%208 = icmp slt i32 %206, %207
%209 = zext i1 %208 to i64
%210 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 62, i32 16, i64 %209)
%211 = load i32, i32* %1
%212 = load i32, i32* %2
%213 = add nsw i32 %212, %211
%214 = load i32, i32* %3
%215 = icmp slt i32 %213, %214
br i1 %215, label %216, label %218
216: ; preds = %188
%217 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 67, i32 21, i32 1)
br label %430
218: ; preds = %188
%219 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 68, i32 22, i32 0)
%220 = load i32, i32* %2
%221 = sext i32 %220 to i64
%222 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 74, i64 %31, i64 %221)
%223 = load i32, i32* %3
%224 = sext i32 %223 to i64
%225 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 73, i64 %46, i64 %224)
%226 = load i32, i32* %2
%227 = load i32, i32* %3
%228 = add nsw i32 %227, %226
%229 = sext i32 %228 to i64
%230 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 72, i32 0, i64 %229)
%231 = load i32, i32* %1
%232 = sext i32 %231 to i64
%233 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 71, i64 %16, i64 %232)
%234 = load i32, i32* %2
%235 = load i32, i32* %3
%236 = add nsw i32 %235, %234
%237 = load i32, i32* %1
%238 = icmp slt i32 %236, %237
%239 = zext i1 %238 to i64
%240 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 70, i32 16, i64 %239)
%241 = load i32, i32* %2
%242 = load i32, i32* %3
%243 = add nsw i32 %242, %241
%244 = load i32, i32* %1
%245 = icmp slt i32 %243, %244
br i1 %245, label %246, label %248
246: ; preds = %218
%247 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 75, i32 23, i32 1)
br label %430
248: ; preds = %218
%249 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 76, i32 24, i32 0)
%250 = load i32, i32* %1
%251 = sext i32 %250 to i64
%252 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 82, i64 %16, i64 %251)
%253 = load i32, i32* %2
%254 = sext i32 %253 to i64
%255 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 81, i64 %31, i64 %254)
%256 = load i32, i32* %1
%257 = load i32, i32* %2
%258 = add nsw i32 %257, %256
%259 = sext i32 %258 to i64
%260 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 80, i32 0, i64 %259)
%261 = load i32, i32* %3
%262 = sext i32 %261 to i64
%263 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 79, i64 %46, i64 %262)
%264 = load i32, i32* %1
%265 = load i32, i32* %2
%266 = add nsw i32 %265, %264
%267 = load i32, i32* %3
%268 = icmp slt i32 %266, %267
%269 = zext i1 %268 to i64
%270 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 78, i32 16, i64 %269)
%271 = load i32, i32* %1
%272 = load i32, i32* %2
%273 = add nsw i32 %272, %271
%274 = load i32, i32* %3
%275 = icmp slt i32 %273, %274
br i1 %275, label %276, label %278
276: ; preds = %248
%277 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 83, i32 25, i32 1)
br label %430
278: ; preds = %248
%279 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 84, i32 26, i32 0)
br label %430
280: ; preds = %159
%281 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 61, i32 27, i32 0)
%282 = load i32, i32* %4
%283 = sext i32 %282 to i64
%284 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 89, i64 %62, i64 %283)
%285 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 88, i64 0, i64 3)
%286 = load i32, i32* %4
%287 = icmp sgt i32 %286, 3
%288 = zext i1 %287 to i64
%289 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 87, i32 14, i64 %288)
%290 = load i32, i32* %4
%291 = icmp sgt i32 %290, 3
br i1 %291, label %292, label %294
292: ; preds = %280
%293 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 90, i32 28, i32 1)
br label %430
294: ; preds = %280
%295 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 91, i32 29, i32 0)
%296 = load i32, i32* %4
%297 = sext i32 %296 to i64
%298 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 95, i64 %62, i64 %297)
%299 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 94, i64 0, i64 1)
%300 = load i32, i32* %4
%301 = icmp eq i32 %300, 1
%302 = zext i1 %301 to i64
%303 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 93, i32 12, i64 %302)
%304 = load i32, i32* %4
%305 = icmp eq i32 %304, 1
br i1 %305, label %306, label %338
306: ; preds = %294
%307 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 96, i32 30, i32 1)
%308 = load i32, i32* %1
%309 = sext i32 %308 to i64
%310 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 102, i64 %16, i64 %309)
%311 = load i32, i32* %2
%312 = sext i32 %311 to i64
%313 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 101, i64 %31, i64 %312)
%314 = load i32, i32* %1
%315 = load i32, i32* %2
%316 = add nsw i32 %315, %314
%317 = sext i32 %316 to i64
%318 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 100, i32 0, i64 %317)
%319 = load i32, i32* %3
%320 = sext i32 %319 to i64
%321 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 99, i64 %46, i64 %320)
%322 = load i32, i32* %1
%323 = load i32, i32* %2
%324 = add nsw i32 %323, %322
%325 = load i32, i32* %3
%326 = icmp sgt i32 %324, %325
%327 = zext i1 %326 to i64
%328 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 98, i32 14, i64 %327)
%329 = load i32, i32* %1
%330 = load i32, i32* %2
%331 = add nsw i32 %330, %329
%332 = load i32, i32* %3
%333 = icmp sgt i32 %331, %332
br i1 %333, label %334, label %336
334: ; preds = %306
%335 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 103, i32 31, i32 1)
br label %430
336: ; preds = %306
%337 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 104, i32 32, i32 0)
br label %340
338: ; preds = %294
%339 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 97, i32 33, i32 0)
br label %340
340: ; preds = %338, %336
%341 = load i32, i32* %4
%342 = sext i32 %341 to i64
%343 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 108, i64 %62, i64 %342)
%344 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 107, i64 0, i64 2)
%345 = load i32, i32* %4
%346 = icmp eq i32 %345, 2
%347 = zext i1 %346 to i64
%348 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 106, i32 12, i64 %347)
%349 = load i32, i32* %4
%350 = icmp eq i32 %349, 2
br i1 %350, label %351, label %383
351: ; preds = %340
%352 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 109, i32 34, i32 1)
%353 = load i32, i32* %2
%354 = sext i32 %353 to i64
%355 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 115, i64 %31, i64 %354)
%356 = load i32, i32* %3
%357 = sext i32 %356 to i64
%358 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 114, i64 %46, i64 %357)
%359 = load i32, i32* %2
%360 = load i32, i32* %3
%361 = add nsw i32 %360, %359
%362 = sext i32 %361 to i64
%363 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 113, i32 0, i64 %362)
%364 = load i32, i32* %1
%365 = sext i32 %364 to i64
%366 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 112, i64 %16, i64 %365)
%367 = load i32, i32* %2
%368 = load i32, i32* %3
%369 = add nsw i32 %368, %367
%370 = load i32, i32* %1
%371 = icmp sgt i32 %369, %370
%372 = zext i1 %371 to i64
%373 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 111, i32 14, i64 %372)
%374 = load i32, i32* %2
%375 = load i32, i32* %3
%376 = add nsw i32 %375, %374
%377 = load i32, i32* %1
%378 = icmp sgt i32 %376, %377
br i1 %378, label %379, label %381
379: ; preds = %351
%380 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 116, i32 35, i32 1)
br label %430
381: ; preds = %351
%382 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 117, i32 36, i32 0)
br label %385
383: ; preds = %340
%384 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 110, i32 37, i32 0)
br label %385
385: ; preds = %383, %381
%386 = load i32, i32* %4
%387 = sext i32 %386 to i64
%388 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 121, i64 %62, i64 %387)
%389 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 120, i64 0, i64 3)
%390 = load i32, i32* %4
%391 = icmp eq i32 %390, 3
%392 = zext i1 %391 to i64
%393 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 119, i32 12, i64 %392)
%394 = load i32, i32* %4
%395 = icmp eq i32 %394, 3
br i1 %395, label %396, label %428
396: ; preds = %385
%397 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 122, i32 38, i32 1)
%398 = load i32, i32* %1
%399 = sext i32 %398 to i64
%400 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 128, i64 %16, i64 %399)
%401 = load i32, i32* %3
%402 = sext i32 %401 to i64
%403 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 127, i64 %46, i64 %402)
%404 = load i32, i32* %1
%405 = load i32, i32* %3
%406 = add nsw i32 %405, %404
%407 = sext i32 %406 to i64
%408 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 126, i32 0, i64 %407)
%409 = load i32, i32* %2
%410 = sext i32 %409 to i64
%411 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 125, i64 %31, i64 %410)
%412 = load i32, i32* %1
%413 = load i32, i32* %3
%414 = add nsw i32 %413, %412
%415 = load i32, i32* %2
%416 = icmp sgt i32 %414, %415
%417 = zext i1 %416 to i64
%418 = call i32 (i32, i32, i64, ...) bitcast (i32 (...)* @__CrestApply2 to i32 (i32, i32, i64, ...)*)(i32 124, i32 14, i64 %417)
%419 = load i32, i32* %1
%420 = load i32, i32* %3
%421 = add nsw i32 %420, %419
%422 = load i32, i32* %2
%423 = icmp sgt i32 %421, %422
br i1 %423, label %424, label %426
424: ; preds = %396
%425 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 129, i32 39, i32 1)
br label %430
426: ; preds = %396
%427 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 130, i32 40, i32 0)
br label %430
428: ; preds = %385
%429 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @__CrestBranch to i32 (i32, i32, i32, ...)*)(i32 123, i32 41, i32 0)
br label %430
430: ; preds = %42, %246, %278, %276, %216, %334, %428, %426, %424, %379, %292, %57, %27
%431 = phi i8* [ getelementptr inbounds ([22 x i8], [22 x i8]* @str.23, i64 0, i64 0), %42 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @str.23, i64 0, i64 0), %246 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @str.17, i64 0, i64 0), %278 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @str.23, i64 0, i64 0), %276 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @str.23, i64 0, i64 0), %216 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @str.15, i64 0, i64 0), %334 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @str.12, i64 0, i64 0), %428 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @str.12, i64 0, i64 0), %426 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @str.15, i64 0, i64 0), %424 ], [ getelementptr inbounds ([20 x i8], [20 x i8]* @str.15, i64 0, i64 0), %379 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @str.16, i64 0, i64 0), %292 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @str.23, i64 0, i64 0), %57 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @str.23, i64 0, i64 0), %27 ]
%432 = phi i32 [ 13, %42 ], [ 77, %246 ], [ 86, %278 ], [ 85, %276 ], [ 69, %216 ], [ 105, %334 ], [ 133, %428 ], [ 132, %426 ], [ 131, %424 ], [ 118, %379 ], [ 92, %292 ], [ 19, %57 ], [ 7, %27 ]
%433 = call i32 @puts(i8* dereferenceable(1) %431)
%434 = call i32 (i32, ...) bitcast (i32 (...)* @__CrestClearStack to i32 (i32, ...)*)(i32 %432)
%435 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 134, i64 0, i64 0)
%436 = ptrtoint i32* %5 to i64
%437 = call i32 (i32, i64, ...) bitcast (i32 (...)* @__CrestStore to i32 (i32, i64, ...)*)(i32 135, i64 %436)
store i32 0, i32* %5
%438 = call i32 (i32, i64, i64, ...) bitcast (i32 (...)* @__CrestLoad to i32 (i32, i64, i64, ...)*)(i32 136, i64 %436, i64 0)
%439 = call i32 (i32, ...) bitcast (i32 (...)* @__CrestReturn to i32 (i32, ...)*)(i32 137)
%440 = load i32, i32* %5
ret i32 %440
}