#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 S6Dist_2bds_rev(double *, double *, double *, double *, double *,
                       double *, int, double *, double *, double *, double *,
                       int, double);
int /*<<< orphan*/ s61234distsq(double *, double *);
int /*<<< orphan*/ s6bdmaps(double *, double *, int *, double **, double **,
                            double **, double **, double, int *);
double s6minbddist(double *);
double sqrt(int /*<<< orphan*/);
double S6Dist_pass(double gvec1[6], double gvec2[6], double dist) {
  double dists1[6];
  double pgs1[6][6], rgs1[6][6], mpgs1[6][6], mvecs1[6][6];
  double dists2[6];
  double pgs2[6][6], rgs2[6][6], mpgs2[6][6], mvecs2[6][6];
  int iord1[6], iord2[6];
  double mindists1;
  double mindists2;
  double disttmp[6], distgather[6], distgather2[6][6];
  int jx1, jx2;
  int ngood1, ngood2;
  double d1[6], d2[6];
  double maxdist;
  maxdist = dist;
  s6bdmaps(gvec1, dists1, iord1, pgs1, rgs1, mpgs1, mvecs1, maxdist, &ngood1);
  s6bdmaps(gvec2, dists2, iord2, pgs2, rgs2, mpgs2, mvecs2, maxdist, &ngood2);
  mindists1 = s6minbddist(gvec1);
  mindists2 = s6minbddist(gvec2);
  if (mindists1 + mindists2 > dist)
    return dist;
  if (mindists1 + mindists2 < maxdist) {
#pragma omp critical(distminimize)
    {
      for (jx1 = 0; jx1 < 6; jx1++)
        distgather[jx1] = dist;
    }
#pragma omp parallel for schedule(dynamic)
    for (jx1 = 0; jx1 < ngood1; jx1++) {
      d1[jx1] = dists1[iord1[jx1]];
      disttmp[jx1] = sqrt(s61234distsq(gvec1, pgs1[iord1[jx1]]));
      if (disttmp[jx1] < d1[jx1])
        d1[jx1] = disttmp[jx1];
      disttmp[jx1] = sqrt(s61234distsq(gvec1, mpgs1[iord1[jx1]]));
      if (disttmp[jx1] < d1[jx1])
        d1[jx1] = disttmp[jx1];
      d2[jx1] = sqrt(s61234distsq(gvec2, pgs1[iord1[jx1]]));
      disttmp[jx1] = sqrt(s61234distsq(gvec2, mpgs1[iord1[jx1]]));
      if (disttmp[jx1] < d2[jx1])
        d2[jx1] = disttmp[jx1];
      if (d1[jx1] + d2[jx1] < distgather[jx1])
        distgather[jx1] = d1[jx1] + d2[jx1];
    }
#pragma omp flush(dist, distgather)
#pragma omp critical(distminimize)
    {
      for (jx1 = 0; jx1 < 6; jx1++) {
        if (distgather[jx1] < dist)
          dist = distgather[jx1];
      }
      for (jx1 = 0; jx1 < 6; jx1++)
        distgather[jx1] = dist;
    }
#pragma omp parallel for schedule(dynamic)
    for (jx2 = 0; jx2 < ngood2; jx2++) {
      d2[jx2] = dists2[iord2[jx2]];
      disttmp[jx2] = sqrt(s61234distsq(gvec2, pgs2[iord2[jx2]]));
      if (disttmp[jx2] < d2[jx2])
        d2[jx2] = disttmp[jx2];
      disttmp[jx2] = sqrt(s61234distsq(gvec2, mpgs2[iord2[jx2]]));
      if (disttmp[jx2] < d2[jx2])
        d2[jx2] = disttmp[jx2];
      d1[jx2] = sqrt(s61234distsq(gvec1, pgs2[iord2[jx2]]));
      disttmp[jx2] = sqrt(s61234distsq(gvec1, mpgs2[iord2[jx2]]));
      if (disttmp[jx2] < d1[jx2])
        d1[jx2] = disttmp[jx2];
      if (d1[jx2] + d2[jx2] < distgather[jx2])
        distgather[jx2] = d1[jx2] + d2[jx2];
    }
#pragma omp flush(dist, distgather)
#pragma omp critical(distminimize)
    {
      for (jx1 = 0; jx1 < 6; jx1++) {
        if (distgather[jx1] < dist)
          dist = distgather[jx1];
      }
      for (jx1 = 0; jx1 < 6; jx1++)
        distgather[jx1] = dist;
      maxdist = dist;
    }
#pragma omp critical(distminimize)
    {
      for (jx1 = 0; jx1 < 6; jx1++) {
        for (jx2 = 0; jx2 < 6; jx2++) {
          distgather2[jx1][jx2] = dist;
        }
      }
    }
#pragma omp parallel for collapse(2) schedule(dynamic)
    for (jx1 = 0; jx1 < ngood1; jx1++) {
      for (jx2 = 0; jx2 < ngood2; jx2++) {
        if (dists1[iord1[jx1]] < maxdist && dists2[iord2[jx2]] < maxdist) {
          distgather2[jx1][jx2] = S6Dist_2bds_rev(
              gvec1, gvec2, pgs1[iord1[jx1]], mpgs1[iord1[jx1]],
              pgs2[iord1[jx1]], mpgs2[iord1[jx1]], iord1[jx1], pgs2[iord2[jx2]],
              mpgs2[iord2[jx2]], pgs1[iord2[jx2]], mpgs1[iord2[jx2]],
              iord2[jx2], distgather2[jx1][jx2]);
        }
      }
    }
#pragma omp flush(dist, distgather2)
#pragma omp critical(distminimize)
    {
      for (jx1 = 0; jx1 < 6; jx1++) {
        for (jx2 = 0; jx2 < 6; jx2++) {
          if (distgather2[jx1][jx2] < dist)
            dist = distgather2[jx1][jx2];
        }
      }
    }
  }
  return dist;
}


