void VoronoiWeights(char **aseq, int nseq, int alen, float *wgt) {
  float **dmx;
  float *halfmin;
  char **psym;
  int *nsym;
  int symseen[27];
  char *randseq;
  int acol;
  int idx;
  int symidx;
  int i;
  float min;
  float dist;
  float challenge, champion;
  int itscale;
  int iteration;
  int best;
  if (nseq == 1) {
    wgt[0] = 1.0;
    return;
  }
  itscale = 50;
  if (!simple_diffmx(aseq, nseq, &dmx))
    Die("simple_diffmx() failed");
  halfmin =
      sre_malloc("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                 "outputs/2022-01-22/02-19-57/repos/vinuesa/get_phylomarkers/"
                 "refs/heads/master/bin/clustal-omega-1.2.4/src/squid/weight.c",
                 181, (sizeof(float) * nseq));
  for (idx = 0; idx < nseq; idx++) {
    for (min = 1.0, i = 0; i < nseq; i++) {
      if (i == idx)
        continue;
      if (dmx[idx][i] < min)
        min = dmx[idx][i];
    }
    halfmin[idx] = min / 2.0;
  }
  Free2DArray((void **)dmx, nseq);
  psym =
      sre_malloc("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                 "outputs/2022-01-22/02-19-57/repos/vinuesa/get_phylomarkers/"
                 "refs/heads/master/bin/clustal-omega-1.2.4/src/squid/weight.c",
                 195, (alen * sizeof(char *)));
  nsym =
      sre_malloc("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                 "outputs/2022-01-22/02-19-57/repos/vinuesa/get_phylomarkers/"
                 "refs/heads/master/bin/clustal-omega-1.2.4/src/squid/weight.c",
                 196, (alen * sizeof(int)));
  for (acol = 0; acol < alen; acol++)
    psym[acol] = sre_malloc(
        "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
        "2022-01-22/02-19-57/repos/vinuesa/get_phylomarkers/refs/heads/master/"
        "bin/clustal-omega-1.2.4/src/squid/weight.c",
        198, (27 * sizeof(char)));
  for (acol = 0; acol < alen; acol++) {
    memset(symseen, 0, sizeof(int) * 27);
    for (idx = 0; idx < nseq; idx++)
      if (!((aseq[idx][acol]) == ' ' || (aseq[idx][acol]) == '.' ||
            (aseq[idx][acol]) == '_' || (aseq[idx][acol]) == '-' ||
            (aseq[idx][acol]) == '~')) {
        if (isupper((int)aseq[idx][acol]))
          symidx = aseq[idx][acol] - 'A';
        else
          symidx = aseq[idx][acol] - 'a';
        if (symidx >= 0 && symidx < 26)
          symseen[symidx] = 1;
      } else
        symseen[26] = 1;
    for (nsym[acol] = 0, i = 0; i < 26; i++)
      if (symseen[i]) {
        psym[acol][nsym[acol]] = 'A' + i;
        nsym[acol]++;
      }
    if (symseen[26]) {
      psym[acol][nsym[acol]] = ' ';
      nsym[acol]++;
    }
  }
  randseq =
      sre_malloc("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                 "outputs/2022-01-22/02-19-57/repos/vinuesa/get_phylomarkers/"
                 "refs/heads/master/bin/clustal-omega-1.2.4/src/squid/weight.c",
                 265, ((alen + 1) * sizeof(char)));
  best = 42.;
  FSet(wgt, nseq, 0.0);
  for (iteration = 0; iteration < itscale * nseq; iteration++) {
    for (acol = 0; acol < alen; acol++)
      randseq[acol] = (nsym[acol] == 0)
                          ? ' '
                          : psym[acol][((int)(sre_random() * (nsym[acol])))];
    randseq[acol] = '\0';
    champion = sre_random();
    for (min = 1.0, idx = 0; idx < nseq; idx++) {
      dist = simple_distance(aseq[idx], randseq);
      if (dist < halfmin[idx]) {
        best = idx;
        break;
      }
      if (dist < min) {
        champion = sre_random();
        best = idx;
        min = dist;
      } else if (dist == min) {
        challenge = sre_random();
        if (challenge > champion) {
          champion = challenge;
          best = idx;
          min = dist;
        }
      }
    }
    wgt[best] += 1.0;
  }
  for (idx = 0; idx < nseq; idx++)
    wgt[idx] = wgt[idx] / (float)itscale;
  free(randseq);
  free(nsym);
  free(halfmin);
  Free2DArray((void **)psym, alen);
}


