#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 */
size_t ind_2(int, int);
int /*<<< orphan*/ printf(char *);
void phyclust_cstat(int kk, int nn, int *nsend, int *nrepr, double *radus,
                    double *s, double *dys, int *ncluv, int *nelem, int *med) {
  int j, k, ja, jk, nplac, ksmal = -1;
  double ss = *s * 1.1 + 1.;
  --med;
  --nelem;
  --ncluv;
  --radus;
  --nrepr;
  --nsend;
  for (j = 1; j <= nn; ++j) {
    if (nrepr[j] == 0) {
      double dsmal = ss;
      for (k = 1; k <= nn; ++k) {
        if (nrepr[k] == 1) {
          int kj_ = ind_2(k, j);
          if (dsmal > dys[kj_]) {
            dsmal = dys[kj_];
            ksmal = k;
          }
        }
      }
      nsend[j] = ksmal;
    } else {
      nsend[j] = j;
    }
  }
  jk = 1;
  nplac = nsend[1];
  for (j = 1; j <= nn; ++j) {
    ncluv[j] = 0;
    if (nsend[j] == nplac)
      ncluv[j] = 1;
  }
  for (ja = 2; ja <= nn; ++ja) {
    nplac = nsend[ja];
    if (ncluv[nplac] == 0) {
      ++jk;
      for (j = 2; j <= nn; ++j) {
        if (nsend[j] == nplac)
          ncluv[j] = jk;
      }
      if (jk == kk)
        break;
    }
  }
  for (k = 1; k <= kk; ++k) {
    int ntt = 0, m = -1;
    double ttt = 0.;
    radus[k] = -1.;
    for (j = 1; j <= nn; ++j) {
      if (ncluv[j] == k) {
        double djm;
        ++ntt;
        m = nsend[j];
        nelem[ntt] = j;
        djm = dys[ind_2(j, m)];
        ttt += djm;
        if (radus[k] < djm)
          radus[k] = djm;
      }
    }
    if (ntt == 0)
      printf("bug in C cstat(): ntt=0 !!!\n");
    med[k] = m;
  }
  return;
}