x86 assembly (clang, -O0):
<S6Dist_pass>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xc08,%rsp
mov    %rdi,-0x38(%rbp)
mov    %rsi,-0x40(%rbp)
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xbf8(%rbp)
ff
mov    -0x38(%rbp),%rdi
lea    -0x80(%rbp),%rsi
lea    -0x9d0(%rbp),%rdx
lea    -0x1a0(%rbp),%rcx
lea    -0x2c0(%rbp),%r8
lea    -0x3e0(%rbp),%r9
lea    -0x500(%rbp),%r10
movsd  -0xbf8(%rbp),%xmm0
ff
lea    -0xb8c(%rbp),%rax
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
call   1070 <s6bdmaps@plt>
mov    -0x40(%rbp),%rdi
lea    -0x530(%rbp),%rsi
lea    -0x9f0(%rbp),%rdx
lea    -0x650(%rbp),%rcx
lea    -0x770(%rbp),%r8
lea    -0x890(%rbp),%r9
lea    -0x9b0(%rbp),%r10
movsd  -0xbf8(%rbp),%xmm0
ff
lea    -0xb90(%rbp),%rax
mov    %r10,(%rsp)
mov    %rax,0x8(%rsp)
call   1070 <s6bdmaps@plt>
mov    -0x38(%rbp),%rdi
call   1030 <s6minbddist@plt>
movsd  %xmm0,-0x9f8(%rbp)
ff
mov    -0x40(%rbp),%rdi
call   1030 <s6minbddist@plt>
movsd  %xmm0,-0xa00(%rbp)
ff
movsd  -0x9f8(%rbp),%xmm0
ff
addsd  -0xa00(%rbp),%xmm0
ff
ucomisd -0x48(%rbp),%xmm0
jbe    125d <S6Dist_pass+0x10d>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    1cb5 <S6Dist_pass+0xb65>
movsd  -0x9f8(%rbp),%xmm1
ff
addsd  -0xa00(%rbp),%xmm1
ff
movsd  -0xbf8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1cab <S6Dist_pass+0xb5b>
movl   $0x0,-0xb84(%rbp)
cmpl   $0x6,-0xb84(%rbp)
jge    12bf <S6Dist_pass+0x16f>
movsd  -0x48(%rbp),%xmm0
movslq -0xb84(%rbp),%rax
movsd  %xmm0,-0xa60(%rbp,%rax,8)
ff ff
mov    -0xb84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb84(%rbp)
jmp    1289 <S6Dist_pass+0x139>
movl   $0x0,-0xb84(%rbp)
mov    -0xb84(%rbp),%eax
cmp    -0xb8c(%rbp),%eax
jge    1555 <S6Dist_pass+0x405>
movslq -0xb84(%rbp),%rax
movslq -0x9d0(%rbp,%rax,4),%rax
ff
movsd  -0x80(%rbp,%rax,8),%xmm0
movslq -0xb84(%rbp),%rax
movsd  %xmm0,-0xbc0(%rbp,%rax,8)
ff ff
mov    -0x38(%rbp),%rdi
movslq -0xb84(%rbp),%rax
movslq -0x9d0(%rbp,%rax,4),%rax
ff
lea    -0x1a0(%rbp),%rsi
imul   $0x30,%rax,%rax
add    %rax,%rsi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
movslq -0xb84(%rbp),%rax
movsd  %xmm0,-0xa30(%rbp,%rax,8)
ff ff
movslq -0xb84(%rbp),%rax
movsd  -0xa30(%rbp,%rax,8),%xmm1
ff ff
movslq -0xb84(%rbp),%rax
movsd  -0xbc0(%rbp,%rax,8),%xmm0
ff ff
ucomisd %xmm1,%xmm0
jbe    1387 <S6Dist_pass+0x237>
movslq -0xb84(%rbp),%rax
movsd  -0xa30(%rbp,%rax,8),%xmm0
ff ff
movslq -0xb84(%rbp),%rax
movsd  %xmm0,-0xbc0(%rbp,%rax,8)
ff ff
mov    -0x38(%rbp),%rdi
movslq -0xb84(%rbp),%rax
movslq -0x9d0(%rbp,%rax,4),%rax
ff
lea    -0x3e0(%rbp),%rsi
imul   $0x30,%rax,%rax
add    %rax,%rsi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
movslq -0xb84(%rbp),%rax
movsd  %xmm0,-0xa30(%rbp,%rax,8)
ff ff
movslq -0xb84(%rbp),%rax
movsd  -0xa30(%rbp,%rax,8),%xmm1
ff ff
movslq -0xb84(%rbp),%rax
movsd  -0xbc0(%rbp,%rax,8),%xmm0
ff ff
ucomisd %xmm1,%xmm0
jbe    140e <S6Dist_pass+0x2be>
movslq -0xb84(%rbp),%rax
movsd  -0xa30(%rbp,%rax,8),%xmm0
ff ff
movslq -0xb84(%rbp),%rax
movsd  %xmm0,-0xbc0(%rbp,%rax,8)
ff ff
mov    -0x40(%rbp),%rdi
movslq -0xb84(%rbp),%rax
movslq -0x9d0(%rbp,%rax,4),%rax
ff
lea    -0x1a0(%rbp),%rsi
imul   $0x30,%rax,%rax
add    %rax,%rsi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
movslq -0xb84(%rbp),%rax
movsd  %xmm0,-0xbf0(%rbp,%rax,8)
ff ff
mov    -0x40(%rbp),%rdi
movslq -0xb84(%rbp),%rax
movslq -0x9d0(%rbp,%rax,4),%rax
ff
lea    -0x3e0(%rbp),%rsi
imul   $0x30,%rax,%rax
add    %rax,%rsi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
movslq -0xb84(%rbp),%rax
movsd  %xmm0,-0xa30(%rbp,%rax,8)
ff ff
movslq -0xb84(%rbp),%rax
movsd  -0xa30(%rbp,%rax,8),%xmm1
ff ff
movslq -0xb84(%rbp),%rax
movsd  -0xbf0(%rbp,%rax,8),%xmm0
ff ff
ucomisd %xmm1,%xmm0
jbe    14d2 <S6Dist_pass+0x382>
movslq -0xb84(%rbp),%rax
movsd  -0xa30(%rbp,%rax,8),%xmm0
ff ff
movslq -0xb84(%rbp),%rax
movsd  %xmm0,-0xbf0(%rbp,%rax,8)
ff ff
movslq -0xb84(%rbp),%rax
movsd  -0xbc0(%rbp,%rax,8),%xmm1
ff ff
movslq -0xb84(%rbp),%rax
addsd  -0xbf0(%rbp,%rax,8),%xmm1
ff ff
movslq -0xb84(%rbp),%rax
movsd  -0xa60(%rbp,%rax,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    153c <S6Dist_pass+0x3ec>
movslq -0xb84(%rbp),%rax
movsd  -0xbc0(%rbp,%rax,8),%xmm0
ff ff
movslq -0xb84(%rbp),%rax
addsd  -0xbf0(%rbp,%rax,8),%xmm0
ff ff
movslq -0xb84(%rbp),%rax
movsd  %xmm0,-0xa60(%rbp,%rax,8)
ff ff
jmp    1541 <S6Dist_pass+0x3f1>
mov    -0xb84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb84(%rbp)
jmp    12c9 <S6Dist_pass+0x179>
movl   $0x0,-0xb84(%rbp)
cmpl   $0x6,-0xb84(%rbp)
jge    15b9 <S6Dist_pass+0x469>
movslq -0xb84(%rbp),%rax
movsd  -0xa60(%rbp,%rax,8),%xmm1
ff ff
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    15a0 <S6Dist_pass+0x450>
movslq -0xb84(%rbp),%rax
movsd  -0xa60(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x48(%rbp)
jmp    15a5 <S6Dist_pass+0x455>
mov    -0xb84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb84(%rbp)
jmp    155f <S6Dist_pass+0x40f>
movl   $0x0,-0xb84(%rbp)
cmpl   $0x6,-0xb84(%rbp)
jge    15f9 <S6Dist_pass+0x4a9>
movsd  -0x48(%rbp),%xmm0
movslq -0xb84(%rbp),%rax
movsd  %xmm0,-0xa60(%rbp,%rax,8)
ff ff
mov    -0xb84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb84(%rbp)
jmp    15c3 <S6Dist_pass+0x473>
movl   $0x0,-0xb88(%rbp)
mov    -0xb88(%rbp),%eax
cmp    -0xb90(%rbp),%eax
jge    1892 <S6Dist_pass+0x742>
movslq -0xb88(%rbp),%rax
movslq -0x9f0(%rbp,%rax,4),%rax
ff
movsd  -0x530(%rbp,%rax,8),%xmm0
ff ff
movslq -0xb88(%rbp),%rax
movsd  %xmm0,-0xbf0(%rbp,%rax,8)
ff ff
mov    -0x40(%rbp),%rdi
movslq -0xb88(%rbp),%rax
movslq -0x9f0(%rbp,%rax,4),%rax
ff
lea    -0x650(%rbp),%rsi
imul   $0x30,%rax,%rax
add    %rax,%rsi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
movslq -0xb88(%rbp),%rax
movsd  %xmm0,-0xa30(%rbp,%rax,8)
ff ff
movslq -0xb88(%rbp),%rax
movsd  -0xa30(%rbp,%rax,8),%xmm1
ff ff
movslq -0xb88(%rbp),%rax
movsd  -0xbf0(%rbp,%rax,8),%xmm0
ff ff
ucomisd %xmm1,%xmm0
jbe    16c4 <S6Dist_pass+0x574>
movslq -0xb88(%rbp),%rax
movsd  -0xa30(%rbp,%rax,8),%xmm0
ff ff
movslq -0xb88(%rbp),%rax
movsd  %xmm0,-0xbf0(%rbp,%rax,8)
ff ff
mov    -0x40(%rbp),%rdi
movslq -0xb88(%rbp),%rax
movslq -0x9f0(%rbp,%rax,4),%rax
ff
lea    -0x890(%rbp),%rsi
imul   $0x30,%rax,%rax
add    %rax,%rsi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
movslq -0xb88(%rbp),%rax
movsd  %xmm0,-0xa30(%rbp,%rax,8)
ff ff
movslq -0xb88(%rbp),%rax
movsd  -0xa30(%rbp,%rax,8),%xmm1
ff ff
movslq -0xb88(%rbp),%rax
movsd  -0xbf0(%rbp,%rax,8),%xmm0
ff ff
ucomisd %xmm1,%xmm0
jbe    174b <S6Dist_pass+0x5fb>
movslq -0xb88(%rbp),%rax
movsd  -0xa30(%rbp,%rax,8),%xmm0
ff ff
movslq -0xb88(%rbp),%rax
movsd  %xmm0,-0xbf0(%rbp,%rax,8)
ff ff
mov    -0x38(%rbp),%rdi
movslq -0xb88(%rbp),%rax
movslq -0x9f0(%rbp,%rax,4),%rax
ff
lea    -0x650(%rbp),%rsi
imul   $0x30,%rax,%rax
add    %rax,%rsi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
movslq -0xb88(%rbp),%rax
movsd  %xmm0,-0xbc0(%rbp,%rax,8)
ff ff
mov    -0x38(%rbp),%rdi
movslq -0xb88(%rbp),%rax
movslq -0x9f0(%rbp,%rax,4),%rax
ff
lea    -0x890(%rbp),%rsi
imul   $0x30,%rax,%rax
add    %rax,%rsi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
movslq -0xb88(%rbp),%rax
movsd  %xmm0,-0xa30(%rbp,%rax,8)
ff ff
movslq -0xb88(%rbp),%rax
movsd  -0xa30(%rbp,%rax,8),%xmm1
ff ff
movslq -0xb88(%rbp),%rax
movsd  -0xbc0(%rbp,%rax,8),%xmm0
ff ff
ucomisd %xmm1,%xmm0
jbe    180f <S6Dist_pass+0x6bf>
movslq -0xb88(%rbp),%rax
movsd  -0xa30(%rbp,%rax,8),%xmm0
ff ff
movslq -0xb88(%rbp),%rax
movsd  %xmm0,-0xbc0(%rbp,%rax,8)
ff ff
movslq -0xb88(%rbp),%rax
movsd  -0xbc0(%rbp,%rax,8),%xmm1
ff ff
movslq -0xb88(%rbp),%rax
addsd  -0xbf0(%rbp,%rax,8),%xmm1
ff ff
movslq -0xb88(%rbp),%rax
movsd  -0xa60(%rbp,%rax,8),%xmm0
ff ff
ucomisd %xmm1,%xmm0
jbe    1879 <S6Dist_pass+0x729>
movslq -0xb88(%rbp),%rax
movsd  -0xbc0(%rbp,%rax,8),%xmm0
ff ff
movslq -0xb88(%rbp),%rax
addsd  -0xbf0(%rbp,%rax,8),%xmm0
ff ff
movslq -0xb88(%rbp),%rax
movsd  %xmm0,-0xa60(%rbp,%rax,8)
ff ff
jmp    187e <S6Dist_pass+0x72e>
mov    -0xb88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb88(%rbp)
jmp    1603 <S6Dist_pass+0x4b3>
movl   $0x0,-0xb84(%rbp)
cmpl   $0x6,-0xb84(%rbp)
jge    18f6 <S6Dist_pass+0x7a6>
movslq -0xb84(%rbp),%rax
movsd  -0xa60(%rbp,%rax,8),%xmm1
ff ff
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    18dd <S6Dist_pass+0x78d>
movslq -0xb84(%rbp),%rax
movsd  -0xa60(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x48(%rbp)
jmp    18e2 <S6Dist_pass+0x792>
mov    -0xb84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb84(%rbp)
jmp    189c <S6Dist_pass+0x74c>
movl   $0x0,-0xb84(%rbp)
cmpl   $0x6,-0xb84(%rbp)
jge    1936 <S6Dist_pass+0x7e6>
movsd  -0x48(%rbp),%xmm0
movslq -0xb84(%rbp),%rax
movsd  %xmm0,-0xa60(%rbp,%rax,8)
ff ff
mov    -0xb84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb84(%rbp)
jmp    1900 <S6Dist_pass+0x7b0>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xbf8(%rbp)
ff
movl   $0x0,-0xb84(%rbp)
cmpl   $0x6,-0xb84(%rbp)
jge    19c4 <S6Dist_pass+0x874>
movl   $0x0,-0xb88(%rbp)
cmpl   $0x6,-0xb88(%rbp)
jge    19ab <S6Dist_pass+0x85b>
movsd  -0x48(%rbp),%xmm0
movslq -0xb84(%rbp),%rcx
lea    -0xb80(%rbp),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
movslq -0xb88(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xb88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb88(%rbp)
jmp    1964 <S6Dist_pass+0x814>
jmp    19b0 <S6Dist_pass+0x860>
mov    -0xb84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb84(%rbp)
jmp    194d <S6Dist_pass+0x7fd>
movl   $0x0,-0xb84(%rbp)
mov    -0xb84(%rbp),%eax
cmp    -0xb8c(%rbp),%eax
jge    1bf0 <S6Dist_pass+0xaa0>
movl   $0x0,-0xb88(%rbp)
mov    -0xb88(%rbp),%eax
cmp    -0xb90(%rbp),%eax
jge    1bd7 <S6Dist_pass+0xa87>
movslq -0xb84(%rbp),%rax
movslq -0x9d0(%rbp,%rax,4),%rax
ff
movsd  -0x80(%rbp,%rax,8),%xmm1
movsd  -0xbf8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1bbe <S6Dist_pass+0xa6e>
movslq -0xb88(%rbp),%rax
movslq -0x9f0(%rbp,%rax,4),%rax
ff
movsd  -0x530(%rbp,%rax,8),%xmm1
ff ff
movsd  -0xbf8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1bbe <S6Dist_pass+0xa6e>
mov    -0x38(%rbp),%rdi
mov    -0x40(%rbp),%rsi
movslq -0xb84(%rbp),%rax
movslq -0x9d0(%rbp,%rax,4),%rax
ff
lea    -0x1a0(%rbp),%rdx
imul   $0x30,%rax,%rax
add    %rax,%rdx
movslq -0xb84(%rbp),%rax
movslq -0x9d0(%rbp,%rax,4),%rax
ff
lea    -0x3e0(%rbp),%rcx
imul   $0x30,%rax,%rax
add    %rax,%rcx
movslq -0xb84(%rbp),%rax
movslq -0x9d0(%rbp,%rax,4),%rax
ff
lea    -0x650(%rbp),%r8
imul   $0x30,%rax,%rax
add    %rax,%r8
movslq -0xb84(%rbp),%rax
movslq -0x9d0(%rbp,%rax,4),%rax
ff
lea    -0x890(%rbp),%r9
imul   $0x30,%rax,%rax
add    %rax,%r9
movslq -0xb84(%rbp),%rax
mov    -0x9d0(%rbp,%rax,4),%r15d
ff
movslq -0xb88(%rbp),%rax
movslq -0x9f0(%rbp,%rax,4),%rax
ff
lea    -0x650(%rbp),%r14
imul   $0x30,%rax,%rax
add    %rax,%r14
movslq -0xb88(%rbp),%rax
movslq -0x9f0(%rbp,%rax,4),%rax
ff
lea    -0x890(%rbp),%rbx
imul   $0x30,%rax,%rax
add    %rax,%rbx
movslq -0xb88(%rbp),%rax
movslq -0x9f0(%rbp,%rax,4),%rax
ff
lea    -0x1a0(%rbp),%r11
imul   $0x30,%rax,%rax
add    %rax,%r11
movslq -0xb88(%rbp),%rax
movslq -0x9f0(%rbp,%rax,4),%rax
ff
lea    -0x3e0(%rbp),%r10
imul   $0x30,%rax,%rax
add    %rax,%r10
movslq -0xb88(%rbp),%rax
mov    -0x9f0(%rbp,%rax,4),%eax
movslq -0xb84(%rbp),%r13
lea    -0xb80(%rbp),%r12
imul   $0x30,%r13,%r13
add    %r13,%r12
movslq -0xb88(%rbp),%r13
movsd  (%r12,%r13,8),%xmm0
mov    %r15d,(%rsp)
mov    %r14,0x8(%rsp)
mov    %rbx,0x10(%rsp)
mov    %r11,0x18(%rsp)
mov    %r10,0x20(%rsp)
mov    %eax,0x28(%rsp)
call   1040 <S6Dist_2bds_rev@plt>
movslq -0xb84(%rbp),%rcx
lea    -0xb80(%rbp),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
movslq -0xb88(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1bc3 <S6Dist_pass+0xa73>
mov    -0xb88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb88(%rbp)
jmp    19ea <S6Dist_pass+0x89a>
jmp    1bdc <S6Dist_pass+0xa8c>
mov    -0xb84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb84(%rbp)
jmp    19ce <S6Dist_pass+0x87e>
movl   $0x0,-0xb84(%rbp)
cmpl   $0x6,-0xb84(%rbp)
jge    1ca6 <S6Dist_pass+0xb56>
movl   $0x0,-0xb88(%rbp)
cmpl   $0x6,-0xb88(%rbp)
jge    1c8d <S6Dist_pass+0xb3d>
movslq -0xb84(%rbp),%rcx
lea    -0xb80(%rbp),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
movslq -0xb88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1c74 <S6Dist_pass+0xb24>
movslq -0xb84(%rbp),%rcx
lea    -0xb80(%rbp),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
movslq -0xb88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    1c79 <S6Dist_pass+0xb29>
mov    -0xb88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb88(%rbp)
jmp    1c11 <S6Dist_pass+0xac1>
jmp    1c92 <S6Dist_pass+0xb42>
mov    -0xb84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb84(%rbp)
jmp    1bfa <S6Dist_pass+0xaaa>
jmp    1cab <S6Dist_pass+0xb5b>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
add    $0xc08,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<S6Dist_pass>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xbb8,%rsp
movsd  %xmm0,0x10(%rsp)
mov    %rsi,%r14
mov    %rdi,%rbp
lea    0x1c(%rsp),%rax
lea    0x970(%rsp),%rbx
lea    0x280(%rsp),%rsi
lea    0x230(%rsp),%rdx
lea    0x610(%rsp),%rcx
lea    0xa90(%rsp),%r8
lea    0x4f0(%rsp),%r9
push   %rax
push   %rbx
call   1070 <s6bdmaps@plt>
add    $0x10,%rsp
lea    0x2c(%rsp),%rax
lea    0x730(%rsp),%rbx
lea    0x250(%rsp),%rsi
lea    0x210(%rsp),%rdx
lea    0x3d0(%rsp),%rcx
lea    0x850(%rsp),%r8
lea    0x2b0(%rsp),%r9
mov    %r14,%rdi
movsd  0x10(%rsp),%xmm0
push   %rax
push   %rbx
call   1070 <s6bdmaps@plt>
add    $0x10,%rsp
mov    %rbp,%rdi
call   1030 <s6minbddist@plt>
movsd  %xmm0,0x8(%rsp)
mov    %r14,%rdi
call   1030 <s6minbddist@plt>
movsd  0x10(%rsp),%xmm5
addsd  0x8(%rsp),%xmm0
ucomisd %xmm0,%xmm5
jbe    1c71 <S6Dist_pass+0xb21>
movsd  %xmm5,0x30(%rsp)
movsd  %xmm5,0x38(%rsp)
movsd  %xmm5,0x40(%rsp)
movsd  %xmm5,0x48(%rsp)
movsd  %xmm5,0x50(%rsp)
movsd  %xmm5,0x58(%rsp)
mov    0x1c(%rsp),%ecx
movapd %xmm5,%xmm6
movapd %xmm5,%xmm0
movapd %xmm5,%xmm1
movapd %xmm5,%xmm2
movapd %xmm5,%xmm3
movapd %xmm5,%xmm4
test   %ecx,%ecx
jle    13a8 <S6Dist_pass+0x258>
xor    %ebx,%ebx
jmp    1282 <S6Dist_pass+0x132>
xchg   %ax,%ax
add    $0x1,%rbx
movslq 0x1c(%rsp),%rcx
cmp    %rcx,%rbx
jge    137e <S6Dist_pass+0x22e>
movslq 0x230(%rsp,%rbx,4),%rax
movsd  0x280(%rsp,%rax,8),%xmm0
movsd  %xmm0,0x8(%rsp)
lea    (%rax,%rax,2),%rax
shl    $0x4,%rax
lea    (%rsp,%rax,1),%rsi
add    $0x610,%rsi
mov    %rbp,%rdi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
minsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movslq 0x230(%rsp,%rbx,4),%rax
lea    (%rax,%rax,2),%rax
shl    $0x4,%rax
lea    (%rsp,%rax,1),%rsi
add    $0x4f0,%rsi
mov    %rbp,%rdi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
minsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movslq 0x230(%rsp,%rbx,4),%rax
lea    (%rax,%rax,2),%rax
shl    $0x4,%rax
lea    (%rsp,%rax,1),%rsi
add    $0x610,%rsi
mov    %r14,%rdi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
movsd  %xmm0,0x20(%rsp)
movslq 0x230(%rsp,%rbx,4),%rax
lea    (%rax,%rax,2),%rax
shl    $0x4,%rax
lea    (%rsp,%rax,1),%rsi
add    $0x4f0,%rsi
mov    %r14,%rdi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
minsd  0x20(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  0x30(%rsp,%rbx,8),%xmm1
ucomisd %xmm0,%xmm1
jbe    1270 <S6Dist_pass+0x120>
movsd  %xmm0,0x30(%rsp,%rbx,8)
jmp    1270 <S6Dist_pass+0x120>
movsd  0x30(%rsp),%xmm4
movsd  0x38(%rsp),%xmm3
movsd  0x40(%rsp),%xmm2
movsd  0x48(%rsp),%xmm1
movsd  0x50(%rsp),%xmm0
movsd  0x58(%rsp),%xmm6
movsd  0x10(%rsp),%xmm5
minsd  %xmm5,%xmm4
minsd  %xmm4,%xmm3
minsd  %xmm3,%xmm2
minsd  %xmm2,%xmm1
minsd  %xmm1,%xmm0
minsd  %xmm0,%xmm6
movsd  %xmm6,0x30(%rsp)
movsd  %xmm6,0x38(%rsp)
movsd  %xmm6,0x40(%rsp)
movsd  %xmm6,0x48(%rsp)
movsd  %xmm6,0x50(%rsp)
movsd  %xmm6,0x58(%rsp)
mov    0x2c(%rsp),%edx
movapd %xmm6,%xmm9
movapd %xmm6,%xmm0
movapd %xmm6,%xmm1
movapd %xmm6,%xmm2
movapd %xmm6,%xmm3
movapd %xmm6,%xmm4
test   %edx,%edx
jle    155d <S6Dist_pass+0x40d>
movsd  %xmm6,0x10(%rsp)
xor    %ebx,%ebx
jmp    1432 <S6Dist_pass+0x2e2>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%rbx
movslq 0x2c(%rsp),%rdx
cmp    %rdx,%rbx
jge    152e <S6Dist_pass+0x3de>
movslq 0x210(%rsp,%rbx,4),%rax
movsd  0x250(%rsp,%rax,8),%xmm0
movsd  %xmm0,0x8(%rsp)
lea    (%rax,%rax,2),%rax
shl    $0x4,%rax
lea    (%rsp,%rax,1),%rsi
add    $0x3d0,%rsi
mov    %r14,%rdi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
minsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movslq 0x210(%rsp,%rbx,4),%rax
lea    (%rax,%rax,2),%rax
shl    $0x4,%rax
lea    (%rsp,%rax,1),%rsi
add    $0x2b0,%rsi
mov    %r14,%rdi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
minsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movslq 0x210(%rsp,%rbx,4),%rax
lea    (%rax,%rax,2),%rax
shl    $0x4,%rax
lea    (%rsp,%rax,1),%rsi
add    $0x3d0,%rsi
mov    %rbp,%rdi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
movsd  %xmm0,0x20(%rsp)
movslq 0x210(%rsp,%rbx,4),%rax
lea    (%rax,%rax,2),%rax
shl    $0x4,%rax
lea    (%rsp,%rax,1),%rsi
add    $0x2b0,%rsi
mov    %rbp,%rdi
call   1050 <s61234distsq@plt>
mov    %eax,%edi
call   1060 <sqrt@plt>
minsd  0x20(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  0x30(%rsp,%rbx,8),%xmm1
ucomisd %xmm0,%xmm1
jbe    1420 <S6Dist_pass+0x2d0>
movsd  %xmm0,0x30(%rsp,%rbx,8)
jmp    1420 <S6Dist_pass+0x2d0>
movsd  0x30(%rsp),%xmm4
movsd  0x38(%rsp),%xmm3
movsd  0x40(%rsp),%xmm2
movsd  0x48(%rsp),%xmm1
movsd  0x50(%rsp),%xmm0
movsd  0x58(%rsp),%xmm9
mov    0x1c(%rsp),%ecx
movsd  0x10(%rsp),%xmm6
minsd  %xmm6,%xmm4
minsd  %xmm4,%xmm3
minsd  %xmm3,%xmm2
minsd  %xmm2,%xmm1
minsd  %xmm1,%xmm0
minsd  %xmm0,%xmm9
movsd  %xmm9,0x30(%rsp)
movsd  %xmm9,0x38(%rsp)
movsd  %xmm9,0x40(%rsp)
movsd  %xmm9,0x48(%rsp)
movsd  %xmm9,0x50(%rsp)
movsd  %xmm9,0x58(%rsp)
movsd  %xmm9,0xf0(%rsp)
movsd  %xmm9,0xf8(%rsp)
movsd  %xmm9,0x100(%rsp)
movsd  %xmm9,0x108(%rsp)
movsd  %xmm9,0x110(%rsp)
movsd  %xmm9,0x118(%rsp)
movsd  %xmm9,0x120(%rsp)
movsd  %xmm9,0x128(%rsp)
movsd  %xmm9,0x130(%rsp)
movsd  %xmm9,0x138(%rsp)
movsd  %xmm9,0x140(%rsp)
movsd  %xmm9,0x148(%rsp)
movsd  %xmm9,0x150(%rsp)
movsd  %xmm9,0x158(%rsp)
movsd  %xmm9,0x160(%rsp)
movsd  %xmm9,0x168(%rsp)
movsd  %xmm9,0x170(%rsp)
movsd  %xmm9,0x178(%rsp)
movsd  %xmm9,0x180(%rsp)
movsd  %xmm9,0x188(%rsp)
movsd  %xmm9,0x190(%rsp)
movsd  %xmm9,0x198(%rsp)
movsd  %xmm9,0x1a0(%rsp)
movsd  %xmm9,0x1a8(%rsp)
movsd  %xmm9,0x1b0(%rsp)
movsd  %xmm9,0x1b8(%rsp)
movsd  %xmm9,0x1c0(%rsp)
movsd  %xmm9,0x1c8(%rsp)
movsd  %xmm9,0x1d0(%rsp)
movsd  %xmm9,0x1d8(%rsp)
movsd  %xmm9,0x1e0(%rsp)
movsd  %xmm9,0x1e8(%rsp)
movsd  %xmm9,0x1f0(%rsp)
movsd  %xmm9,0x1f8(%rsp)
movsd  %xmm9,0x200(%rsp)
movsd  %xmm9,0x208(%rsp)
movsd  %xmm9,0x20(%rsp)
movapd %xmm9,%xmm10
movsd  %xmm9,0x10(%rsp)
movsd  %xmm9,0xe0(%rsp)
movsd  %xmm9,0xd8(%rsp)
movsd  %xmm9,0xc8(%rsp)
movsd  %xmm9,0xc0(%rsp)
movsd  %xmm9,0xb0(%rsp)
movsd  %xmm9,0xa8(%rsp)
movsd  %xmm9,0x98(%rsp)
movsd  %xmm9,0x90(%rsp)
movsd  %xmm9,0xe8(%rsp)
movsd  %xmm9,0x80(%rsp)
movsd  %xmm9,0x78(%rsp)
movsd  %xmm9,0xd0(%rsp)
movsd  %xmm9,0x68(%rsp)
movapd %xmm9,%xmm3
movsd  %xmm9,0xb8(%rsp)
movapd %xmm9,%xmm4
movapd %xmm9,%xmm5
movsd  %xmm9,0xa0(%rsp)
movapd %xmm9,%xmm6
movapd %xmm9,%xmm7
movsd  %xmm9,0x88(%rsp)
movapd %xmm9,%xmm0
movapd %xmm9,%xmm1
movsd  %xmm9,0x70(%rsp)
movapd %xmm9,%xmm14
movapd %xmm9,%xmm15
movapd %xmm9,%xmm11
movapd %xmm9,%xmm12
movapd %xmm9,%xmm13
movapd %xmm9,%xmm8
movsd  %xmm9,0x8(%rsp)
test   %ecx,%ecx
jle    1b0f <S6Dist_pass+0x9bf>
mov    %rbp,0x10(%rsp)
mov    %r14,0x20(%rsp)
lea    0xf0(%rsp),%r12
xor    %r13d,%r13d
movsd  0x8(%rsp),%xmm1
jmp    1846 <S6Dist_pass+0x6f6>
nopl   0x0(%rax)
add    $0x1,%r13
movslq 0x1c(%rsp),%rax
add    $0x30,%r12
cmp    %rax,%r13
jge    191d <S6Dist_pass+0x7cd>
test   %edx,%edx
jle    1830 <S6Dist_pass+0x6e0>
xor    %ebx,%ebx
jmp    185c <S6Dist_pass+0x70c>
xchg   %ax,%ax
add    $0x1,%rbx
movslq %edx,%rax
cmp    %rax,%rbx
jge    1830 <S6Dist_pass+0x6e0>
movslq 0x230(%rsp,%r13,4),%rax
ucomisd 0x280(%rsp,%rax,8),%xmm1
jbe    1850 <S6Dist_pass+0x700>
movslq 0x210(%rsp,%rbx,4),%r10
ucomisd 0x250(%rsp,%r10,8),%xmm1
jbe    1850 <S6Dist_pass+0x700>
mov    %rax,%rcx
shl    $0x4,%rcx
lea    (%rcx,%rcx,2),%rsi
lea    (%rsp,%rsi,1),%rdx
add    $0x610,%rdx
lea    0x4f0(%rsp,%rsi,1),%rcx
lea    (%rsp,%rsi,1),%r8
add    $0x3d0,%r8
lea    (%rsp,%rsi,1),%r9
add    $0x2b0,%r9
mov    %r10,%rsi
shl    $0x4,%rsi
lea    (%rsi,%rsi,2),%rsi
lea    (%rsp,%rsi,1),%r11
add    $0x3d0,%r11
lea    0x2b0(%rsp,%rsi,1),%rbp
lea    0x610(%rsp,%rsi,1),%r14
lea    0x4f0(%rsp,%rsi,1),%r15
movsd  (%r12,%rbx,8),%xmm0
mov    0x10(%rsp),%rdi
mov    0x20(%rsp),%rsi
push   %r10
push   %r15
push   %r14
push   %rbp
push   %r11
push   %rax
call   1040 <S6Dist_2bds_rev@plt>
movsd  0x38(%rsp),%xmm1
add    $0x30,%rsp
movsd  %xmm0,(%r12,%rbx,8)
mov    0x2c(%rsp),%edx
jmp    1850 <S6Dist_pass+0x700>
movsd  0xf0(%rsp),%xmm9
movsd  0xf8(%rsp),%xmm8
movsd  0x100(%rsp),%xmm13
movsd  0x108(%rsp),%xmm12
movsd  0x110(%rsp),%xmm11
movsd  0x118(%rsp),%xmm15
movsd  0x120(%rsp),%xmm14
movsd  0x128(%rsp),%xmm0
movsd  %xmm0,0x70(%rsp)
movsd  0x130(%rsp),%xmm2
movsd  0x138(%rsp),%xmm1
movsd  0x140(%rsp),%xmm0
movsd  %xmm0,0x88(%rsp)
movsd  0x148(%rsp),%xmm10
movsd  0x150(%rsp),%xmm7
movsd  0x158(%rsp),%xmm0
movsd  %xmm0,0xa0(%rsp)
movsd  0x160(%rsp),%xmm6
movsd  0x168(%rsp),%xmm4
movsd  0x170(%rsp),%xmm0
movsd  %xmm0,0xb8(%rsp)
movsd  0x178(%rsp),%xmm3
movsd  0x180(%rsp),%xmm0
movsd  %xmm0,0x68(%rsp)
movsd  0x188(%rsp),%xmm0
movsd  %xmm0,0xd0(%rsp)
movsd  0x190(%rsp),%xmm0
movsd  %xmm0,0x78(%rsp)
movsd  0x198(%rsp),%xmm0
movsd  %xmm0,0x80(%rsp)
movsd  0x1a0(%rsp),%xmm0
movsd  %xmm0,0xe8(%rsp)
movsd  0x1a8(%rsp),%xmm0
movsd  %xmm0,0x90(%rsp)
movsd  0x1b0(%rsp),%xmm0
movsd  %xmm0,0x98(%rsp)
movsd  0x1b8(%rsp),%xmm0
movsd  %xmm0,0xa8(%rsp)
movsd  0x1c0(%rsp),%xmm0
movsd  %xmm0,0xb0(%rsp)
movsd  0x1c8(%rsp),%xmm0
movsd  %xmm0,0xc0(%rsp)
movsd  0x1d0(%rsp),%xmm0
movsd  %xmm0,0xc8(%rsp)
movsd  0x1d8(%rsp),%xmm0
movsd  %xmm0,0xd8(%rsp)
movsd  0x1e0(%rsp),%xmm0
movsd  %xmm0,0xe0(%rsp)
movsd  0x1e8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movapd %xmm1,%xmm0
movapd %xmm2,%xmm1
movapd %xmm6,%xmm5
movapd %xmm7,%xmm6
movapd %xmm10,%xmm7
movsd  0x1f0(%rsp),%xmm2
movsd  0x1f8(%rsp),%xmm10
movsd  %xmm10,0x20(%rsp)
movapd %xmm2,%xmm10
minsd  0x8(%rsp),%xmm9
minsd  %xmm9,%xmm8
minsd  %xmm8,%xmm13
minsd  %xmm13,%xmm12
minsd  %xmm12,%xmm11
minsd  %xmm11,%xmm15
minsd  %xmm15,%xmm14
movsd  0x70(%rsp),%xmm2
minsd  %xmm14,%xmm2
minsd  %xmm2,%xmm1
minsd  %xmm1,%xmm0
movapd %xmm0,%xmm1
movsd  0x88(%rsp),%xmm0
minsd  %xmm1,%xmm0
minsd  %xmm0,%xmm7
minsd  %xmm7,%xmm6
movapd %xmm6,%xmm7
movsd  0xa0(%rsp),%xmm6
minsd  %xmm7,%xmm6
minsd  %xmm6,%xmm5
minsd  %xmm5,%xmm4
movapd %xmm4,%xmm5
movsd  0xb8(%rsp),%xmm4
minsd  %xmm5,%xmm4
minsd  %xmm4,%xmm3
movsd  0x68(%rsp),%xmm0
minsd  %xmm3,%xmm0
movapd %xmm0,%xmm3
movsd  0xd0(%rsp),%xmm2
minsd  %xmm0,%xmm2
movsd  0x78(%rsp),%xmm1
minsd  %xmm2,%xmm1
movsd  0x80(%rsp),%xmm0
minsd  %xmm1,%xmm0
movapd %xmm0,%xmm1
movsd  0xe8(%rsp),%xmm0
minsd  %xmm1,%xmm0
movsd  0x90(%rsp),%xmm1
minsd  %xmm0,%xmm1
movsd  0x98(%rsp),%xmm0
minsd  %xmm1,%xmm0
movsd  0xa8(%rsp),%xmm1
minsd  %xmm0,%xmm1
movsd  0xb0(%rsp),%xmm0
minsd  %xmm1,%xmm0
movsd  0xc0(%rsp),%xmm1
minsd  %xmm0,%xmm1
movsd  0xc8(%rsp),%xmm0
minsd  %xmm1,%xmm0
movsd  0xd8(%rsp),%xmm1
minsd  %xmm0,%xmm1
movsd  0xe0(%rsp),%xmm0
minsd  %xmm1,%xmm0
movapd %xmm0,%xmm1
movsd  0x10(%rsp),%xmm0
minsd  %xmm1,%xmm0
minsd  %xmm0,%xmm10
movsd  0x20(%rsp),%xmm1
minsd  %xmm10,%xmm1
movsd  0x200(%rsp),%xmm0
minsd  %xmm1,%xmm0
movsd  0x208(%rsp),%xmm5
minsd  %xmm0,%xmm5
movapd %xmm5,%xmm0
add    $0xbb8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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