void maiseg(eta0, SegFiltLeft, SegFiltRight) double eta0, SegFiltLeft[],
    SegFiltRight[];
{
  int flip;
  int lp1, kp1, kpp1, kpp2, ll;
  double Mmat[2 * 2 + 2][2 * 2 + 2], Pmat[2 * 2 + 2][2 * 2 + 2],
      Jmat[2 * 2 + 2][2 * 2 + 2];
  if ((2 % 2) || 2 < 2) {
    mexErrMsgTxt("D must be an even integer >= 2 in maiseg");
  }
  if (eta0 < 0 || eta0 > 1) {
    mexErrMsgTxt("eta0 out of range in maiseg");
  }
  if (eta0 > .5) {
    flip = 1;
    eta0 = 1 - eta0;
  } else
    flip = 0;
  for (kp1 = 0; kp1 < 2 * 2 + 2; kp1++)
    for (lp1 = 0; lp1 < 2 * 2 + 2; lp1++)
      Mmat[kp1][lp1] = 0.;
  for (kp1 = 0; kp1 < 2 * 2 + 2; kp1++)
    for (lp1 = 0; lp1 < 2 * 2 + 2; lp1++)
      Jmat[kp1][lp1] = 0.;
  for (kp1 = 0; kp1 < 2 * 2 + 2; kp1++)
    for (lp1 = 0; lp1 < 2 * 2 + 2; lp1++)
      Pmat[kp1][lp1] = 0.;
  for (kp1 = 1; kp1 <= (2 + 1); kp1++) {
    for (lp1 = -2; lp1 <= 0; lp1++) {
      Mmat[2 + lp1][kp1 - 1] =
          (aipow(lp1, kp1) - aipow(lp1 - 1, kp1)) / ((double)kp1);
    }
  }
  for (kp1 = 1; kp1 <= (2 + 1); kp1++)
    for (lp1 = 2; lp1 <= (2 + 1); lp1++)
      Mmat[2 + lp1][2 + kp1] =
          (aipow(lp1, kp1) - aipow(lp1 - 1, kp1)) / ((double)kp1);
  for (kp1 = 1; kp1 <= (2 + 1); kp1++) {
    Mmat[2 + 1][kp1 - 1] = (pow(eta0, kp1)) / ((double)kp1);
    Mmat[2 + 1][2 + kp1] = (1 - pow(eta0, kp1)) / ((double)kp1);
  }
  matinv(&(Mmat[0][0]), 2 * 2 + 2);
  for (kpp1 = 1; kpp1 <= (2 + 1); kpp1++) {
    for (lp1 = (-2 + 1); lp1 <= 0; lp1++) {
      Jmat[2 + lp1 - 1][kpp1 - 1] = 2 *
                                    (aipow(lp1, kpp1) - aipow(lp1 - 1, kpp1)) /
                                    (aipow(2, kpp1) * (double)kpp1);
    }
  }
  for (kpp2 = 1; kpp2 <= (2 + 1); kpp2++) {
    for (lp1 = 2; lp1 <= (2 + 2); lp1++)
      Jmat[2 + lp1 - 1][2 + kpp2] = 2 *
                                    (aipow(lp1, kpp2) - aipow(lp1 - 1, kpp2)) /
                                    (aipow(2, kpp2) * (double)kpp2);
    for (kpp1 = 1; kpp1 <= (2 + 1); kpp1++) {
      Jmat[2][kpp1 - 1] = 2 * (pow(eta0, kpp1)) / ((double)kpp1);
      Jmat[2][2 + kpp1] =
          2 * (pow(.5, kpp1) - pow(eta0, kpp1)) / ((double)kpp1);
    }
  }
  matmpy(&(Jmat[0][0]), 2 * 2 + 2, 2 * 2 + 2, &(Mmat[0][0]), 2 * 2 + 2,
         &(Pmat[0][0]));
  if (flip == 0) {
    for (ll = 0; ll < 2 * 2 + 2; ll++) {
      SegFiltLeft[ll] = Pmat[2][ll];
      SegFiltRight[ll] = Pmat[2 + 1][ll];
    }
    SegFiltLeft[2 * 2 + 2] = 0.0;
    SegFiltRight[2 * 2 + 2] = 0.0;
  } else {
    SegFiltLeft[0] = 0.0;
    SegFiltRight[0] = 0.0;
    for (ll = 0; ll < 2 * 2 + 2; ll++) {
      SegFiltRight[ll + 1] = Pmat[2][2 * 2 + 1 - ll];
      SegFiltLeft[ll + 1] = Pmat[2 + 1][2 * 2 + 1 - ll];
    }
  }
}


