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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double ceil(int);
int fabs(int);
int /*<<< orphan*/ printf(char *);
int /*<<< orphan*/ scanf(char *, int *);
double val(int);
int main() {
  int t;
  scanf("%d", &t);
  while (t--) {
    int x;
    scanf("%d", &x);
    int n;
    scanf("%d", &n);
    int i, j;
    int data[x];
    for (i = 0; i < x; i++) {
      scanf("%d", &data[i]);
    }
    double A2 = val(n);
    int count = (x / n);
    int extr = x % n;
    double avg = 0, range = 0, gavg = 0, grange = 0;
    for (i = 0; i < x; i = i + n) {
      avg = 0;
      double min = data[n * i], max = data[n * i];
      for (j = 0; j < n; j++) {
        if (min > data[n * i + j])
          min = data[n * i + j];
        if (max < data[n * i + j])
          max = data[n * i + j];
        avg += data[n * i + j];
      }
      range = max - min;
      avg /= n;
      gavg += avg;
      grange += range;
    }
    double min = data[n * i], max = data[n * i];
    for (i = count, j = 0; j < extr; j++) {
      avg = 0;
      if (min > data[n * i + j])
        min = data[n * i + j];
      if (max < data[n * i + j])
        max = data[n * i + j];
      avg += data[n * i + j];
      range = max - min;
      avg /= extr;
      gavg += avg;
      grange += range;
    }
    gavg = gavg / (ceil(x / n));
    grange = grange / (ceil(x / n));
    double UCL = gavg + (A2 * grange);
    double LCL = gavg - (A2 * grange);
    double CL = gavg;
    double sigma = fabs((UCL - CL)) / 3;
    int control = 0;
    for (i = 0; i < x; i++) {
      double temp;
      if (fabs(data[i]) > (3 * sigma)) {
        control = 1;
        break;
      }
      if (i >= 2) {
        int gf = 0;
        int po = 0, ne = 0;
        int anb = 0;
        for (gf = i; gf >= i - 2; gf--) {
          double gain = fabs(data[i]);
          if (gain > 2 * sigma) {
            anb++;
          }
          if (data[gf] >= CL)
            po++;
          else
            ne++;
        }
        if (po >= 2 || ne >= 2 || anb >= 2) {
          control = 1;
          break;
        }
      }
      if (i >= 4) {
        int gf = 0;
        int po = 0;
        int ne = 0;
        int anb = 0;
        for (gf = i; gf >= i - 4; gf--) {
          double gain = fabs(data[i]);
          if (gain > sigma) {
            anb++;
          }
          if (data[gf] >= CL)
            po++;
          else
            ne++;
        }
        if (po >= 4 || ne >= 4 || anb >= 4) {
          control = 1;
          break;
        }
      }
      if (i >= 7) {
        int gf = 0;
        int po = 0;
        int ne = 0;
        for (gf = i; gf >= i - 4; gf--) {
          double gain = fabs(data[i]);
          if (data[gf] >= CL)
            po++;
          else
            ne++;
        }
        if (po >= 8) {
          control = 1;
          break;
        }
      }
    }
    if (control == 0) {
      printf("In Control\n");
    } else
      printf("Out of Control\n");
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x110,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xea7(%rip),%rdi
lea    -0x8(%rbp),%rsi
call   1070 <scanf@plt>
mov    -0x8(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x8(%rbp)
cmp    $0x0,%eax
je     19df <main+0x88f>
lea    0xe83(%rip),%rdi
mov    %rdi,-0x100(%rbp)
lea    -0xc(%rbp),%rsi
call   1070 <scanf@plt>
mov    -0x100(%rbp),%rdi
lea    -0x10(%rbp),%rsi
call   1070 <scanf@plt>
mov    -0xc(%rbp),%eax
mov    %rsp,%rcx
mov    %rcx,-0x20(%rbp)
lea    0xf(,%rax,4),%rdx
and    $0xfffffffffffffff0,%rdx
mov    %rsp,%rcx
sub    %rdx,%rcx
mov    %rcx,-0xf8(%rbp)
mov    %rcx,%rsp
mov    %rax,-0x28(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1216 <main+0xc6>
mov    -0xf8(%rbp),%rsi
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
add    %rax,%rsi
lea    0xe0d(%rip),%rdi
call   1070 <scanf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    11de <main+0x8e>
mov    -0x10(%rbp),%edi
call   1050 <val@plt>
movsd  %xmm0,-0x30(%rbp)
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %eax,-0x34(%rbp)
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %edx,-0x38(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x58(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    13bf <main+0x26f>
mov    -0xf8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
movsd  %xmm0,-0x68(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1371 <main+0x221>
mov    -0xf8(%rbp),%rax
movsd  -0x60(%rbp),%xmm0
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm1
ucomisd %xmm1,%xmm0
jbe    12fa <main+0x1aa>
mov    -0xf8(%rbp),%rax
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0xf8(%rbp),%rax
movsd  -0x68(%rbp),%xmm1
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
ucomisd %xmm1,%xmm0
jbe    1340 <main+0x1f0>
mov    -0xf8(%rbp),%rax
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0xf8(%rbp),%rax
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    12a8 <main+0x158>
movsd  -0x68(%rbp),%xmm0
subsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
cvtsi2sdl -0x10(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x14(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x14(%rbp)
jmp    125e <main+0x10e>
mov    -0xf8(%rbp),%rax
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x38(%rbp),%eax
jge    150c <main+0x3bc>
mov    -0xf8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x70(%rbp),%xmm0
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm1
ucomisd %xmm1,%xmm0
jbe    1455 <main+0x305>
mov    -0xf8(%rbp),%rax
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0xf8(%rbp),%rax
movsd  -0x78(%rbp),%xmm1
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
ucomisd %xmm1,%xmm0
jbe    149b <main+0x34b>
mov    -0xf8(%rbp),%rax
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0xf8(%rbp),%rax
mov    -0x10(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x78(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
cvtsi2sdl -0x38(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    13fb <main+0x2ab>
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %eax,%edi
call   1030 <ceil@plt>
movaps %xmm0,%xmm1
movsd  -0x110(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %eax,%edi
call   1030 <ceil@plt>
movaps %xmm0,%xmm1
movsd  -0x108(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x50(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
subsd  -0x90(%rbp),%xmm0
ff
cvttsd2si %xmm0,%edi
call   1060 <fabs@plt>
mov    $0x3,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movl   $0x0,-0x9c(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    19a9 <main+0x859>
mov    -0xf8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%edi
call   1060 <fabs@plt>
cvtsi2sd %eax,%xmm0
movsd  0x9d1(%rip),%xmm1
mulsd  -0x98(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jbe    1650 <main+0x500>
movl   $0x1,-0x9c(%rbp)
jmp    19a9 <main+0x859>
cmpl   $0x2,-0x14(%rbp)
jl     1787 <main+0x637>
movl   $0x0,-0xac(%rbp)
movl   $0x0,-0xb0(%rbp)
movl   $0x0,-0xb4(%rbp)
movl   $0x0,-0xb8(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0xac(%rbp)
mov    -0xac(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jl     174c <main+0x5fc>
mov    -0xf8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%edi
call   1060 <fabs@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  0x93a(%rip),%xmm1
mulsd  -0x98(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jbe    16ef <main+0x59f>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
mov    -0xf8(%rbp),%rax
movslq -0xac(%rbp),%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jb     1724 <main+0x5d4>
mov    -0xb0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb0(%rbp)
jmp    1733 <main+0x5e3>
mov    -0xb4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb4(%rbp)
jmp    1738 <main+0x5e8>
mov    -0xac(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xac(%rbp)
jmp    168b <main+0x53b>
cmpl   $0x2,-0xb0(%rbp)
jge    1773 <main+0x623>
cmpl   $0x2,-0xb4(%rbp)
jge    1773 <main+0x623>
cmpl   $0x2,-0xb8(%rbp)
jl     1782 <main+0x632>
movl   $0x1,-0x9c(%rbp)
jmp    19a9 <main+0x859>
jmp    1787 <main+0x637>
cmpl   $0x4,-0x14(%rbp)
jl     18b2 <main+0x762>
movl   $0x0,-0xc4(%rbp)
movl   $0x0,-0xc8(%rbp)
movl   $0x0,-0xcc(%rbp)
movl   $0x0,-0xd0(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0xc4(%rbp)
mov    -0xc4(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x4,%ecx
cmp    %ecx,%eax
jl     1877 <main+0x727>
mov    -0xf8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%edi
call   1060 <fabs@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
ucomisd -0x98(%rbp),%xmm0
ff
jbe    181a <main+0x6ca>
mov    -0xd0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
mov    -0xf8(%rbp),%rax
movslq -0xc4(%rbp),%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jb     184f <main+0x6ff>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    185e <main+0x70e>
mov    -0xcc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
jmp    1863 <main+0x713>
mov    -0xc4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc4(%rbp)
jmp    17c2 <main+0x672>
cmpl   $0x4,-0xc8(%rbp)
jge    189e <main+0x74e>
cmpl   $0x4,-0xcc(%rbp)
jge    189e <main+0x74e>
cmpl   $0x4,-0xd0(%rbp)
jl     18ad <main+0x75d>
movl   $0x1,-0x9c(%rbp)
jmp    19a9 <main+0x859>
jmp    18b2 <main+0x762>
cmpl   $0x7,-0x14(%rbp)
jl     1996 <main+0x846>
movl   $0x0,-0xdc(%rbp)
movl   $0x0,-0xe0(%rbp)
movl   $0x0,-0xe4(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0xdc(%rbp)
mov    -0xdc(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x4,%ecx
cmp    %ecx,%eax
jl     1975 <main+0x825>
mov    -0xf8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%edi
call   1060 <fabs@plt>
mov    %eax,%ecx
mov    -0xf8(%rbp),%rax
cvtsi2sd %ecx,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movslq -0xdc(%rbp),%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jb     194d <main+0x7fd>
mov    -0xe0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe0(%rbp)
jmp    195c <main+0x80c>
mov    -0xe4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe4(%rbp)
jmp    1961 <main+0x811>
mov    -0xdc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xdc(%rbp)
jmp    18e3 <main+0x793>
cmpl   $0x8,-0xe0(%rbp)
jl     1991 <main+0x841>
movl   $0x1,-0x9c(%rbp)
jmp    19a9 <main+0x859>
jmp    1996 <main+0x846>
jmp    199b <main+0x84b>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1604 <main+0x4b4>
cmpl   $0x0,-0x9c(%rbp)
jne    19c7 <main+0x877>
lea    0x656(%rip),%rdi
call   1040 <printf@plt>
jmp    19d3 <main+0x883>
lea    0x651(%rip),%rdi
call   1040 <printf@plt>
mov    -0x20(%rbp),%rax
mov    %rax,%rsp
jmp    1172 <main+0x22>
xor    %eax,%eax
mov    %rbp,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xa8,%rsp
lea    0xe95(%rip),%rdi
lea    -0x34(%rbp),%rsi
call   1070 <scanf@plt>
subl   $0x1,-0x34(%rbp)
jae    118b <main+0x3b>
xor    %eax,%eax
lea    -0x28(%rbp),%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0xe6e(%rip),%r15
jmp    11c0 <main+0x70>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    0xe5c(%rip),%rdi
lea    0xe52(%rip),%r15
call   1030 <puts@plt>
mov    -0xa8(%rbp),%rsp
subl   $0x1,-0x34(%rbp)
jb     117a <main+0x2a>
mov    %r15,%rdi
lea    -0x2c(%rbp),%rsi
call   1070 <scanf@plt>
mov    %r15,%rdi
lea    -0x30(%rbp),%rsi
call   1070 <scanf@plt>
mov    %rsp,-0xa8(%rbp)
mov    -0x2c(%rbp),%eax
mov    %rsp,%r13
lea    0xf(,%rax,4),%rax
and    $0xfffffffffffffff0,%rax
sub    %rax,%r13
mov    %r13,%rsp
cmpl   $0x0,-0x2c(%rbp)
jle    122c <main+0xdc>
mov    %r13,%r14
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %r15,%rdi
mov    %r14,%rsi
call   1070 <scanf@plt>
add    $0x1,%rbx
movslq -0x2c(%rbp),%rax
add    $0x4,%r14
cmp    %rax,%rbx
jl     1210 <main+0xc0>
mov    -0x30(%rbp),%edi
call   1050 <val@plt>
movsd  %xmm0,-0x58(%rbp)
mov    -0x2c(%rbp),%r8d
movslq -0x30(%rbp),%r11
mov    %r8d,%eax
cltd
idiv   %r11d
mov    %r11d,%r9d
test   %r8d,%r8d
jle    1340 <main+0x1f0>
xorps  %xmm0,%xmm0
cvtsi2sd %r9d,%xmm0
mov    %r9d,%edi
and    $0xfffffffe,%edi
lea    0x4(%r13),%rcx
mov    %r11,%r10
imul   %r11,%r10
shl    $0x2,%r10
xorpd  %xmm6,%xmm6
xor    %ebx,%ebx
xorpd  %xmm7,%xmm7
jmp    12a7 <main+0x157>
nopl   (%rax)
movapd %xmm1,%xmm3
xorpd  %xmm2,%xmm2
divsd  %xmm0,%xmm2
addsd  %xmm2,%xmm6
subsd  %xmm1,%xmm3
addsd  %xmm3,%xmm7
add    %r11,%rbx
add    %r10,%rcx
cmp    %r8,%rbx
jge    134a <main+0x1fa>
mov    %rbx,%r14
imul   %r11,%r14
xorps  %xmm1,%xmm1
cvtsi2sdl 0x0(%r13,%r14,4),%xmm1
test   %r11d,%r11d
jle    1280 <main+0x130>
xorpd  %xmm2,%xmm2
xor    %esi,%esi
movapd %xmm1,%xmm3
cmp    $0x1,%r9d
je     130a <main+0x1ba>
nopl   (%rax)
xorps  %xmm4,%xmm4
cvtsi2sdl -0x4(%rcx,%rsi,4),%xmm4
movapd %xmm4,%xmm5
minsd  %xmm1,%xmm5
addsd  %xmm4,%xmm2
maxsd  %xmm3,%xmm4
xorps  %xmm3,%xmm3
cvtsi2sdl (%rcx,%rsi,4),%xmm3
movapd %xmm3,%xmm1
minsd  %xmm5,%xmm1
addsd  %xmm3,%xmm2
maxsd  %xmm4,%xmm3
add    $0x2,%rsi
cmp    %rsi,%rdi
jne    12d0 <main+0x180>
test   $0x1,%r9b
je     1288 <main+0x138>
add    %r14,%rsi
xorps  %xmm4,%xmm4
cvtsi2sdl 0x0(%r13,%rsi,4),%xmm4
movapd %xmm4,%xmm5
minsd  %xmm1,%xmm5
addsd  %xmm4,%xmm2
maxsd  %xmm3,%xmm4
movapd %xmm4,%xmm3
movapd %xmm5,%xmm1
jmp    1288 <main+0x138>
xchg   %ax,%ax
xor    %ebx,%ebx
xorpd  %xmm7,%xmm7
xorpd  %xmm6,%xmm6
test   %edx,%edx
jle    13b9 <main+0x269>
imul   %r11d,%ebx
movslq %ebx,%rcx
xorps  %xmm1,%xmm1
cvtsi2sdl 0x0(%r13,%rcx,4),%xmm1
imul   %eax,%r9d
xorps  %xmm0,%xmm0
cvtsi2sd %edx,%xmm0
movslq %r9d,%rsi
mov    %edx,%ecx
lea    0x0(,%rsi,4),%rdx
add    %r13,%rdx
xor    %esi,%esi
movapd %xmm1,%xmm2
xorps  %xmm3,%xmm3
cvtsi2sdl (%rdx,%rsi,4),%xmm3
movapd %xmm3,%xmm4
minsd  %xmm2,%xmm4
movapd %xmm3,%xmm2
maxsd  %xmm1,%xmm2
movapd %xmm2,%xmm1
subsd  %xmm4,%xmm2
addsd  %xmm2,%xmm7
divsd  %xmm0,%xmm3
addsd  %xmm3,%xmm6
add    $0x1,%rsi
movapd %xmm4,%xmm2
cmp    %rsi,%rcx
jne    1380 <main+0x230>
movapd %xmm7,-0x80(%rbp)
movapd %xmm6,-0x50(%rbp)
mov    %eax,%edi
call   1040 <ceil@plt>
movapd -0x50(%rbp),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,-0x50(%rbp)
mov    -0x2c(%rbp),%eax
cltd
idivl  -0x30(%rbp)
mov    %eax,%edi
call   1040 <ceil@plt>
movapd -0x80(%rbp),%xmm1
divsd  %xmm0,%xmm1
movsd  -0x58(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movapd -0x50(%rbp),%xmm1
addsd  %xmm1,%xmm0
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <fabs@plt>
cmpl   $0x0,-0x2c(%rbp)
lea    0xbf9(%rip),%rdi
jle    11ae <main+0x5e>
cltq
imul   $0x55555556,%rax,%rcx
mov    %rcx,%rax
shr    $0x3f,%rax
shr    $0x20,%rcx
add    %eax,%ecx
mov    %rcx,-0xb8(%rbp)
movslq %ecx,%rax
lea    (%rax,%rax,2),%rcx
mov    %rcx,-0x58(%rbp)
add    %rax,%rax
mov    %rax,-0xc0(%rbp)
movapd -0x50(%rbp),%xmm0
unpcklpd %xmm0,%xmm0
movapd %xmm0,-0xd0(%rbp)
ff
xor    %r15d,%r15d
mov    %r13,-0xb0(%rbp)
jmp    1481 <main+0x331>
xchg   %ax,%ax
add    $0x1,%r15
movslq -0x2c(%rbp),%rax
cmp    %rax,%r15
jge    1770 <main+0x620>
mov    0x0(%r13,%r15,4),%edi
call   1060 <fabs@plt>
cltq
cmp    %rax,-0x58(%rbp)
jl     11a0 <main+0x50>
cmp    $0x2,%r15
jb     1470 <main+0x320>
mov    0x0(%r13,%r15,4),%edi
call   1060 <fabs@plt>
mov    %eax,-0x80(%rbp)
mov    0x0(%r13,%r15,4),%edi
xorps  %xmm0,%xmm0
cvtsi2sd %edi,%xmm0
xor    %ebx,%ebx
xor    %r14d,%r14d
ucomisd -0x50(%rbp),%xmm0
setb   %bl
setae  %r14b
call   1060 <fabs@plt>
xorps  %xmm0,%xmm0
cvtsi2sdl -0x4(%r13,%r15,4),%xmm0
movapd -0x50(%rbp),%xmm1
ucomisd %xmm1,%xmm0
sbb    $0xffffffff,%r14d
ucomisd %xmm1,%xmm0
mov    %eax,%r12d
adc    $0x0,%ebx
mov    0x0(%r13,%r15,4),%edi
call   1060 <fabs@plt>
movapd -0x50(%rbp),%xmm1
xorps  %xmm0,%xmm0
cvtsi2sdl -0x8(%r13,%r15,4),%xmm0
ucomisd %xmm1,%xmm0
sbb    $0xffffffff,%r14d
ucomisd %xmm1,%xmm0
movslq -0x80(%rbp),%rdx
adc    $0x0,%ebx
xor    %ecx,%ecx
mov    -0xc0(%rbp),%rsi
cmp    %rdx,%rsi
setl   %r9b
movslq %r12d,%rdi
xor    %edx,%edx
cmp    %rdi,%rsi
setl   %dil
movslq %eax,%r8
xor    %eax,%eax
cmp    %r8,%rsi
setl   %r8b
cmp    $0x1,%r14d
ja     11a0 <main+0x50>
cmp    $0x1,%ebx
ja     11a0 <main+0x50>
mov    %r9b,%cl
mov    %dil,%dl
add    %ecx,%edx
mov    %r8b,%al
add    %edx,%eax
cmp    $0x1,%eax
ja     11a0 <main+0x50>
cmp    $0x4,%r15
jb     1470 <main+0x320>
mov    0x0(%r13,%r15,4),%edi
call   1060 <fabs@plt>
mov    %eax,-0x80(%rbp)
mov    0x0(%r13,%r15,4),%r12d
mov    %r12d,%edi
call   1060 <fabs@plt>
mov    %eax,-0x64(%rbp)
mov    0x0(%r13,%r15,4),%edi
movss  -0x4(%r13,%r15,4),%xmm0
movaps %xmm0,-0x90(%rbp)
call   1060 <fabs@plt>
mov    %eax,-0x60(%rbp)
mov    0x0(%r13,%r15,4),%edi
movss  -0x8(%r13,%r15,4),%xmm0
movaps %xmm0,-0xa0(%rbp)
call   1060 <fabs@plt>
mov    %eax,-0x5c(%rbp)
movd   %r12d,%xmm0
movss  -0xc(%r13,%r15,4),%xmm1
movaps -0xa0(%rbp),%xmm2
unpcklps %xmm1,%xmm2
cvtdq2pd %xmm2,%xmm2
movapd %xmm2,-0xa0(%rbp)
ff
punpckldq -0x90(%rbp),%xmm0
ff
cvtdq2pd %xmm0,%xmm1
movapd %xmm1,-0x90(%rbp)
ff
movapd -0xd0(%rbp),%xmm3
ff
movapd %xmm3,%xmm0
cmpnlepd %xmm1,%xmm0
movapd %xmm3,%xmm1
cmpnlepd %xmm2,%xmm1
packssdw %xmm1,%xmm0
movmskps %xmm0,%eax
mov    %eax,%ecx
shr    $0x3,%cl
mov    %eax,%edx
and    $0x4,%dl
shr    $0x2,%dl
mov    %eax,%ebx
and    $0x2,%bl
shr    %bl
and    $0x1,%eax
movzbl %bl,%esi
add    %eax,%esi
movzbl %dl,%eax
add    %esi,%eax
movzbl %cl,%ebx
add    %eax,%ebx
mov    0x0(%r13,%r15,4),%edi
call   1060 <fabs@plt>
xorps  %xmm0,%xmm0
cvtsi2sdl -0x10(%r13,%r15,4),%xmm0
movapd -0xd0(%rbp),%xmm2
ff
movapd %xmm2,%xmm1
cmplepd -0x90(%rbp),%xmm1
ff 02
cmplepd -0xa0(%rbp),%xmm2
ff 02
packssdw %xmm2,%xmm1
movmskps %xmm1,%ecx
mov    %ecx,%edx
shr    %dl
and    $0x5,%dl
sub    %dl,%cl
mov    %ecx,%edx
and    $0x33,%dl
shr    $0x2,%cl
and    $0x33,%cl
add    %dl,%cl
mov    %ecx,%edx
shr    $0x4,%dl
add    %cl,%dl
and    $0xf,%dl
movapd -0x50(%rbp),%xmm1
ucomisd %xmm1,%xmm0
movzbl %dl,%r14d
sbb    $0xffffffff,%r14d
ucomisd %xmm1,%xmm0
adc    $0x0,%ebx
xor    %r8d,%r8d
mov    -0xb8(%rbp),%r13
cmp    %r13d,-0x80(%rbp)
setg   %r10b
xor    %esi,%esi
cmp    %r13d,-0x64(%rbp)
setg   %r12b
xor    %edx,%edx
cmp    %r13d,-0x60(%rbp)
setg   %r11b
xor    %ecx,%ecx
cmp    %r13d,-0x5c(%rbp)
setg   %r9b
xor    %edi,%edi
cmp    %r13d,%eax
setg   %al
cmp    $0x3,%r14d
ja     11a0 <main+0x50>
cmp    $0x3,%ebx
ja     11a0 <main+0x50>
mov    %r10b,%r8b
mov    %r12b,%sil
add    %r8d,%esi
mov    %r11b,%dl
add    %esi,%edx
mov    %r9b,%cl
add    %edx,%ecx
mov    %al,%dil
add    %ecx,%edi
cmp    $0x3,%edi
ja     11a0 <main+0x50>
cmp    $0x7,%r15
mov    -0xb0(%rbp),%r13
jb     1470 <main+0x320>
mov    0x0(%r13,%r15,4),%edi
call   1060 <fabs@plt>
mov    0x0(%r13,%r15,4),%edi
call   1060 <fabs@plt>
mov    0x0(%r13,%r15,4),%edi
call   1060 <fabs@plt>
mov    0x0(%r13,%r15,4),%edi
call   1060 <fabs@plt>
mov    0x0(%r13,%r15,4),%edi
call   1060 <fabs@plt>
jmp    1470 <main+0x320>
nopl   0x0(%rax)
lea    0x89b(%rip),%rdi
jmp    11a7 <main+0x57>

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

LLVM IR (-O2):
@.str = [3 x i8] c"%d\00"
@str = [15 x i8] c"Out of Control\00"
@str.3 = [11 x i8] c"In Control\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = bitcast i32* %1 to i8*
%5 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %1)
%6 = load i32, i32* %1
%7 = add nsw i32 %6, -1
store i32 %7, i32* %1
%8 = icmp eq i32 %6, 0
br i1 %8, label %321, label %9
9: ; preds = %0
%10 = bitcast i32* %2 to i8*
%11 = bitcast i32* %3 to i8*
br label %12
12: ; preds = %9, %315
%13 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %2)
%14 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %3)
%15 = load i32, i32* %2
%16 = zext i32 %15 to i64
%17 = call i8* @llvm.stacksave()
%18 = alloca i32, i64 %16
%19 = load i32, i32* %2
%20 = icmp sgt i32 %19, 0
br i1 %20, label %21, label %29
21: ; preds = %12, %21
%22 = phi i64 [ %25, %21 ], [ 0, %12 ]
%23 = getelementptr inbounds i32, i32* %18, i64 %22
%24 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %23)
%25 = add nuw nsw i64 %22, 1
%26 = load i32, i32* %2
%27 = sext i32 %26 to i64
%28 = icmp slt i64 %25, %27
br i1 %28, label %21, label %29
29: ; preds = %21, %12
%30 = load i32, i32* %3
%31 = call double @val(i32 %30)
%32 = load i32, i32* %2
%33 = load i32, i32* %3
%34 = sdiv i32 %32, %33
%35 = srem i32 %32, %33
%36 = icmp sgt i32 %32, 0
br i1 %36, label %37, label %114
37: ; preds = %29
%38 = icmp sgt i32 %33, 0
%39 = sitofp i32 %33 to double
%40 = sext i32 %33 to i64
%41 = zext i32 %32 to i64
%42 = zext i32 %33 to i64
%43 = and i64 %42, 1
%44 = icmp eq i32 %33, 1
%45 = and i64 %42, 4294967294
%46 = icmp eq i64 %43, 0
br label %47
47: ; preds = %37, %102
%48 = phi i64 [ 0, %37 ], [ %110, %102 ]
%49 = phi double [ 0.000000e+00, %37 ], [ %108, %102 ]
%50 = phi double [ 0.000000e+00, %37 ], [ %109, %102 ]
%51 = mul nsw i64 %48, %40
%52 = getelementptr inbounds i32, i32* %18, i64 %51
%53 = load i32, i32* %52
%54 = sitofp i32 %53 to double
br i1 %38, label %55, label %102
55: ; preds = %47
br i1 %44, label %84, label %56
56: ; preds = %55, %56
%57 = phi i64 [ %81, %56 ], [ 0, %55 ]
%58 = phi double [ %80, %56 ], [ 0.000000e+00, %55 ]
%59 = phi double [ %77, %56 ], [ %54, %55 ]
%60 = phi double [ %79, %56 ], [ %54, %55 ]
%61 = phi i64 [ %82, %56 ], [ 0, %55 ]
%62 = add nsw i64 %57, %51
%63 = getelementptr inbounds i32, i32* %18, i64 %62
%64 = load i32, i32* %63
%65 = sitofp i32 %64 to double
%66 = fcmp ogt double %59, %65
%67 = select i1 %66, double %65, double %59
%68 = fcmp olt double %60, %65
%69 = select i1 %68, double %65, double %60
%70 = fadd double %58, %65
%71 = or i64 %57, 1
%72 = add nsw i64 %71, %51
%73 = getelementptr inbounds i32, i32* %18, i64 %72
%74 = load i32, i32* %73
%75 = sitofp i32 %74 to double
%76 = fcmp ogt double %67, %75
%77 = select i1 %76, double %75, double %67
%78 = fcmp olt double %69, %75
%79 = select i1 %78, double %75, double %69
%80 = fadd double %70, %75
%81 = add nuw nsw i64 %57, 2
%82 = add i64 %61, 2
%83 = icmp eq i64 %82, %45
br i1 %83, label %84, label %56
84: ; preds = %56, %55
%85 = phi double [ undef, %55 ], [ %77, %56 ]
%86 = phi double [ undef, %55 ], [ %79, %56 ]
%87 = phi double [ undef, %55 ], [ %80, %56 ]
%88 = phi i64 [ 0, %55 ], [ %81, %56 ]
%89 = phi double [ 0.000000e+00, %55 ], [ %80, %56 ]
%90 = phi double [ %54, %55 ], [ %77, %56 ]
%91 = phi double [ %54, %55 ], [ %79, %56 ]
br i1 %46, label %102, label %92
92: ; preds = %84
%93 = add nsw i64 %88, %51
%94 = getelementptr inbounds i32, i32* %18, i64 %93
%95 = load i32, i32* %94
%96 = sitofp i32 %95 to double
%97 = fcmp ogt double %90, %96
%98 = select i1 %97, double %96, double %90
%99 = fcmp olt double %91, %96
%100 = select i1 %99, double %96, double %91
%101 = fadd double %89, %96
br label %102
102: ; preds = %92, %84, %47
%103 = phi double [ %54, %47 ], [ %86, %84 ], [ %100, %92 ]
%104 = phi double [ %54, %47 ], [ %85, %84 ], [ %98, %92 ]
%105 = phi double [ 0.000000e+00, %47 ], [ %87, %84 ], [ %101, %92 ]
%106 = fsub double %103, %104
%107 = fdiv double %105, %39
%108 = fadd double %49, %107
%109 = fadd double %50, %106
%110 = add nsw i64 %48, %40
%111 = icmp slt i64 %110, %41
br i1 %111, label %47, label %112
112: ; preds = %102
%113 = trunc i64 %110 to i32
br label %114
114: ; preds = %112, %29
%115 = phi double [ 0.000000e+00, %29 ], [ %109, %112 ]
%116 = phi double [ 0.000000e+00, %29 ], [ %108, %112 ]
%117 = phi i32 [ 0, %29 ], [ %113, %112 ]
%118 = mul nsw i32 %117, %33
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds i32, i32* %18, i64 %119
%121 = load i32, i32* %120
%122 = sitofp i32 %121 to double
%123 = icmp sgt i32 %35, 0
br i1 %123, label %124, label %149
124: ; preds = %114
%125 = mul nsw i32 %34, %33
%126 = sitofp i32 %35 to double
%127 = sext i32 %125 to i64
%128 = zext i32 %35 to i64
br label %129
129: ; preds = %124, %129
%130 = phi i64 [ 0, %124 ], [ %147, %129 ]
%131 = phi double [ %116, %124 ], [ %145, %129 ]
%132 = phi double [ %115, %124 ], [ %146, %129 ]
%133 = phi double [ %122, %124 ], [ %142, %129 ]
%134 = phi double [ %122, %124 ], [ %140, %129 ]
%135 = add nsw i64 %130, %127
%136 = getelementptr inbounds i32, i32* %18, i64 %135
%137 = load i32, i32* %136
%138 = sitofp i32 %137 to double
%139 = fcmp ogt double %134, %138
%140 = select i1 %139, double %138, double %134
%141 = fcmp olt double %133, %138
%142 = select i1 %141, double %138, double %133
%143 = fsub double %142, %140
%144 = fdiv double %138, %126
%145 = fadd double %131, %144
%146 = fadd double %132, %143
%147 = add nuw nsw i64 %130, 1
%148 = icmp eq i64 %147, %128
br i1 %148, label %149, label %129
149: ; preds = %129, %114
%150 = phi double [ %115, %114 ], [ %146, %129 ]
%151 = phi double [ %116, %114 ], [ %145, %129 ]
%152 = call double @ceil(i32 %34)
%153 = fdiv double %151, %152
%154 = load i32, i32* %2
%155 = load i32, i32* %3
%156 = sdiv i32 %154, %155
%157 = call double @ceil(i32 %156)
%158 = fdiv double %150, %157
%159 = call double @llvm.fmuladd.f64(double %31, double %158, double %153)
%160 = fsub double %159, %153
%161 = fptosi double %160 to i32
%162 = call i32 @fabs(i32 %161)
%163 = sdiv i32 %162, 3
%164 = sext i32 %163 to i64
%165 = load i32, i32* %2
%166 = icmp sgt i32 %165, 0
br i1 %166, label %167, label %315
167: ; preds = %149
%168 = mul nsw i64 %164, 3
%169 = shl nsw i64 %164, 1
%170 = insertelement <4 x double> poison, double %153, i64 0
%171 = shufflevector <4 x double> %170, <4 x double> poison, <4 x i32> zeroinitializer
br label %172
172: ; preds = %167, %310
%173 = phi i64 [ 0, %167 ], [ %311, %310 ]
%174 = getelementptr inbounds i32, i32* %18, i64 %173
%175 = load i32, i32* %174
%176 = call i32 @fabs(i32 %175)
%177 = sext i32 %176 to i64
%178 = icmp slt i64 %168, %177
br i1 %178, label %315, label %179
179: ; preds = %172
%180 = icmp ugt i64 %173, 1
br i1 %180, label %181, label %310
181: ; preds = %179
%182 = load i32, i32* %174
%183 = call i32 @fabs(i32 %182)
%184 = sext i32 %183 to i64
%185 = icmp slt i64 %169, %184
%186 = zext i1 %185 to i32
%187 = load i32, i32* %174
%188 = sitofp i32 %187 to double
%189 = fcmp ugt double %153, %188
%190 = xor i1 %189, true
%191 = zext i1 %190 to i32
%192 = zext i1 %189 to i32
%193 = add nsw i64 %173, -1
%194 = call i32 @fabs(i32 %187)
%195 = sext i32 %194 to i64
%196 = icmp slt i64 %169, %195
%197 = zext i1 %196 to i32
%198 = add nuw nsw i32 %186, %197
%199 = getelementptr inbounds i32, i32* %18, i64 %193
%200 = load i32, i32* %199
%201 = sitofp i32 %200 to double
%202 = fcmp ugt double %153, %201
%203 = xor i1 %202, true
%204 = zext i1 %203 to i32
%205 = add nuw nsw i32 %191, %204
%206 = zext i1 %202 to i32
%207 = add nuw nsw i32 %192, %206
%208 = add nsw i64 %173, -2
%209 = load i32, i32* %174
%210 = call i32 @fabs(i32 %209)
%211 = sext i32 %210 to i64
%212 = icmp slt i64 %169, %211
%213 = zext i1 %212 to i32
%214 = add nuw nsw i32 %198, %213
%215 = getelementptr inbounds i32, i32* %18, i64 %208
%216 = load i32, i32* %215
%217 = sitofp i32 %216 to double
%218 = fcmp ugt double %153, %217
%219 = xor i1 %218, true
%220 = zext i1 %219 to i32
%221 = add nuw nsw i32 %205, %220
%222 = zext i1 %218 to i32
%223 = add nuw nsw i32 %207, %222
%224 = icmp ugt i32 %221, 1
%225 = icmp ugt i32 %223, 1
%226 = select i1 %224, i1 true, i1 %225
%227 = icmp ugt i32 %214, 1
%228 = select i1 %226, i1 true, i1 %227
br i1 %228, label %315, label %229
229: ; preds = %181
%230 = icmp ugt i64 %173, 3
br i1 %230, label %231, label %310
231: ; preds = %229
%232 = load i32, i32* %174
%233 = call i32 @fabs(i32 %232)
%234 = icmp sgt i32 %233, %163
%235 = zext i1 %234 to i32
%236 = load i32, i32* %174
%237 = call i32 @fabs(i32 %236)
%238 = load i32, i32* %199
%239 = load i32, i32* %174
%240 = call i32 @fabs(i32 %239)
%241 = load i32, i32* %215
%242 = add nsw i64 %173, -3
%243 = load i32, i32* %174
%244 = call i32 @fabs(i32 %243)
%245 = getelementptr inbounds i32, i32* %18, i64 %242
%246 = load i32, i32* %245
%247 = insertelement <4 x i32> poison, i32 %236, i64 0
%248 = insertelement <4 x i32> %247, i32 %238, i64 1
%249 = insertelement <4 x i32> %248, i32 %241, i64 2
%250 = insertelement <4 x i32> %249, i32 %246, i64 3
%251 = sitofp <4 x i32> %250 to <4 x double>
%252 = fcmp ugt <4 x double> %171, %251
%253 = extractelement <4 x i1> %252, i64 0
%254 = zext i1 %253 to i32
%255 = icmp sgt i32 %237, %163
%256 = zext i1 %255 to i32
%257 = add nuw nsw i32 %235, %256
%258 = xor <4 x i1> %252, <i1 true, i1 true, i1 true, i1 true>
%259 = extractelement <4 x i1> %252, i64 1
%260 = zext i1 %259 to i32
%261 = add nuw nsw i32 %254, %260
%262 = icmp sgt i32 %240, %163
%263 = zext i1 %262 to i32
%264 = add nuw nsw i32 %257, %263
%265 = extractelement <4 x i1> %252, i64 2
%266 = zext i1 %265 to i32
%267 = add nuw nsw i32 %261, %266
%268 = icmp sgt i32 %244, %163
%269 = zext i1 %268 to i32
%270 = add nuw nsw i32 %264, %269
%271 = extractelement <4 x i1> %252, i64 3
%272 = zext i1 %271 to i32
%273 = add nuw nsw i32 %267, %272
%274 = add nsw i64 %173, -4
%275 = load i32, i32* %174
%276 = call i32 @fabs(i32 %275)
%277 = icmp sgt i32 %276, %163
%278 = zext i1 %277 to i32
%279 = add nuw nsw i32 %270, %278
%280 = getelementptr inbounds i32, i32* %18, i64 %274
%281 = load i32, i32* %280
%282 = sitofp i32 %281 to double
%283 = fcmp ugt double %153, %282
%284 = xor i1 %283, true
%285 = zext i1 %284 to i32
%286 = bitcast <4 x i1> %258 to i4
%287 = call i4 @llvm.ctpop.i4(i4 %286)
%288 = zext i4 %287 to i32
%289 = add nuw nsw i32 %288, %285
%290 = zext i1 %283 to i32
%291 = add nuw nsw i32 %273, %290
%292 = icmp ugt i32 %289, 3
%293 = icmp ugt i32 %291, 3
%294 = select i1 %292, i1 true, i1 %293
%295 = icmp ugt i32 %279, 3
%296 = select i1 %294, i1 true, i1 %295
br i1 %296, label %315, label %297
297: ; preds = %231
%298 = icmp ugt i64 %173, 6
br i1 %298, label %299, label %310
299: ; preds = %297
%300 = load i32, i32* %174
%301 = call i32 @fabs(i32 %300)
%302 = load i32, i32* %174
%303 = call i32 @fabs(i32 %302)
%304 = load i32, i32* %174
%305 = call i32 @fabs(i32 %304)
%306 = load i32, i32* %174
%307 = call i32 @fabs(i32 %306)
%308 = load i32, i32* %174
%309 = call i32 @fabs(i32 %308)
br label %310
310: ; preds = %299, %179, %229, %297
%311 = add nuw nsw i64 %173, 1
%312 = load i32, i32* %2
%313 = sext i32 %312 to i64
%314 = icmp slt i64 %311, %313
br i1 %314, label %172, label %315
315: ; preds = %172, %231, %181, %310, %149
%316 = phi i8* [ getelementptr inbounds ([11 x i8], [11 x i8]* @str.3, i64 0, i64 0), %149 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @str.3, i64 0, i64 0), %310 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @str, i64 0, i64 0), %181 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @str, i64 0, i64 0), %231 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @str, i64 0, i64 0), %172 ]
%317 = call i32 @puts(i8* dereferenceable(1) %316)
%318 = load i32, i32* %1
%319 = add nsw i32 %318, -1
store i32 %319, i32* %1
%320 = icmp eq i32 %318, 0
br i1 %320, label %321, label %12
321: ; preds = %315, %0
ret i32 0
}