#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 */
int /*<<< orphan*/ free_vector(float *, int, int);
float log(float);
float *vector(int, int);
void cntab2(int **nn, int ni, int nj, float *h, float *hx, float *hy,
            float *hygx, float *hxgy, float *uygx, float *uxgy, float *uxy) {
  int i, j;
  float sum = 0.0, p, *sumi, *sumj;
  sumi = vector(1, ni);
  sumj = vector(1, nj);
  for (i = 1; i <= ni; i++) {
    sumi[i] = 0.0;
    for (j = 1; j <= nj; j++) {
      sumi[i] += nn[i][j];
      sum += nn[i][j];
    }
  }
  for (j = 1; j <= nj; j++) {
    sumj[j] = 0.0;
    for (i = 1; i <= ni; i++)
      sumj[j] += nn[i][j];
  }
  *hx = 0.0;
  for (i = 1; i <= ni; i++)
    if (sumi[i]) {
      p = sumi[i] / sum;
      *hx -= p * log(p);
    }
  *hy = 0.0;
  for (j = 1; j <= nj; j++)
    if (sumj[j]) {
      p = sumj[j] / sum;
      *hy -= p * log(p);
    }
  *h = 0.0;
  for (i = 1; i <= ni; i++)
    for (j = 1; j <= nj; j++)
      if (nn[i][j]) {
        p = nn[i][j] / sum;
        *h -= p * log(p);
      }
  *hygx = (*h) - (*hx);
  *hxgy = (*h) - (*hy);
  *uygx = (*hy - *hygx) / (*hy + 1.0e-30);
  *uxgy = (*hx - *hxgy) / (*hx + 1.0e-30);
  *uxy = 2.0 * (*hx + *hy - *h) / (*hx + *hy + 1.0e-30);
  free_vector(sumj, 1, nj);
  free_vector(sumi, 1, ni);
}