x86 assembly (clang, -O0):
<VoronoiWeights>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
cmpl   $0x1,-0xc(%rbp)
jne    11d8 <VoronoiWeights+0x38>
mov    -0x18(%rbp),%rax
movss  0xe31(%rip),%xmm0
movss  %xmm0,(%rax)
jmp    19d9 <VoronoiWeights+0x839>
movl   $0x32,-0xdc(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
lea    -0x20(%rbp),%rdx
mov    $0x0,%al
call   1050 <simple_diffmx@plt>
cmp    $0x0,%eax
jne    120b <VoronoiWeights+0x6b>
lea    0xe14(%rip),%rdi
mov    $0x0,%al
call   1080 <Die@plt>
movslq -0xc(%rbp),%rdx
shl    $0x2,%rdx
lea    0xe15(%rip),%rdi
mov    $0xb5,%esi
mov    $0x0,%al
call   10c0 <sre_malloc@plt>
cltq
mov    %rax,-0x28(%rbp)
movl   $0x0,-0xc0(%rbp)
mov    -0xc0(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    132d <VoronoiWeights+0x18d>
movss  0xdb3(%rip),%xmm0
movss  %xmm0,-0xcc(%rbp)
ff
movl   $0x0,-0xc8(%rbp)
mov    -0xc8(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    12ed <VoronoiWeights+0x14d>
mov    -0xc8(%rbp),%eax
cmp    -0xc0(%rbp),%eax
jne    1285 <VoronoiWeights+0xe5>
jmp    12d9 <VoronoiWeights+0x139>
mov    -0x20(%rbp),%rax
movslq -0xc0(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0xc8(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0xcc(%rbp),%xmm0
ff
ucomiss %xmm1,%xmm0
jbe    12d4 <VoronoiWeights+0x134>
mov    -0x20(%rbp),%rax
movslq -0xc0(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0xc8(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0xcc(%rbp)
ff
jmp    12d9 <VoronoiWeights+0x139>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    125f <VoronoiWeights+0xbf>
movss  -0xcc(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xd0f(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x28(%rbp),%rax
movslq -0xc0(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0xc0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc0(%rbp)
jmp    1236 <VoronoiWeights+0x96>
mov    -0x20(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    $0x0,%al
call   1070 <Free2DArray@plt>
movslq -0x10(%rbp),%rdx
shl    $0x3,%rdx
lea    0xce5(%rip),%rdi
mov    $0xc3,%esi
mov    $0x0,%al
call   10c0 <sre_malloc@plt>
cltq
mov    %rax,-0x30(%rbp)
movslq -0x10(%rbp),%rdx
shl    $0x2,%rdx
lea    0xcc4(%rip),%rdi
mov    $0xc4,%esi
mov    $0x0,%al
call   10c0 <sre_malloc@plt>
cltq
mov    %rax,-0x38(%rbp)
movl   $0x0,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    13d4 <VoronoiWeights+0x234>
lea    0xc92(%rip),%rdi
mov    $0xc6,%esi
mov    $0x1b,%edx
mov    $0x0,%al
call   10c0 <sre_malloc@plt>
movslq %eax,%rdx
mov    -0x30(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    1387 <VoronoiWeights+0x1e7>
movl   $0x0,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    167c <VoronoiWeights+0x4dc>
lea    -0xb0(%rbp),%rdi
xor    %esi,%esi
mov    $0x6c,%edx
call   1060 <memset@plt>
movl   $0x0,-0xc0(%rbp)
mov    -0xc0(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    158c <VoronoiWeights+0x3ec>
mov    -0x8(%rbp),%rax
movslq -0xc0(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0xbc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     156c <VoronoiWeights+0x3cc>
mov    -0x8(%rbp),%rax
movslq -0xc0(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0xbc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     156c <VoronoiWeights+0x3cc>
mov    -0x8(%rbp),%rax
movslq -0xc0(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0xbc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5f,%eax
je     156c <VoronoiWeights+0x3cc>
mov    -0x8(%rbp),%rax
movslq -0xc0(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0xbc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
je     156c <VoronoiWeights+0x3cc>
mov    -0x8(%rbp),%rax
movslq -0xc0(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0xbc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7e,%eax
je     156c <VoronoiWeights+0x3cc>
mov    -0x8(%rbp),%rax
movslq -0xc0(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0xbc(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1090 <isupper@plt>
cmp    $0x0,%eax
je     1518 <VoronoiWeights+0x378>
mov    -0x8(%rbp),%rax
movslq -0xc0(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0xbc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x41,%eax
mov    %eax,-0xc4(%rbp)
jmp    153b <VoronoiWeights+0x39b>
mov    -0x8(%rbp),%rax
movslq -0xc0(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0xbc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x61,%eax
mov    %eax,-0xc4(%rbp)
cmpl   $0x0,-0xc4(%rbp)
jl     1567 <VoronoiWeights+0x3c7>
cmpl   $0x1a,-0xc4(%rbp)
jge    1567 <VoronoiWeights+0x3c7>
movslq -0xc4(%rbp),%rax
movl   $0x1,-0xb0(%rbp,%rax,4)
jmp    1573 <VoronoiWeights+0x3d3>
movl   $0x1,-0x48(%rbp)
jmp    1578 <VoronoiWeights+0x3d8>
mov    -0xc0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc0(%rbp)
jmp    140a <VoronoiWeights+0x26a>
mov    -0x38(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
movl   $0x0,-0xc8(%rbp)
cmpl   $0x1a,-0xc8(%rbp)
jge    1623 <VoronoiWeights+0x483>
movslq -0xc8(%rbp),%rax
cmpl   $0x0,-0xb0(%rbp,%rax,4)
je     160a <VoronoiWeights+0x46a>
mov    -0xc8(%rbp),%eax
add    $0x41,%eax
mov    %al,%dl
mov    -0x30(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x38(%rbp),%rcx
movslq -0xbc(%rbp),%rsi
movslq (%rcx,%rsi,4),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x38(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
add    $0x1,%edx
mov    %edx,(%rax,%rcx,4)
jmp    160f <VoronoiWeights+0x46f>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    15a8 <VoronoiWeights+0x408>
cmpl   $0x0,-0x48(%rbp)
je     1663 <VoronoiWeights+0x4c3>
mov    -0x30(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x38(%rbp),%rcx
movslq -0xbc(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x38(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
add    $0x1,%edx
mov    %edx,(%rax,%rcx,4)
jmp    1668 <VoronoiWeights+0x4c8>
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    13de <VoronoiWeights+0x23e>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rdx
shl    $0x0,%rdx
lea    0x99f(%rip),%rdi
mov    $0x109,%esi
mov    $0x0,%al
call   10c0 <sre_malloc@plt>
cltq
mov    %rax,-0xb8(%rbp)
movl   $0x2a,-0xe4(%rbp)
mov    -0x18(%rbp),%rdi
mov    -0xc(%rbp),%esi
xorps  %xmm0,%xmm0
mov    $0x1,%al
call   10b0 <FSet@plt>
movl   $0x0,-0xe0(%rbp)
mov    -0xe0(%rbp),%eax
mov    -0xdc(%rbp),%ecx
imul   -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    1954 <VoronoiWeights+0x7b4>
movl   $0x0,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    178f <VoronoiWeights+0x5ef>
mov    -0x38(%rbp),%rax
movslq -0xbc(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1720 <VoronoiWeights+0x580>
mov    $0x20,%eax
mov    %eax,-0xe8(%rbp)
jmp    1762 <VoronoiWeights+0x5c2>
mov    -0x30(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0xf0(%rbp)
mov    $0x0,%al
call   10a0 <sre_random@plt>
mov    %eax,%ecx
mov    -0xf0(%rbp),%rax
mov    -0x38(%rbp),%rdx
movslq -0xbc(%rbp),%rsi
imul   (%rdx,%rsi,4),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
mov    %eax,-0xe8(%rbp)
mov    -0xe8(%rbp),%eax
mov    %al,%dl
mov    -0xb8(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    16ec <VoronoiWeights+0x54c>
mov    -0xb8(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    $0x0,%al
call   10a0 <sre_random@plt>
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0xd8(%rbp)
ff
movss  0x844(%rip),%xmm0
movss  %xmm0,-0xcc(%rbp)
ff
movl   $0x0,-0xc0(%rbp)
mov    -0xc0(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1917 <VoronoiWeights+0x777>
mov    -0x8(%rbp),%rax
movslq -0xc0(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
mov    -0xb8(%rbp),%rsi
mov    $0x0,%al
call   1040 <simple_distance@plt>
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0xd0(%rbp)
ff
movss  -0xd0(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
movslq -0xc0(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
ucomiss %xmm1,%xmm0
jbe    1838 <VoronoiWeights+0x698>
mov    -0xc0(%rbp),%eax
mov    %eax,-0xe4(%rbp)
jmp    1917 <VoronoiWeights+0x777>
movss  -0xd0(%rbp),%xmm1
ff
movss  -0xcc(%rbp),%xmm0
ff
ucomiss %xmm1,%xmm0
jbe    1885 <VoronoiWeights+0x6e5>
mov    $0x0,%al
call   10a0 <sre_random@plt>
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0xd8(%rbp)
ff
mov    -0xc0(%rbp),%eax
mov    %eax,-0xe4(%rbp)
movss  -0xd0(%rbp),%xmm0
ff
movss  %xmm0,-0xcc(%rbp)
ff
jmp    18fe <VoronoiWeights+0x75e>
movss  -0xd0(%rbp),%xmm0
ff
ucomiss -0xcc(%rbp),%xmm0
jne    18f9 <VoronoiWeights+0x759>
jp     18f9 <VoronoiWeights+0x759>
mov    $0x0,%al
call   10a0 <sre_random@plt>
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0xd4(%rbp)
ff
movss  -0xd4(%rbp),%xmm0
ff
ucomiss -0xd8(%rbp),%xmm0
jbe    18f4 <VoronoiWeights+0x754>
movss  -0xd4(%rbp),%xmm0
ff
movss  %xmm0,-0xd8(%rbp)
ff
mov    -0xc0(%rbp),%eax
mov    %eax,-0xe4(%rbp)
movss  -0xd0(%rbp),%xmm0
ff
movss  %xmm0,-0xcc(%rbp)
ff
jmp    18f9 <VoronoiWeights+0x759>
jmp    18fe <VoronoiWeights+0x75e>
jmp    1903 <VoronoiWeights+0x763>
mov    -0xc0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc0(%rbp)
jmp    17ce <VoronoiWeights+0x62e>
mov    -0x18(%rbp),%rax
movslq -0xe4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x6d5(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0xe0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe0(%rbp)
jmp    16ca <VoronoiWeights+0x52a>
movl   $0x0,-0xc0(%rbp)
mov    -0xc0(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    19ad <VoronoiWeights+0x80d>
mov    -0x18(%rbp),%rax
movslq -0xc0(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtsi2ssl -0xdc(%rbp),%xmm1
ff
divss  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movslq -0xc0(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0xc0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc0(%rbp)
jmp    195e <VoronoiWeights+0x7be>
mov    -0xb8(%rbp),%rdi
call   1030 <free@plt>
mov    -0x38(%rbp),%rdi
call   1030 <free@plt>
mov    -0x28(%rbp),%rdi
call   1030 <free@plt>
mov    -0x30(%rbp),%rdi
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1070 <Free2DArray@plt>
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<VoronoiWeights>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xd8,%rsp
mov    %rcx,%rbp
mov    %rdx,0x28(%rsp)
cmp    $0x1,%esi
jne    11ba <VoronoiWeights+0x2a>
movl   $0x3f800000,0x0(%rbp)
jmp    1794 <VoronoiWeights+0x604>
mov    %esi,%ebx
mov    %rdi,%r13
lea    0x58(%rsp),%rdx
xor    %eax,%eax
call   1050 <simple_diffmx@plt>
test   %eax,%eax
jne    11dd <VoronoiWeights+0x4d>
lea    0xe4a(%rip),%rdi
xor    %eax,%eax
call   1070 <Die@plt>
mov    %rbp,0x50(%rsp)
mov    %ebx,%eax
mov    %rax,0x8(%rsp)
movslq %ebx,%rdx
shl    $0x2,%rdx
lea    0xe40(%rip),%rdi
mov    $0xb5,%esi
xor    %eax,%eax
call   10b0 <sre_malloc@plt>
cltq
mov    %rax,0x40(%rsp)
test   %ebx,%ebx
jle    12f2 <VoronoiWeights+0x162>
mov    0x8(%rsp),%rax
and    $0xfffffffe,%eax
xor    %ecx,%ecx
movss  0xddc(%rip),%xmm0
movss  0xdd8(%rip),%xmm1
jmp    124d <VoronoiWeights+0xbd>
xchg   %ax,%ax
mulss  %xmm1,%xmm2
mov    0x40(%rsp),%rdx
movss  %xmm2,(%rdx,%rcx,4)
add    $0x1,%rcx
cmp    0x8(%rsp),%rcx
je     12f2 <VoronoiWeights+0x162>
mov    0x58(%rsp),%rdx
cmp    $0x1,%ebx
jne    1270 <VoronoiWeights+0xe0>
xor    %esi,%esi
movaps %xmm0,%xmm2
testb  $0x1,0x8(%rsp)
je     1230 <VoronoiWeights+0xa0>
jmp    12cf <VoronoiWeights+0x13f>
cs nopw 0x0(%rax,%rax,1)
nop
xor    %edi,%edi
movaps %xmm0,%xmm2
jmp    1289 <VoronoiWeights+0xf9>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rdi
cmp    %rax,%rdi
je     12c0 <VoronoiWeights+0x130>
mov    %rdi,%rsi
cmp    %rdi,%rcx
je     12a2 <VoronoiWeights+0x112>
mov    (%rdx,%rcx,8),%rdi
movss  (%rdi,%rsi,4),%xmm3
ucomiss %xmm3,%xmm2
jbe    12a2 <VoronoiWeights+0x112>
movaps %xmm3,%xmm2
lea    0x1(%rsi),%rdi
cmp    %rcx,%rdi
je     1280 <VoronoiWeights+0xf0>
mov    (%rdx,%rcx,8),%rbp
movss  0x4(%rbp,%rsi,4),%xmm3
ucomiss %xmm3,%xmm2
jbe    1280 <VoronoiWeights+0xf0>
movaps %xmm3,%xmm2
jmp    1280 <VoronoiWeights+0xf0>
nop
add    $0x2,%rsi
testb  $0x1,0x8(%rsp)
je     1230 <VoronoiWeights+0xa0>
cmp    %rcx,%rsi
je     1230 <VoronoiWeights+0xa0>
mov    (%rdx,%rcx,8),%rdx
movss  (%rdx,%rsi,4),%xmm3
ucomiss %xmm3,%xmm2
jbe    1230 <VoronoiWeights+0xa0>
movaps %xmm3,%xmm2
jmp    1230 <VoronoiWeights+0xa0>
mov    0x58(%rsp),%rdi
mov    %ebx,0x18(%rsp)
mov    %ebx,%esi
xor    %eax,%eax
call   1060 <Free2DArray@plt>
mov    0x28(%rsp),%rbp
movslq %ebp,%rbx
lea    0x0(,%rbx,8),%rdx
lea    0xd1c(%rip),%r14
mov    %r14,%rdi
mov    $0xc3,%esi
xor    %eax,%eax
call   10b0 <sre_malloc@plt>
cltq
mov    %rax,0x38(%rsp)
lea    0x0(,%rbx,4),%rdx
mov    %r14,%rdi
mov    $0xc4,%esi
xor    %eax,%eax
call   10b0 <sre_malloc@plt>
movslq %eax,%r14
mov    %ebp,%eax
mov    %rax,0x30(%rsp)
test   %ebx,%ebx
jle    14d2 <VoronoiWeights+0x342>
lea    0xcd6(%rip),%r12
xor    %ebx,%ebx
mov    0x38(%rsp),%rbp
nopl   0x0(%rax,%rax,1)
mov    $0x1b,%edx
mov    %r12,%rdi
mov    $0xc6,%esi
xor    %eax,%eax
call   10b0 <sre_malloc@plt>
cltq
mov    %rax,0x0(%rbp,%rbx,8)
add    $0x1,%rbx
cmp    %rbx,0x30(%rsp)
jne    1370 <VoronoiWeights+0x1e0>
cmpl   $0x0,0x28(%rsp)
jle    14d2 <VoronoiWeights+0x342>
xor    %ebx,%ebx
movabs $0x8000000000006001,%r15
jmp    13bf <VoronoiWeights+0x22f>
nop
add    $0x1,%rbx
cmp    0x30(%rsp),%rbx
je     14d2 <VoronoiWeights+0x342>
xorps  %xmm0,%xmm0
movups %xmm0,0xbc(%rsp)
movaps %xmm0,0xb0(%rsp)
movaps %xmm0,0xa0(%rsp)
movaps %xmm0,0x90(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm0,0x70(%rsp)
movaps %xmm0,0x60(%rsp)
cmpl   $0x0,0x18(%rsp)
jle    1460 <VoronoiWeights+0x2d0>
xor    %r12d,%r12d
jmp    141f <VoronoiWeights+0x28f>
movzbl %cl,%ecx
bt     %rcx,%r15
jae    1430 <VoronoiWeights+0x2a0>
movl   $0x1,0xc8(%rsp)
add    $0x1,%r12
cmp    %r12,0x8(%rsp)
je     1460 <VoronoiWeights+0x2d0>
mov    0x0(%r13,%r12,8),%rax
movzbl (%rax,%rbx,1),%eax
lea    -0x20(%rax),%ecx
cmp    $0x3f,%cl
jbe    1400 <VoronoiWeights+0x270>
cmp    $0x7e,%al
je     1409 <VoronoiWeights+0x279>
movsbl %al,%ebp
mov    %ebp,%edi
call   1080 <isupper@plt>
xor    %ecx,%ecx
test   %eax,%eax
setne  %cl
shl    $0x5,%ecx
lea    (%rcx,%rbp,1),%eax
add    $0xffffff9f,%eax
cmp    $0x19,%eax
ja     1414 <VoronoiWeights+0x284>
mov    %eax,%eax
movl   $0x1,0x60(%rsp,%rax,4)
jmp    1414 <VoronoiWeights+0x284>
nop
movl   $0x0,(%r14,%rbx,4)
xor    %eax,%eax
xor    %ecx,%ecx
mov    0x38(%rsp),%rdi
jmp    148a <VoronoiWeights+0x2fa>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%rcx
cmp    $0x1a,%rcx
je     14b0 <VoronoiWeights+0x320>
cmpl   $0x0,0x60(%rsp,%rcx,4)
je     1480 <VoronoiWeights+0x2f0>
mov    (%rdi,%rbx,8),%rdx
cltq
lea    0x41(%rcx),%esi
mov    %sil,(%rdx,%rax,1)
mov    (%r14,%rbx,4),%eax
add    $0x1,%eax
mov    %eax,(%r14,%rbx,4)
jmp    1480 <VoronoiWeights+0x2f0>
nopl   0x0(%rax,%rax,1)
cmpl   $0x0,0xc8(%rsp)
je     13b0 <VoronoiWeights+0x220>
mov    (%rdi,%rbx,8),%rcx
cltq
movb   $0x20,(%rcx,%rax,1)
addl   $0x1,(%r14,%rbx,4)
jmp    13b0 <VoronoiWeights+0x220>
mov    0x28(%rsp),%rax
add    $0x1,%eax
movslq %eax,%rdx
lea    0xb53(%rip),%rdi
mov    $0x109,%esi
xor    %eax,%eax
call   10b0 <sre_malloc@plt>
mov    %eax,%ebp
xorps  %xmm0,%xmm0
mov    0x50(%rsp),%rdi
mov    0x18(%rsp),%ebx
mov    %ebx,%esi
mov    $0x1,%al
call   10a0 <FSet@plt>
movslq %ebp,%r12
test   %ebx,%ebx
jle    1769 <VoronoiWeights+0x5d9>
imul   $0x32,%ebx,%eax
cmp    $0x2,%eax
mov    $0x1,%ecx
cmovge %eax,%ecx
mov    %ecx,0x48(%rsp)
movl   $0x2a,0x14(%rsp)
xor    %eax,%eax
mov    0x30(%rsp),%rcx
jmp    1578 <VoronoiWeights+0x3e8>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ebx,%eax
mov    %ebx,0x14(%rsp)
movslq 0x14(%rsp),%rax
mov    0x50(%rsp),%rdi
movss  (%rdi,%rax,4),%xmm0
addss  0xaa3(%rip),%xmm0
movss  %xmm0,(%rdi,%rax,4)
mov    0x4c(%rsp),%eax
add    $0x1,%eax
cmp    0x48(%rsp),%eax
mov    0x30(%rsp),%rcx
je     16b2 <VoronoiWeights+0x522>
cmpl   $0x0,0x28(%rsp)
mov    %eax,0x4c(%rsp)
jle    15e0 <VoronoiWeights+0x450>
xor    %ebx,%ebx
jmp    15c1 <VoronoiWeights+0x431>
nopw   0x0(%rax,%rax,1)
mov    0x38(%rsp),%rax
mov    (%rax,%rbx,8),%r15
xor    %eax,%eax
call   1090 <sre_random@plt>
movslq (%r14,%rbx,4),%rcx
cltq
imul   %rcx,%rax
mov    0x30(%rsp),%rcx
movzbl (%r15,%rax,1),%eax
mov    %al,(%r12,%rbx,1)
add    $0x1,%rbx
cmp    %rbx,%rcx
je     15d0 <VoronoiWeights+0x440>
cmpl   $0x0,(%r14,%rbx,4)
jne    1590 <VoronoiWeights+0x400>
mov    $0x20,%al
jmp    15b4 <VoronoiWeights+0x424>
nopl   0x0(%rax)
mov    0x28(%rsp),%rax
jmp    15e2 <VoronoiWeights+0x452>
nopw   0x0(%rax,%rax,1)
xor    %eax,%eax
mov    %eax,%eax
movb   $0x0,(%r12,%rax,1)
xor    %eax,%eax
call   1090 <sre_random@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  %xmm0,0x1c(%rsp)
xor    %ebx,%ebx
movss  0x9f9(%rip),%xmm0
movss  %xmm0,0x24(%rsp)
jmp    164b <VoronoiWeights+0x4bb>
nop
xor    %eax,%eax
movss  %xmm1,0x20(%rsp)
call   1090 <sre_random@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  %xmm0,0x1c(%rsp)
movss  0x20(%rsp),%xmm0
movss  %xmm0,0x24(%rsp)
mov    %ebx,%eax
mov    %ebx,0x14(%rsp)
add    $0x1,%rbx
cmp    %rbx,0x8(%rsp)
je     1546 <VoronoiWeights+0x3b6>
mov    0x0(%r13,%rbx,8),%rdi
mov    %r12,%rsi
xor    %eax,%eax
call   1040 <simple_distance@plt>
xorps  %xmm1,%xmm1
cvtsi2ss %eax,%xmm1
mov    0x40(%rsp),%rax
movss  (%rax,%rbx,4),%xmm0
ucomiss %xmm1,%xmm0
ja     1540 <VoronoiWeights+0x3b0>
movss  0x24(%rsp),%xmm0
ucomiss %xmm1,%xmm0
ja     1610 <VoronoiWeights+0x480>
jne    163c <VoronoiWeights+0x4ac>
jp     163c <VoronoiWeights+0x4ac>
movss  %xmm1,0x20(%rsp)
xor    %eax,%eax
call   1090 <sre_random@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
ucomiss 0x1c(%rsp),%xmm0
jbe    163c <VoronoiWeights+0x4ac>
movss  0x20(%rsp),%xmm1
movss  %xmm1,0x24(%rsp)
movss  %xmm0,0x1c(%rsp)
jmp    1636 <VoronoiWeights+0x4a6>
cmpl   $0x0,0x18(%rsp)
jle    1769 <VoronoiWeights+0x5d9>
cmpl   $0x4,0x8(%rsp)
jae    16c8 <VoronoiWeights+0x538>
xor    %eax,%eax
jmp    173d <VoronoiWeights+0x5ad>
mov    0x8(%rsp),%rax
and    $0xfffffffc,%eax
lea    -0x4(%rax),%rdx
mov    %rdx,%rcx
shr    $0x2,%rcx
add    $0x1,%rcx
test   %rdx,%rdx
je     17a6 <VoronoiWeights+0x616>
mov    %rcx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %edx,%edx
movaps 0x918(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
movups (%rdi,%rdx,4),%xmm1
movups 0x10(%rdi,%rdx,4),%xmm2
divps  %xmm0,%xmm1
movups %xmm1,(%rdi,%rdx,4)
divps  %xmm0,%xmm2
movups %xmm2,0x10(%rdi,%rdx,4)
add    $0x8,%rdx
add    $0xfffffffffffffffe,%rsi
jne    1700 <VoronoiWeights+0x570>
test   $0x1,%cl
je     1736 <VoronoiWeights+0x5a6>
movups (%rdi,%rdx,4),%xmm0
divps  0x8de(%rip),%xmm0
movups %xmm0,(%rdi,%rdx,4)
cmp    0x8(%rsp),%rax
je     1769 <VoronoiWeights+0x5d9>
movss  0x8c3(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
nop
movss  (%rdi,%rax,4),%xmm1
divss  %xmm0,%xmm1
movss  %xmm1,(%rdi,%rax,4)
add    $0x1,%rax
cmp    %rax,0x8(%rsp)
jne    1750 <VoronoiWeights+0x5c0>
mov    %r12,%rdi
call   1030 <free@plt>
mov    %r14,%rdi
call   1030 <free@plt>
mov    0x40(%rsp),%rdi
call   1030 <free@plt>
mov    0x38(%rsp),%rdi
mov    0x28(%rsp),%rsi
xor    %eax,%eax
call   1060 <Free2DArray@plt>
add    $0xd8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %edx,%edx
test   $0x1,%cl
jne    1727 <VoronoiWeights+0x597>
jmp    1736 <VoronoiWeights+0x5a6>

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

LLVM IR (-O2):
@.str = [23 x i8] c"simple_diffmx() failed\00"
@.str.1 = [176 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/vinuesa/get_phylomarkers/refs/heads/master/bin/clustal-omega-1.2.4/src/squid/weight.c\00"
define void @VoronoiWeights(i8** %0, i32 %1, i32 %2, float* %3) {
%5 = alloca float**
%6 = alloca [27 x i32]
%7 = bitcast float*** %5 to i8*
%8 = bitcast [27 x i32]* %6 to i8*
%9 = icmp eq i32 %1, 1
br i1 %9, label %10, label %11
10: ; preds = %4
store float 1.000000e+00, float* %3
br label %296
11: ; preds = %4
%12 = call i32 (i8**, i32, float***, ...) bitcast (i32 (...)* @simple_diffmx to i32 (i8**, i32, float***, ...)*)(i8** %0, i32 %1, float*** %5)
%13 = icmp eq i32 %12, 0
br i1 %13, label %14, label %16
14: ; preds = %11
%15 = call i32 (i8*, ...) bitcast (i32 (...)* @Die to i32 (i8*, ...)*)(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0))
br label %16
16: ; preds = %14, %11
%17 = sext i32 %1 to i64
%18 = shl nsw i64 %17, 2
%19 = call i32 (i8*, i32, i64, ...) bitcast (i32 (...)* @sre_malloc to i32 (i8*, i32, i64, ...)*)(i8* getelementptr inbounds ([176 x i8], [176 x i8]* @.str.1, i64 0, i64 0), i32 181, i64 %18)
%20 = sext i32 %19 to i64
%21 = inttoptr i64 %20 to float*
%22 = icmp sgt i32 %1, 0
br i1 %22, label %23, label %77
23: ; preds = %16
%24 = zext i32 %1 to i64
%25 = and i64 %24, 1
%26 = icmp eq i32 %1, 1
%27 = and i64 %24, 4294967294
%28 = icmp eq i64 %25, 0
br label %29
29: ; preds = %71, %23
%30 = phi i64 [ 0, %23 ], [ %75, %71 ]
%31 = load float**, float*** %5
%32 = getelementptr inbounds float*, float** %31, i64 %30
br i1 %26, label %59, label %33
33: ; preds = %29, %54
%34 = phi i64 [ %56, %54 ], [ 0, %29 ]
%35 = phi float [ %55, %54 ], [ 1.000000e+00, %29 ]
%36 = phi i64 [ %57, %54 ], [ 0, %29 ]
%37 = icmp eq i64 %34, %30
br i1 %37, label %44, label %38
38: ; preds = %33
%39 = load float*, float** %32
%40 = getelementptr inbounds float, float* %39, i64 %34
%41 = load float, float* %40
%42 = fcmp olt float %41, %35
br i1 %42, label %43, label %44
43: ; preds = %38
br label %44
44: ; preds = %38, %43, %33
%45 = phi float [ %35, %33 ], [ %41, %43 ], [ %35, %38 ]
%46 = or i64 %34, 1
%47 = icmp eq i64 %46, %30
br i1 %47, label %54, label %48
48: ; preds = %44
%49 = load float*, float** %32
%50 = getelementptr inbounds float, float* %49, i64 %46
%51 = load float, float* %50
%52 = fcmp olt float %51, %45
br i1 %52, label %53, label %54
53: ; preds = %48
br label %54
54: ; preds = %53, %48, %44
%55 = phi float [ %45, %44 ], [ %51, %53 ], [ %45, %48 ]
%56 = add nuw nsw i64 %34, 2
%57 = add i64 %36, 2
%58 = icmp eq i64 %57, %27
br i1 %58, label %59, label %33
59: ; preds = %54, %29
%60 = phi float [ undef, %29 ], [ %55, %54 ]
%61 = phi i64 [ 0, %29 ], [ %56, %54 ]
%62 = phi float [ 1.000000e+00, %29 ], [ %55, %54 ]
br i1 %28, label %71, label %63
63: ; preds = %59
%64 = icmp eq i64 %61, %30
br i1 %64, label %71, label %65
65: ; preds = %63
%66 = load float*, float** %32
%67 = getelementptr inbounds float, float* %66, i64 %61
%68 = load float, float* %67
%69 = fcmp olt float %68, %62
br i1 %69, label %70, label %71
70: ; preds = %65
br label %71
71: ; preds = %63, %65, %70, %59
%72 = phi float [ %60, %59 ], [ %62, %63 ], [ %68, %70 ], [ %62, %65 ]
%73 = fmul float %72, 5.000000e-01
%74 = getelementptr inbounds float, float* %21, i64 %30
store float %73, float* %74
%75 = add nuw nsw i64 %30, 1
%76 = icmp eq i64 %75, %24
br i1 %76, label %77, label %29
77: ; preds = %71, %16
%78 = bitcast float*** %5 to i8***
%79 = load i8**, i8*** %78
%80 = call i32 (i8**, i32, ...) bitcast (i32 (...)* @Free2DArray to i32 (i8**, i32, ...)*)(i8** %79, i32 %1)
%81 = sext i32 %2 to i64
%82 = shl nsw i64 %81, 3
%83 = call i32 (i8*, i32, i64, ...) bitcast (i32 (...)* @sre_malloc to i32 (i8*, i32, i64, ...)*)(i8* getelementptr inbounds ([176 x i8], [176 x i8]* @.str.1, i64 0, i64 0), i32 195, i64 %82)
%84 = sext i32 %83 to i64
%85 = inttoptr i64 %84 to i8**
%86 = shl nsw i64 %81, 2
%87 = call i32 (i8*, i32, i64, ...) bitcast (i32 (...)* @sre_malloc to i32 (i8*, i32, i64, ...)*)(i8* getelementptr inbounds ([176 x i8], [176 x i8]* @.str.1, i64 0, i64 0), i32 196, i64 %86)
%88 = sext i32 %87 to i64
%89 = inttoptr i64 %88 to i32*
%90 = icmp sgt i32 %2, 0
br i1 %90, label %91, label %161
91: ; preds = %77
%92 = zext i32 %2 to i64
br label %98
93: ; preds = %98
br i1 %90, label %94, label %161
94: ; preds = %93
%95 = getelementptr inbounds [27 x i32], [27 x i32]* %6, i64 0, i64 26
%96 = zext i32 %2 to i64
%97 = zext i32 %1 to i64
br label %106
98: ; preds = %91, %98
%99 = phi i64 [ 0, %91 ], [ %104, %98 ]
%100 = call i32 (i8*, i32, i64, ...) bitcast (i32 (...)* @sre_malloc to i32 (i8*, i32, i64, ...)*)(i8* getelementptr inbounds ([176 x i8], [176 x i8]* @.str.1, i64 0, i64 0), i32 198, i64 27)
%101 = sext i32 %100 to i64
%102 = inttoptr i64 %101 to i8*
%103 = getelementptr inbounds i8*, i8** %85, i64 %99
store i8* %102, i8** %103
%104 = add nuw nsw i64 %99, 1
%105 = icmp eq i64 %104, %92
br i1 %105, label %93, label %98
106: ; preds = %94, %158
%107 = phi i64 [ 0, %94 ], [ %159, %158 ]
br i1 %22, label %108, label %128
108: ; preds = %106, %125
%109 = phi i64 [ %126, %125 ], [ 0, %106 ]
%110 = getelementptr inbounds i8*, i8** %0, i64 %109
%111 = load i8*, i8** %110
%112 = getelementptr inbounds i8, i8* %111, i64 %107
%113 = load i8, i8* %112
%114 = sext i8 %113 to i32
switch i8 %113, label %115 [
i8 32, label %124
i8 46, label %124
i8 95, label %124
i8 45, label %124
i8 126, label %124
]
115: ; preds = %108
%116 = call i32 @isupper(i32 %114)
%117 = icmp eq i32 %116, 0
%118 = select i1 %117, i32 -97, i32 -65
%119 = add nsw i32 %118, %114
%120 = icmp ult i32 %119, 26
br i1 %120, label %121, label %125
121: ; preds = %115
%122 = zext i32 %119 to i64
%123 = getelementptr inbounds [27 x i32], [27 x i32]* %6, i64 0, i64 %122
store i32 1, i32* %123
br label %125
124: ; preds = %108, %108, %108, %108, %108
store i32 1, i32* %95
br label %125
125: ; preds = %124, %121, %115
%126 = add nuw nsw i64 %109, 1
%127 = icmp eq i64 %126, %97
br i1 %127, label %128, label %108
128: ; preds = %125, %106
%129 = getelementptr inbounds i32, i32* %89, i64 %107
store i32 0, i32* %129
%130 = getelementptr inbounds i8*, i8** %85, i64 %107
br label %131
131: ; preds = %128, %145
%132 = phi i32 [ 0, %128 ], [ %146, %145 ]
%133 = phi i64 [ 0, %128 ], [ %147, %145 ]
%134 = getelementptr inbounds [27 x i32], [27 x i32]* %6, i64 0, i64 %133
%135 = load i32, i32* %134
%136 = icmp eq i32 %135, 0
br i1 %136, label %145, label %137
137: ; preds = %131
%138 = trunc i64 %133 to i8
%139 = add nuw nsw i8 %138, 65
%140 = load i8*, i8** %130
%141 = sext i32 %132 to i64
%142 = getelementptr inbounds i8, i8* %140, i64 %141
store i8 %139, i8* %142
%143 = load i32, i32* %129
%144 = add nsw i32 %143, 1
store i32 %144, i32* %129
br label %145
145: ; preds = %131, %137
%146 = phi i32 [ %132, %131 ], [ %144, %137 ]
%147 = add nuw nsw i64 %133, 1
%148 = icmp eq i64 %147, 26
br i1 %148, label %149, label %131
149: ; preds = %145
%150 = load i32, i32* %95
%151 = icmp eq i32 %150, 0
br i1 %151, label %158, label %152
152: ; preds = %149
%153 = load i8*, i8** %130
%154 = sext i32 %146 to i64
%155 = getelementptr inbounds i8, i8* %153, i64 %154
store i8 32, i8* %155
%156 = load i32, i32* %129
%157 = add nsw i32 %156, 1
store i32 %157, i32* %129
br label %158
158: ; preds = %149, %152
%159 = add nuw nsw i64 %107, 1
%160 = icmp eq i64 %159, %96
br i1 %160, label %161, label %106
161: ; preds = %158, %77, %93
%162 = add nsw i32 %2, 1
%163 = sext i32 %162 to i64
%164 = call i32 (i8*, i32, i64, ...) bitcast (i32 (...)* @sre_malloc to i32 (i8*, i32, i64, ...)*)(i8* getelementptr inbounds ([176 x i8], [176 x i8]* @.str.1, i64 0, i64 0), i32 265, i64 %163)
%165 = sext i32 %164 to i64
%166 = inttoptr i64 %165 to i8*
%167 = call i32 (float*, i32, double, ...) bitcast (i32 (...)* @FSet to i32 (float*, i32, double, ...)*)(float* %3, i32 %1, double 0.000000e+00)
br i1 %22, label %168, label %292
168: ; preds = %161
%169 = mul i32 %1, 50
%170 = call i32 @llvm.smax.i32(i32 %169, i32 1)
%171 = zext i32 %2 to i64
%172 = zext i32 %1 to i64
br label %173
173: ; preds = %168, %277
%174 = phi i32 [ 42, %168 ], [ %278, %277 ]
%175 = phi i32 [ 0, %168 ], [ %283, %277 ]
br i1 %90, label %219, label %238
176: ; preds = %277
br i1 %22, label %177, label %292
177: ; preds = %176
%178 = zext i32 %1 to i64
%179 = icmp ult i32 %1, 4
br i1 %179, label %217, label %180
180: ; preds = %177
%181 = and i64 %172, 4294967292
%182 = add nsw i64 %181, -4
%183 = lshr exact i64 %182, 2
%184 = add nuw nsw i64 %183, 1
%185 = and i64 %184, 1
%186 = icmp eq i64 %182, 0
br i1 %186, label %206, label %187
187: ; preds = %180
%188 = and i64 %184, 9223372036854775806
br label %189
189: ; preds = %189, %187
%190 = phi i64 [ 0, %187 ], [ %203, %189 ]
%191 = phi i64 [ 0, %187 ], [ %204, %189 ]
%192 = getelementptr inbounds float, float* %3, i64 %190
%193 = bitcast float* %192 to <4 x float>*
%194 = load <4 x float>, <4 x float>* %193
%195 = fdiv <4 x float> %194, <float 5.000000e+01, float 5.000000e+01, float 5.000000e+01, float 5.000000e+01>
%196 = bitcast float* %192 to <4 x float>*
store <4 x float> %195, <4 x float>* %196
%197 = or i64 %190, 4
%198 = getelementptr inbounds float, float* %3, i64 %197
%199 = bitcast float* %198 to <4 x float>*
%200 = load <4 x float>, <4 x float>* %199
%201 = fdiv <4 x float> %200, <float 5.000000e+01, float 5.000000e+01, float 5.000000e+01, float 5.000000e+01>
%202 = bitcast float* %198 to <4 x float>*
store <4 x float> %201, <4 x float>* %202
%203 = add nuw i64 %190, 8
%204 = add i64 %191, 2
%205 = icmp eq i64 %204, %188
br i1 %205, label %206, label %189
206: ; preds = %189, %180
%207 = phi i64 [ 0, %180 ], [ %203, %189 ]
%208 = icmp eq i64 %185, 0
br i1 %208, label %215, label %209
209: ; preds = %206
%210 = getelementptr inbounds float, float* %3, i64 %207
%211 = bitcast float* %210 to <4 x float>*
%212 = load <4 x float>, <4 x float>* %211
%213 = fdiv <4 x float> %212, <float 5.000000e+01, float 5.000000e+01, float 5.000000e+01, float 5.000000e+01>
%214 = bitcast float* %210 to <4 x float>*
store <4 x float> %213, <4 x float>* %214
br label %215
215: ; preds = %206, %209
%216 = icmp eq i64 %181, %172
br i1 %216, label %292, label %217
217: ; preds = %177, %215
%218 = phi i64 [ 0, %177 ], [ %181, %215 ]
br label %285
219: ; preds = %173, %233
%220 = phi i64 [ %236, %233 ], [ 0, %173 ]
%221 = getelementptr inbounds i32, i32* %89, i64 %220
%222 = load i32, i32* %221
%223 = icmp eq i32 %222, 0
br i1 %223, label %233, label %224
224: ; preds = %219
%225 = getelementptr inbounds i8*, i8** %85, i64 %220
%226 = load i8*, i8** %225
%227 = call i32 (...) @sre_random()
%228 = load i32, i32* %221
%229 = mul nsw i32 %228, %227
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds i8, i8* %226, i64 %230
%232 = load i8, i8* %231
br label %233
233: ; preds = %219, %224
%234 = phi i8 [ %232, %224 ], [ 32, %219 ]
%235 = getelementptr inbounds i8, i8* %166, i64 %220
store i8 %234, i8* %235
%236 = add nuw nsw i64 %220, 1
%237 = icmp eq i64 %236, %171
br i1 %237, label %238, label %219
238: ; preds = %233, %173
%239 = phi i32 [ 0, %173 ], [ %2, %233 ]
%240 = zext i32 %239 to i64
%241 = getelementptr inbounds i8, i8* %166, i64 %240
store i8 0, i8* %241
%242 = call i32 (...) @sre_random()
%243 = sitofp i32 %242 to float
br label %244
244: ; preds = %238, %269
%245 = phi i64 [ 0, %238 ], [ %273, %269 ]
%246 = phi i32 [ %174, %238 ], [ %272, %269 ]
%247 = phi float [ %243, %238 ], [ %271, %269 ]
%248 = phi float [ 1.000000e+00, %238 ], [ %270, %269 ]
%249 = getelementptr inbounds i8*, i8** %0, i64 %245
%250 = load i8*, i8** %249
%251 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @simple_distance to i32 (i8*, i8*, ...)*)(i8* %250, i8* %166)
%252 = sitofp i32 %251 to float
%253 = getelementptr inbounds float, float* %21, i64 %245
%254 = load float, float* %253
%255 = fcmp ogt float %254, %252
%256 = trunc i64 %245 to i32
br i1 %255, label %275, label %257
257: ; preds = %244
%258 = fcmp ogt float %248, %252
br i1 %258, label %259, label %262
259: ; preds = %257
%260 = call i32 (...) @sre_random()
%261 = sitofp i32 %260 to float
br label %269
262: ; preds = %257
%263 = fcmp oeq float %248, %252
br i1 %263, label %264, label %269
264: ; preds = %262
%265 = call i32 (...) @sre_random()
%266 = sitofp i32 %265 to float
%267 = fcmp olt float %247, %266
br i1 %267, label %268, label %269
268: ; preds = %264
br label %269
269: ; preds = %259, %264, %268, %262
%270 = phi float [ %252, %259 ], [ %252, %268 ], [ %248, %264 ], [ %248, %262 ]
%271 = phi float [ %261, %259 ], [ %266, %268 ], [ %247, %264 ], [ %247, %262 ]
%272 = phi i32 [ %256, %259 ], [ %256, %268 ], [ %246, %264 ], [ %246, %262 ]
%273 = add nuw nsw i64 %245, 1
%274 = icmp eq i64 %273, %172
br i1 %274, label %277, label %244
275: ; preds = %244
%276 = trunc i64 %245 to i32
br label %277
277: ; preds = %269, %275
%278 = phi i32 [ %276, %275 ], [ %272, %269 ]
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds float, float* %3, i64 %279
%281 = load float, float* %280
%282 = fadd float %281, 1.000000e+00
store float %282, float* %280
%283 = add nuw nsw i32 %175, 1
%284 = icmp eq i32 %283, %170
br i1 %284, label %176, label %173
285: ; preds = %217, %285
%286 = phi i64 [ %290, %285 ], [ %218, %217 ]
%287 = getelementptr inbounds float, float* %3, i64 %286
%288 = load float, float* %287
%289 = fdiv float %288, 5.000000e+01
store float %289, float* %287
%290 = add nuw nsw i64 %286, 1
%291 = icmp eq i64 %290, %178
br i1 %291, label %292, label %285
292: ; preds = %285, %215, %161, %176
%293 = inttoptr i64 %88 to i8*
%294 = inttoptr i64 %20 to i8*
%295 = call i32 (i8**, i32, ...) bitcast (i32 (...)* @Free2DArray to i32 (i8**, i32, ...)*)(i8** %85, i32 %2)
br label %296
296: ; preds = %292, %10
ret void
}