x86 assembly (clang, -O0):
<phyclust_cstat>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
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    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
movl   $0xffffffff,-0x40(%rbp)
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xe98(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe94(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x28(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,0x28(%rbp)
mov    0x20(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,0x20(%rbp)
mov    0x18(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,0x18(%rbp)
mov    -0x20(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x10(%rbp)
movl   $0x1,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     12a3 <phyclust_cstat+0x183>
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1282 <phyclust_cstat+0x162>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movl   $0x1,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     126f <phyclust_cstat+0x14f>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    125c <phyclust_cstat+0x13c>
mov    -0x30(%rbp),%edi
mov    -0x2c(%rbp),%esi
call   1030 <ind_2@plt>
mov    %eax,-0x54(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x54(%rbp),%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    1257 <phyclust_cstat+0x137>
mov    0x10(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x40(%rbp)
jmp    125c <phyclust_cstat+0x13c>
jmp    1261 <phyclust_cstat+0x141>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    11fb <phyclust_cstat+0xdb>
mov    -0x40(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1290 <phyclust_cstat+0x170>
mov    -0x2c(%rbp),%edx
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1295 <phyclust_cstat+0x175>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    11cc <phyclust_cstat+0xac>
movl   $0x1,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x3c(%rbp)
movl   $0x1,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     130c <phyclust_cstat+0x1ec>
mov    0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x3c(%rbp),%eax
jne    12f9 <phyclust_cstat+0x1d9>
mov    0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
jmp    12fe <phyclust_cstat+0x1de>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    12bb <phyclust_cstat+0x19b>
movl   $0x2,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     13b9 <phyclust_cstat+0x299>
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x3c(%rbp)
mov    0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    13a6 <phyclust_cstat+0x286>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
movl   $0x2,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     1390 <phyclust_cstat+0x270>
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x3c(%rbp),%eax
jne    137d <phyclust_cstat+0x25d>
mov    -0x38(%rbp),%edx
mov    0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1382 <phyclust_cstat+0x262>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    134f <phyclust_cstat+0x22f>
mov    -0x38(%rbp),%eax
cmp    -0x4(%rbp),%eax
jne    13a1 <phyclust_cstat+0x281>
jmp    13b9 <phyclust_cstat+0x299>
jmp    13a6 <phyclust_cstat+0x286>
jmp    13ab <phyclust_cstat+0x28b>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1313 <phyclust_cstat+0x1f3>
movl   $0x1,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x4(%rbp),%eax
jg     14ee <phyclust_cstat+0x3ce>
movl   $0x0,-0x58(%rbp)
movl   $0xffffffff,-0x5c(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  0xc1e(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x1,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     14bc <phyclust_cstat+0x39c>
mov    0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x30(%rbp),%eax
jne    14a9 <phyclust_cstat+0x389>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x2c(%rbp),%edx
mov    0x20(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x2c(%rbp),%edi
mov    -0x5c(%rbp),%esi
call   1030 <ind_2@plt>
mov    %rax,%rcx
mov    -0x78(%rbp),%rax
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x70(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    14a4 <phyclust_cstat+0x384>
movsd  -0x70(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    14a9 <phyclust_cstat+0x389>
jmp    14ae <phyclust_cstat+0x38e>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    13fe <phyclust_cstat+0x2de>
cmpl   $0x0,-0x58(%rbp)
jne    14d2 <phyclust_cstat+0x3b2>
lea    0xb4b(%rip),%rdi
call   1040 <printf@plt>
mov    -0x5c(%rbp),%edx
mov    0x28(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    13c0 <phyclust_cstat+0x2a0>
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<phyclust_cstat>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %r8,0x10(%rsp)
mov    %rdx,%r13
mov    %rdi,0x8(%rsp)
mov    %rsi,(%rsp)
test   %esi,%esi
jle    13bd <phyclust_cstat+0x29d>
mov    %rcx,%r15
movsd  (%r9),%xmm0
mulsd  0xea9(%rip),%xmm0
addsd  0xea9(%rip),%xmm0
movsd  %xmm0,0x18(%rsp)
mov    (%rsp),%rax
lea    0x1(%rax),%r12d
mov    $0xffffffff,%r14d
mov    $0x1,%ebp
jmp    118e <phyclust_cstat+0x6e>
nopw   0x0(%rax,%rax,1)
mov    %ebp,-0x4(%r13,%rbp,4)
add    $0x1,%rbp
cmp    %r12,%rbp
je     11f7 <phyclust_cstat+0xd7>
cmpl   $0x0,-0x4(%r15,%rbp,4)
jne    1180 <phyclust_cstat+0x60>
mov    $0x1,%ebx
movsd  0x18(%rsp),%xmm0
jmp    11b9 <phyclust_cstat+0x99>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%rbx
cmp    %rbx,%r12
je     11f0 <phyclust_cstat+0xd0>
cmpl   $0x1,-0x4(%r15,%rbx,4)
jne    11b0 <phyclust_cstat+0x90>
mov    %ebx,%edi
mov    %ebp,%esi
movsd  %xmm0,0x20(%rsp)
call   1040 <ind_2@plt>
cltq
mov    0x60(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm0
movsd  0x20(%rsp),%xmm1
ucomisd %xmm0,%xmm1
cmova  %ebx,%r14d
minsd  %xmm1,%xmm0
jmp    11b0 <phyclust_cstat+0x90>
mov    %r14d,-0x4(%r13,%rbp,4)
jmp    1185 <phyclust_cstat+0x65>
cmpl   $0x0,(%rsp)
jle    13bd <phyclust_cstat+0x29d>
mov    0x0(%r13),%eax
lea    -0x1(%r12),%rdx
mov    $0x1,%ecx
cmp    $0x8,%rdx
jae    121f <phyclust_cstat+0xff>
mov    0x68(%rsp),%rbx
jmp    1347 <phyclust_cstat+0x227>
lea    -0x4(,%r12,4),%rsi
ff
add    %r13,%rsi
mov    0x68(%rsp),%rbx
cmp    %rbx,%rsi
jbe    1245 <phyclust_cstat+0x125>
lea    (%rbx,%r12,4),%rsi
add    $0xfffffffffffffffc,%rsi
cmp    %r13,%rsi
ja     1347 <phyclust_cstat+0x227>
mov    %rdx,%rcx
and    $0xfffffffffffffff8,%rcx
movd   %eax,%xmm0
pshufd $0x0,%xmm0,%xmm0
lea    -0x8(%rcx),%rsi
mov    %rsi,%rbp
shr    $0x3,%rbp
add    $0x1,%rbp
test   %rsi,%rsi
je     16ae <phyclust_cstat+0x58e>
mov    %rbp,%rdi
and    $0xfffffffffffffffe,%rdi
mov    $0xc,%esi
xorpd  %xmm1,%xmm1
nopl   (%rax)
movupd %xmm1,-0x30(%rbx,%rsi,4)
movupd %xmm1,-0x20(%rbx,%rsi,4)
movdqu -0x30(%r13,%rsi,4),%xmm2
movdqu -0x20(%r13,%rsi,4),%xmm3
pcmpeqd %xmm0,%xmm2
psrld  $0x1f,%xmm2
pcmpeqd %xmm0,%xmm3
psrld  $0x1f,%xmm3
movdqu %xmm2,-0x30(%rbx,%rsi,4)
movdqu %xmm3,-0x20(%rbx,%rsi,4)
movupd %xmm1,-0x10(%rbx,%rsi,4)
movupd %xmm1,(%rbx,%rsi,4)
movdqu -0x10(%r13,%rsi,4),%xmm2
movdqu 0x0(%r13,%rsi,4),%xmm3
pcmpeqd %xmm0,%xmm2
psrld  $0x1f,%xmm2
pcmpeqd %xmm0,%xmm3
psrld  $0x1f,%xmm3
movdqu %xmm2,-0x10(%rbx,%rsi,4)
movdqu %xmm3,(%rbx,%rsi,4)
add    $0x10,%rsi
add    $0xfffffffffffffffe,%rdi
jne    1280 <phyclust_cstat+0x160>
add    $0xfffffffffffffff5,%rsi
test   $0x1,%bpl
je     133e <phyclust_cstat+0x21e>
xorpd  %xmm1,%xmm1
movupd %xmm1,-0x4(%rbx,%rsi,4)
movupd %xmm1,0xc(%rbx,%rsi,4)
movdqu -0x4(%r13,%rsi,4),%xmm1
movdqu 0xc(%r13,%rsi,4),%xmm2
pcmpeqd %xmm0,%xmm1
psrld  $0x1f,%xmm1
pcmpeqd %xmm0,%xmm2
psrld  $0x1f,%xmm2
movdqu %xmm1,-0x4(%rbx,%rsi,4)
movdqu %xmm2,0xc(%rbx,%rsi,4)
cmp    %rcx,%rdx
je     13b3 <phyclust_cstat+0x293>
or     $0x1,%rcx
mov    %rcx,%rdx
not    %rdx
test   $0x1,%r12b
jne    136e <phyclust_cstat+0x24e>
movl   $0x0,-0x4(%rbx,%rcx,4)
xor    %esi,%esi
cmp    %eax,-0x4(%r13,%rcx,4)
sete   %sil
mov    %esi,-0x4(%rbx,%rcx,4)
add    $0x1,%rcx
add    %r12,%rdx
je     13b3 <phyclust_cstat+0x293>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movl   $0x0,-0x4(%rbx,%rcx,4)
xor    %edx,%edx
cmp    %eax,-0x4(%r13,%rcx,4)
sete   %dl
mov    %edx,-0x4(%rbx,%rcx,4)
movl   $0x0,(%rbx,%rcx,4)
xor    %edx,%edx
cmp    %eax,0x0(%r13,%rcx,4)
sete   %dl
mov    %edx,(%rbx,%rcx,4)
add    $0x2,%rcx
cmp    %rcx,%r12
jne    1380 <phyclust_cstat+0x260>
cmpl   $0x2,(%rsp)
jge    14d0 <phyclust_cstat+0x3b0>
cmpl   $0x0,0x8(%rsp)
mov    0x10(%rsp),%rcx
mov    0x68(%rsp),%rdx
jle    14c1 <phyclust_cstat+0x3a1>
mov    (%rsp),%rax
lea    0x1(%rax),%ebx
mov    0x8(%rsp),%rax
add    $0x1,%eax
mov    %rax,0x8(%rsp)
mov    $0x1,%r14d
jmp    1424 <phyclust_cstat+0x304>
xchg   %ax,%ax
mov    $0xffffffff,%ebp
lea    0xc14(%rip),%rdi
call   1030 <puts@plt>
mov    0x68(%rsp),%rdx
mov    0x10(%rsp),%rcx
mov    0x78(%rsp),%rax
mov    %ebp,-0x4(%rax,%r14,4)
add    $0x1,%r14
cmp    0x8(%rsp),%r14
je     14c1 <phyclust_cstat+0x3a1>
movabs $0xbff0000000000000,%rax
mov    %rax,-0x8(%rcx,%r14,8)
cmpl   $0x0,(%rsp)
jle    13f0 <phyclust_cstat+0x2d0>
mov    %r13,%r12
xor    %r13d,%r13d
mov    $0xffffffff,%ebp
mov    $0x1,%r15d
jmp    145e <phyclust_cstat+0x33e>
nopl   0x0(%rax)
mov    0x68(%rsp),%rdx
add    $0x1,%r15
cmp    %r15,%rbx
je     14b0 <phyclust_cstat+0x390>
mov    -0x4(%rdx,%r15,4),%eax
cmp    %rax,%r14
jne    1455 <phyclust_cstat+0x335>
mov    -0x4(%r12,%r15,4),%ebp
movslq %r13d,%rax
add    $0x1,%r13d
mov    0x70(%rsp),%rcx
mov    %r15d,(%rcx,%rax,4)
mov    %r15d,%edi
mov    %ebp,%esi
call   1040 <ind_2@plt>
mov    0x10(%rsp),%rcx
mov    0x60(%rsp),%rdx
movsd  (%rdx,%rax,8),%xmm0
ucomisd -0x8(%rcx,%r14,8),%xmm0
jbe    1450 <phyclust_cstat+0x330>
movsd  %xmm0,-0x8(%rcx,%r14,8)
jmp    1450 <phyclust_cstat+0x330>
nopl   0x0(%rax,%rax,1)
test   %r13d,%r13d
mov    %r12,%r13
jne    140b <phyclust_cstat+0x2eb>
jmp    13f5 <phyclust_cstat+0x2d5>
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    0x68(%rsp),%rax
lea    0x4(%rax),%rcx
lea    (%rax,%r12,4),%rdx
add    $0xfffffffffffffffc,%rdx
lea    0x4(%r13),%rsi
lea    -0x4(,%r12,4),%rdi
ff
add    %r13,%rdi
lea    -0x2(%r12),%r11
cmp    %rdi,%rcx
setb   %cl
cmp    %rdx,%rsi
setb   %r10b
and    %cl,%r10b
mov    %r11,%rdx
and    $0xfffffffffffffff8,%rdx
lea    0x2(%rdx),%r8
mov    %r12,%r9
neg    %r9
mov    $0x1,%ebp
mov    $0x2,%ebx
jmp    1547 <phyclust_cstat+0x427>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmp    0x8(%rsp),%ebp
je     13bd <phyclust_cstat+0x29d>
add    $0x1,%rbx
cmp    %r12,%rbx
je     13bd <phyclust_cstat+0x29d>
movslq -0x4(%r13,%rbx,4),%rsi
mov    0x68(%rsp),%rax
cmpl   $0x0,-0x4(%rax,%rsi,4)
jne    153a <phyclust_cstat+0x41a>
cmp    $0x8,%r11
setb   %cl
add    $0x1,%ebp
or     %r10b,%cl
mov    $0x2,%ecx
jne    164e <phyclust_cstat+0x52e>
movd   %esi,%xmm0
pshufd $0x0,%xmm0,%xmm0
xor    %edi,%edi
jmp    158d <phyclust_cstat+0x46d>
nopl   (%rax)
add    $0x8,%rdi
cmp    %rdi,%rdx
je     1642 <phyclust_cstat+0x522>
movdqu 0x4(%r13,%rdi,4),%xmm2
movdqu 0x14(%r13,%rdi,4),%xmm1
pcmpeqd %xmm0,%xmm2
movd   %xmm2,%ecx
test   $0x1,%cl
je     15b1 <phyclust_cstat+0x491>
mov    0x68(%rsp),%rax
mov    %ebp,0x4(%rax,%rdi,4)
pextrw $0x2,%xmm2,%ecx
test   $0x1,%cl
je     15c4 <phyclust_cstat+0x4a4>
mov    0x68(%rsp),%rax
mov    %ebp,0x8(%rax,%rdi,4)
pextrw $0x4,%xmm2,%ecx
test   $0x1,%cl
je     15d7 <phyclust_cstat+0x4b7>
mov    0x68(%rsp),%rax
mov    %ebp,0xc(%rax,%rdi,4)
pextrw $0x6,%xmm2,%ecx
test   $0x1,%cl
je     15ea <phyclust_cstat+0x4ca>
mov    0x68(%rsp),%rax
mov    %ebp,0x10(%rax,%rdi,4)
pcmpeqd %xmm0,%xmm1
movd   %xmm1,%ecx
test   $0x1,%cl
je     1600 <phyclust_cstat+0x4e0>
mov    0x68(%rsp),%rax
mov    %ebp,0x14(%rax,%rdi,4)
pextrw $0x2,%xmm1,%ecx
test   $0x1,%cl
je     1613 <phyclust_cstat+0x4f3>
mov    0x68(%rsp),%rax
mov    %ebp,0x18(%rax,%rdi,4)
pextrw $0x4,%xmm1,%ecx
test   $0x1,%cl
je     1626 <phyclust_cstat+0x506>
mov    0x68(%rsp),%rax
mov    %ebp,0x1c(%rax,%rdi,4)
pextrw $0x6,%xmm1,%ecx
test   $0x1,%cl
je     1580 <phyclust_cstat+0x460>
mov    0x68(%rsp),%rax
mov    %ebp,0x20(%rax,%rdi,4)
jmp    1580 <phyclust_cstat+0x460>
mov    %r8,%rcx
cmp    %rdx,%r11
je     1530 <phyclust_cstat+0x410>
mov    %r12d,%eax
sub    %ecx,%eax
mov    %rcx,%rdi
test   $0x1,%al
je     166e <phyclust_cstat+0x54e>
cmp    %esi,-0x4(%r13,%rcx,4)
jne    166a <phyclust_cstat+0x54a>
mov    0x68(%rsp),%rax
mov    %ebp,-0x4(%rax,%rcx,4)
lea    0x1(%rcx),%rdi
not    %rcx
cmp    %r9,%rcx
jne    168d <phyclust_cstat+0x56d>
jmp    1530 <phyclust_cstat+0x410>
nopl   0x0(%rax,%rax,1)
add    $0x2,%rdi
cmp    %rdi,%r12
je     1530 <phyclust_cstat+0x410>
cmp    %esi,-0x4(%r13,%rdi,4)
jne    169d <phyclust_cstat+0x57d>
mov    0x68(%rsp),%rax
mov    %ebp,-0x4(%rax,%rdi,4)
cmp    %esi,0x0(%r13,%rdi,4)
jne    1680 <phyclust_cstat+0x560>
mov    0x68(%rsp),%rax
mov    %ebp,(%rax,%rdi,4)
jmp    1680 <phyclust_cstat+0x560>
mov    $0x1,%esi
test   $0x1,%bpl
jne    1302 <phyclust_cstat+0x1e2>
jmp    133e <phyclust_cstat+0x21e>

LLVM IR (-O0):
@.str = [29 x i8] c"bug in C cstat(): ntt=0 !!!\0A\00"
define void @phyclust_cstat(i32 %0, i32 %1, i32* %2, i32* %3, double* %4, double* %5, double* %6, i32* %7, i32* %8, i32* %9) {
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32*
%14 = alloca i32*
%15 = alloca double*
%16 = alloca double*
%17 = alloca double*
%18 = alloca i32*
%19 = alloca i32*
%20 = alloca i32*
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca double
%28 = alloca double
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca double
%33 = alloca double
store i32 %0, i32* %11
store i32 %1, i32* %12
store i32* %2, i32** %13
store i32* %3, i32** %14
store double* %4, double** %15
store double* %5, double** %16
store double* %6, double** %17
store i32* %7, i32** %18
store i32* %8, i32** %19
store i32* %9, i32** %20
store i32 -1, i32* %26
%34 = load double*, double** %16
%35 = load double, double* %34
%36 = call double @llvm.fmuladd.f64(double %35, double 1.100000e+00, double 1.000000e+00)
store double %36, double* %27
%37 = load i32*, i32** %20
%38 = getelementptr inbounds i32, i32* %37, i32 -1
store i32* %38, i32** %20
%39 = load i32*, i32** %19
%40 = getelementptr inbounds i32, i32* %39, i32 -1
store i32* %40, i32** %19
%41 = load i32*, i32** %18
%42 = getelementptr inbounds i32, i32* %41, i32 -1
store i32* %42, i32** %18
%43 = load double*, double** %15
%44 = getelementptr inbounds double, double* %43, i32 -1
store double* %44, double** %15
%45 = load i32*, i32** %14
%46 = getelementptr inbounds i32, i32* %45, i32 -1
store i32* %46, i32** %14
%47 = load i32*, i32** %13
%48 = getelementptr inbounds i32, i32* %47, i32 -1
store i32* %48, i32** %13
store i32 1, i32* %21
br label %49
49: ; preds = %110, %10
%50 = load i32, i32* %21
%51 = load i32, i32* %12
%52 = icmp sle i32 %50, %51
br i1 %52, label %53, label %113
53: ; preds = %49
%54 = load i32*, i32** %14
%55 = load i32, i32* %21
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds i32, i32* %54, i64 %56
%58 = load i32, i32* %57
%59 = icmp eq i32 %58, 0
br i1 %59, label %60, label %103
60: ; preds = %53
%61 = load double, double* %27
store double %61, double* %28
store i32 1, i32* %22
br label %62
62: ; preds = %94, %60
%63 = load i32, i32* %22
%64 = load i32, i32* %12
%65 = icmp sle i32 %63, %64
br i1 %65, label %66, label %97
66: ; preds = %62
%67 = load i32*, i32** %14
%68 = load i32, i32* %22
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds i32, i32* %67, i64 %69
%71 = load i32, i32* %70
%72 = icmp eq i32 %71, 1
br i1 %72, label %73, label %93
73: ; preds = %66
%74 = load i32, i32* %22
%75 = load i32, i32* %21
%76 = call i64 @ind_2(i32 %74, i32 %75)
%77 = trunc i64 %76 to i32
store i32 %77, i32* %29
%78 = load double, double* %28
%79 = load double*, double** %17
%80 = load i32, i32* %29
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds double, double* %79, i64 %81
%83 = load double, double* %82
%84 = fcmp ogt double %78, %83
br i1 %84, label %85, label %92
85: ; preds = %73
%86 = load double*, double** %17
%87 = load i32, i32* %29
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds double, double* %86, i64 %88
%90 = load double, double* %89
store double %90, double* %28
%91 = load i32, i32* %22
store i32 %91, i32* %26
br label %92
92: ; preds = %85, %73
br label %93
93: ; preds = %92, %66
br label %94
94: ; preds = %93
%95 = load i32, i32* %22
%96 = add nsw i32 %95, 1
store i32 %96, i32* %22
br label %62
97: ; preds = %62
%98 = load i32, i32* %26
%99 = load i32*, i32** %13
%100 = load i32, i32* %21
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds i32, i32* %99, i64 %101
store i32 %98, i32* %102
br label %109
103: ; preds = %53
%104 = load i32, i32* %21
%105 = load i32*, i32** %13
%106 = load i32, i32* %21
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds i32, i32* %105, i64 %107
store i32 %104, i32* %108
br label %109
109: ; preds = %103, %97
br label %110
110: ; preds = %109
%111 = load i32, i32* %21
%112 = add nsw i32 %111, 1
store i32 %112, i32* %21
br label %49
113: ; preds = %49
store i32 1, i32* %24
%114 = load i32*, i32** %13
%115 = getelementptr inbounds i32, i32* %114, i64 1
%116 = load i32, i32* %115
store i32 %116, i32* %25
store i32 1, i32* %21
br label %117
117: ; preds = %139, %113
%118 = load i32, i32* %21
%119 = load i32, i32* %12
%120 = icmp sle i32 %118, %119
br i1 %120, label %121, label %142
121: ; preds = %117
%122 = load i32*, i32** %18
%123 = load i32, i32* %21
%124 = sext i32 %123 to i64
%125 = getelementptr inbounds i32, i32* %122, i64 %124
store i32 0, i32* %125
%126 = load i32*, i32** %13
%127 = load i32, i32* %21
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds i32, i32* %126, i64 %128
%130 = load i32, i32* %129
%131 = load i32, i32* %25
%132 = icmp eq i32 %130, %131
br i1 %132, label %133, label %138
133: ; preds = %121
%134 = load i32*, i32** %18
%135 = load i32, i32* %21
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds i32, i32* %134, i64 %136
store i32 1, i32* %137
br label %138
138: ; preds = %133, %121
br label %139
139: ; preds = %138
%140 = load i32, i32* %21
%141 = add nsw i32 %140, 1
store i32 %141, i32* %21
br label %117
142: ; preds = %117
store i32 2, i32* %23
br label %143
143: ; preds = %191, %142
%144 = load i32, i32* %23
%145 = load i32, i32* %12
%146 = icmp sle i32 %144, %145
br i1 %146, label %147, label %194
147: ; preds = %143
%148 = load i32*, i32** %13
%149 = load i32, i32* %23
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds i32, i32* %148, i64 %150
%152 = load i32, i32* %151
store i32 %152, i32* %25
%153 = load i32*, i32** %18
%154 = load i32, i32* %25
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds i32, i32* %153, i64 %155
%157 = load i32, i32* %156
%158 = icmp eq i32 %157, 0
br i1 %158, label %159, label %190
159: ; preds = %147
%160 = load i32, i32* %24
%161 = add nsw i32 %160, 1
store i32 %161, i32* %24
store i32 2, i32* %21
br label %162
162: ; preds = %181, %159
%163 = load i32, i32* %21
%164 = load i32, i32* %12
%165 = icmp sle i32 %163, %164
br i1 %165, label %166, label %184
166: ; preds = %162
%167 = load i32*, i32** %13
%168 = load i32, i32* %21
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds i32, i32* %167, i64 %169
%171 = load i32, i32* %170
%172 = load i32, i32* %25
%173 = icmp eq i32 %171, %172
br i1 %173, label %174, label %180
174: ; preds = %166
%175 = load i32, i32* %24
%176 = load i32*, i32** %18
%177 = load i32, i32* %21
%178 = sext i32 %177 to i64
%179 = getelementptr inbounds i32, i32* %176, i64 %178
store i32 %175, i32* %179
br label %180
180: ; preds = %174, %166
br label %181
181: ; preds = %180
%182 = load i32, i32* %21
%183 = add nsw i32 %182, 1
store i32 %183, i32* %21
br label %162
184: ; preds = %162
%185 = load i32, i32* %24
%186 = load i32, i32* %11
%187 = icmp eq i32 %185, %186
br i1 %187, label %188, label %189
188: ; preds = %184
br label %194
189: ; preds = %184
br label %190
190: ; preds = %189, %147
br label %191
191: ; preds = %190
%192 = load i32, i32* %23
%193 = add nsw i32 %192, 1
store i32 %193, i32* %23
br label %143
194: ; preds = %188, %143
store i32 1, i32* %22
br label %195
195: ; preds = %267, %194
%196 = load i32, i32* %22
%197 = load i32, i32* %11
%198 = icmp sle i32 %196, %197
br i1 %198, label %199, label %270
199: ; preds = %195
store i32 0, i32* %30
store i32 -1, i32* %31
store double 0.000000e+00, double* %32
%200 = load double*, double** %15
%201 = load i32, i32* %22
%202 = sext i32 %201 to i64
%203 = getelementptr inbounds double, double* %200, i64 %202
store double -1.000000e+00, double* %203
store i32 1, i32* %21
br label %204
204: ; preds = %253, %199
%205 = load i32, i32* %21
%206 = load i32, i32* %12
%207 = icmp sle i32 %205, %206
br i1 %207, label %208, label %256
208: ; preds = %204
%209 = load i32*, i32** %18
%210 = load i32, i32* %21
%211 = sext i32 %210 to i64
%212 = getelementptr inbounds i32, i32* %209, i64 %211
%213 = load i32, i32* %212
%214 = load i32, i32* %22
%215 = icmp eq i32 %213, %214
br i1 %215, label %216, label %252
216: ; preds = %208
%217 = load i32, i32* %30
%218 = add nsw i32 %217, 1
store i32 %218, i32* %30
%219 = load i32*, i32** %13
%220 = load i32, i32* %21
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds i32, i32* %219, i64 %221
%223 = load i32, i32* %222
store i32 %223, i32* %31
%224 = load i32, i32* %21
%225 = load i32*, i32** %19
%226 = load i32, i32* %30
%227 = sext i32 %226 to i64
%228 = getelementptr inbounds i32, i32* %225, i64 %227
store i32 %224, i32* %228
%229 = load double*, double** %17
%230 = load i32, i32* %21
%231 = load i32, i32* %31
%232 = call i64 @ind_2(i32 %230, i32 %231)
%233 = getelementptr inbounds double, double* %229, i64 %232
%234 = load double, double* %233
store double %234, double* %33
%235 = load double, double* %33
%236 = load double, double* %32
%237 = fadd double %236, %235
store double %237, double* %32
%238 = load double*, double** %15
%239 = load i32, i32* %22
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds double, double* %238, i64 %240
%242 = load double, double* %241
%243 = load double, double* %33
%244 = fcmp olt double %242, %243
br i1 %244, label %245, label %251
245: ; preds = %216
%246 = load double, double* %33
%247 = load double*, double** %15
%248 = load i32, i32* %22
%249 = sext i32 %248 to i64
%250 = getelementptr inbounds double, double* %247, i64 %249
store double %246, double* %250
br label %251
251: ; preds = %245, %216
br label %252
252: ; preds = %251, %208
br label %253
253: ; preds = %252
%254 = load i32, i32* %21
%255 = add nsw i32 %254, 1
store i32 %255, i32* %21
br label %204
256: ; preds = %204
%257 = load i32, i32* %30
%258 = icmp eq i32 %257, 0
br i1 %258, label %259, label %261
259: ; preds = %256
%260 = call i32 @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str, i64 0, i64 0))
br label %261
261: ; preds = %259, %256
%262 = load i32, i32* %31
%263 = load i32*, i32** %20
%264 = load i32, i32* %22
%265 = sext i32 %264 to i64
%266 = getelementptr inbounds i32, i32* %263, i64 %265
store i32 %262, i32* %266
br label %267
267: ; preds = %261
%268 = load i32, i32* %22
%269 = add nsw i32 %268, 1
store i32 %269, i32* %22
br label %195
270: ; preds = %195
ret void
}

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