x86 assembly (clang, -O0):
<cntab2>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
mov    -0xc(%rbp),%esi
mov    $0x1,%edi
call   1040 <vector@plt>
mov    %rax,-0x40(%rbp)
mov    -0x10(%rbp),%esi
mov    $0x1,%edi
call   1040 <vector@plt>
mov    %rax,-0x48(%rbp)
movl   $0x1,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     1229 <cntab2+0xf9>
mov    -0x40(%rbp),%rax
movslq -0x2c(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movl   $0x1,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     1216 <cntab2+0xe6>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x30(%rbp),%rcx
cvtsi2ssl (%rax,%rcx,4),%xmm0
mov    -0x40(%rbp),%rax
movslq -0x2c(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x30(%rbp),%rcx
cvtsi2ssl (%rax,%rcx,4),%xmm0
addss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    11b6 <cntab2+0x86>
jmp    121b <cntab2+0xeb>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1193 <cntab2+0x63>
movl   $0x1,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     12a7 <cntab2+0x177>
mov    -0x48(%rbp),%rax
movslq -0x30(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movl   $0x1,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     1294 <cntab2+0x164>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x30(%rbp),%rcx
cvtsi2ssl (%rax,%rcx,4),%xmm0
mov    -0x48(%rbp),%rax
movslq -0x30(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1253 <cntab2+0x123>
jmp    1299 <cntab2+0x169>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1230 <cntab2+0x100>
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax)
movl   $0x1,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     1351 <cntab2+0x221>
mov    -0x40(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    12e9 <cntab2+0x1b9>
jp     12e9 <cntab2+0x1b9>
jmp    133e <cntab2+0x20e>
mov    -0x40(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
divss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x38(%rbp),%xmm0
call   1050 <log@plt>
movaps %xmm0,%xmm2
movss  -0x4c(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm1
movd   %xmm0,%ecx
xor    $0x80000000,%ecx
movd   %ecx,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,(%rax)
jmp    1343 <cntab2+0x213>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    12b9 <cntab2+0x189>
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax)
movl   $0x1,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     13fb <cntab2+0x2cb>
mov    -0x48(%rbp),%rax
movslq -0x30(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    1393 <cntab2+0x263>
jp     1393 <cntab2+0x263>
jmp    13e8 <cntab2+0x2b8>
mov    -0x48(%rbp),%rax
movslq -0x30(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
divss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x38(%rbp),%xmm0
call   1050 <log@plt>
movaps %xmm0,%xmm2
movss  -0x50(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  (%rax),%xmm1
movd   %xmm0,%ecx
xor    $0x80000000,%ecx
movd   %ecx,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,(%rax)
jmp    13ed <cntab2+0x2bd>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1363 <cntab2+0x233>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax)
movl   $0x1,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     14c9 <cntab2+0x399>
movl   $0x1,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     14b6 <cntab2+0x386>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x30(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     14a3 <cntab2+0x373>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x30(%rbp),%rcx
cvtsi2ssl (%rax,%rcx,4),%xmm0
divss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x38(%rbp),%xmm0
call   1050 <log@plt>
movaps %xmm0,%xmm2
movss  -0x54(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movss  (%rax),%xmm1
movd   %xmm0,%ecx
xor    $0x80000000,%ecx
movd   %ecx,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,(%rax)
jmp    14a8 <cntab2+0x378>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1420 <cntab2+0x2f0>
jmp    14bb <cntab2+0x38b>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    140d <cntab2+0x2dd>
mov    -0x18(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x20(%rbp),%rax
subss  (%rax),%xmm0
mov    0x10(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x28(%rbp),%rax
subss  (%rax),%xmm0
mov    0x18(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movss  (%rax),%xmm0
mov    0x10(%rbp),%rax
subss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x28(%rbp),%rax
movss  (%rax),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xadf(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    0x20(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm0
mov    0x18(%rbp),%rax
subss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xaa3(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    0x28(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x28(%rbp),%rax
addss  (%rax),%xmm0
mov    -0x18(%rbp),%rax
subss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xa73(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm1
mov    -0x28(%rbp),%rax
addss  (%rax),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xa4b(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    0x30(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x48(%rbp),%rdi
mov    -0x10(%rbp),%edx
mov    $0x1,%esi
call   1030 <free_vector@plt>
mov    -0x40(%rbp),%rdi
mov    -0xc(%rbp),%edx
mov    $0x1,%esi
call   1030 <free_vector@plt>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cntab2>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    %r9,0x28(%rsp)
mov    %r8,0x20(%rsp)
mov    %rcx,%rbx
mov    %edx,%r12d
mov    %esi,%r15d
mov    %rdi,%r13
mov    0xc0(%rsp),%rax
mov    %rax,0x58(%rsp)
mov    0xb8(%rsp),%rax
mov    %rax,0x50(%rsp)
mov    0xb0(%rsp),%rax
mov    %rax,0x40(%rsp)
mov    0xa8(%rsp),%rax
mov    %rax,0x48(%rsp)
mov    0xa0(%rsp),%rax
mov    %rax,0x38(%rsp)
mov    $0x1,%edi
call   1040 <vector@plt>
mov    %rax,0x10(%rsp)
mov    $0x1,%edi
mov    %r12d,%esi
call   1040 <vector@plt>
mov    %rax,0x18(%rsp)
test   %r15d,%r15d
jle    12ce <cntab2+0x19e>
lea    0x1(%r12),%r8d
lea    0x1(%r15),%ecx
lea    -0x1(%r8),%rdx
add    $0xfffffffffffffffe,%r8
mov    %edx,%esi
and    $0x3,%esi
and    $0xfffffffffffffffc,%rdx
xorps  %xmm3,%xmm3
mov    $0x1,%edi
mov    0x10(%rsp),%r10
jmp    1203 <cntab2+0xd3>
nopl   0x0(%rax,%rax,1)
movss  %xmm0,(%r10,%rdi,4)
add    $0x1,%rdi
cmp    %rcx,%rdi
je     12d6 <cntab2+0x1a6>
movl   $0x0,(%r10,%rdi,4)
test   %r12d,%r12d
jle    11f6 <cntab2+0xc6>
mov    0x0(%r13,%rdi,8),%rbp
xorps  %xmm0,%xmm0
cmp    $0x3,%r8
jae    1230 <cntab2+0x100>
mov    $0x1,%eax
test   %rsi,%rsi
jne    129a <cntab2+0x16a>
jmp    11f0 <cntab2+0xc0>
nopw   0x0(%rax,%rax,1)
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
xorps  %xmm1,%xmm1
cvtsi2ssl 0x4(%rbp,%rax,4),%xmm1
xorps  %xmm2,%xmm2
cvtsi2ssl 0x8(%rbp,%rax,4),%xmm2
addss  %xmm1,%xmm0
addss  %xmm1,%xmm3
addss  %xmm2,%xmm0
addss  %xmm2,%xmm3
xorps  %xmm1,%xmm1
cvtsi2ssl 0xc(%rbp,%rax,4),%xmm1
addss  %xmm1,%xmm0
addss  %xmm1,%xmm3
xorps  %xmm1,%xmm1
cvtsi2ssl 0x10(%rbp,%rax,4),%xmm1
addss  %xmm1,%xmm0
addss  %xmm1,%xmm3
add    $0x4,%rax
cmp    %rax,%rdx
jne    1240 <cntab2+0x110>
add    $0x1,%rax
test   %rsi,%rsi
je     11f0 <cntab2+0xc0>
lea    0x0(,%rax,4),%rax
add    %rbp,%rax
xor    %ebp,%ebp
nopw   0x0(%rax,%rax,1)
xorps  %xmm1,%xmm1
cvtsi2ssl (%rax,%rbp,4),%xmm1
addss  %xmm1,%xmm0
addss  %xmm1,%xmm3
add    $0x1,%rbp
cmp    %rbp,%rsi
jne    12b0 <cntab2+0x180>
jmp    11f0 <cntab2+0xc0>
xorps  %xmm3,%xmm3
mov    0x10(%rsp),%r10
test   %r12d,%r12d
jle    13df <cntab2+0x2af>
lea    0x1(%r15),%r8d
lea    0x1(%r12),%r9d
lea    -0x1(%r8),%rdx
add    $0xfffffffffffffffe,%r8
mov    %edx,%esi
and    $0x3,%esi
and    $0xfffffffffffffffc,%rdx
mov    $0x1,%edi
jmp    1317 <cntab2+0x1e7>
mov    0x18(%rsp),%rax
movss  %xmm0,(%rax,%rdi,4)
add    $0x1,%rdi
cmp    %r9,%rdi
je     13df <cntab2+0x2af>
mov    0x18(%rsp),%rax
movl   $0x0,(%rax,%rdi,4)
test   %r15d,%r15d
jle    130a <cntab2+0x1da>
xorps  %xmm0,%xmm0
cmp    $0x3,%r8
jae    1340 <cntab2+0x210>
mov    $0x1,%ebp
test   %rsi,%rsi
jne    13aa <cntab2+0x27a>
jmp    1300 <cntab2+0x1d0>
nopl   (%rax)
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x8(%r13,%rbp,8),%rax
mov    0x10(%r13,%rbp,8),%rcx
xorps  %xmm1,%xmm1
cvtsi2ssl (%rax,%rdi,4),%xmm1
addss  %xmm0,%xmm1
xorps  %xmm2,%xmm2
cvtsi2ssl (%rcx,%rdi,4),%xmm2
addss  %xmm1,%xmm2
mov    0x18(%r13,%rbp,8),%rax
xorps  %xmm1,%xmm1
cvtsi2ssl (%rax,%rdi,4),%xmm1
mov    0x20(%r13,%rbp,8),%rax
xorps  %xmm0,%xmm0
cvtsi2ssl (%rax,%rdi,4),%xmm0
addss  %xmm2,%xmm1
addss  %xmm1,%xmm0
add    $0x4,%rbp
cmp    %rbp,%rdx
jne    1350 <cntab2+0x220>
add    $0x1,%rbp
test   %rsi,%rsi
je     1300 <cntab2+0x1d0>
lea    0x0(,%rbp,8),%rbp
add    %r13,%rbp
xor    %eax,%eax
nopw   0x0(%rax,%rax,1)
mov    0x0(%rbp,%rax,8),%rcx
xorps  %xmm1,%xmm1
cvtsi2ssl (%rcx,%rdi,4),%xmm1
addss  %xmm1,%xmm0
add    $0x1,%rax
cmp    %rax,%rsi
jne    13c0 <cntab2+0x290>
jmp    1300 <cntab2+0x1d0>
mov    0x20(%rsp),%rax
movl   $0x0,(%rax)
test   %r15d,%r15d
movss  %xmm3,0xc(%rsp)
jle    144d <cntab2+0x31d>
lea    0x1(%r15),%r14d
mov    $0x1,%ebp
jmp    1409 <cntab2+0x2d9>
add    $0x1,%rbp
cmp    %rbp,%r14
je     144d <cntab2+0x31d>
movss  (%r10,%rbp,4),%xmm0
ucomiss 0xbf2(%rip),%xmm0
jne    141a <cntab2+0x2ea>
jnp    1400 <cntab2+0x2d0>
divss  %xmm3,%xmm0
movss  %xmm0,0x8(%rsp)
call   1050 <log@plt>
movss  0xc(%rsp),%xmm3
mov    0x10(%rsp),%r10
mov    0x20(%rsp),%rax
movss  (%rax),%xmm1
mulss  0x8(%rsp),%xmm0
subss  %xmm0,%xmm1
movss  %xmm1,(%rax)
jmp    1400 <cntab2+0x2d0>
mov    0x28(%rsp),%rax
movl   $0x0,(%rax)
test   %r12d,%r12d
jle    14bc <cntab2+0x38c>
lea    0x1(%r12),%r14d
mov    $0x1,%ebp
jmp    1479 <cntab2+0x349>
nopl   0x0(%rax)
add    $0x1,%rbp
cmp    %rbp,%r14
je     14bc <cntab2+0x38c>
mov    0x18(%rsp),%rax
movss  (%rax,%rbp,4),%xmm0
ucomiss 0xb7e(%rip),%xmm0
jne    148e <cntab2+0x35e>
jnp    1470 <cntab2+0x340>
divss  %xmm3,%xmm0
movss  %xmm0,0x8(%rsp)
call   1050 <log@plt>
movss  0xc(%rsp),%xmm3
mov    0x28(%rsp),%rax
movss  (%rax),%xmm1
mulss  0x8(%rsp),%xmm0
subss  %xmm0,%xmm1
movss  %xmm1,(%rax)
jmp    1470 <cntab2+0x340>
movl   $0x0,(%rbx)
test   %r15d,%r15d
mov    %r15,0x60(%rsp)
mov    %r12,0x30(%rsp)
jle    1556 <cntab2+0x426>
lea    0x1(%r12),%ebp
add    $0x1,%r15d
mov    $0x1,%r12d
xorps  %xmm1,%xmm1
jmp    14f9 <cntab2+0x3c9>
nopl   0x0(%rax)
add    $0x1,%r12
cmp    %r15,%r12
je     1559 <cntab2+0x429>
cmpl   $0x0,0x30(%rsp)
jle    14f0 <cntab2+0x3c0>
mov    $0x1,%r14d
jmp    1519 <cntab2+0x3e9>
nopl   0x0(%rax,%rax,1)
add    $0x1,%r14
cmp    %r14,%rbp
je     14f0 <cntab2+0x3c0>
mov    0x0(%r13,%r12,8),%rax
mov    (%rax,%r14,4),%eax
test   %eax,%eax
je     1510 <cntab2+0x3e0>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
divss  %xmm3,%xmm0
movss  %xmm0,0x8(%rsp)
call   1050 <log@plt>
movss  0xc(%rsp),%xmm3
movss  (%rbx),%xmm1
mulss  0x8(%rsp),%xmm0
subss  %xmm0,%xmm1
movss  %xmm1,(%rbx)
jmp    1510 <cntab2+0x3e0>
xorps  %xmm1,%xmm1
mov    0x20(%rsp),%rcx
subss  (%rcx),%xmm1
mov    0x38(%rsp),%rsi
movss  %xmm1,(%rsi)
movss  (%rbx),%xmm0
mov    0x28(%rsp),%rax
subss  (%rax),%xmm0
mov    0x48(%rsp),%rdx
movss  %xmm0,(%rdx)
movss  (%rax),%xmm0
xorps  %xmm1,%xmm1
cvtss2sd %xmm0,%xmm1
subss  (%rsi),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xa64(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    0x40(%rsp),%rsi
movss  %xmm0,(%rsi)
movss  (%rcx),%xmm0
movaps %xmm0,%xmm1
subss  (%rdx),%xmm1
cvtss2sd %xmm0,%xmm0
cvtss2sd %xmm1,%xmm1
addsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
mov    0x50(%rsp),%rdx
movss  %xmm0,(%rdx)
movss  (%rcx),%xmm0
addss  (%rax),%xmm0
movaps %xmm0,%xmm1
subss  (%rbx),%xmm1
cvtss2sd %xmm0,%xmm0
cvtss2sd %xmm1,%xmm1
addsd  %xmm1,%xmm1
addsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
mov    0x58(%rsp),%rax
movss  %xmm0,(%rax)
mov    0x18(%rsp),%rdi
mov    $0x1,%esi
mov    0x30(%rsp),%rdx
call   1030 <free_vector@plt>
mov    0x10(%rsp),%rdi
mov    $0x1,%esi
mov    0x60(%rsp),%rdx
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <free_vector@plt>

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

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