x86 assembly (clang, -O0):
<maiseg>:
push   %rbp
mov    %rsp,%rbp
sub    $0x3c0,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x8(%rbp),%xmm0
ja     118d <maiseg+0x3d>
movsd  -0x8(%rbp),%xmm0
movsd  0xe7d(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    119b <maiseg+0x4b>
lea    0xe84(%rip),%rdi
mov    $0x0,%al
call   1060 <mexErrMsgTxt@plt>
movsd  -0x8(%rbp),%xmm0
movsd  0xe60(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    11d0 <maiseg+0x80>
movl   $0x1,-0x1c(%rbp)
movsd  0xe3f(%rip),%xmm0
subsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    11d7 <maiseg+0x87>
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x24(%rbp)
cmpl   $0x6,-0x24(%rbp)
jge    1238 <maiseg+0xe8>
movl   $0x0,-0x20(%rbp)
cmpl   $0x6,-0x20(%rbp)
jge    1225 <maiseg+0xd5>
movslq -0x24(%rbp),%rcx
lea    -0x150(%rbp),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    11ef <maiseg+0x9f>
jmp    122a <maiseg+0xda>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11de <maiseg+0x8e>
movl   $0x0,-0x24(%rbp)
cmpl   $0x6,-0x24(%rbp)
jge    1299 <maiseg+0x149>
movl   $0x0,-0x20(%rbp)
cmpl   $0x6,-0x20(%rbp)
jge    1286 <maiseg+0x136>
movslq -0x24(%rbp),%rcx
lea    -0x390(%rbp),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1250 <maiseg+0x100>
jmp    128b <maiseg+0x13b>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    123f <maiseg+0xef>
movl   $0x0,-0x24(%rbp)
cmpl   $0x6,-0x24(%rbp)
jge    12fa <maiseg+0x1aa>
movl   $0x0,-0x20(%rbp)
cmpl   $0x6,-0x20(%rbp)
jge    12e7 <maiseg+0x197>
movslq -0x24(%rbp),%rcx
lea    -0x270(%rbp),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    12b1 <maiseg+0x161>
jmp    12ec <maiseg+0x19c>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    12a0 <maiseg+0x150>
movl   $0x1,-0x24(%rbp)
cmpl   $0x3,-0x24(%rbp)
jg     139c <maiseg+0x24c>
movl   $0xfffffffe,-0x20(%rbp)
cmpl   $0x0,-0x20(%rbp)
jg     1389 <maiseg+0x239>
mov    -0x20(%rbp),%edi
mov    -0x24(%rbp),%esi
mov    $0x0,%al
call   1030 <aipow@plt>
mov    %eax,-0x394(%rbp)
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    -0x24(%rbp),%esi
mov    $0x0,%al
call   1030 <aipow@plt>
mov    %eax,%ecx
mov    -0x394(%rbp),%eax
sub    %ecx,%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%eax
add    $0x2,%eax
movslq %eax,%rcx
lea    -0x150(%rbp),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1312 <maiseg+0x1c2>
jmp    138e <maiseg+0x23e>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1301 <maiseg+0x1b1>
movl   $0x1,-0x24(%rbp)
cmpl   $0x3,-0x24(%rbp)
jg     143e <maiseg+0x2ee>
movl   $0x2,-0x20(%rbp)
cmpl   $0x3,-0x20(%rbp)
jg     142b <maiseg+0x2db>
mov    -0x20(%rbp),%edi
mov    -0x24(%rbp),%esi
mov    $0x0,%al
call   1030 <aipow@plt>
mov    %eax,-0x398(%rbp)
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    -0x24(%rbp),%esi
mov    $0x0,%al
call   1030 <aipow@plt>
mov    %eax,%ecx
mov    -0x398(%rbp),%eax
sub    %ecx,%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%eax
add    $0x2,%eax
movslq %eax,%rcx
lea    -0x150(%rbp),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
mov    -0x24(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    13b4 <maiseg+0x264>
jmp    1430 <maiseg+0x2e0>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    13a3 <maiseg+0x253>
movl   $0x1,-0x24(%rbp)
cmpl   $0x3,-0x24(%rbp)
jg     14be <maiseg+0x36e>
movsd  -0x8(%rbp),%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
call   1070 <pow@plt>
cvtsi2sdl -0x24(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0xc0(%rbp,%rax,8)
ff ff
movsd  -0x8(%rbp),%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xb6e(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsi2sdl -0x24(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x24(%rbp),%eax
add    $0x2,%eax
cltq
movsd  %xmm0,-0xc0(%rbp,%rax,8)
ff ff
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1445 <maiseg+0x2f5>
lea    -0x150(%rbp),%rdi
mov    $0x6,%esi
mov    $0x0,%al
call   1040 <matinv@plt>
movl   $0x1,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jg     15a0 <maiseg+0x450>
movl   $0xffffffff,-0x20(%rbp)
cmpl   $0x0,-0x20(%rbp)
jg     158d <maiseg+0x43d>
mov    -0x20(%rbp),%edi
mov    -0x28(%rbp),%esi
mov    $0x0,%al
call   1030 <aipow@plt>
mov    %eax,-0x3a4(%rbp)
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    -0x28(%rbp),%esi
mov    $0x0,%al
call   1030 <aipow@plt>
mov    %eax,%ecx
mov    -0x3a4(%rbp),%eax
sub    %ecx,%eax
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x3a0(%rbp)
ff
mov    -0x28(%rbp),%esi
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <aipow@plt>
movsd  -0x3a0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
cvtsi2sdl -0x28(%rbp),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%eax
add    $0x2,%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    -0x390(%rbp),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    14e9 <maiseg+0x399>
jmp    1592 <maiseg+0x442>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    14d8 <maiseg+0x388>
movl   $0x1,-0x2c(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jg     1721 <maiseg+0x5d1>
movl   $0x2,-0x20(%rbp)
cmpl   $0x4,-0x20(%rbp)
jg     165c <maiseg+0x50c>
mov    -0x20(%rbp),%edi
mov    -0x2c(%rbp),%esi
mov    $0x0,%al
call   1030 <aipow@plt>
mov    %eax,-0x3b4(%rbp)
mov    -0x20(%rbp),%edi
sub    $0x1,%edi
mov    -0x2c(%rbp),%esi
mov    $0x0,%al
call   1030 <aipow@plt>
mov    %eax,%ecx
mov    -0x3b4(%rbp),%eax
sub    %ecx,%eax
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x3b0(%rbp)
ff
mov    -0x2c(%rbp),%esi
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <aipow@plt>
movsd  -0x3b0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
cvtsi2sdl -0x2c(%rbp),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%eax
add    $0x2,%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    -0x390(%rbp),%rax
imul   $0x30,%rcx,%rcx
add    %rcx,%rax
mov    -0x2c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    15b8 <maiseg+0x468>
movl   $0x1,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jg     170e <maiseg+0x5be>
movsd  -0x8(%rbp),%xmm0
cvtsi2sdl -0x28(%rbp),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x989(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x28(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x28(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x330(%rbp,%rax,8)
ff ff
cvtsi2sdl -0x28(%rbp),%xmm1
movsd  0x956(%rip),%xmm0
call   1070 <pow@plt>
movsd  %xmm0,-0x3c0(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
cvtsi2sdl -0x28(%rbp),%xmm1
call   1070 <pow@plt>
movsd  -0x3c0(%rbp),%xmm1
ff
subsd  %xmm0,%xmm1
movsd  0x92e(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x28(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x28(%rbp),%eax
add    $0x2,%eax
cltq
movsd  %xmm0,-0x330(%rbp,%rax,8)
ff ff
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1663 <maiseg+0x513>
jmp    1713 <maiseg+0x5c3>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    15a7 <maiseg+0x457>
lea    -0x390(%rbp),%rdi
lea    -0x150(%rbp),%rcx
lea    -0x270(%rbp),%r9
mov    $0x6,%r8d
mov    %r8d,%esi
mov    %r8d,%edx
mov    $0x0,%al
call   1050 <matmpy@plt>
cmpl   $0x0,-0x1c(%rbp)
jne    17c3 <maiseg+0x673>
movl   $0x0,-0x30(%rbp)
cmpl   $0x6,-0x30(%rbp)
jge    17a6 <maiseg+0x656>
movslq -0x30(%rbp),%rax
movsd  -0x210(%rbp,%rax,8),%xmm0
ff ff
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movslq -0x30(%rbp),%rax
movsd  -0x1e0(%rbp,%rax,8),%xmm0
ff ff
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    175a <maiseg+0x60a>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x30(%rax)
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x30(%rax)
jmp    1847 <maiseg+0x6f7>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
movl   $0x0,-0x30(%rbp)
cmpl   $0x6,-0x30(%rbp)
jge    1842 <maiseg+0x6f2>
mov    $0x5,%eax
sub    -0x30(%rbp),%eax
cltq
movsd  -0x210(%rbp,%rax,8),%xmm0
ff ff
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    $0x5,%eax
sub    -0x30(%rbp),%eax
cltq
movsd  -0x1e0(%rbp,%rax,8),%xmm0
ff ff
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    17e0 <maiseg+0x690>
jmp    1847 <maiseg+0x6f7>
add    $0x3c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<maiseg>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x3d0,%rsp
mov    %rsi,%r15
mov    %rdi,%r14
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
movapd %xmm0,0x30(%rsp)
ja     119f <maiseg+0x2f>
ucomisd 0xe63(%rip),%xmm0
jbe    11b3 <maiseg+0x43>
lea    0xe9a(%rip),%rdi
xor    %eax,%eax
call   1080 <mexErrMsgTxt@plt>
movapd 0x30(%rsp),%xmm0
movsd  0xe45(%rip),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,0x10(%rsp)
xorpd  %xmm1,%xmm1
movapd %xmm1,0x150(%rsp)
movapd %xmm1,0x140(%rsp)
movapd %xmm1,0x130(%rsp)
movapd %xmm1,0x120(%rsp)
movapd %xmm1,0x110(%rsp)
movapd %xmm1,0x100(%rsp)
movapd %xmm1,0xf0(%rsp)
movapd %xmm1,0xe0(%rsp)
movapd %xmm1,0xd0(%rsp)
movapd %xmm1,0xc0(%rsp)
movapd %xmm1,0xb0(%rsp)
movapd %xmm1,0xa0(%rsp)
movapd %xmm1,0x90(%rsp)
movapd %xmm1,0x80(%rsp)
movapd %xmm1,0x70(%rsp)
movapd %xmm1,0x60(%rsp)
lea    0x2c0(%rsp),%rdi
mov    $0x110,%edx
xor    %esi,%esi
call   1050 <memset@plt>
lea    0x190(%rsp),%rdi
mov    $0x120,%edx
xor    %esi,%esi
call   1050 <memset@plt>
mov    $0xfffffffe,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xfffffffd,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x50(%rsp)
mov    $0xffffffff,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xfffffffe,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x80(%rsp)
xor    %edi,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xffffffff,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0xb0(%rsp)
mov    $0xfffffffe,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xfffffffd,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
mulsd  0xcbc(%rip),%xmm0
movsd  %xmm0,0x58(%rsp)
mov    $0xffffffff,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xfffffffe,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
mulsd  0xc81(%rip),%xmm0
movsd  %xmm0,0x88(%rsp)
xor    %edi,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xffffffff,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
mulsd  0xc46(%rip),%xmm0
movsd  %xmm0,0xb8(%rsp)
mov    $0xfffffffe,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xfffffffd,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
divsd  0xc10(%rip),%xmm0
movsd  %xmm0,0x60(%rsp)
mov    $0xffffffff,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xfffffffe,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
divsd  0xbd5(%rip),%xmm0
movsd  %xmm0,0x90(%rsp)
xor    %edi,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xffffffff,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
divsd  0xb9a(%rip),%xmm0
movsd  %xmm0,0xc0(%rsp)
mov    $0x2,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0x1,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x128(%rsp)
mov    $0x3,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0x2,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x158(%rsp)
mov    $0x2,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0x1,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
mulsd  0xae8(%rip),%xmm0
movsd  %xmm0,0x130(%rsp)
mov    $0x3,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0x2,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
mulsd  0xaaa(%rip),%xmm0
movsd  %xmm0,0x160(%rsp)
mov    $0x2,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0x1,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
divsd  0xa74(%rip),%xmm0
movsd  %xmm0,0x138(%rsp)
mov    $0x3,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0x2,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  0xa36(%rip),%xmm5
divsd  %xmm5,%xmm0
movsd  %xmm0,0x168(%rsp)
movsd  0xa19(%rip),%xmm1
movapd %xmm1,%xmm3
movapd 0x30(%rsp),%xmm2
cmpltsd %xmm2,%xmm3
movapd 0x10(%rsp),%xmm0
andpd  %xmm3,%xmm0
andnpd %xmm2,%xmm3
orpd   %xmm0,%xmm3
movlpd %xmm3,0xe0(%rsp)
movsd  0x9df(%rip),%xmm2
movapd %xmm2,%xmm0
subsd  %xmm3,%xmm0
movsd  %xmm0,0xf8(%rsp)
movapd %xmm3,%xmm4
movapd %xmm3,0x20(%rsp)
mulsd  %xmm3,%xmm4
movapd %xmm4,0x10(%rsp)
movapd %xmm4,%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0xe8(%rsp)
movapd %xmm2,%xmm0
subsd  %xmm4,%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x100(%rsp)
movapd %xmm3,%xmm0
movapd %xmm5,%xmm1
call   1090 <pow@plt>
movsd  0x98f(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,0xf0(%rsp)
movapd 0x20(%rsp),%xmm0
call   1090 <pow@plt>
movsd  0x95f(%rip),%xmm1
subsd  %xmm0,%xmm1
divsd  0x963(%rip),%xmm1
movsd  %xmm1,0x108(%rsp)
lea    0x50(%rsp),%rdi
mov    $0x6,%esi
xor    %eax,%eax
call   1060 <matinv@plt>
mov    $0xffffffff,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xfffffffe,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
add    %ebx,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x2b0(%rsp)
xor    %edi,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xffffffff,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
add    %ebx,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x2e0(%rsp)
mov    $0xffffffff,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xfffffffe,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
add    %ebx,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  %xmm0,%xmm0
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x2b8(%rsp)
xor    %edi,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xffffffff,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
add    %ebx,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  %xmm0,%xmm0
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x2e8(%rsp)
mov    $0xffffffff,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xfffffffe,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
add    %ebx,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x772(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x2c0(%rsp)
xor    %edi,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebx
mov    $0xffffffff,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebx
add    %ebx,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x70d(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x2f0(%rsp)
movsd  0x6ea(%rip),%xmm0
movapd %xmm0,%xmm2
movapd 0x20(%rsp),%xmm1
subsd  %xmm1,%xmm2
addsd  %xmm1,%xmm1
movapd %xmm1,0x180(%rsp)
addsd  %xmm2,%xmm2
movsd  %xmm2,0x48(%rsp)
movapd 0x10(%rsp),%xmm1
movapd %xmm1,%xmm2
addsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm2
movapd %xmm2,0x170(%rsp)
movsd  0x6b2(%rip),%xmm2
subsd  %xmm1,%xmm2
addsd  %xmm2,%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,0x40(%rsp)
xor    %r12d,%r12d
nopl   0x0(%rax,%rax,1)
lea    0x1(%r12),%rbx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x10(%rsp)
mov    $0x2,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebp
mov    $0x1,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebp
add    %ebp,%ebp
xorps  %xmm0,%xmm0
cvtsi2sd %ebp,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x10(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x358(%rsp,%r12,8)
mov    $0x3,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebp
mov    $0x2,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebp
add    %ebp,%ebp
xorps  %xmm0,%xmm0
cvtsi2sd %ebp,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x10(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x388(%rsp,%r12,8)
mov    $0x4,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
mov    %eax,%ebp
mov    $0x3,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
sub    %eax,%ebp
add    %ebp,%ebp
xorps  %xmm0,%xmm0
cvtsi2sd %ebp,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    $0x2,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <aipow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x10(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x3b8(%rsp,%r12,8)
movaps 0x180(%rsp),%xmm0
movsd  %xmm0,0x310(%rsp)
movsd  0x55b(%rip),%xmm0
call   1040 <exp2@plt>
movsd  0x48(%rsp),%xmm0
movsd  %xmm0,0x328(%rsp)
movaps 0x170(%rsp),%xmm0
movsd  %xmm0,0x318(%rsp)
movsd  0x536(%rip),%xmm0
call   1040 <exp2@plt>
movsd  0x40(%rsp),%xmm0
movsd  %xmm0,0x330(%rsp)
movapd 0x20(%rsp),%xmm0
movsd  0x4fc(%rip),%xmm1
call   1090 <pow@plt>
addsd  %xmm0,%xmm0
divsd  0x4eb(%rip),%xmm0
movsd  %xmm0,0x320(%rsp)
movsd  0x4fa(%rip),%xmm0
call   1040 <exp2@plt>
movapd 0x20(%rsp),%xmm0
movsd  0x4c7(%rip),%xmm1
call   1090 <pow@plt>
movsd  0x4e2(%rip),%xmm1
subsd  %xmm0,%xmm1
addsd  %xmm1,%xmm1
divsd  0x4aa(%rip),%xmm1
movsd  %xmm1,0x338(%rsp)
mov    %rbx,%r12
cmp    $0x3,%rbx
jne    1980 <maiseg+0x810>
lea    0x2b0(%rsp),%rdi
lea    0x50(%rsp),%rcx
lea    0x190(%rsp),%r9
mov    $0x6,%esi
mov    $0x6,%edx
mov    $0x6,%r8d
xor    %eax,%eax
call   1070 <matmpy@plt>
movapd 0x30(%rsp),%xmm0
ucomisd 0x452(%rip),%xmm0
jbe    1c80 <maiseg+0xb10>
movq   $0x0,(%r14)
movq   $0x0,(%r15)
movsd  0x218(%rsp),%xmm0
movsd  %xmm0,0x8(%r15)
movsd  0x248(%rsp),%xmm0
movsd  %xmm0,0x8(%r14)
movsd  0x210(%rsp),%xmm0
movsd  %xmm0,0x10(%r15)
movsd  0x240(%rsp),%xmm0
movsd  %xmm0,0x10(%r14)
movsd  0x208(%rsp),%xmm0
movsd  %xmm0,0x18(%r15)
movsd  0x238(%rsp),%xmm0
movsd  %xmm0,0x18(%r14)
movsd  0x200(%rsp),%xmm0
movsd  %xmm0,0x20(%r15)
movsd  0x230(%rsp),%xmm0
movsd  %xmm0,0x20(%r14)
movsd  0x1f8(%rsp),%xmm0
movsd  %xmm0,0x28(%r15)
movsd  0x228(%rsp),%xmm0
movsd  %xmm0,0x28(%r14)
movsd  0x1f0(%rsp),%xmm0
movsd  %xmm0,0x30(%r15)
movsd  0x220(%rsp),%xmm0
mov    %r14,%r15
jmp    1d3d <maiseg+0xbcd>
movsd  0x1f0(%rsp),%xmm0
movsd  %xmm0,(%r14)
movsd  0x220(%rsp),%xmm0
movsd  %xmm0,(%r15)
movsd  0x1f8(%rsp),%xmm0
movsd  %xmm0,0x8(%r14)
movsd  0x228(%rsp),%xmm0
movsd  %xmm0,0x8(%r15)
movsd  0x200(%rsp),%xmm0
movsd  %xmm0,0x10(%r14)
movsd  0x230(%rsp),%xmm0
movsd  %xmm0,0x10(%r15)
movsd  0x208(%rsp),%xmm0
movsd  %xmm0,0x18(%r14)
movsd  0x238(%rsp),%xmm0
movsd  %xmm0,0x18(%r15)
movsd  0x210(%rsp),%xmm0
movsd  %xmm0,0x20(%r14)
movsd  0x240(%rsp),%xmm0
movsd  %xmm0,0x20(%r15)
movsd  0x218(%rsp),%xmm0
movsd  %xmm0,0x28(%r14)
movsd  0x248(%rsp),%xmm0
movsd  %xmm0,0x28(%r15)
movq   $0x0,0x30(%r14)
xorps  %xmm0,%xmm0
movsd  %xmm0,0x30(%r15)
add    $0x3d0,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

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