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

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ gzFile;
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ fflush(int /*<<< orphan*/ *);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, int);
int /*<<< orphan*/ fwrite(int *, int, int, int /*<<< orphan*/ *);
char gv(char);
void *malloc(int);
int /*<<< orphan*/ print_ind_site(double, double, int *, int /*<<< orphan*/);
int /*<<< orphan*/ stderr;
void test(int nsam, int segsites, char **list, int *positInt, gzFile gz,
          double errate, double meandepth, int regLen, FILE *vSitesFP,
          double *depths, int dLen) {
  fprintf(stderr, "segsites=%d\n", segsites);
  int p = 0;
  char **res = malloc(nsam / 2 * sizeof(char *));
  if (positInt[0] == 0)
    positInt[0] = 1;
  for (int i = 1; i < segsites; i++) {
    if (positInt[i] <= positInt[i - 1])
      positInt[i] = positInt[i - 1] + 1;
  }
  fwrite(&segsites, sizeof(int), 1, vSitesFP);
  fwrite(positInt, sizeof(int), segsites, vSitesFP);
  fflush(vSitesFP);
  for (int h = 0; h < nsam; h += 2) {
    res[p] = malloc(segsites);
    for (int s = 0; s < segsites; s++) {
      res[p][s] = gv(list[h][s]) + gv(list[h + 1][s]);
    }
    p++;
  }
  if (regLen == 0) {
    for (int s = 0; s < segsites; s++) {
      for (int i = 0; i < nsam / 2; i++) {
        int genotypes[2] = {0, 0};
        if (res[i][s] >= 1)
          genotypes[1] = 1;
        if (res[i][s] == 2)
          genotypes[0] = 1;
        if (depths == NULL)
          print_ind_site(errate, meandepth, genotypes, gz);
        else
          print_ind_site(errate, depths[i], genotypes, gz);
      }
    }
  } else {
    int s = 0;
    for (int i = 1; i <= regLen; i++) {
      if (s < segsites && positInt[s] == i) {
        for (int i = 0; i < nsam / 2; i++) {
          int genotypes[2] = {0, 0};
          if (res[i][s] >= 1)
            genotypes[1] = 1;
          if (res[i][s] == 2)
            genotypes[0] = 1;
          if (depths == NULL)
            print_ind_site(errate, meandepth, genotypes, gz);
          else
            print_ind_site(errate, depths[i], genotypes, gz);
        }
        s++;
      } else {
        for (int i = 0; i < nsam / 2; i++) {
          int genotypes[2] = {0, 0};
          if (depths == NULL)
            print_ind_site(errate, meandepth, genotypes, gz);
          else
            print_ind_site(errate, depths[i], genotypes, gz);
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<test>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
movsd  %xmm0,-0x28(%rbp)
movsd  %xmm1,-0x30(%rbp)
mov    %r9d,-0x34(%rbp)
mov    0x2e33(%rip),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%edx
lea    0xe47(%rip),%rsi
call   1050 <fprintf@plt>
movl   $0x0,-0x38(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cltq
shl    $0x3,%rax
mov    %eax,%edi
call   1060 <malloc@plt>
mov    %rax,-0x40(%rbp)
mov    -0x18(%rbp),%rax
cmpl   $0x0,(%rax)
jne    11f8 <test+0x88>
mov    -0x18(%rbp),%rax
movl   $0x1,(%rax)
movl   $0x1,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    125d <test+0xed>
mov    -0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x18(%rbp),%rcx
mov    -0x44(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jg     124a <test+0xda>
mov    -0x18(%rbp),%rax
mov    -0x44(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
add    $0x1,%edx
mov    -0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    124f <test+0xdf>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    11ff <test+0x8f>
mov    0x10(%rbp),%rcx
lea    -0x8(%rbp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
call   1090 <fwrite@plt>
mov    -0x18(%rbp),%rdi
mov    -0x8(%rbp),%edx
mov    0x10(%rbp),%rcx
mov    $0x4,%esi
call   1090 <fwrite@plt>
mov    0x10(%rbp),%rdi
call   1070 <fflush@plt>
movl   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1350 <test+0x1e0>
mov    -0x8(%rbp),%edi
call   1060 <malloc@plt>
mov    %rax,%rdx
mov    -0x40(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1339 <test+0x1c9>
mov    -0x10(%rbp),%rax
movslq -0x48(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x4c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1080 <gv@plt>
movsbl %al,%eax
mov    %eax,-0x80(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x48(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x4c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1080 <gv@plt>
mov    %al,%cl
mov    -0x80(%rbp),%eax
movsbl %cl,%ecx
add    %ecx,%eax
mov    %al,%dl
mov    -0x40(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x4c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    12c3 <test+0x153>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x48(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x48(%rbp)
jmp    1299 <test+0x129>
cmpl   $0x0,-0x34(%rbp)
jne    145f <test+0x2ef>
movl   $0x0,-0x50(%rbp)
mov    -0x50(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    145a <test+0x2ea>
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x84(%rbp),%eax
cmp    %ecx,%eax
jge    1447 <test+0x2d7>
lea    -0x5c(%rbp),%rdi
xor    %esi,%esi
mov    $0x8,%edx
call   1040 <memset@plt>
mov    -0x40(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x50(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jl     13cc <test+0x25c>
movl   $0x1,-0x58(%rbp)
mov    -0x40(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x50(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2,%eax
jne    13f0 <test+0x280>
movl   $0x1,-0x5c(%rbp)
cmpq   $0x0,0x18(%rbp)
jne    1416 <test+0x2a6>
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
lea    -0x5c(%rbp),%rdi
mov    -0x1c(%rbp),%esi
call   1030 <print_ind_site@plt>
jmp    1434 <test+0x2c4>
movsd  -0x28(%rbp),%xmm0
mov    0x18(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
lea    -0x5c(%rbp),%rdi
mov    -0x1c(%rbp),%esi
call   1030 <print_ind_site@plt>
jmp    1439 <test+0x2c9>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1374 <test+0x204>
jmp    144c <test+0x2dc>
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    1361 <test+0x1f1>
jmp    1630 <test+0x4c0>
movl   $0x0,-0x60(%rbp)
movl   $0x1,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x34(%rbp),%eax
jg     162b <test+0x4bb>
mov    -0x60(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1581 <test+0x411>
mov    -0x18(%rbp),%rax
movslq -0x60(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x64(%rbp),%eax
jne    1581 <test+0x411>
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x88(%rbp),%eax
cmp    %ecx,%eax
jge    1573 <test+0x403>
lea    -0x70(%rbp),%rdi
xor    %esi,%esi
mov    $0x8,%edx
call   1040 <memset@plt>
mov    -0x40(%rbp),%rax
movslq -0x68(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x60(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jl     14f8 <test+0x388>
movl   $0x1,-0x6c(%rbp)
mov    -0x40(%rbp),%rax
movslq -0x68(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x60(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2,%eax
jne    151c <test+0x3ac>
movl   $0x1,-0x70(%rbp)
cmpq   $0x0,0x18(%rbp)
jne    1542 <test+0x3d2>
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
lea    -0x70(%rbp),%rdi
mov    -0x1c(%rbp),%esi
call   1030 <print_ind_site@plt>
jmp    1560 <test+0x3f0>
movsd  -0x28(%rbp),%xmm0
mov    0x18(%rbp),%rax
movslq -0x68(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
lea    -0x70(%rbp),%rdi
mov    -0x1c(%rbp),%esi
call   1030 <print_ind_site@plt>
jmp    1565 <test+0x3f5>
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    14a0 <test+0x330>
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
jmp    1618 <test+0x4a8>
movl   $0x0,-0x74(%rbp)
mov    -0x74(%rbp),%eax
mov    %eax,-0x8c(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x8c(%rbp),%eax
cmp    %ecx,%eax
jge    1613 <test+0x4a3>
lea    -0x7c(%rbp),%rdi
xor    %esi,%esi
mov    $0x8,%edx
call   1040 <memset@plt>
cmpq   $0x0,0x18(%rbp)
jne    15e2 <test+0x472>
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
lea    -0x7c(%rbp),%rdi
mov    -0x1c(%rbp),%esi
call   1030 <print_ind_site@plt>
jmp    1600 <test+0x490>
movsd  -0x28(%rbp),%xmm0
mov    0x18(%rbp),%rax
movslq -0x74(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
lea    -0x7c(%rbp),%rdi
mov    -0x1c(%rbp),%esi
call   1030 <print_ind_site@plt>
jmp    1605 <test+0x495>
mov    -0x74(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    1588 <test+0x418>
jmp    1618 <test+0x4a8>
jmp    161d <test+0x4ad>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    146d <test+0x2fd>
jmp    1630 <test+0x4c0>
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    %r9d,0x28(%rsp)
movsd  %xmm1,0x50(%rsp)
movsd  %xmm0,0x48(%rsp)
mov    %r8d,%r14d
mov    %rcx,%rbx
mov    %rdx,%r15
mov    %esi,%r12d
mov    %edi,%ebp
mov    %esi,0x2c(%rsp)
mov    0x2e48(%rip),%rax
mov    (%rax),%edi
lea    0xe5f(%rip),%rsi
mov    %r12d,%edx
call   1040 <fprintf@plt>
mov    %ebp,%eax
shr    $0x1f,%eax
mov    %ebp,0xc(%rsp)
add    %ebp,%eax
sar    %eax
mov    %rax,0x58(%rsp)
lea    0x0(,%rax,8),%edi
call   1050 <malloc@plt>
mov    %rax,0x40(%rsp)
mov    (%rbx),%eax
test   %eax,%eax
jne    11dd <test+0x7d>
movl   $0x1,(%rbx)
mov    $0x1,%eax
mov    0xa0(%rsp),%r13
cmp    $0x2,%r12d
jl     1211 <test+0xb1>
mov    %r12d,%edx
add    $0xffffffffffffffff,%rdx
mov    $0x1,%ecx
cmp    $0x2,%r12d
jne    150a <test+0x3aa>
test   $0x1,%dl
je     1211 <test+0xb1>
cmp    %eax,(%rbx,%rcx,4)
jg     1211 <test+0xb1>
add    $0x1,%eax
mov    %eax,(%rbx,%rcx,4)
mov    %r15,0x38(%rsp)
mov    %r14d,0x1c(%rsp)
lea    0x2c(%rsp),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    %r13,%rcx
call   1080 <fwrite@plt>
mov    0x2c(%rsp),%r14d
mov    %rbx,0x60(%rsp)
mov    %rbx,%rdi
mov    $0x4,%esi
mov    %r14d,%edx
mov    %r13,%rcx
call   1080 <fwrite@plt>
mov    %r13,%rdi
call   1060 <fflush@plt>
cmpl   $0x0,0xc(%rsp)
mov    %r14,0x30(%rsp)
jle    12f4 <test+0x194>
xor    %ebx,%ebx
xor    %ebp,%ebp
mov    0x38(%rsp),%r15
jmp    1293 <test+0x133>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x20(%rsp),%rbx
add    $0x1,%rbx
add    $0x2,%rbp
cmp    0xc(%rsp),%ebp
jge    12f4 <test+0x194>
mov    %r14d,%edi
call   1050 <malloc@plt>
mov    %rax,%r12
mov    0x40(%rsp),%rax
mov    %rbx,0x20(%rsp)
mov    %r12,(%rax,%rbx,8)
test   %r14d,%r14d
jle    1280 <test+0x120>
mov    %rbp,%r13
or     $0x1,%r13
xor    %ebx,%ebx
nopw   0x0(%rax,%rax,1)
mov    (%r15,%rbp,8),%rax
movsbl (%rax,%rbx,1),%edi
call   1070 <gv@plt>
mov    %eax,%r14d
mov    (%r15,%r13,8),%rax
movsbl (%rax,%rbx,1),%edi
call   1070 <gv@plt>
add    %r14b,%al
mov    0x30(%rsp),%r14
mov    %al,(%r12,%rbx,1)
add    $0x1,%rbx
cmp    %rbx,%r14
jne    12c0 <test+0x160>
jmp    1280 <test+0x120>
mov    0xa8(%rsp),%r14
mov    0x28(%rsp),%ebx
test   %ebx,%ebx
je     145d <test+0x2fd>
jle    14fb <test+0x39b>
mov    0x58(%rsp),%r12d
xor    %ecx,%ecx
mov    $0x1,%edx
lea    0x10(%rsp),%r15
jmp    1349 <test+0x1e9>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x28(%rsp),%ebx
mov    %r13,%rcx
mov    0x20(%rsp),%rdx
lea    0x1(%rdx),%eax
cmp    %ebx,%edx
mov    %eax,%edx
je     14fb <test+0x39b>
cmp    0x30(%rsp),%ecx
jge    13f0 <test+0x290>
movslq %ecx,%r13
mov    0x60(%rsp),%rax
cmp    %edx,(%rax,%r13,4)
jne    13f0 <test+0x290>
mov    %rdx,0x20(%rsp)
mov    %rcx,0x38(%rsp)
cmpl   $0x2,0xc(%rsp)
jl     1450 <test+0x2f0>
xor    %ebp,%ebp
jmp    139f <test+0x23f>
xchg   %ax,%ax
movsd  0x48(%rsp),%xmm0
mov    %r15,%rdi
mov    0x1c(%rsp),%esi
call   1030 <print_ind_site@plt>
add    $0x1,%rbp
cmp    %rbp,%r12
je     1450 <test+0x2f0>
movq   $0x0,0x10(%rsp)
mov    0x40(%rsp),%rax
mov    (%rax,%rbp,8),%rax
cmpb   $0x0,(%rax,%r13,1)
jle    13cf <test+0x26f>
movl   $0x1,0x14(%rsp)
cmpb   $0x2,(%rax,%r13,1)
jne    13cf <test+0x26f>
movl   $0x1,0x10(%rsp)
movsd  0x50(%rsp),%xmm1
test   %r14,%r14
je     1380 <test+0x220>
movsd  (%r14,%rbp,8),%xmm1
jmp    1380 <test+0x220>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmpl   $0x2,0xc(%rsp)
jl     133c <test+0x1dc>
mov    %rdx,0x20(%rsp)
mov    %rcx,%r13
xor    %ebp,%ebp
mov    0x1c(%rsp),%ebx
jmp    142d <test+0x2cd>
nopl   0x0(%rax,%rax,1)
movsd  0x48(%rsp),%xmm0
mov    %r15,%rdi
mov    %ebx,%esi
call   1030 <print_ind_site@plt>
add    $0x1,%rbp
cmp    %rbp,%r12
je     1330 <test+0x1d0>
movq   $0x0,0x10(%rsp)
movsd  0x50(%rsp),%xmm1
test   %r14,%r14
je     1410 <test+0x2b0>
movsd  (%r14,%rbp,8),%xmm1
jmp    1410 <test+0x2b0>
nopl   0x0(%rax)
mov    0x38(%rsp),%rcx
add    $0x1,%ecx
jmp    1337 <test+0x1d7>
cmpl   $0x0,0x30(%rsp)
mov    0x1c(%rsp),%r13d
jle    14fb <test+0x39b>
mov    0x58(%rsp),%r12d
xor    %ebx,%ebx
lea    0x10(%rsp),%r15
jmp    148b <test+0x32b>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rbx
cmp    0x30(%rsp),%rbx
je     14fb <test+0x39b>
cmpl   $0x2,0xc(%rsp)
jl     1480 <test+0x320>
xor    %ebp,%ebp
jmp    14ba <test+0x35a>
cs nopw 0x0(%rax,%rax,1)
movsd  0x48(%rsp),%xmm0
mov    %r15,%rdi
mov    %r13d,%esi
call   1030 <print_ind_site@plt>
add    $0x1,%rbp
cmp    %rbp,%r12
je     1480 <test+0x320>
movq   $0x0,0x10(%rsp)
mov    0x40(%rsp),%rax
mov    (%rax,%rbp,8),%rax
cmpb   $0x0,(%rax,%rbx,1)
jle    14e8 <test+0x388>
movl   $0x1,0x14(%rsp)
cmpb   $0x2,(%rax,%rbx,1)
jne    14e8 <test+0x388>
movl   $0x1,0x10(%rsp)
movsd  0x50(%rsp),%xmm1
test   %r14,%r14
je     14a0 <test+0x340>
movsd  (%r14,%rbp,8),%xmm1
jmp    14a0 <test+0x340>
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %rdx,%rsi
and    $0xfffffffffffffffe,%rsi
neg    %rsi
mov    $0x1,%ecx
jmp    1536 <test+0x3d6>
nopl   0x0(%rax,%rax,1)
lea    (%rsi,%rcx,1),%rdi
add    $0x2,%rdi
add    $0x2,%rcx
cmp    $0x1,%rdi
je     1201 <test+0xa1>
mov    (%rbx,%rcx,4),%edi
cmp    %eax,%edi
jg     1545 <test+0x3e5>
add    $0x1,%eax
mov    %eax,(%rbx,%rcx,4)
mov    %eax,%edi
mov    0x4(%rbx,%rcx,4),%eax
cmp    %edi,%eax
jg     1520 <test+0x3c0>
add    $0x1,%edi
mov    %edi,0x4(%rbx,%rcx,4)
mov    %edi,%eax
jmp    1520 <test+0x3c0>

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

LLVM IR (-O2):
@stderr = global i32 0
@.str = [13 x i8] c"segsites=%d\0A\00"
define void @test(i32 %0, i32 %1, i8** nocapture %2, i32* nocapture %3, i32 %4, double %5, double %6, i32 %7, i32* nocapture %8, double* %9, i32 %10) {
%12 = alloca i32
%13 = alloca i64
%14 = bitcast i64* %13 to [2 x i32]*
%15 = alloca i64
%16 = bitcast i64* %15 to [2 x i32]*
%17 = alloca i64
store i32 %1, i32* %12
%18 = load i32, i32* @stderr
%19 = tail call i32 @fprintf(i32 %18, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0), i32 %1)
%20 = sdiv i32 %0, 2
%21 = shl i32 %20, 3
%22 = tail call i8* @malloc(i32 %21)
%23 = bitcast i8* %22 to i8**
%24 = load i32, i32* %3
%25 = icmp eq i32 %24, 0
br i1 %25, label %26, label %27
26: ; preds = %11
store i32 1, i32* %3
br label %27
27: ; preds = %26, %11
%28 = phi i32 [ 1, %26 ], [ %24, %11 ]
%29 = icmp sgt i32 %1, 1
br i1 %29, label %30, label %47
30: ; preds = %27
%31 = zext i32 %1 to i64
%32 = add nsw i64 %31, -1
%33 = and i64 %32, 1
%34 = icmp eq i32 %1, 2
br i1 %34, label %37, label %35
35: ; preds = %30
%36 = and i64 %32, -2
br label %56
37: ; preds = %73, %30
%38 = phi i32 [ %28, %30 ], [ %74, %73 ]
%39 = phi i64 [ 1, %30 ], [ %75, %73 ]
%40 = icmp eq i64 %33, 0
br i1 %40, label %47, label %41
41: ; preds = %37
%42 = getelementptr inbounds i32, i32* %3, i64 %39
%43 = load i32, i32* %42
%44 = icmp sgt i32 %43, %38
br i1 %44, label %47, label %45
45: ; preds = %41
%46 = add nsw i32 %38, 1
store i32 %46, i32* %42
br label %47
47: ; preds = %37, %45, %41, %27
%48 = call i32 @fwrite(i32* %12, i32 4, i32 1, i32* %8)
%49 = load i32, i32* %12
%50 = tail call i32 @fwrite(i32* %3, i32 4, i32 %49, i32* %8)
%51 = tail call i32 @fflush(i32* %8)
%52 = icmp sgt i32 %0, 0
br i1 %52, label %53, label %78
53: ; preds = %47
%54 = icmp sgt i32 %49, 0
%55 = zext i32 %49 to i64
br label %102
56: ; preds = %73, %35
%57 = phi i32 [ %28, %35 ], [ %74, %73 ]
%58 = phi i64 [ 1, %35 ], [ %75, %73 ]
%59 = phi i64 [ 0, %35 ], [ %76, %73 ]
%60 = getelementptr inbounds i32, i32* %3, i64 %58
%61 = load i32, i32* %60
%62 = icmp sgt i32 %61, %57
br i1 %62, label %65, label %63
63: ; preds = %56
%64 = add nsw i32 %57, 1
store i32 %64, i32* %60
br label %65
65: ; preds = %56, %63
%66 = phi i32 [ %61, %56 ], [ %64, %63 ]
%67 = add nuw nsw i64 %58, 1
%68 = getelementptr inbounds i32, i32* %3, i64 %67
%69 = load i32, i32* %68
%70 = icmp sgt i32 %69, %66
br i1 %70, label %73, label %71
71: ; preds = %65
%72 = add nsw i32 %66, 1
store i32 %72, i32* %68
br label %73
73: ; preds = %71, %65
%74 = phi i32 [ %69, %65 ], [ %72, %71 ]
%75 = add nuw nsw i64 %58, 2
%76 = add i64 %59, 2
%77 = icmp eq i64 %76, %36
br i1 %77, label %37, label %56
78: ; preds = %111, %47
%79 = icmp eq i32 %7, 0
br i1 %79, label %92, label %80
80: ; preds = %78
%81 = icmp slt i32 %7, 1
br i1 %81, label %202, label %82
82: ; preds = %80
%83 = icmp sgt i32 %0, 1
%84 = bitcast i64* %17 to i8*
%85 = icmp eq double* %9, null
%86 = bitcast i64* %17 to i32*
%87 = bitcast i64* %15 to i8*
%88 = getelementptr inbounds [2 x i32], [2 x i32]* %16, i64 0, i64 1
%89 = bitcast i64* %15 to i32*
%90 = zext i32 %20 to i64
%91 = zext i32 %20 to i64
br label %155
92: ; preds = %78
%93 = icmp sgt i32 %49, 0
br i1 %93, label %94, label %202
94: ; preds = %92
%95 = icmp sgt i32 %0, 1
%96 = bitcast i64* %13 to i8*
%97 = getelementptr inbounds [2 x i32], [2 x i32]* %14, i64 0, i64 1
%98 = bitcast i64* %13 to i32*
%99 = icmp eq double* %9, null
%100 = zext i32 %49 to i64
%101 = zext i32 %20 to i64
br label %130
102: ; preds = %53, %111
%103 = phi i64 [ 0, %53 ], [ %112, %111 ]
%104 = phi i64 [ 0, %53 ], [ %113, %111 ]
%105 = tail call i8* @malloc(i32 %49)
%106 = getelementptr inbounds i8*, i8** %23, i64 %103
store i8* %105, i8** %106
br i1 %54, label %107, label %111
107: ; preds = %102
%108 = getelementptr inbounds i8*, i8** %2, i64 %104
%109 = or i64 %104, 1
%110 = getelementptr inbounds i8*, i8** %2, i64 %109
br label %116
111: ; preds = %116, %102
%112 = add nuw i64 %103, 1
%113 = add nuw i64 %104, 2
%114 = trunc i64 %113 to i32
%115 = icmp slt i32 %114, %0
br i1 %115, label %102, label %78
116: ; preds = %107, %116
%117 = phi i64 [ 0, %107 ], [ %128, %116 ]
%118 = load i8*, i8** %108
%119 = getelementptr inbounds i8, i8* %118, i64 %117
%120 = load i8, i8* %119
%121 = tail call signext i8 @gv(i8 signext %120)
%122 = load i8*, i8** %110
%123 = getelementptr inbounds i8, i8* %122, i64 %117
%124 = load i8, i8* %123
%125 = tail call signext i8 @gv(i8 signext %124)
%126 = add i8 %125, %121
%127 = getelementptr inbounds i8, i8* %105, i64 %117
store i8 %126, i8* %127
%128 = add nuw nsw i64 %117, 1
%129 = icmp eq i64 %128, %55
br i1 %129, label %111, label %116
130: ; preds = %94, %132
%131 = phi i64 [ 0, %94 ], [ %133, %132 ]
br i1 %95, label %135, label %132
132: ; preds = %150, %130
%133 = add nuw nsw i64 %131, 1
%134 = icmp eq i64 %133, %100
br i1 %134, label %202, label %130
135: ; preds = %130, %150
%136 = phi i64 [ %153, %150 ], [ 0, %130 ]
store i64 0, i64* %13
%137 = getelementptr inbounds i8*, i8** %23, i64 %136
%138 = load i8*, i8** %137
%139 = getelementptr inbounds i8, i8* %138, i64 %131
%140 = load i8, i8* %139
%141 = icmp sgt i8 %140, 0
br i1 %141, label %142, label %146
142: ; preds = %135
store i32 1, i32* %97
%143 = load i8, i8* %139
%144 = icmp eq i8 %143, 2
br i1 %144, label %145, label %146
145: ; preds = %142
store i32 1, i32* %98
br label %146
146: ; preds = %135, %145, %142
br i1 %99, label %150, label %147
147: ; preds = %146
%148 = getelementptr inbounds double, double* %9, i64 %136
%149 = load double, double* %148
br label %150
150: ; preds = %146, %147
%151 = phi double [ %149, %147 ], [ %6, %146 ]
%152 = call i32 @print_ind_site(double %5, double %151, i32* %98, i32 %4)
%153 = add nuw nsw i64 %136, 1
%154 = icmp eq i64 %153, %101
br i1 %154, label %132, label %135
155: ; preds = %82, %198
%156 = phi i32 [ 1, %82 ], [ %200, %198 ]
%157 = phi i32 [ 0, %82 ], [ %199, %198 ]
%158 = icmp slt i32 %157, %49
br i1 %158, label %159, label %187
159: ; preds = %155
%160 = sext i32 %157 to i64
%161 = getelementptr inbounds i32, i32* %3, i64 %160
%162 = load i32, i32* %161
%163 = icmp eq i32 %162, %156
br i1 %163, label %164, label %187
164: ; preds = %159
br i1 %83, label %167, label %165
165: ; preds = %182, %164
%166 = add nsw i32 %157, 1
br label %198
167: ; preds = %164, %182
%168 = phi i64 [ %185, %182 ], [ 0, %164 ]
store i64 0, i64* %15
%169 = getelementptr inbounds i8*, i8** %23, i64 %168
%170 = load i8*, i8** %169
%171 = getelementptr inbounds i8, i8* %170, i64 %160
%172 = load i8, i8* %171
%173 = icmp sgt i8 %172, 0
br i1 %173, label %174, label %178
174: ; preds = %167
store i32 1, i32* %88
%175 = load i8, i8* %171
%176 = icmp eq i8 %175, 2
br i1 %176, label %177, label %178
177: ; preds = %174
store i32 1, i32* %89
br label %178
178: ; preds = %167, %177, %174
br i1 %85, label %182, label %179
179: ; preds = %178
%180 = getelementptr inbounds double, double* %9, i64 %168
%181 = load double, double* %180
br label %182
182: ; preds = %178, %179
%183 = phi double [ %181, %179 ], [ %6, %178 ]
%184 = call i32 @print_ind_site(double %5, double %183, i32* %89, i32 %4)
%185 = add nuw nsw i64 %168, 1
%186 = icmp eq i64 %185, %91
br i1 %186, label %165, label %167
187: ; preds = %159, %155
br i1 %83, label %188, label %198
188: ; preds = %187, %193
%189 = phi i64 [ %196, %193 ], [ 0, %187 ]
store i64 0, i64* %17
br i1 %85, label %193, label %190
190: ; preds = %188
%191 = getelementptr inbounds double, double* %9, i64 %189
%192 = load double, double* %191
br label %193
193: ; preds = %188, %190
%194 = phi double [ %192, %190 ], [ %6, %188 ]
%195 = call i32 @print_ind_site(double %5, double %194, i32* %86, i32 %4)
%196 = add nuw nsw i64 %189, 1
%197 = icmp eq i64 %196, %90
br i1 %197, label %198, label %188
198: ; preds = %193, %187, %165
%199 = phi i32 [ %166, %165 ], [ %157, %187 ], [ %157, %193 ]
%200 = add nuw i32 %156, 1
%201 = icmp eq i32 %156, %7
br i1 %201, label %202, label %155
202: ; preds = %198, %132, %80, %92
ret void
}