#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*/ getD(int, int, double *, double *);
int /*<<< orphan*/ getInts(int, int *, double *, int *, double *, double *,
                           double *, int *, int *, int *, double *, double *,
                           double *, double *);
int /*<<< orphan*/ getJ(int, double *, double *, double *);
int /*<<< orphan*/ getK(int, double *, double *, double *);
int /*<<< orphan*/ getS(int, int *, double *, int *, double *, double *,
                        double *, int *, int *, int *, double *, double *,
                        double *, double *);
int /*<<< orphan*/ getT(int, int *, double *, int *, double *, double *,
                        double *, int *, int *, int *, double *, double *,
                        double *, double *);
int /*<<< orphan*/ getV(int, int *, double *, int *, double *, double *,
                        double *, int *, int *, int *, double *, double *,
                        double *, int, int *, double *, double *, double *,
                        double *);
int gjacobi(double *, double *, int, double *, double *, double *, double *);
int /*<<< orphan*/ printf(char *, int, double, double, double, double, double);
int main() {
  int i = 0;
  int nat = 3;
  int nbf = 7;
  int nocc = 5, info;
  int iter, maxiter = 5;
  double h[49], S[49], T[49], V[49], Ints[406];
  double D[49], J[49], K[49];
  double orbe[7], orbs[49], temp[49];
  double temp1[7], temp2[7];
  double H[49];
  double energy, eone, ej, ek;
  double enuke = 8.841067;
  int atno[] = {
      8,
      1,
      1,
  };
  double x[] = {
      0.0,
      1.88971616463,
      0.0,
  };
  double y[] = {
      0.0,
      0.0,
      1.88971616463,
  };
  double z[] = {
      0.0,
      0.0,
      0.0,
  };
  double xcenter[] = {
      0.0, 0.0, 0.0, 0.0, 0.0, 1.88971616463, 0.0,
  };
  double ycenter[] = {
      0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.88971616463,
  };
  double zcenter[] = {
      0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  };
  int lpower[] = {
      0, 0, 1, 0, 0, 0, 0,
  };
  int mpower[] = {
      0, 0, 0, 1, 0, 0, 0,
  };
  int npower[] = {
      0, 0, 0, 0, 1, 0, 0,
  };
  double normc[] = {
      0.99999971621, 1.0000001911,   1.00000019021,  1.00000019021,
      1.00000019021, 0.999999946968, 0.999999946968,
  };
  int istart[] = {
      0, 3, 6, 9, 12, 15, 18,
  };
  int nprim[] = {
      3, 3, 3, 3, 3, 3, 3,
  };
  double alpha[] = {
      130.709321, 23.808866, 6.443608, 5.033151, 1.169596, 0.380389, 5.033151,
      1.169596,   0.380389,  5.033151, 1.169596, 0.380389, 5.033151, 1.169596,
      0.380389,   3.425251,  0.623914, 0.168855, 3.425251, 0.623914, 0.168855,
  };
  double coef[] = {
      0.154329, 0.535328, 0.444635, -0.099967, 0.399513, 0.700115, 0.155916,
      0.607684, 0.391957, 0.155916, 0.607684,  0.391957, 0.155916, 0.607684,
      0.391957, 0.154329, 0.535328, 0.444635,  0.154329, 0.535328, 0.444635,
  };
  double normp[] = {
      27.5511677588,  7.68181997711,  2.88241776816,  2.39491476866,
      0.801561774379, 0.345208161164, 10.7458317829,  1.73374383911,
      0.425818989418, 10.7458317829,  1.73374383911,  0.425818989418,
      10.7458317829,  1.73374383911,  0.425818989418, 1.79444186758,
      0.500326654719, 0.187735124967, 1.79444186758,  0.500326654719,
      0.187735124967,
  };
  getS(nbf, nprim, normc, istart, xcenter, ycenter, zcenter, lpower, mpower,
       npower, normp, coef, alpha, S);
  getT(nbf, nprim, normc, istart, xcenter, ycenter, zcenter, lpower, mpower,
       npower, normp, coef, alpha, T);
  getV(nbf, nprim, normc, istart, xcenter, ycenter, zcenter, lpower, mpower,
       npower, normp, coef, alpha, nat, atno, x, y, z, V);
  getInts(nbf, nprim, normc, istart, xcenter, ycenter, zcenter, lpower, mpower,
          npower, normp, coef, alpha, Ints);
  for (i = 0; i < nbf * nbf; i++)
    h[i] = T[i] + V[i];
  getD(nbf, nocc, orbs, D);
  for (i = 0; i < nbf * nbf; i++) {
    orbs[i] = h[i];
    H[i] = h[i];
    temp[i] = S[i];
  }
  info = gjacobi(H, temp, nbf, orbe, orbs, temp1, temp2);
  for (iter = 0; iter < maxiter; iter++) {
    getD(nbf, nocc, orbs, D);
    getJ(nbf, D, Ints, J);
    getK(nbf, D, Ints, K);
    for (i = 0; i < nbf * nbf; i++) {
      H[i] = h[i] + 2 * J[i] - K[i];
      temp[i] = S[i];
    };
    info = gjacobi(H, temp, nbf, orbe, orbs, temp1, temp2);
    eone = 0.;
    for (i = 0; i < nbf * nbf; i++)
      eone += h[i] * D[i];
    ej = 0.;
    for (i = 0; i < nbf * nbf; i++)
      ej += D[i] * J[i];
    ek = 0.;
    for (i = 0; i < nbf * nbf; i++)
      ek += D[i] * K[i];
    energy = enuke + 2 * eone + 2 * ej - ek;
    printf("%d %f %f %f %f %f\n", iter, energy, enuke, eone, ej, ek);
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x2208,%rsp
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
movl   $0x3,-0x34(%rbp)
movl   $0x7,-0x38(%rbp)
movl   $0x5,-0x3c(%rbp)
movl   $0x5,-0x48(%rbp)
movsd  0xe12(%rip),%xmm0
movsd  %xmm0,-0x1d78(%rbp)
ff
mov    0xe0b(%rip),%rax
mov    %rax,-0x1d84(%rbp)
mov    0xe06(%rip),%eax
mov    %eax,-0x1d7c(%rbp)
mov    0xe01(%rip),%rax
mov    %rax,-0x1da0(%rbp)
mov    0xdfb(%rip),%rax
mov    %rax,-0x1d98(%rbp)
mov    0xdf5(%rip),%rax
mov    %rax,-0x1d90(%rbp)
mov    0xdf7(%rip),%rax
mov    %rax,-0x1dc0(%rbp)
mov    0xdf1(%rip),%rax
mov    %rax,-0x1db8(%rbp)
mov    0xdeb(%rip),%rax
mov    %rax,-0x1db0(%rbp)
lea    -0x1de0(%rbp),%rdi
xor    %esi,%esi
mov    $0x18,%edx
call   1080 <memset@plt>
lea    -0x1e20(%rbp),%rdi
xor    %esi,%esi
mov    $0x38,%edx
call   1080 <memset@plt>
movsd  0xd66(%rip),%xmm0
movsd  %xmm0,-0x1df8(%rbp)
ff
lea    -0x1e60(%rbp),%rdi
xor    %esi,%esi
mov    $0x38,%edx
call   1080 <memset@plt>
movsd  0xd43(%rip),%xmm0
movsd  %xmm0,-0x1e30(%rbp)
ff
lea    -0x1ea0(%rbp),%rdi
xor    %esi,%esi
mov    $0x38,%edx
call   1080 <memset@plt>
mov    0xd81(%rip),%rax
mov    %rax,-0x1ec0(%rbp)
mov    0xd7b(%rip),%rax
mov    %rax,-0x1eb8(%rbp)
mov    0xd75(%rip),%rax
mov    %rax,-0x1eb0(%rbp)
mov    0xd70(%rip),%eax
mov    %eax,-0x1ea8(%rbp)
mov    0xd6b(%rip),%rax
mov    %rax,-0x1ee0(%rbp)
mov    0xd65(%rip),%rax
mov    %rax,-0x1ed8(%rbp)
mov    0xd5f(%rip),%rax
mov    %rax,-0x1ed0(%rbp)
mov    0xd5a(%rip),%eax
mov    %eax,-0x1ec8(%rbp)
mov    0xd55(%rip),%rax
mov    %rax,-0x1f00(%rbp)
mov    0xd4f(%rip),%rax
mov    %rax,-0x1ef8(%rbp)
mov    0xd49(%rip),%rax
mov    %rax,-0x1ef0(%rbp)
mov    0xd44(%rip),%eax
mov    %eax,-0x1ee8(%rbp)
lea    -0x1f40(%rbp),%rdi
lea    0xd38(%rip),%rsi
mov    $0x38,%edx
call   10a0 <memcpy@plt>
mov    0xd67(%rip),%rax
mov    %rax,-0x1f60(%rbp)
mov    0xd61(%rip),%rax
mov    %rax,-0x1f58(%rbp)
mov    0xd5b(%rip),%rax
mov    %rax,-0x1f50(%rbp)
mov    0xd56(%rip),%eax
mov    %eax,-0x1f48(%rbp)
mov    0xd51(%rip),%rax
mov    %rax,-0x1f80(%rbp)
mov    0xd4b(%rip),%rax
mov    %rax,-0x1f78(%rbp)
mov    0xd45(%rip),%rax
mov    %rax,-0x1f70(%rbp)
mov    0xd40(%rip),%eax
mov    %eax,-0x1f68(%rbp)
lea    -0x2030(%rbp),%rdi
lea    0xd34(%rip),%rsi
mov    $0xa8,%edx
call   10a0 <memcpy@plt>
lea    -0x20e0(%rbp),%rdi
lea    0xdcc(%rip),%rsi
mov    $0xa8,%edx
call   10a0 <memcpy@plt>
lea    -0x2190(%rbp),%rdi
lea    0xe64(%rip),%rsi
mov    $0xa8,%edx
call   10a0 <memcpy@plt>
mov    -0x38(%rbp),%edi
lea    -0x1f80(%rbp),%rsi
lea    -0x1f40(%rbp),%rdx
lea    -0x1f60(%rbp),%rcx
lea    -0x1e20(%rbp),%r8
lea    -0x1e60(%rbp),%r9
lea    -0x1ea0(%rbp),%r13
lea    -0x1ec0(%rbp),%r12
lea    -0x1ee0(%rbp),%r15
lea    -0x1f00(%rbp),%r14
lea    -0x2190(%rbp),%rbx
lea    -0x20e0(%rbp),%r11
lea    -0x2030(%rbp),%r10
lea    -0x360(%rbp),%rax
mov    %r13,(%rsp)
mov    %r12,0x8(%rsp)
mov    %r15,0x10(%rsp)
mov    %r14,0x18(%rsp)
mov    %rbx,0x20(%rsp)
mov    %r11,0x28(%rsp)
mov    %r10,0x30(%rsp)
mov    %rax,0x38(%rsp)
call   10d0 <getS@plt>
mov    -0x38(%rbp),%edi
lea    -0x1f80(%rbp),%rsi
lea    -0x1f40(%rbp),%rdx
lea    -0x1f60(%rbp),%rcx
lea    -0x1e20(%rbp),%r8
lea    -0x1e60(%rbp),%r9
lea    -0x1ea0(%rbp),%r13
lea    -0x1ec0(%rbp),%r12
lea    -0x1ee0(%rbp),%r15
lea    -0x1f00(%rbp),%r14
lea    -0x2190(%rbp),%rbx
lea    -0x20e0(%rbp),%r11
lea    -0x2030(%rbp),%r10
lea    -0x4f0(%rbp),%rax
mov    %r13,(%rsp)
mov    %r12,0x8(%rsp)
mov    %r15,0x10(%rsp)
mov    %r14,0x18(%rsp)
mov    %rbx,0x20(%rsp)
mov    %r11,0x28(%rsp)
mov    %r10,0x30(%rsp)
mov    %rax,0x38(%rsp)
call   1050 <getT@plt>
mov    -0x38(%rbp),%edi
lea    -0x1f80(%rbp),%rsi
lea    -0x1f40(%rbp),%rdx
lea    -0x1f60(%rbp),%rcx
lea    -0x1e20(%rbp),%r8
lea    -0x1e60(%rbp),%r9
lea    -0x1ea0(%rbp),%rax
mov    %rax,-0x21c0(%rbp)
lea    -0x1ec0(%rbp),%rax
mov    %rax,-0x21b8(%rbp)
lea    -0x1ee0(%rbp),%rax
mov    %rax,-0x21b0(%rbp)
lea    -0x1f00(%rbp),%rax
mov    %rax,-0x21a8(%rbp)
lea    -0x2190(%rbp),%rax
mov    %rax,-0x21a0(%rbp)
lea    -0x20e0(%rbp),%r13
lea    -0x2030(%rbp),%r12
mov    -0x34(%rbp),%r15d
lea    -0x1d84(%rbp),%r14
lea    -0x1da0(%rbp),%rbx
lea    -0x1dc0(%rbp),%r11
lea    -0x1de0(%rbp),%r10
lea    -0x680(%rbp),%rax
mov    %rax,-0x2198(%rbp)
mov    -0x21c0(%rbp),%rax
mov    %rax,(%rsp)
mov    -0x21b8(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0x21b0(%rbp),%rax
mov    %rax,0x10(%rsp)
mov    -0x21a8(%rbp),%rax
mov    %rax,0x18(%rsp)
mov    -0x21a0(%rbp),%rax
mov    %rax,0x20(%rsp)
mov    -0x2198(%rbp),%rax
mov    %r13,0x28(%rsp)
mov    %r12,0x30(%rsp)
mov    %r15d,0x38(%rsp)
mov    %r14,0x40(%rsp)
mov    %rbx,0x48(%rsp)
mov    %r11,0x50(%rsp)
mov    %r10,0x58(%rsp)
mov    %rax,0x60(%rsp)
call   1060 <getV@plt>
mov    -0x38(%rbp),%edi
lea    -0x1f80(%rbp),%rsi
lea    -0x1f40(%rbp),%rdx
lea    -0x1f60(%rbp),%rcx
lea    -0x1e20(%rbp),%r8
lea    -0x1e60(%rbp),%r9
lea    -0x1ea0(%rbp),%r13
lea    -0x1ec0(%rbp),%r12
lea    -0x1ee0(%rbp),%r15
lea    -0x1f00(%rbp),%r14
lea    -0x2190(%rbp),%rbx
lea    -0x20e0(%rbp),%r11
lea    -0x2030(%rbp),%r10
lea    -0x1330(%rbp),%rax
mov    %r13,(%rsp)
mov    %r12,0x8(%rsp)
mov    %r15,0x10(%rsp)
mov    %r14,0x18(%rsp)
mov    %rbx,0x20(%rsp)
mov    %r11,0x28(%rsp)
mov    %r10,0x30(%rsp)
mov    %rax,0x38(%rsp)
call   1090 <getInts@plt>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x38(%rbp),%ecx
imul   -0x38(%rbp),%ecx
cmp    %ecx,%eax
jge    1749 <main+0x599>
movslq -0x30(%rbp),%rax
movsd  -0x4f0(%rbp,%rax,8),%xmm0
ff ff
movslq -0x30(%rbp),%rax
addsd  -0x680(%rbp,%rax,8),%xmm0
ff ff
movslq -0x30(%rbp),%rax
movsd  %xmm0,-0x1d0(%rbp,%rax,8)
ff ff
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1702 <main+0x552>
mov    -0x38(%rbp),%edi
mov    -0x3c(%rbp),%esi
lea    -0x19b0(%rbp),%rdx
lea    -0x14c0(%rbp),%rcx
call   1040 <getD@plt>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x38(%rbp),%ecx
imul   -0x38(%rbp),%ecx
cmp    %ecx,%eax
jge    17d7 <main+0x627>
movslq -0x30(%rbp),%rax
movsd  -0x1d0(%rbp,%rax,8),%xmm0
ff ff
movslq -0x30(%rbp),%rax
movsd  %xmm0,-0x19b0(%rbp,%rax,8)
ff ff
movslq -0x30(%rbp),%rax
movsd  -0x1d0(%rbp,%rax,8),%xmm0
ff ff
movslq -0x30(%rbp),%rax
movsd  %xmm0,-0x1d50(%rbp,%rax,8)
ff ff
movslq -0x30(%rbp),%rax
movsd  -0x360(%rbp,%rax,8),%xmm0
ff ff
movslq -0x30(%rbp),%rax
movsd  %xmm0,-0x1b40(%rbp,%rax,8)
ff ff
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1769 <main+0x5b9>
lea    -0x1d50(%rbp),%rdi
lea    -0x1b40(%rbp),%rsi
mov    -0x38(%rbp),%edx
lea    -0x1820(%rbp),%rcx
lea    -0x19b0(%rbp),%r8
lea    -0x1b80(%rbp),%r9
lea    -0x1bc0(%rbp),%rax
mov    %rax,(%rsp)
call   10c0 <gjacobi@plt>
mov    %eax,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x48(%rbp),%eax
jge    1ad5 <main+0x925>
mov    -0x38(%rbp),%edi
mov    -0x3c(%rbp),%esi
lea    -0x19b0(%rbp),%rdx
lea    -0x14c0(%rbp),%rcx
call   1040 <getD@plt>
mov    -0x38(%rbp),%edi
lea    -0x14c0(%rbp),%rsi
lea    -0x1330(%rbp),%rdx
lea    -0x1650(%rbp),%rcx
call   1030 <getJ@plt>
mov    -0x38(%rbp),%edi
lea    -0x14c0(%rbp),%rsi
lea    -0x1330(%rbp),%rdx
lea    -0x17e0(%rbp),%rcx
call   10b0 <getK@plt>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x38(%rbp),%ecx
imul   -0x38(%rbp),%ecx
cmp    %ecx,%eax
jge    18f3 <main+0x743>
movslq -0x30(%rbp),%rax
movsd  -0x1d0(%rbp,%rax,8),%xmm1
ff ff
movslq -0x30(%rbp),%rax
movsd  -0x1650(%rbp,%rax,8),%xmm0
ff ff
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movslq -0x30(%rbp),%rax
subsd  -0x17e0(%rbp,%rax,8),%xmm0
ff ff
movslq -0x30(%rbp),%rax
movsd  %xmm0,-0x1d50(%rbp,%rax,8)
ff ff
movslq -0x30(%rbp),%rax
movsd  -0x360(%rbp,%rax,8),%xmm0
ff ff
movslq -0x30(%rbp),%rax
movsd  %xmm0,-0x1b40(%rbp,%rax,8)
ff ff
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    187d <main+0x6cd>
lea    -0x1d50(%rbp),%rdi
lea    -0x1b40(%rbp),%rsi
mov    -0x38(%rbp),%edx
lea    -0x1820(%rbp),%rcx
lea    -0x19b0(%rbp),%r8
lea    -0x1b80(%rbp),%r9
lea    -0x1bc0(%rbp),%rax
mov    %rax,(%rsp)
call   10c0 <gjacobi@plt>
mov    %eax,-0x40(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x1d60(%rbp)
ff
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x38(%rbp),%ecx
imul   -0x38(%rbp),%ecx
cmp    %ecx,%eax
jge    1990 <main+0x7e0>
movslq -0x30(%rbp),%rax
movsd  -0x1d0(%rbp,%rax,8),%xmm0
ff ff
movslq -0x30(%rbp),%rax
movsd  -0x14c0(%rbp,%rax,8),%xmm2
ff ff
movsd  -0x1d60(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d60(%rbp)
ff
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    193e <main+0x78e>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x1d68(%rbp)
ff
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x38(%rbp),%ecx
imul   -0x38(%rbp),%ecx
cmp    %ecx,%eax
jge    19f4 <main+0x844>
movslq -0x30(%rbp),%rax
movsd  -0x14c0(%rbp,%rax,8),%xmm0
ff ff
movslq -0x30(%rbp),%rax
movsd  -0x1650(%rbp,%rax,8),%xmm2
ff ff
movsd  -0x1d68(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d68(%rbp)
ff
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    19a2 <main+0x7f2>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x1d70(%rbp)
ff
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x38(%rbp),%ecx
imul   -0x38(%rbp),%ecx
cmp    %ecx,%eax
jge    1a58 <main+0x8a8>
movslq -0x30(%rbp),%rax
movsd  -0x14c0(%rbp,%rax,8),%xmm0
ff ff
movslq -0x30(%rbp),%rax
movsd  -0x17e0(%rbp,%rax,8),%xmm2
ff ff
movsd  -0x1d70(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d70(%rbp)
ff
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1a06 <main+0x856>
movsd  -0x1d78(%rbp),%xmm0
ff
movsd  -0x1d60(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x1d68(%rbp),%xmm0
ff
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
subsd  -0x1d70(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d58(%rbp)
ff
mov    -0x44(%rbp),%esi
movsd  -0x1d58(%rbp),%xmm0
ff
movsd  -0x1d78(%rbp),%xmm1
ff
movsd  -0x1d60(%rbp),%xmm2
ff
movsd  -0x1d68(%rbp),%xmm3
ff
movsd  -0x1d70(%rbp),%xmm4
ff
lea    0x886(%rip),%rdi
call   1070 <printf@plt>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1817 <main+0x667>
xor    %eax,%eax
add    $0x2208,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x2138,%rsp
mov    0xe61(%rip),%eax
mov    %eax,0x8(%rsp)
mov    0xe4e(%rip),%rax
mov    %rax,(%rsp)
mov    0xe63(%rip),%rax
mov    %rax,0x180(%rsp)
movaps 0xe44(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
mov    0xe65(%rip),%rax
mov    %rax,0x160(%rsp)
movaps 0xe46(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
xorps  %xmm0,%xmm0
movaps %xmm0,0x130(%rsp)
movq   $0x0,0x140(%rsp)
movaps %xmm0,0x90(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm0,0x70(%rsp)
movq   $0x0,0xa0(%rsp)
movabs $0x3ffe3c47045cef37,%rax
3c fe 3f
mov    %rax,0x98(%rsp)
movaps %xmm0,0x110(%rsp)
movaps %xmm0,0x100(%rsp)
movaps %xmm0,0xf0(%rsp)
mov    %rax,0x120(%rsp)
movaps %xmm0,0x1f0(%rsp)
movaps %xmm0,0x1e0(%rsp)
movaps %xmm0,0x1d0(%rsp)
movq   $0x0,0x200(%rsp)
movups 0xdd5(%rip),%xmm0
movups %xmm0,0x1bc(%rsp)
movaps 0xdba(%rip),%xmm0
movaps %xmm0,0x1b0(%rsp)
movups 0xdd7(%rip),%xmm0
movups %xmm0,0x19c(%rsp)
movaps 0xdbc(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movups 0xdd9(%rip),%xmm0
movups %xmm0,0x5c(%rsp)
movaps 0xdc1(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
mov    0xe05(%rip),%rax
mov    %rax,0xe0(%rsp)
movaps 0xde6(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0xdc7(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xda8(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movups 0xde5(%rip),%xmm0
movups %xmm0,0x3c(%rsp)
movaps 0xdcd(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movups 0xded(%rip),%xmm0
movups %xmm0,0x1c(%rsp)
movaps 0xdd5(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
lea    0xde9(%rip),%rsi
lea    0x10b0(%rsp),%rdi
mov    $0xa8,%edx
mov    %rdi,%r15
call   1090 <memcpy@plt>
lea    0xe7d(%rip),%rsi
lea    0xce0(%rsp),%r12
mov    $0xa8,%edx
mov    %r12,%rdi
call   1090 <memcpy@plt>
lea    0xf11(%rip),%rsi
lea    0x910(%rsp),%rdi
mov    $0xa8,%edx
mov    %rdi,%r14
call   1090 <memcpy@plt>
lea    0xf20(%rsp),%rax
lea    0x50(%rsp),%rbp
lea    0x190(%rsp),%r13
lea    0x1b0(%rsp),%r11
lea    0x1d0(%rsp),%r10
lea    0x10(%rsp),%rsi
lea    0xb0(%rsp),%rdx
lea    0x30(%rsp),%rcx
lea    0x70(%rsp),%r8
lea    0xf0(%rsp),%r9
mov    $0x7,%edi
push   %rax
push   %r15
push   %r12
push   %r14
push   %rbp
mov    %rbp,%r14
push   %r13
push   %r11
mov    %r11,%rbp
push   %r10
mov    %r10,%rbx
call   10c0 <getS@plt>
add    $0x40,%rsp
lea    0x530(%rsp),%rax
mov    $0x7,%edi
lea    0x10(%rsp),%rsi
lea    0xb0(%rsp),%rdx
lea    0x30(%rsp),%rcx
lea    0x70(%rsp),%r8
lea    0xf0(%rsp),%r9
push   %rax
push   %r15
push   %r12
lea    0x928(%rsp),%rax
push   %rax
push   %r14
push   %r13
push   %rbp
mov    %rbp,%r12
push   %rbx
mov    %rbx,%r14
call   1050 <getT@plt>
add    $0x38,%rsp
lea    0x3a8(%rsp),%rax
lea    0x138(%rsp),%rbp
lea    0x158(%rsp),%rbx
lea    0x178(%rsp),%r10
lea    0x8(%rsp),%r11
mov    $0x7,%edi
lea    0x18(%rsp),%rsi
lea    0xb8(%rsp),%rdx
lea    0x38(%rsp),%rcx
lea    0x78(%rsp),%r8
lea    0xf8(%rsp),%r9
push   %rax
push   %rbp
push   %rbx
push   %r10
push   %r11
push   $0x3
push   %r15
mov    %r15,%rbx
lea    0xd20(%rsp),%rax
push   %rax
lea    0x958(%rsp),%rax
push   %rax
lea    0xa0(%rsp),%rax
push   %rax
push   %r13
push   %r12
push   %r14
call   1060 <getV@plt>
add    $0x70,%rsp
lea    0x1480(%rsp),%r15
mov    $0x7,%edi
lea    0x10(%rsp),%rsi
lea    0xb0(%rsp),%rdx
lea    0x30(%rsp),%rcx
lea    0x70(%rsp),%r8
lea    0xf0(%rsp),%r9
push   %r15
push   %rbx
lea    0xcf0(%rsp),%rax
push   %rax
lea    0x928(%rsp),%rax
push   %rax
lea    0x70(%rsp),%rax
push   %rax
push   %r13
push   %r12
push   %r14
call   1080 <getInts@plt>
add    $0x40,%rsp
movapd 0x530(%rsp),%xmm0
movapd 0x540(%rsp),%xmm1
movapd 0x550(%rsp),%xmm2
movapd 0x560(%rsp),%xmm3
addpd  0x3a0(%rsp),%xmm0
addpd  0x3b0(%rsp),%xmm1
movapd %xmm0,0x210(%rsp)
movapd %xmm1,0x220(%rsp)
addpd  0x3c0(%rsp),%xmm2
movapd %xmm2,0x230(%rsp)
addpd  0x3d0(%rsp),%xmm3
movapd %xmm3,0x240(%rsp)
movapd 0x570(%rsp),%xmm0
addpd  0x3e0(%rsp),%xmm0
movapd %xmm0,0x250(%rsp)
movapd 0x580(%rsp),%xmm0
addpd  0x3f0(%rsp),%xmm0
movapd %xmm0,0x260(%rsp)
movapd 0x590(%rsp),%xmm0
movapd 0x5a0(%rsp),%xmm1
movapd 0x5b0(%rsp),%xmm2
movapd 0x5c0(%rsp),%xmm3
addpd  0x400(%rsp),%xmm0
addpd  0x410(%rsp),%xmm1
movapd %xmm0,0x270(%rsp)
movapd %xmm1,0x280(%rsp)
addpd  0x420(%rsp),%xmm2
movapd %xmm2,0x290(%rsp)
addpd  0x430(%rsp),%xmm3
movapd %xmm3,0x2a0(%rsp)
movapd 0x5d0(%rsp),%xmm0
addpd  0x440(%rsp),%xmm0
movapd %xmm0,0x2b0(%rsp)
movapd 0x5e0(%rsp),%xmm0
addpd  0x450(%rsp),%xmm0
movapd %xmm0,0x2c0(%rsp)
movapd 0x5f0(%rsp),%xmm0
addpd  0x460(%rsp),%xmm0
movapd %xmm0,0x2d0(%rsp)
movapd 0x600(%rsp),%xmm0
addpd  0x470(%rsp),%xmm0
movapd %xmm0,0x2e0(%rsp)
movapd 0x610(%rsp),%xmm0
addpd  0x480(%rsp),%xmm0
movapd %xmm0,0x2f0(%rsp)
movapd 0x620(%rsp),%xmm0
addpd  0x490(%rsp),%xmm0
movapd %xmm0,0x300(%rsp)
movapd 0x630(%rsp),%xmm0
addpd  0x4a0(%rsp),%xmm0
movapd %xmm0,0x310(%rsp)
movapd 0x640(%rsp),%xmm0
addpd  0x4b0(%rsp),%xmm0
movapd %xmm0,0x320(%rsp)
movapd 0x650(%rsp),%xmm0
addpd  0x4c0(%rsp),%xmm0
movapd %xmm0,0x330(%rsp)
movapd 0x660(%rsp),%xmm0
addpd  0x4d0(%rsp),%xmm0
movapd %xmm0,0x340(%rsp)
movapd 0x670(%rsp),%xmm0
addpd  0x4e0(%rsp),%xmm0
movapd %xmm0,0x350(%rsp)
movapd 0x680(%rsp),%xmm0
addpd  0x4f0(%rsp),%xmm0
movapd %xmm0,0x360(%rsp)
movapd 0x690(%rsp),%xmm0
addpd  0x500(%rsp),%xmm0
movapd %xmm0,0x370(%rsp)
movapd 0x6a0(%rsp),%xmm0
addpd  0x510(%rsp),%xmm0
movapd %xmm0,0x380(%rsp)
movsd  0x6b0(%rsp),%xmm0
addsd  0x520(%rsp),%xmm0
movsd  %xmm0,0x390(%rsp)
lea    0x12f0(%rsp),%r12
lea    0x780(%rsp),%rbx
mov    $0x7,%edi
mov    $0x5,%esi
mov    %r12,%rdx
mov    %rbx,%rcx
call   1040 <getD@plt>
lea    0x210(%rsp),%rbp
mov    $0x188,%edx
mov    %r12,%rdi
mov    %rbp,%rsi
call   1090 <memcpy@plt>
lea    0xd90(%rsp),%r14
mov    $0x188,%edx
mov    %r14,%rdi
mov    %rbp,%rsi
call   1090 <memcpy@plt>
lea    0x1160(%rsp),%rbp
mov    $0x188,%edx
mov    %rbp,%rdi
lea    0xf20(%rsp),%rsi
call   1090 <memcpy@plt>
sub    $0x8,%rsp
lea    0x6c8(%rsp),%rax
lea    0x748(%rsp),%rcx
lea    0x708(%rsp),%r9
mov    %r14,%rdi
mov    %rbp,%rsi
mov    $0x7,%edx
mov    %r12,%r8
push   %rax
call   10b0 <gjacobi@plt>
add    $0x10,%rsp
xor    %r14d,%r14d
lea    0xac2(%rip),%r13
jmp    18cd <main+0x72d>
nopl   0x0(%rax,%rax,1)
movapd %xmm2,%xmm5
addsd  %xmm2,%xmm5
movsd  0x760(%rip),%xmm1
addsd  %xmm1,%xmm5
movapd %xmm3,%xmm0
addsd  %xmm3,%xmm0
addsd  %xmm5,%xmm0
subsd  %xmm4,%xmm0
mov    %r13,%rdi
mov    %r14d,%esi
call   1070 <printf@plt>
add    $0x1,%r14d
cmp    $0x5,%r14d
je     1b88 <main+0x9e8>
mov    $0x7,%edi
mov    $0x5,%esi
mov    %r12,%rdx
mov    %rbx,%rcx
call   1040 <getD@plt>
mov    $0x7,%edi
mov    %rbx,%rsi
mov    %r15,%rdx
lea    0xb50(%rsp),%rcx
call   1030 <getJ@plt>
mov    $0x7,%edi
mov    %rbx,%rsi
mov    %r15,%rdx
lea    0x9c0(%rsp),%rcx
call   10a0 <getK@plt>
mov    $0x188,%edx
mov    %rbp,%rdi
lea    0xf20(%rsp),%rsi
call   1090 <memcpy@plt>
mov    $0x4,%eax
nopl   0x0(%rax)
movapd 0xb30(%rsp,%rax,8),%xmm0
movapd 0xb40(%rsp,%rax,8),%xmm1
addpd  %xmm0,%xmm0
addpd  0x1f0(%rsp,%rax,8),%xmm0
subpd  0x9a0(%rsp,%rax,8),%xmm0
movapd 0xb50(%rsp,%rax,8),%xmm2
addpd  %xmm1,%xmm1
addpd  0x200(%rsp,%rax,8),%xmm1
movapd %xmm0,0xd70(%rsp,%rax,8)
subpd  0x9b0(%rsp,%rax,8),%xmm1
addpd  %xmm2,%xmm2
addpd  0x210(%rsp,%rax,8),%xmm2
subpd  0x9c0(%rsp,%rax,8),%xmm2
movapd %xmm1,0xd80(%rsp,%rax,8)
movapd %xmm2,0xd90(%rsp,%rax,8)
add    $0x6,%rax
cmp    $0x34,%rax
jne    1930 <main+0x790>
movsd  0xcd0(%rsp),%xmm0
addsd  %xmm0,%xmm0
addsd  0x390(%rsp),%xmm0
subsd  0xb40(%rsp),%xmm0
movsd  %xmm0,0xf10(%rsp)
sub    $0x8,%rsp
lea    0xd98(%rsp),%rdi
mov    %rbp,%rsi
mov    $0x7,%edx
lea    0x748(%rsp),%rcx
mov    %r12,%r8
lea    0x708(%rsp),%r9
lea    0x6c8(%rsp),%rax
push   %rax
call   10b0 <gjacobi@plt>
add    $0x10,%rsp
xorpd  %xmm0,%xmm0
mov    $0x3,%eax
movsd  0x1f8(%rsp,%rax,8),%xmm2
mulsd  0x768(%rsp,%rax,8),%xmm2
addsd  %xmm0,%xmm2
cmp    $0x33,%rax
je     1a90 <main+0x8f0>
movsd  0x200(%rsp,%rax,8),%xmm0
movsd  0x208(%rsp,%rax,8),%xmm1
mulsd  0x770(%rsp,%rax,8),%xmm0
addsd  %xmm2,%xmm0
mulsd  0x778(%rsp,%rax,8),%xmm1
addsd  %xmm0,%xmm1
movsd  0x210(%rsp,%rax,8),%xmm0
mulsd  0x780(%rsp,%rax,8),%xmm0
addsd  %xmm1,%xmm0
add    $0x4,%rax
jmp    1a20 <main+0x880>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xorpd  %xmm0,%xmm0
mov    $0x3,%eax
nopl   0x0(%rax)
movsd  0x768(%rsp,%rax,8),%xmm3
mulsd  0xb38(%rsp,%rax,8),%xmm3
addsd  %xmm0,%xmm3
cmp    $0x33,%rax
je     1b10 <main+0x970>
movsd  0x770(%rsp,%rax,8),%xmm0
movsd  0x778(%rsp,%rax,8),%xmm1
mulsd  0xb40(%rsp,%rax,8),%xmm0
addsd  %xmm3,%xmm0
mulsd  0xb48(%rsp,%rax,8),%xmm1
addsd  %xmm0,%xmm1
movsd  0x780(%rsp,%rax,8),%xmm0
mulsd  0xb50(%rsp,%rax,8),%xmm0
addsd  %xmm1,%xmm0
add    $0x4,%rax
jmp    1aa0 <main+0x900>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xorpd  %xmm0,%xmm0
mov    $0x3,%eax
nopl   0x0(%rax)
movsd  0x768(%rsp,%rax,8),%xmm4
mulsd  0x9a8(%rsp,%rax,8),%xmm4
addsd  %xmm0,%xmm4
cmp    $0x33,%rax
je     1890 <main+0x6f0>
movsd  0x770(%rsp,%rax,8),%xmm0
movsd  0x778(%rsp,%rax,8),%xmm1
mulsd  0x9b0(%rsp,%rax,8),%xmm0
addsd  %xmm4,%xmm0
mulsd  0x9b8(%rsp,%rax,8),%xmm1
addsd  %xmm0,%xmm1
movsd  0x780(%rsp,%rax,8),%xmm0
mulsd  0x9c0(%rsp,%rax,8),%xmm0
addsd  %xmm1,%xmm0
add    $0x4,%rax
jmp    1b20 <main+0x980>
xor    %eax,%eax
add    $0x2138,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@__const.main.atno = [3 x i32] [i32 8, i32 1, i32 1]
@__const.main.x = [3 x double] [double 0.000000e+00, double 0x3FFE3C47045CEF37, double 0.000000e+00]
@__const.main.y = [3 x double] [double 0.000000e+00, double 0.000000e+00, double 0x3FFE3C47045CEF37]
@__const.main.lpower = [7 x i32] [i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0]
@__const.main.mpower = [7 x i32] [i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0]
@__const.main.npower = [7 x i32] [i32 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0]
@__const.main.normc = [7 x double] [double 0x3FEFFFFF67A4330B, double 0x3FF00000334C4AC1, double 0x3FF00000330F21B5, double 0x3FF00000330F21B5, double 0x3FF00000330F21B5, double 0x3FEFFFFFE3875661, double 0x3FEFFFFFE3875661]
@__const.main.istart = [7 x i32] [i32 0, i32 3, i32 6, i32 9, i32 12, i32 15, i32 18]
@__const.main.nprim = [7 x i32] [i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3]
@__const.main.alpha = [21 x double] [double 0x406056B2C1F42BB6, double 0x4037CF11D798D8A9, double 0x4019C6412CF0F9D3, double 0x401421F255F3519C, double 0x3FF2B6AA4B9884C7, double 3.803890e-01, double 0x401421F255F3519C, double 0x3FF2B6AA4B9884C7, double 3.803890e-01, double 0x401421F255F3519C, double 0x3FF2B6AA4B9884C7, double 3.803890e-01, double 0x401421F255F3519C, double 0x3FF2B6AA4B9884C7, double 3.803890e-01, double 0x400B66E9FF0CBAF9, double 6.239140e-01, double 1.688550e-01, double 0x400B66E9FF0CBAF9, double 6.239140e-01, double 1.688550e-01]
@__const.main.coef = [21 x double] [double 1.543290e-01, double 5.353280e-01, double 4.446350e-01, double -9.996700e-02, double 3.995130e-01, double 7.001150e-01, double 1.559160e-01, double 6.076840e-01, double 3.919570e-01, double 1.559160e-01, double 6.076840e-01, double 3.919570e-01, double 1.559160e-01, double 6.076840e-01, double 3.919570e-01, double 1.543290e-01, double 5.353280e-01, double 4.446350e-01, double 1.543290e-01, double 5.353280e-01, double 4.446350e-01]
@__const.main.normp = [21 x double] [double 0x403B8D19548AA7D6, double 0x401EBA2F041DC9A5, double 0x40070F310BFD4088, double 0x400328C91300D11D, double 0x3FE9A664E0D5CF24, double 0x3FD617E3F8A0BF52, double 0x40257DDDA9D7BEE9, double 0x3FFBBD6A2E09E729, double 0x3FDB409E4A643AA8, double 0x40257DDDA9D7BEE9, double 0x3FFBBD6A2E09E729, double 0x3FDB409E4A643AA8, double 0x40257DDDA9D7BEE9, double 0x3FFBBD6A2E09E729, double 0x3FDB409E4A643AA8, double 0x3FFCB608ACFD44A9, double 0x3FE002AD0B6AB9DE, double 0x3FC807B45F059936, double 0x3FFCB608ACFD44A9, double 0x3FE002AD0B6AB9DE, double 0x3FC807B45F059936]
@.str = [19 x i8] c"%d %f %f %f %f %f\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca [49 x double]
%10 = alloca [49 x double]
%11 = alloca [49 x double]
%12 = alloca [49 x double]
%13 = alloca [406 x double]
%14 = alloca [49 x double]
%15 = alloca [49 x double]
%16 = alloca [49 x double]
%17 = alloca [7 x double]
%18 = alloca [49 x double]
%19 = alloca [49 x double]
%20 = alloca [7 x double]
%21 = alloca [7 x double]
%22 = alloca [49 x double]
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca [3 x i32]
%29 = alloca [3 x double]
%30 = alloca [3 x double]
%31 = alloca [3 x double]
%32 = alloca [7 x double]
%33 = alloca [7 x double]
%34 = alloca [7 x double]
%35 = alloca [7 x i32]
%36 = alloca [7 x i32]
%37 = alloca [7 x i32]
%38 = alloca [7 x double]
%39 = alloca [7 x i32]
%40 = alloca [7 x i32]
%41 = alloca [21 x double]
%42 = alloca [21 x double]
%43 = alloca [21 x double]
store i32 0, i32* %1
store i32 0, i32* %2
store i32 3, i32* %3
store i32 7, i32* %4
store i32 5, i32* %5
store i32 5, i32* %8
store double 0x4021AEA055757D5B, double* %27
%44 = bitcast [3 x i32]* %28 to i8*
%45 = bitcast [3 x double]* %29 to i8*
%46 = bitcast [3 x double]* %30 to i8*
%47 = bitcast [3 x double]* %31 to i8*
%48 = bitcast [7 x double]* %32 to i8*
%49 = bitcast i8* %48 to [7 x double]*
%50 = getelementptr inbounds [7 x double], [7 x double]* %49, i32 0, i32 5
store double 0x3FFE3C47045CEF37, double* %50
%51 = bitcast [7 x double]* %33 to i8*
%52 = bitcast i8* %51 to [7 x double]*
%53 = getelementptr inbounds [7 x double], [7 x double]* %52, i32 0, i32 6
store double 0x3FFE3C47045CEF37, double* %53
%54 = bitcast [7 x double]* %34 to i8*
%55 = bitcast [7 x i32]* %35 to i8*
%56 = bitcast [7 x i32]* %36 to i8*
%57 = bitcast [7 x i32]* %37 to i8*
%58 = bitcast [7 x double]* %38 to i8*
%59 = bitcast [7 x i32]* %39 to i8*
%60 = bitcast [7 x i32]* %40 to i8*
%61 = bitcast [21 x double]* %41 to i8*
%62 = bitcast [21 x double]* %42 to i8*
%63 = bitcast [21 x double]* %43 to i8*
%64 = load i32, i32* %4
%65 = getelementptr inbounds [7 x i32], [7 x i32]* %40, i64 0, i64 0
%66 = getelementptr inbounds [7 x double], [7 x double]* %38, i64 0, i64 0
%67 = getelementptr inbounds [7 x i32], [7 x i32]* %39, i64 0, i64 0
%68 = getelementptr inbounds [7 x double], [7 x double]* %32, i64 0, i64 0
%69 = getelementptr inbounds [7 x double], [7 x double]* %33, i64 0, i64 0
%70 = getelementptr inbounds [7 x double], [7 x double]* %34, i64 0, i64 0
%71 = getelementptr inbounds [7 x i32], [7 x i32]* %35, i64 0, i64 0
%72 = getelementptr inbounds [7 x i32], [7 x i32]* %36, i64 0, i64 0
%73 = getelementptr inbounds [7 x i32], [7 x i32]* %37, i64 0, i64 0
%74 = getelementptr inbounds [21 x double], [21 x double]* %43, i64 0, i64 0
%75 = getelementptr inbounds [21 x double], [21 x double]* %42, i64 0, i64 0
%76 = getelementptr inbounds [21 x double], [21 x double]* %41, i64 0, i64 0
%77 = getelementptr inbounds [49 x double], [49 x double]* %10, i64 0, i64 0
%78 = call i32 @getS(i32 %64, i32* %65, double* %66, i32* %67, double* %68, double* %69, double* %70, i32* %71, i32* %72, i32* %73, double* %74, double* %75, double* %76, double* %77)
%79 = load i32, i32* %4
%80 = getelementptr inbounds [7 x i32], [7 x i32]* %40, i64 0, i64 0
%81 = getelementptr inbounds [7 x double], [7 x double]* %38, i64 0, i64 0
%82 = getelementptr inbounds [7 x i32], [7 x i32]* %39, i64 0, i64 0
%83 = getelementptr inbounds [7 x double], [7 x double]* %32, i64 0, i64 0
%84 = getelementptr inbounds [7 x double], [7 x double]* %33, i64 0, i64 0
%85 = getelementptr inbounds [7 x double], [7 x double]* %34, i64 0, i64 0
%86 = getelementptr inbounds [7 x i32], [7 x i32]* %35, i64 0, i64 0
%87 = getelementptr inbounds [7 x i32], [7 x i32]* %36, i64 0, i64 0
%88 = getelementptr inbounds [7 x i32], [7 x i32]* %37, i64 0, i64 0
%89 = getelementptr inbounds [21 x double], [21 x double]* %43, i64 0, i64 0
%90 = getelementptr inbounds [21 x double], [21 x double]* %42, i64 0, i64 0
%91 = getelementptr inbounds [21 x double], [21 x double]* %41, i64 0, i64 0
%92 = getelementptr inbounds [49 x double], [49 x double]* %11, i64 0, i64 0
%93 = call i32 @getT(i32 %79, i32* %80, double* %81, i32* %82, double* %83, double* %84, double* %85, i32* %86, i32* %87, i32* %88, double* %89, double* %90, double* %91, double* %92)
%94 = load i32, i32* %4
%95 = getelementptr inbounds [7 x i32], [7 x i32]* %40, i64 0, i64 0
%96 = getelementptr inbounds [7 x double], [7 x double]* %38, i64 0, i64 0
%97 = getelementptr inbounds [7 x i32], [7 x i32]* %39, i64 0, i64 0
%98 = getelementptr inbounds [7 x double], [7 x double]* %32, i64 0, i64 0
%99 = getelementptr inbounds [7 x double], [7 x double]* %33, i64 0, i64 0
%100 = getelementptr inbounds [7 x double], [7 x double]* %34, i64 0, i64 0
%101 = getelementptr inbounds [7 x i32], [7 x i32]* %35, i64 0, i64 0
%102 = getelementptr inbounds [7 x i32], [7 x i32]* %36, i64 0, i64 0
%103 = getelementptr inbounds [7 x i32], [7 x i32]* %37, i64 0, i64 0
%104 = getelementptr inbounds [21 x double], [21 x double]* %43, i64 0, i64 0
%105 = getelementptr inbounds [21 x double], [21 x double]* %42, i64 0, i64 0
%106 = getelementptr inbounds [21 x double], [21 x double]* %41, i64 0, i64 0
%107 = load i32, i32* %3
%108 = getelementptr inbounds [3 x i32], [3 x i32]* %28, i64 0, i64 0
%109 = getelementptr inbounds [3 x double], [3 x double]* %29, i64 0, i64 0
%110 = getelementptr inbounds [3 x double], [3 x double]* %30, i64 0, i64 0
%111 = getelementptr inbounds [3 x double], [3 x double]* %31, i64 0, i64 0
%112 = getelementptr inbounds [49 x double], [49 x double]* %12, i64 0, i64 0
%113 = call i32 @getV(i32 %94, i32* %95, double* %96, i32* %97, double* %98, double* %99, double* %100, i32* %101, i32* %102, i32* %103, double* %104, double* %105, double* %106, i32 %107, i32* %108, double* %109, double* %110, double* %111, double* %112)
%114 = load i32, i32* %4
%115 = getelementptr inbounds [7 x i32], [7 x i32]* %40, i64 0, i64 0
%116 = getelementptr inbounds [7 x double], [7 x double]* %38, i64 0, i64 0
%117 = getelementptr inbounds [7 x i32], [7 x i32]* %39, i64 0, i64 0
%118 = getelementptr inbounds [7 x double], [7 x double]* %32, i64 0, i64 0
%119 = getelementptr inbounds [7 x double], [7 x double]* %33, i64 0, i64 0
%120 = getelementptr inbounds [7 x double], [7 x double]* %34, i64 0, i64 0
%121 = getelementptr inbounds [7 x i32], [7 x i32]* %35, i64 0, i64 0
%122 = getelementptr inbounds [7 x i32], [7 x i32]* %36, i64 0, i64 0
%123 = getelementptr inbounds [7 x i32], [7 x i32]* %37, i64 0, i64 0
%124 = getelementptr inbounds [21 x double], [21 x double]* %43, i64 0, i64 0
%125 = getelementptr inbounds [21 x double], [21 x double]* %42, i64 0, i64 0
%126 = getelementptr inbounds [21 x double], [21 x double]* %41, i64 0, i64 0
%127 = getelementptr inbounds [406 x double], [406 x double]* %13, i64 0, i64 0
%128 = call i32 @getInts(i32 %114, i32* %115, double* %116, i32* %117, double* %118, double* %119, double* %120, i32* %121, i32* %122, i32* %123, double* %124, double* %125, double* %126, double* %127)
store i32 0, i32* %2
br label %129
129: ; preds = %148, %0
%130 = load i32, i32* %2
%131 = load i32, i32* %4
%132 = load i32, i32* %4
%133 = mul nsw i32 %131, %132
%134 = icmp slt i32 %130, %133
br i1 %134, label %135, label %151
135: ; preds = %129
%136 = load i32, i32* %2
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds [49 x double], [49 x double]* %11, i64 0, i64 %137
%139 = load double, double* %138
%140 = load i32, i32* %2
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [49 x double], [49 x double]* %12, i64 0, i64 %141
%143 = load double, double* %142
%144 = fadd double %139, %143
%145 = load i32, i32* %2
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds [49 x double], [49 x double]* %9, i64 0, i64 %146
store double %144, double* %147
br label %148
148: ; preds = %135
%149 = load i32, i32* %2
%150 = add nsw i32 %149, 1
store i32 %150, i32* %2
br label %129
151: ; preds = %129
%152 = load i32, i32* %4
%153 = load i32, i32* %5
%154 = getelementptr inbounds [49 x double], [49 x double]* %18, i64 0, i64 0
%155 = getelementptr inbounds [49 x double], [49 x double]* %14, i64 0, i64 0
%156 = call i32 @getD(i32 %152, i32 %153, double* %154, double* %155)
store i32 0, i32* %2
br label %157
157: ; preds = %185, %151
%158 = load i32, i32* %2
%159 = load i32, i32* %4
%160 = load i32, i32* %4
%161 = mul nsw i32 %159, %160
%162 = icmp slt i32 %158, %161
br i1 %162, label %163, label %188
163: ; preds = %157
%164 = load i32, i32* %2
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds [49 x double], [49 x double]* %9, i64 0, i64 %165
%167 = load double, double* %166
%168 = load i32, i32* %2
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds [49 x double], [49 x double]* %18, i64 0, i64 %169
store double %167, double* %170
%171 = load i32, i32* %2
%172 = sext i32 %171 to i64
%173 = getelementptr inbounds [49 x double], [49 x double]* %9, i64 0, i64 %172
%174 = load double, double* %173
%175 = load i32, i32* %2
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds [49 x double], [49 x double]* %22, i64 0, i64 %176
store double %174, double* %177
%178 = load i32, i32* %2
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds [49 x double], [49 x double]* %10, i64 0, i64 %179
%181 = load double, double* %180
%182 = load i32, i32* %2
%183 = sext i32 %182 to i64
%184 = getelementptr inbounds [49 x double], [49 x double]* %19, i64 0, i64 %183
store double %181, double* %184
br label %185
185: ; preds = %163
%186 = load i32, i32* %2
%187 = add nsw i32 %186, 1
store i32 %187, i32* %2
br label %157
188: ; preds = %157
%189 = getelementptr inbounds [49 x double], [49 x double]* %22, i64 0, i64 0
%190 = getelementptr inbounds [49 x double], [49 x double]* %19, i64 0, i64 0
%191 = load i32, i32* %4
%192 = getelementptr inbounds [7 x double], [7 x double]* %17, i64 0, i64 0
%193 = getelementptr inbounds [49 x double], [49 x double]* %18, i64 0, i64 0
%194 = getelementptr inbounds [7 x double], [7 x double]* %20, i64 0, i64 0
%195 = getelementptr inbounds [7 x double], [7 x double]* %21, i64 0, i64 0
%196 = call i32 @gjacobi(double* %189, double* %190, i32 %191, double* %192, double* %193, double* %194, double* %195)
store i32 %196, i32* %6
store i32 0, i32* %7
br label %197
197: ; preds = %337, %188
%198 = load i32, i32* %7
%199 = load i32, i32* %8
%200 = icmp slt i32 %198, %199
br i1 %200, label %201, label %340
201: ; preds = %197
%202 = load i32, i32* %4
%203 = load i32, i32* %5
%204 = getelementptr inbounds [49 x double], [49 x double]* %18, i64 0, i64 0
%205 = getelementptr inbounds [49 x double], [49 x double]* %14, i64 0, i64 0
%206 = call i32 @getD(i32 %202, i32 %203, double* %204, double* %205)
%207 = load i32, i32* %4
%208 = getelementptr inbounds [49 x double], [49 x double]* %14, i64 0, i64 0
%209 = getelementptr inbounds [406 x double], [406 x double]* %13, i64 0, i64 0
%210 = getelementptr inbounds [49 x double], [49 x double]* %15, i64 0, i64 0
%211 = call i32 @getJ(i32 %207, double* %208, double* %209, double* %210)
%212 = load i32, i32* %4
%213 = getelementptr inbounds [49 x double], [49 x double]* %14, i64 0, i64 0
%214 = getelementptr inbounds [406 x double], [406 x double]* %13, i64 0, i64 0
%215 = getelementptr inbounds [49 x double], [49 x double]* %16, i64 0, i64 0
%216 = call i32 @getK(i32 %212, double* %213, double* %214, double* %215)
store i32 0, i32* %2
br label %217
217: ; preds = %248, %201
%218 = load i32, i32* %2
%219 = load i32, i32* %4
%220 = load i32, i32* %4
%221 = mul nsw i32 %219, %220
%222 = icmp slt i32 %218, %221
br i1 %222, label %223, label %251
223: ; preds = %217
%224 = load i32, i32* %2
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds [49 x double], [49 x double]* %9, i64 0, i64 %225
%227 = load double, double* %226
%228 = load i32, i32* %2
%229 = sext i32 %228 to i64
%230 = getelementptr inbounds [49 x double], [49 x double]* %15, i64 0, i64 %229
%231 = load double, double* %230
%232 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %231, double %227)
%233 = load i32, i32* %2
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds [49 x double], [49 x double]* %16, i64 0, i64 %234
%236 = load double, double* %235
%237 = fsub double %232, %236
%238 = load i32, i32* %2
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds [49 x double], [49 x double]* %22, i64 0, i64 %239
store double %237, double* %240
%241 = load i32, i32* %2
%242 = sext i32 %241 to i64
%243 = getelementptr inbounds [49 x double], [49 x double]* %10, i64 0, i64 %242
%244 = load double, double* %243
%245 = load i32, i32* %2
%246 = sext i32 %245 to i64
%247 = getelementptr inbounds [49 x double], [49 x double]* %19, i64 0, i64 %246
store double %244, double* %247
br label %248
248: ; preds = %223
%249 = load i32, i32* %2
%250 = add nsw i32 %249, 1
store i32 %250, i32* %2
br label %217
251: ; preds = %217
%252 = getelementptr inbounds [49 x double], [49 x double]* %22, i64 0, i64 0
%253 = getelementptr inbounds [49 x double], [49 x double]* %19, i64 0, i64 0
%254 = load i32, i32* %4
%255 = getelementptr inbounds [7 x double], [7 x double]* %17, i64 0, i64 0
%256 = getelementptr inbounds [49 x double], [49 x double]* %18, i64 0, i64 0
%257 = getelementptr inbounds [7 x double], [7 x double]* %20, i64 0, i64 0
%258 = getelementptr inbounds [7 x double], [7 x double]* %21, i64 0, i64 0
%259 = call i32 @gjacobi(double* %252, double* %253, i32 %254, double* %255, double* %256, double* %257, double* %258)
store i32 %259, i32* %6
store double 0.000000e+00, double* %24
store i32 0, i32* %2
br label %260
260: ; preds = %277, %251
%261 = load i32, i32* %2
%262 = load i32, i32* %4
%263 = load i32, i32* %4
%264 = mul nsw i32 %262, %263
%265 = icmp slt i32 %261, %264
br i1 %265, label %266, label %280
266: ; preds = %260
%267 = load i32, i32* %2
%268 = sext i32 %267 to i64
%269 = getelementptr inbounds [49 x double], [49 x double]* %9, i64 0, i64 %268
%270 = load double, double* %269
%271 = load i32, i32* %2
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds [49 x double], [49 x double]* %14, i64 0, i64 %272
%274 = load double, double* %273
%275 = load double, double* %24
%276 = call double @llvm.fmuladd.f64(double %270, double %274, double %275)
store double %276, double* %24
br label %277
277: ; preds = %266
%278 = load i32, i32* %2
%279 = add nsw i32 %278, 1
store i32 %279, i32* %2
br label %260
280: ; preds = %260
store double 0.000000e+00, double* %25
store i32 0, i32* %2
br label %281
281: ; preds = %298, %280
%282 = load i32, i32* %2
%283 = load i32, i32* %4
%284 = load i32, i32* %4
%285 = mul nsw i32 %283, %284
%286 = icmp slt i32 %282, %285
br i1 %286, label %287, label %301
287: ; preds = %281
%288 = load i32, i32* %2
%289 = sext i32 %288 to i64
%290 = getelementptr inbounds [49 x double], [49 x double]* %14, i64 0, i64 %289
%291 = load double, double* %290
%292 = load i32, i32* %2
%293 = sext i32 %292 to i64
%294 = getelementptr inbounds [49 x double], [49 x double]* %15, i64 0, i64 %293
%295 = load double, double* %294
%296 = load double, double* %25
%297 = call double @llvm.fmuladd.f64(double %291, double %295, double %296)
store double %297, double* %25
br label %298
298: ; preds = %287
%299 = load i32, i32* %2
%300 = add nsw i32 %299, 1
store i32 %300, i32* %2
br label %281
301: ; preds = %281
store double 0.000000e+00, double* %26
store i32 0, i32* %2
br label %302
302: ; preds = %319, %301
%303 = load i32, i32* %2
%304 = load i32, i32* %4
%305 = load i32, i32* %4
%306 = mul nsw i32 %304, %305
%307 = icmp slt i32 %303, %306
br i1 %307, label %308, label %322
308: ; preds = %302
%309 = load i32, i32* %2
%310 = sext i32 %309 to i64
%311 = getelementptr inbounds [49 x double], [49 x double]* %14, i64 0, i64 %310
%312 = load double, double* %311
%313 = load i32, i32* %2
%314 = sext i32 %313 to i64
%315 = getelementptr inbounds [49 x double], [49 x double]* %16, i64 0, i64 %314
%316 = load double, double* %315
%317 = load double, double* %26
%318 = call double @llvm.fmuladd.f64(double %312, double %316, double %317)
store double %318, double* %26
br label %319
319: ; preds = %308
%320 = load i32, i32* %2
%321 = add nsw i32 %320, 1
store i32 %321, i32* %2
br label %302
322: ; preds = %302
%323 = load double, double* %27
%324 = load double, double* %24
%325 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %324, double %323)
%326 = load double, double* %25
%327 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %326, double %325)
%328 = load double, double* %26
%329 = fsub double %327, %328
store double %329, double* %23
%330 = load i32, i32* %7
%331 = load double, double* %23
%332 = load double, double* %27
%333 = load double, double* %24
%334 = load double, double* %25
%335 = load double, double* %26
%336 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 %330, double %331, double %332, double %333, double %334, double %335)
br label %337
337: ; preds = %322
%338 = load i32, i32* %7
%339 = add nsw i32 %338, 1
store i32 %339, i32* %7
br label %197
340: ; preds = %197
ret i32 0
}

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