#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
double *dvector(int, int);
int /*<<< orphan*/ exit(int);
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
int /*<<< orphan*/ *fgets(char *, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int /*<<< orphan*/ perror(char *);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ rewind(int /*<<< orphan*/ *);
int /*<<< orphan*/ sscanf(char *, char *, double *, double *, double *,
                          double *, double *, ...);
void readidem3(char *sourceold, int *pns, double *reflat, double *reflon,
               double *refdepth, double *rake, double *strike, double **dip,
               double *oxdim, double *oydim, int *nsx, int *nsy, double *odiscx,
               double *odiscy, double **ox, double **oy, double **REslipo,
               double **rake_v, double **strike_v, double **lato, double **lono,
               double **depo) {
  FILE *fin2;
  int i, l, nsxy;
  char data[256];
  double lat1, lon1, depth1, dip1, ox1, oy1;
  printf("readidem3sou\n");
  fin2 = fopen(sourceold, "r");
  printf("sourceold=%s\n", sourceold);
  i = 0;
  if (sourceold == NULL)
    perror("Error opening file");
  while (fgets(data, 256, fin2) != NULL) {
    if (data[0] != '#') {
      i++;
    }
  }
  printf("i=%d\n", i);
  *pns = i;
  rewind(fin2);
  fgets(data, 256, fin2);
  *reflat = 99999.0;
  while (*reflat == 99999.0) {
    printf("reflat=%lf\n", *reflat);
    if (data[0] != '#') {
      sscanf(data, "%lf %lf %lf %*f %lf %*f %lf\n", reflat, reflon, refdepth,
             rake, &dip1);
    } else {
      fgets(data, 256, fin2);
    }
  }
  printf("reflat=%lf\n", *reflat);
  rewind(fin2);
  *oxdim = 0.0;
  *oydim = 0.0;
  i = 0;
  l = 0;
  while (fgets(data, 256, fin2) != NULL) {
    if (data[0] != '#') {
      sscanf(data, "%lf %lf %lf %*f %*f %*f %*f %lf %lf  \n", &lat1, &lon1,
             &depth1, &ox1, &oy1);
      if (*oxdim < ox1) {
        *oxdim = ox1;
        i++;
      }
      if (*oydim < oy1) {
        *oydim = oy1;
        l++;
      }
    }
  }
  rewind(fin2);
  *nsx = i;
  *nsy = l;
  if (*nsx * (*nsy) != *pns) {
    printf("nsx*nsy!=pns\n");
    exit(1);
  }
  printf("oxdim=%lf, oydim=%lf, nsx=%d, nsy=%d, pns=%d\n", *oxdim, *oydim, *nsx,
         *nsy, *pns);
  *ox = dvector(1, *pns);
  *oy = dvector(1, *pns);
  *REslipo = dvector(1, *pns);
  *lato = dvector(1, *pns);
  *lono = dvector(1, *pns);
  *depo = dvector(1, *pns);
  *rake_v = dvector(1, *pns);
  *strike_v = dvector(1, *pns);
  *dip = dvector(1, *pns);
  i = 1;
  while (fgets(data, 256, fin2) != NULL) {
    if (data[0] != '#') {
      sscanf(data, "%lf %lf %lf %lf %lf %lf %lf %lf %lf\n", &(*lato)[i],
             &(*lono)[i], &(*depo)[i], &(*REslipo)[i], &(*rake_v)[i],
             &(*strike_v)[i], &(*dip)[i], &(*ox)[i], &(*oy)[i]);
      i++;
    }
  }
  nsxy = i - 1;
  *odiscx = ((*ox)[i - 1] - (*ox)[1]) / (*nsx - 1);
  *odiscy = ((*oy)[i - 1] - (*oy)[1]) / (*nsy - 1);
  for (i = 1; i <= nsxy; i++) {
    (*ox)[i] = (*ox)[i] - (*odiscx);
    (*oy)[i] = (*oy)[i] - (*odiscy);
  }
  printf("oy[i-1]=%lf, oy[1]=%lf, nsy=%d\n", (*oy)[i - 1], (*oy)[1], *nsy - 1);
  printf("oxdim=%lf, oydim=%lf, odiscx=%lf, odiscy=%lf, i=%d\n", *oxdim, *oydim,
         *odiscx, *odiscy, i);
  fclose(fin2);
}


x86 assembly (clang, -O0):
<readidem3>:
push   %rbp
mov    %rsp,%rbp
push   %r14
push   %rbx
sub    $0x1b0,%rsp
mov    0x88(%rbp),%rax
mov    0x80(%rbp),%rax
mov    0x78(%rbp),%rax
mov    0x70(%rbp),%rax
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%rax
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x18(%rbp)
mov    %rsi,-0x20(%rbp)
mov    %rdx,-0x28(%rbp)
mov    %rcx,-0x30(%rbp)
mov    %r8,-0x38(%rbp)
mov    %r9,-0x40(%rbp)
lea    0xe05(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x18(%rbp),%rdi
lea    0xe01(%rip),%rsi
call   1090 <fopen@plt>
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rsi
lea    0xdef(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x0,-0x4c(%rbp)
cmpq   $0x0,-0x18(%rbp)
jne    124e <readidem3+0xbe>
lea    0xddd(%rip),%rdi
call   10a0 <perror@plt>
jmp    1253 <readidem3+0xc3>
lea    -0x160(%rbp),%rdi
mov    -0x48(%rbp),%rdx
mov    $0x100,%esi
call   1060 <fgets@plt>
cmp    $0x0,%rax
je     1290 <readidem3+0x100>
movsbl -0x160(%rbp),%eax
cmp    $0x23,%eax
je     128b <readidem3+0xfb>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1253 <readidem3+0xc3>
mov    -0x4c(%rbp),%esi
lea    0xe9e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x4c(%rbp),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x48(%rbp),%rdi
call   1050 <rewind@plt>
lea    -0x160(%rbp),%rdi
mov    -0x48(%rbp),%rdx
mov    $0x100,%esi
call   1060 <fgets@plt>
mov    -0x28(%rbp),%rax
movsd  0xd2c(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xd18(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    136d <readidem3+0x1dd>
jp     136d <readidem3+0x1dd>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
lea    0xd32(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movsbl -0x160(%rbp),%eax
cmp    $0x23,%eax
je     1353 <readidem3+0x1c3>
lea    -0x160(%rbp),%rdi
mov    -0x28(%rbp),%rdx
mov    -0x30(%rbp),%rcx
mov    -0x38(%rbp),%r8
mov    -0x40(%rbp),%r9
lea    0xd09(%rip),%rsi
lea    -0x180(%rbp),%rax
mov    %rax,(%rsp)
mov    $0x0,%al
call   1070 <sscanf@plt>
jmp    1368 <readidem3+0x1d8>
lea    -0x160(%rbp),%rdi
mov    -0x48(%rbp),%rdx
mov    $0x100,%esi
call   1060 <fgets@plt>
jmp    12d8 <readidem3+0x148>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
lea    0xcbd(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    -0x48(%rbp),%rdi
call   1050 <rewind@plt>
mov    0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
movl   $0x0,-0x4c(%rbp)
movl   $0x0,-0x50(%rbp)
lea    -0x160(%rbp),%rdi
mov    -0x48(%rbp),%rdx
mov    $0x100,%esi
call   1060 <fgets@plt>
cmp    $0x0,%rax
je     148b <readidem3+0x2fb>
movsbl -0x160(%rbp),%eax
cmp    $0x23,%eax
je     1486 <readidem3+0x2f6>
lea    -0x160(%rbp),%rdi
lea    0xc75(%rip),%rsi
lea    -0x168(%rbp),%rdx
lea    -0x170(%rbp),%rcx
lea    -0x178(%rbp),%r8
lea    -0x188(%rbp),%r9
lea    -0x190(%rbp),%rax
mov    %rax,(%rsp)
mov    $0x0,%al
call   1070 <sscanf@plt>
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x188(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    144e <readidem3+0x2be>
movsd  -0x188(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x190(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1481 <readidem3+0x2f1>
movsd  -0x190(%rbp),%xmm0
ff
mov    0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    1486 <readidem3+0x2f6>
jmp    13b0 <readidem3+0x220>
mov    -0x48(%rbp),%rdi
call   1050 <rewind@plt>
mov    -0x4c(%rbp),%ecx
mov    0x30(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x50(%rbp),%ecx
mov    0x38(%rbp),%rax
mov    %ecx,(%rax)
mov    0x30(%rbp),%rax
mov    (%rax),%eax
mov    0x38(%rbp),%rcx
imul   (%rcx),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
je     14d7 <readidem3+0x347>
lea    0xbc3(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x1,%edi
call   10b0 <exit@plt>
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x30(%rbp),%rax
mov    (%rax),%esi
mov    0x38(%rbp),%rax
mov    (%rax),%edx
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
lea    0xb97(%rip),%rdi
mov    $0x2,%al
call   1040 <printf@plt>
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    $0x1,%edi
call   1080 <dvector@plt>
mov    %rax,%rcx
mov    0x50(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    $0x1,%edi
call   1080 <dvector@plt>
mov    %rax,%rcx
mov    0x58(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    $0x1,%edi
call   1080 <dvector@plt>
mov    %rax,%rcx
mov    0x60(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    $0x1,%edi
call   1080 <dvector@plt>
mov    %rax,%rcx
mov    0x78(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    $0x1,%edi
call   1080 <dvector@plt>
mov    %rax,%rcx
mov    0x80(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    $0x1,%edi
call   1080 <dvector@plt>
mov    %rax,%rcx
mov    0x88(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    $0x1,%edi
call   1080 <dvector@plt>
mov    %rax,%rcx
mov    0x68(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    $0x1,%edi
call   1080 <dvector@plt>
mov    %rax,%rcx
mov    0x70(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%esi
mov    $0x1,%edi
call   1080 <dvector@plt>
mov    %rax,%rcx
mov    0x18(%rbp),%rax
mov    %rcx,(%rax)
movl   $0x1,-0x4c(%rbp)
lea    -0x160(%rbp),%rdi
mov    -0x48(%rbp),%rdx
mov    $0x100,%esi
call   1060 <fgets@plt>
cmp    $0x0,%rax
je     1710 <readidem3+0x580>
movsbl -0x160(%rbp),%eax
cmp    $0x23,%eax
je     170b <readidem3+0x57b>
lea    -0x160(%rbp),%rdi
mov    0x78(%rbp),%rax
mov    (%rax),%rdx
movslq -0x4c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%rdx
mov    0x80(%rbp),%rax
mov    (%rax),%rcx
movslq -0x4c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%rcx
mov    0x88(%rbp),%rax
mov    (%rax),%r8
movslq -0x4c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r8
mov    0x60(%rbp),%rax
mov    (%rax),%r9
movslq -0x4c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r9
mov    0x68(%rbp),%rax
mov    (%rax),%r14
movslq -0x4c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r14
mov    0x70(%rbp),%rax
mov    (%rax),%rbx
movslq -0x4c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%rbx
mov    0x18(%rbp),%rax
mov    (%rax),%r11
movslq -0x4c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r11
mov    0x50(%rbp),%rax
mov    (%rax),%r10
movslq -0x4c(%rbp),%rax
shl    $0x3,%rax
add    %rax,%r10
mov    0x58(%rbp),%rax
mov    (%rax),%rax
movslq -0x4c(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rax
lea    0x9e2(%rip),%rsi
mov    %r14,(%rsp)
mov    %rbx,0x8(%rsp)
mov    %r11,0x10(%rsp)
mov    %r10,0x18(%rsp)
mov    %rax,0x20(%rsp)
mov    $0x0,%al
call   1070 <sscanf@plt>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    15fe <readidem3+0x46e>
mov    -0x4c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x54(%rbp)
mov    0x50(%rbp),%rax
mov    (%rax),%rax
mov    -0x4c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x50(%rbp),%rax
mov    (%rax),%rax
subsd  0x8(%rax),%xmm0
mov    0x30(%rbp),%rax
mov    (%rax),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
mov    0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x58(%rbp),%rax
mov    (%rax),%rax
mov    -0x4c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x58(%rbp),%rax
mov    (%rax),%rax
subsd  0x8(%rax),%xmm0
mov    0x38(%rbp),%rax
mov    (%rax),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
mov    0x48(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x1,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x54(%rbp),%eax
jg     17fe <readidem3+0x66e>
mov    0x50(%rbp),%rax
mov    (%rax),%rax
movslq -0x4c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x40(%rbp),%rax
subsd  (%rax),%xmm0
mov    0x50(%rbp),%rax
mov    (%rax),%rax
movslq -0x4c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x58(%rbp),%rax
mov    (%rax),%rax
movslq -0x4c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x48(%rbp),%rax
subsd  (%rax),%xmm0
mov    0x58(%rbp),%rax
mov    (%rax),%rax
movslq -0x4c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1794 <readidem3+0x604>
mov    0x58(%rbp),%rax
mov    (%rax),%rax
mov    -0x4c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x58(%rbp),%rax
mov    (%rax),%rax
movsd  0x8(%rax),%xmm1
mov    0x38(%rbp),%rax
mov    (%rax),%esi
sub    $0x1,%esi
lea    0x8bb(%rip),%rdi
mov    $0x2,%al
call   1040 <printf@plt>
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm2
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm3
mov    -0x4c(%rbp),%esi
lea    0x8aa(%rip),%rdi
mov    $0x4,%al
call   1040 <printf@plt>
mov    -0x48(%rbp),%rdi
call   1030 <fclose@plt>
add    $0x1b0,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

x86 assembly (clang, -O2):
<readidem3>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x158,%rsp
mov    %r9,0x18(%rsp)
mov    %r8,0x10(%rsp)
mov    %rcx,0x8(%rsp)
mov    %rdx,%rbp
mov    %rsi,%r12
mov    %rdi,%rbx
lea    0xf52(%rip),%rdi
call   1030 <puts@plt>
lea    0xe2c(%rip),%rsi
mov    %rbx,%rdi
call   10a0 <fopen@plt>
mov    %rax,%r15
lea    0xe1c(%rip),%rdi
xor    %r14d,%r14d
mov    %rbx,%rsi
xor    %eax,%eax
call   1050 <printf@plt>
test   %rbx,%rbx
je     1959 <readidem3+0x7b9>
lea    0x50(%rsp),%rdi
mov    $0x100,%esi
mov    %r15,%rdx
call   1070 <fgets@plt>
test   %rax,%rax
je     1252 <readidem3+0xb2>
xor    %r14d,%r14d
lea    0x50(%rsp),%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
xor    %eax,%eax
cmpb   $0x23,0x50(%rsp)
setne  %al
add    %eax,%r14d
mov    %rbx,%rdi
mov    $0x100,%esi
mov    %r15,%rdx
call   1070 <fgets@plt>
test   %rax,%rax
jne    1230 <readidem3+0x90>
lea    0xec3(%rip),%rdi
mov    %r14d,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r12,(%rsp)
mov    %r14d,(%r12)
mov    %r15,%rdi
call   1060 <rewind@plt>
lea    0x50(%rsp),%r14
mov    %r14,%rdi
mov    $0x100,%esi
mov    %r15,%rdx
call   1070 <fgets@plt>
movabs $0x40f869f000000000,%rax
69 f8 40
mov    %rax,0x0(%rbp)
lea    0xd8e(%rip),%rbx
movsd  0xd5b(%rip),%xmm1
lea    0x30(%rsp),%r13
lea    0xd86(%rip),%r12
jmp    12e5 <readidem3+0x145>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r14,%rdi
mov    $0x100,%esi
mov    %r15,%rdx
call   1070 <fgets@plt>
movsd  0x0(%rbp),%xmm0
movsd  0xd23(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1325 <readidem3+0x185>
jp     1325 <readidem3+0x185>
mov    %rbx,%rdi
movapd %xmm1,%xmm0
mov    $0x1,%al
call   1050 <printf@plt>
cmpb   $0x23,0x50(%rsp)
je     12c0 <readidem3+0x120>
sub    $0x8,%rsp
mov    %r14,%rdi
mov    %r12,%rsi
mov    %rbp,%rdx
mov    0x10(%rsp),%rcx
mov    0x18(%rsp),%r8
mov    0x20(%rsp),%r9
xor    %eax,%eax
push   %r13
call   1080 <sscanf@plt>
add    $0x10,%rsp
jmp    12d0 <readidem3+0x130>
lea    0xcff(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
mov    %r15,%rdi
call   1060 <rewind@plt>
mov    0x1a0(%rsp),%rax
movq   $0x0,(%rax)
mov    0x1a8(%rsp),%rax
movq   $0x0,(%rax)
lea    0x50(%rsp),%rdi
mov    $0x100,%esi
mov    %r15,%rdx
call   1070 <fgets@plt>
test   %rax,%rax
je     141a <readidem3+0x27a>
lea    0x50(%rsp),%rbx
lea    0x28(%rsp),%r12
xor    %r13d,%r13d
xor    %r14d,%r14d
jmp    13a5 <readidem3+0x205>
cs nopw 0x0(%rax,%rax,1)
mov    %rbx,%rdi
mov    $0x100,%esi
mov    %r15,%rdx
call   1070 <fgets@plt>
test   %rax,%rax
je     1420 <readidem3+0x280>
cmpb   $0x23,0x50(%rsp)
je     1390 <readidem3+0x1f0>
sub    $0x8,%rsp
mov    %rbx,%rdi
lea    0xc9a(%rip),%rsi
lea    0x50(%rsp),%rdx
lea    0x48(%rsp),%rcx
lea    0x40(%rsp),%r8
mov    %r12,%r9
xor    %eax,%eax
lea    0x28(%rsp),%rbp
push   %rbp
call   1080 <sscanf@plt>
add    $0x10,%rsp
movsd  0x28(%rsp),%xmm0
mov    0x1a0(%rsp),%rax
ucomisd (%rax),%xmm0
jbe    13f9 <readidem3+0x259>
movsd  %xmm0,(%rax)
add    $0x1,%r13d
mov    0x1a8(%rsp),%rax
movsd  0x20(%rsp),%xmm0
ucomisd (%rax),%xmm0
jbe    1390 <readidem3+0x1f0>
movsd  %xmm0,(%rax)
add    $0x1,%r14d
jmp    1390 <readidem3+0x1f0>
xor    %r14d,%r14d
xor    %r13d,%r13d
mov    %r15,%rdi
call   1060 <rewind@plt>
mov    0x1b0(%rsp),%rcx
mov    %r13d,(%rcx)
mov    0x1b8(%rsp),%rax
mov    %r14d,(%rax)
mov    (%rcx),%esi
mov    %esi,%ecx
imul   %r14d,%ecx
mov    (%rsp),%rbx
cmp    (%rbx),%ecx
jne    197e <readidem3+0x7de>
mov    0x1a0(%rsp),%rax
movsd  (%rax),%xmm0
mov    0x1a8(%rsp),%rax
movsd  (%rax),%xmm1
lea    0xc0a(%rip),%rdi
mov    %r14d,%edx
mov    $0x2,%al
call   1050 <printf@plt>
mov    (%rbx),%esi
mov    $0x1,%edi
call   1090 <dvector@plt>
mov    0x1d0(%rsp),%rcx
mov    %rax,(%rcx)
mov    (%rbx),%esi
mov    $0x1,%edi
call   1090 <dvector@plt>
mov    0x1d8(%rsp),%rcx
mov    %rax,(%rcx)
mov    (%rbx),%esi
mov    $0x1,%edi
call   1090 <dvector@plt>
mov    0x1e0(%rsp),%rcx
mov    %rax,(%rcx)
mov    (%rbx),%esi
mov    $0x1,%edi
call   1090 <dvector@plt>
mov    0x1f8(%rsp),%rcx
mov    %rax,(%rcx)
mov    (%rbx),%esi
mov    $0x1,%edi
call   1090 <dvector@plt>
mov    0x200(%rsp),%rcx
mov    %rax,(%rcx)
mov    (%rbx),%esi
mov    $0x1,%edi
call   1090 <dvector@plt>
mov    0x208(%rsp),%rcx
mov    %rax,(%rcx)
mov    (%rbx),%esi
mov    $0x1,%edi
call   1090 <dvector@plt>
mov    0x1e8(%rsp),%rcx
mov    %rax,(%rcx)
mov    (%rbx),%esi
mov    $0x1,%edi
call   1090 <dvector@plt>
mov    0x1f0(%rsp),%rcx
mov    %rax,(%rcx)
mov    (%rbx),%esi
mov    $0x1,%edi
call   1090 <dvector@plt>
mov    0x198(%rsp),%rcx
mov    %rax,(%rcx)
lea    0x50(%rsp),%rdi
mov    $0x100,%esi
mov    %r15,%rdx
call   1070 <fgets@plt>
mov    $0x1,%r12d
test   %rax,%rax
je     1650 <readidem3+0x4b0>
mov    $0x1,%r12d
lea    0x50(%rsp),%r13
jmp    1599 <readidem3+0x3f9>
nopl   0x0(%rax,%rax,1)
mov    %r13,%rdi
mov    $0x100,%esi
mov    %r15,%rdx
call   1070 <fgets@plt>
test   %rax,%rax
je     1650 <readidem3+0x4b0>
cmpb   $0x23,0x50(%rsp)
je     1580 <readidem3+0x3e0>
movslq %r12d,%r12
lea    0x0(,%r12,8),%rbp
mov    0x1f8(%rsp),%rax
mov    (%rax),%rdx
add    %rbp,%rdx
mov    0x200(%rsp),%rax
mov    (%rax),%rcx
add    %rbp,%rcx
mov    0x208(%rsp),%rax
mov    (%rax),%r8
add    %rbp,%r8
mov    0x1e0(%rsp),%rax
mov    (%rax),%r9
add    %rbp,%r9
mov    0x1e8(%rsp),%rax
mov    (%rax),%r10
add    %rbp,%r10
mov    0x1f0(%rsp),%rax
mov    (%rax),%r11
add    %rbp,%r11
mov    0x198(%rsp),%rax
mov    (%rax),%rbx
add    %rbp,%rbx
mov    0x1d0(%rsp),%rax
mov    (%rax),%r14
add    %rbp,%r14
mov    0x1d8(%rsp),%rax
add    (%rax),%rbp
sub    $0x8,%rsp
mov    %r13,%rdi
lea    0xa75(%rip),%rsi
xor    %eax,%eax
push   %rbp
push   %r14
push   %rbx
push   %r11
push   %r10
call   1080 <sscanf@plt>
add    $0x30,%rsp
add    $0x1,%r12d
jmp    1580 <readidem3+0x3e0>
mov    0x1d0(%rsp),%rax
mov    (%rax),%rcx
movslq %r12d,%rdx
movsd  -0x8(%rcx,%rdx,8),%xmm0
subsd  0x8(%rcx),%xmm0
mov    0x1b0(%rsp),%rax
mov    (%rax),%eax
add    $0xffffffff,%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
mov    0x1c0(%rsp),%r14
movsd  %xmm0,(%r14)
mov    0x1d8(%rsp),%rax
mov    (%rax),%rax
movsd  -0x8(%rax,%rdx,8),%xmm0
subsd  0x8(%rax),%xmm0
mov    0x1b8(%rsp),%rsi
mov    (%rsi),%esi
add    $0xffffffff,%esi
xorps  %xmm1,%xmm1
cvtsi2sd %esi,%xmm1
divsd  %xmm1,%xmm0
mov    0x1c8(%rsp),%rbx
movsd  %xmm0,(%rbx)
cmp    $0x2,%edx
mov    $0x1,%edx
jl     18d1 <readidem3+0x731>
mov    %r12d,%edx
lea    -0x1(%rdx),%rbp
mov    $0x1,%edi
cmp    $0x2,%rbp
jae    176c <readidem3+0x5cc>
mov    %rdi,%rbp
not    %rbp
test   $0x1,%dl
jne    1715 <readidem3+0x575>
movsd  (%rcx,%rdi,8),%xmm0
subsd  (%r14),%xmm0
movsd  %xmm0,(%rcx,%rdi,8)
movsd  (%rax,%rdi,8),%xmm0
subsd  (%rbx),%xmm0
movsd  %xmm0,(%rax,%rdi,8)
add    $0x1,%rdi
add    %rdx,%rbp
je     18ce <readidem3+0x72e>
xchg   %ax,%ax
movsd  (%rcx,%rdi,8),%xmm0
subsd  (%r14),%xmm0
movsd  %xmm0,(%rcx,%rdi,8)
movsd  (%rax,%rdi,8),%xmm0
subsd  (%rbx),%xmm0
movsd  %xmm0,(%rax,%rdi,8)
movsd  0x8(%rcx,%rdi,8),%xmm0
subsd  (%r14),%xmm0
movsd  %xmm0,0x8(%rcx,%rdi,8)
movsd  0x8(%rax,%rdi,8),%xmm0
subsd  (%rbx),%xmm0
movsd  %xmm0,0x8(%rax,%rdi,8)
add    $0x2,%rdi
cmp    %rdi,%rdx
jne    1720 <readidem3+0x580>
jmp    18ce <readidem3+0x72e>
mov    %rbp,(%rsp)
lea    0x8(%rcx),%r9
lea    (%rcx,%rdx,8),%rbp
lea    0x8(%rax),%r8
mov    %r14,%r11
lea    (%rax,%rdx,8),%r13
cmp    %r13,%r9
setb   0x18(%rsp)
cmp    %rbp,%r8
setb   %r14b
cmp    %r11,%rcx
setb   %r9b
cmp    %r11,%rbp
seta   0x10(%rsp)
cmp    %rbx,%rcx
setb   %r8b
cmp    %rbx,%rbp
seta   %bpl
cmp    %r11,%rax
setb   %r10b
cmp    %r11,%r13
seta   0x8(%rsp)
cmp    %rbx,%rax
setb   %r11b
cmp    %rbx,%r13
seta   %r13b
test   %r14b,0x18(%rsp)
jne    1938 <readidem3+0x798>
and    0x10(%rsp),%r9b
jne    1938 <readidem3+0x798>
and    %bpl,%r8b
jne    1938 <readidem3+0x798>
and    0x8(%rsp),%r10b
jne    1938 <readidem3+0x798>
and    %r13b,%r11b
mov    0x1c8(%rsp),%rbx
mov    0x1c0(%rsp),%r14
jne    16e9 <readidem3+0x549>
mov    (%rsp),%r9
mov    %r9,%r8
and    $0xfffffffffffffffe,%r8
lea    -0x2(%r8),%rdi
mov    %rdi,%r10
shr    %r10
add    $0x1,%r10
test   %rdi,%rdi
je     196a <readidem3+0x7ca>
mov    %r10,%rbp
and    $0xfffffffffffffffe,%rbp
movsd  (%r14),%xmm0
unpcklpd %xmm0,%xmm0
movsd  (%rbx),%xmm1
unpcklpd %xmm1,%xmm1
mov    $0x1,%edi
xchg   %ax,%ax
movupd (%rcx,%rdi,8),%xmm2
subpd  %xmm0,%xmm2
movupd %xmm2,(%rcx,%rdi,8)
movupd (%rax,%rdi,8),%xmm2
subpd  %xmm1,%xmm2
movupd %xmm2,(%rax,%rdi,8)
movupd 0x10(%rcx,%rdi,8),%xmm2
subpd  %xmm0,%xmm2
movupd %xmm2,0x10(%rcx,%rdi,8)
movupd 0x10(%rax,%rdi,8),%xmm2
subpd  %xmm1,%xmm2
movupd %xmm2,0x10(%rax,%rdi,8)
add    $0x4,%rdi
add    $0xfffffffffffffffe,%rbp
jne    1850 <readidem3+0x6b0>
test   $0x1,%r10b
je     18c9 <readidem3+0x729>
movupd (%rcx,%rdi,8),%xmm0
movsd  (%r14),%xmm1
unpcklpd %xmm1,%xmm1
subpd  %xmm1,%xmm0
movupd %xmm0,(%rcx,%rdi,8)
movupd (%rax,%rdi,8),%xmm0
movsd  (%rbx),%xmm1
unpcklpd %xmm1,%xmm1
subpd  %xmm1,%xmm0
movupd %xmm0,(%rax,%rdi,8)
cmp    %r8,%r9
jne    194d <readidem3+0x7ad>
mov    %r12d,%edx
movslq %edx,%rbp
movsd  -0x8(%rax,%rbp,8),%xmm0
movsd  0x8(%rax),%xmm1
lea    0x7e8(%rip),%rdi
mov    $0x2,%al
call   1050 <printf@plt>
mov    0x1a0(%rsp),%rax
movsd  (%rax),%xmm0
mov    0x1a8(%rsp),%rax
movsd  (%rax),%xmm1
movsd  (%r14),%xmm2
movsd  (%rbx),%xmm3
lea    0x7d9(%rip),%rdi
mov    %ebp,%esi
mov    $0x4,%al
call   1050 <printf@plt>
mov    %r15,%rdi
call   1040 <fclose@plt>
add    $0x158,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    0x1c8(%rsp),%rbx
mov    0x1c0(%rsp),%r14
jmp    16e9 <readidem3+0x549>
or     $0x1,%r9
mov    %r9,%rdi
jmp    16e9 <readidem3+0x549>
lea    0x6b8(%rip),%rdi
call   10b0 <perror@plt>
jmp    1204 <readidem3+0x64>
mov    $0x1,%edi
test   $0x1,%r10b
jne    189c <readidem3+0x6fc>
jmp    18c9 <readidem3+0x729>
lea    0x7aa(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%edi
call   10c0 <exit@plt>

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

LLVM IR (-O2):
@.str.1 = [2 x i8] c"r\00"
@.str.2 = [14 x i8] c"sourceold=%s\0A\00"
@.str.3 = [19 x i8] c"Error opening file\00"
@.str.4 = [6 x i8] c"i=%d\0A\00"
@.str.5 = [12 x i8] c"reflat=%lf\0A\00"
@.str.6 = [29 x i8] c"%lf %lf %lf %*f %lf %*f %lf\0A\00"
@.str.7 = [39 x i8] c"%lf %lf %lf %*f %*f %*f %*f %lf %lf \0A\00"
@.str.9 = [46 x i8] c"oxdim=%lf, oydim=%lf, nsx=%d, nsy=%d, pns=%d\0A\00"
@.str.10 = [37 x i8] c"%lf %lf %lf %lf %lf %lf %lf %lf %lf\0A\00"
@.str.11 = [32 x i8] c"oy[i-1]=%lf, oy[1]=%lf, nsy=%d\0A\00"
@.str.12 = [52 x i8] c"oxdim=%lf, oydim=%lf, odiscx=%lf, odiscy=%lf, i=%d\0A\00"
@str = [13 x i8] c"readidem3sou\00"
@str.13 = [13 x i8] c"nsx*nsy!=pns\00"
define void @readidem3(i8* %0, i32* nocapture %1, double* %2, double* %3, double* %4, double* %5, double* nocapture readnone %6, double** nocapture %7, double* nocapture %8, double* nocapture %9, i32* nocapture %10, i32* nocapture %11, double* nocapture %12, double* nocapture %13, double** nocapture %14, double** nocapture %15, double** nocapture %16, double** nocapture %17, double** nocapture %18, double** nocapture %19, double** nocapture %20, double** nocapture %21) {
%23 = alloca [256 x i8]
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = getelementptr inbounds [256 x i8], [256 x i8]* %23, i64 0, i64 0
%31 = bitcast double* %24 to i8*
%32 = bitcast double* %25 to i8*
%33 = bitcast double* %26 to i8*
%34 = bitcast double* %27 to i8*
%35 = bitcast double* %28 to i8*
%36 = bitcast double* %29 to i8*
%37 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str, i64 0, i64 0))
%38 = tail call i32* @fopen(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%39 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i8* %0)
%40 = icmp eq i8* %0, null
br i1 %40, label %41, label %43
41: ; preds = %22
%42 = tail call i32 @perror(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0))
br label %43
43: ; preds = %41, %22
%44 = call i32* @fgets(i8* %30, i32 256, i32* %38)
%45 = icmp eq i32* %44, null
br i1 %45, label %54, label %46
46: ; preds = %43, %46
%47 = phi i32 [ %51, %46 ], [ 0, %43 ]
%48 = load i8, i8* %30
%49 = icmp ne i8 %48, 35
%50 = zext i1 %49 to i32
%51 = add nuw nsw i32 %47, %50
%52 = call i32* @fgets(i8* %30, i32 256, i32* %38)
%53 = icmp eq i32* %52, null
br i1 %53, label %54, label %46
54: ; preds = %46, %43
%55 = phi i32 [ 0, %43 ], [ %51, %46 ]
%56 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), i32 %55)
store i32 %55, i32* %1
%57 = call i32 @rewind(i32* %38)
%58 = call i32* @fgets(i8* %30, i32 256, i32* %38)
store double 9.999900e+04, double* %2
br label %59
59: ; preds = %54, %67
%60 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0), double 9.999900e+04)
%61 = load i8, i8* %30
%62 = icmp eq i8 %61, 35
br i1 %62, label %65, label %63
63: ; preds = %59
%64 = call i32 (i8*, i8*, double*, double*, double*, double*, double*, ...) @sscanf(i8* %30, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.6, i64 0, i64 0), double* %2, double* %3, double* %4, double* %5, double* %27)
br label %67
65: ; preds = %59
%66 = call i32* @fgets(i8* %30, i32 256, i32* %38)
br label %67
67: ; preds = %65, %63
%68 = load double, double* %2
%69 = fcmp oeq double %68, 9.999900e+04
br i1 %69, label %59, label %70
70: ; preds = %67
%71 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0), double %68)
%72 = call i32 @rewind(i32* %38)
store double 0.000000e+00, double* %8
store double 0.000000e+00, double* %9
%73 = call i32* @fgets(i8* %30, i32 256, i32* %38)
%74 = icmp eq i32* %73, null
br i1 %74, label %99, label %75
75: ; preds = %70, %94
%76 = phi i32 [ %96, %94 ], [ 0, %70 ]
%77 = phi i32 [ %95, %94 ], [ 0, %70 ]
%78 = load i8, i8* %30
%79 = icmp eq i8 %78, 35
br i1 %79, label %94, label %80
80: ; preds = %75
%81 = call i32 (i8*, i8*, double*, double*, double*, double*, double*, ...) @sscanf(i8* %30, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.7, i64 0, i64 0), double* %24, double* %25, double* %26, double* %28, double* %29)
%82 = load double, double* %8
%83 = load double, double* %28
%84 = fcmp olt double %82, %83
br i1 %84, label %85, label %87
85: ; preds = %80
store double %83, double* %8
%86 = add nsw i32 %76, 1
br label %87
87: ; preds = %85, %80
%88 = phi i32 [ %86, %85 ], [ %76, %80 ]
%89 = load double, double* %9
%90 = load double, double* %29
%91 = fcmp olt double %89, %90
br i1 %91, label %92, label %94
92: ; preds = %87
store double %90, double* %9
%93 = add nsw i32 %77, 1
br label %94
94: ; preds = %87, %92, %75
%95 = phi i32 [ %93, %92 ], [ %77, %87 ], [ %77, %75 ]
%96 = phi i32 [ %88, %92 ], [ %88, %87 ], [ %76, %75 ]
%97 = call i32* @fgets(i8* %30, i32 256, i32* %38)
%98 = icmp eq i32* %97, null
br i1 %98, label %99, label %75
99: ; preds = %94, %70
%100 = phi i32 [ 0, %70 ], [ %95, %94 ]
%101 = phi i32 [ 0, %70 ], [ %96, %94 ]
%102 = call i32 @rewind(i32* %38)
store i32 %101, i32* %10
store i32 %100, i32* %11
%103 = load i32, i32* %10
%104 = mul nsw i32 %103, %100
%105 = load i32, i32* %1
%106 = icmp eq i32 %104, %105
br i1 %106, label %110, label %107
107: ; preds = %99
%108 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.13, i64 0, i64 0))
%109 = call i32 @exit(i32 1)
unreachable
110: ; preds = %99
%111 = load double, double* %8
%112 = load double, double* %9
%113 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.9, i64 0, i64 0), double %111, double %112, i32 %103, i32 %100, i32 %104)
%114 = load i32, i32* %1
%115 = call double* @dvector(i32 1, i32 %114)
store double* %115, double** %14
%116 = load i32, i32* %1
%117 = call double* @dvector(i32 1, i32 %116)
store double* %117, double** %15
%118 = load i32, i32* %1
%119 = call double* @dvector(i32 1, i32 %118)
store double* %119, double** %16
%120 = load i32, i32* %1
%121 = call double* @dvector(i32 1, i32 %120)
store double* %121, double** %19
%122 = load i32, i32* %1
%123 = call double* @dvector(i32 1, i32 %122)
store double* %123, double** %20
%124 = load i32, i32* %1
%125 = call double* @dvector(i32 1, i32 %124)
store double* %125, double** %21
%126 = load i32, i32* %1
%127 = call double* @dvector(i32 1, i32 %126)
store double* %127, double** %17
%128 = load i32, i32* %1
%129 = call double* @dvector(i32 1, i32 %128)
store double* %129, double** %18
%130 = load i32, i32* %1
%131 = call double* @dvector(i32 1, i32 %130)
store double* %131, double** %7
%132 = call i32* @fgets(i8* %30, i32 256, i32* %38)
%133 = icmp eq i32* %132, null
br i1 %133, label %164, label %134
134: ; preds = %110, %160
%135 = phi i32 [ %161, %160 ], [ 1, %110 ]
%136 = load i8, i8* %30
%137 = icmp eq i8 %136, 35
br i1 %137, label %160, label %138
138: ; preds = %134
%139 = load double*, double** %19
%140 = sext i32 %135 to i64
%141 = getelementptr inbounds double, double* %139, i64 %140
%142 = load double*, double** %20
%143 = getelementptr inbounds double, double* %142, i64 %140
%144 = load double*, double** %21
%145 = getelementptr inbounds double, double* %144, i64 %140
%146 = load double*, double** %16
%147 = getelementptr inbounds double, double* %146, i64 %140
%148 = load double*, double** %17
%149 = getelementptr inbounds double, double* %148, i64 %140
%150 = load double*, double** %18
%151 = getelementptr inbounds double, double* %150, i64 %140
%152 = load double*, double** %7
%153 = getelementptr inbounds double, double* %152, i64 %140
%154 = load double*, double** %14
%155 = getelementptr inbounds double, double* %154, i64 %140
%156 = load double*, double** %15
%157 = getelementptr inbounds double, double* %156, i64 %140
%158 = call i32 (i8*, i8*, double*, double*, double*, double*, double*, ...) @sscanf(i8* %30, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0), double* %141, double* %143, double* %145, double* %147, double* %149, double* %151, double* %153, double* %155, double* %157)
%159 = add nsw i32 %135, 1
br label %160
160: ; preds = %138, %134
%161 = phi i32 [ %159, %138 ], [ %135, %134 ]
%162 = call i32* @fgets(i8* %30, i32 256, i32* %38)
%163 = icmp eq i32* %162, null
br i1 %163, label %164, label %134
164: ; preds = %160, %110
%165 = phi i32 [ 1, %110 ], [ %161, %160 ]
%166 = add nsw i32 %165, -1
%167 = load double*, double** %14
%168 = sext i32 %166 to i64
%169 = getelementptr inbounds double, double* %167, i64 %168
%170 = load double, double* %169
%171 = getelementptr inbounds double, double* %167, i64 1
%172 = load double, double* %171
%173 = fsub double %170, %172
%174 = load i32, i32* %10
%175 = add nsw i32 %174, -1
%176 = sitofp i32 %175 to double
%177 = fdiv double %173, %176
store double %177, double* %12
%178 = load double*, double** %15
%179 = getelementptr inbounds double, double* %178, i64 %168
%180 = load double, double* %179
%181 = getelementptr inbounds double, double* %178, i64 1
%182 = load double, double* %181
%183 = fsub double %180, %182
%184 = load i32, i32* %11
%185 = add nsw i32 %184, -1
%186 = sitofp i32 %185 to double
%187 = fdiv double %183, %186
store double %187, double* %13
%188 = icmp sgt i32 %165, 1
br i1 %188, label %189, label %331
189: ; preds = %164
%190 = zext i32 %165 to i64
%191 = add nsw i64 %190, -1
%192 = icmp ult i64 %191, 2
br i1 %192, label %291, label %193
193: ; preds = %189
%194 = getelementptr double, double* %167, i64 1
%195 = getelementptr double, double* %167, i64 %190
%196 = getelementptr double, double* %178, i64 1
%197 = getelementptr double, double* %178, i64 %190
%198 = icmp ult double* %194, %197
%199 = icmp ult double* %196, %195
%200 = and i1 %198, %199
%201 = icmp ult double* %167, %12
%202 = icmp ugt double* %195, %12
%203 = and i1 %201, %202
%204 = or i1 %200, %203
%205 = icmp ult double* %167, %13
%206 = icmp ugt double* %195, %13
%207 = and i1 %205, %206
%208 = or i1 %204, %207
%209 = icmp ult double* %178, %12
%210 = icmp ugt double* %197, %12
%211 = and i1 %209, %210
%212 = or i1 %208, %211
%213 = icmp ult double* %178, %13
%214 = icmp ugt double* %197, %13
%215 = and i1 %213, %214
%216 = or i1 %212, %215
br i1 %216, label %291, label %217
217: ; preds = %193
%218 = and i64 %191, -2
%219 = or i64 %191, 1
%220 = add nsw i64 %218, -2
%221 = lshr exact i64 %220, 1
%222 = add nuw i64 %221, 1
%223 = and i64 %222, 1
%224 = icmp eq i64 %220, 0
br i1 %224, label %269, label %225
225: ; preds = %217
%226 = and i64 %222, -2
%227 = load double, double* %12
%228 = insertelement <2 x double> poison, double %227, i64 0
%229 = shufflevector <2 x double> %228, <2 x double> poison, <2 x i32> zeroinitializer
%230 = load double, double* %13
%231 = insertelement <2 x double> poison, double %230, i64 0
%232 = shufflevector <2 x double> %231, <2 x double> poison, <2 x i32> zeroinitializer
%233 = load double, double* %12
%234 = insertelement <2 x double> poison, double %233, i64 0
%235 = shufflevector <2 x double> %234, <2 x double> poison, <2 x i32> zeroinitializer
%236 = load double, double* %13
%237 = insertelement <2 x double> poison, double %236, i64 0
%238 = shufflevector <2 x double> %237, <2 x double> poison, <2 x i32> zeroinitializer
br label %239
239: ; preds = %239, %225
%240 = phi i64 [ 0, %225 ], [ %264, %239 ]
%241 = phi i64 [ 0, %225 ], [ %265, %239 ]
%242 = or i64 %240, 1
%243 = getelementptr inbounds double, double* %167, i64 %242
%244 = bitcast double* %243 to <2 x double>*
%245 = load <2 x double>, <2 x double>* %244
%246 = fsub <2 x double> %245, %229
%247 = bitcast double* %243 to <2 x double>*
store <2 x double> %246, <2 x double>* %247
%248 = getelementptr inbounds double, double* %178, i64 %242
%249 = bitcast double* %248 to <2 x double>*
%250 = load <2 x double>, <2 x double>* %249
%251 = fsub <2 x double> %250, %232
%252 = bitcast double* %248 to <2 x double>*
store <2 x double> %251, <2 x double>* %252
%253 = or i64 %240, 3
%254 = getelementptr inbounds double, double* %167, i64 %253
%255 = bitcast double* %254 to <2 x double>*
%256 = load <2 x double>, <2 x double>* %255
%257 = fsub <2 x double> %256, %235
%258 = bitcast double* %254 to <2 x double>*
store <2 x double> %257, <2 x double>* %258
%259 = getelementptr inbounds double, double* %178, i64 %253
%260 = bitcast double* %259 to <2 x double>*
%261 = load <2 x double>, <2 x double>* %260
%262 = fsub <2 x double> %261, %238
%263 = bitcast double* %259 to <2 x double>*
store <2 x double> %262, <2 x double>* %263
%264 = add nuw i64 %240, 4
%265 = add nuw i64 %241, 2
%266 = icmp eq i64 %265, %226
br i1 %266, label %267, label %239
267: ; preds = %239
%268 = or i64 %264, 1
br label %269
269: ; preds = %267, %217
%270 = phi i64 [ 1, %217 ], [ %268, %267 ]
%271 = icmp eq i64 %223, 0
br i1 %271, label %289, label %272
272: ; preds = %269
%273 = getelementptr inbounds double, double* %167, i64 %270
%274 = bitcast double* %273 to <2 x double>*
%275 = load <2 x double>, <2 x double>* %274
%276 = load double, double* %12
%277 = insertelement <2 x double> poison, double %276, i64 0
%278 = shufflevector <2 x double> %277, <2 x double> poison, <2 x i32> zeroinitializer
%279 = fsub <2 x double> %275, %278
%280 = bitcast double* %273 to <2 x double>*
store <2 x double> %279, <2 x double>* %280
%281 = getelementptr inbounds double, double* %178, i64 %270
%282 = bitcast double* %281 to <2 x double>*
%283 = load <2 x double>, <2 x double>* %282
%284 = load double, double* %13
%285 = insertelement <2 x double> poison, double %284, i64 0
%286 = shufflevector <2 x double> %285, <2 x double> poison, <2 x i32> zeroinitializer
%287 = fsub <2 x double> %283, %286
%288 = bitcast double* %281 to <2 x double>*
store <2 x double> %287, <2 x double>* %288
br label %289
289: ; preds = %269, %272
%290 = icmp eq i64 %191, %218
br i1 %290, label %331, label %291
291: ; preds = %193, %189, %289
%292 = phi i64 [ 1, %193 ], [ 1, %189 ], [ %219, %289 ]
%293 = xor i64 %292, -1
%294 = and i64 %190, 1
%295 = icmp eq i64 %294, 0
br i1 %295, label %296, label %306
296: ; preds = %291
%297 = getelementptr inbounds double, double* %167, i64 %292
%298 = load double, double* %297
%299 = load double, double* %12
%300 = fsub double %298, %299
store double %300, double* %297
%301 = getelementptr inbounds double, double* %178, i64 %292
%302 = load double, double* %301
%303 = load double, double* %13
%304 = fsub double %302, %303
store double %304, double* %301
%305 = add nuw nsw i64 %292, 1
br label %306
306: ; preds = %296, %291
%307 = phi i64 [ %292, %291 ], [ %305, %296 ]
%308 = sub nsw i64 0, %190
%309 = icmp eq i64 %293, %308
br i1 %309, label %331, label %310
310: ; preds = %306, %310
%311 = phi i64 [ %329, %310 ], [ %307, %306 ]
%312 = getelementptr inbounds double, double* %167, i64 %311
%313 = load double, double* %312
%314 = load double, double* %12
%315 = fsub double %313, %314
store double %315, double* %312
%316 = getelementptr inbounds double, double* %178, i64 %311
%317 = load double, double* %316
%318 = load double, double* %13
%319 = fsub double %317, %318
store double %319, double* %316
%320 = add nuw nsw i64 %311, 1
%321 = getelementptr inbounds double, double* %167, i64 %320
%322 = load double, double* %321
%323 = load double, double* %12
%324 = fsub double %322, %323
store double %324, double* %321
%325 = getelementptr inbounds double, double* %178, i64 %320
%326 = load double, double* %325
%327 = load double, double* %13
%328 = fsub double %326, %327
store double %328, double* %325
%329 = add nuw nsw i64 %311, 2
%330 = icmp eq i64 %329, %190
br i1 %330, label %331, label %310
331: ; preds = %306, %310, %289, %164
%332 = phi i32 [ 1, %164 ], [ %165, %289 ], [ %165, %310 ], [ %165, %306 ]
%333 = add nsw i32 %332, -1
%334 = sext i32 %333 to i64
%335 = getelementptr inbounds double, double* %178, i64 %334
%336 = load double, double* %335
%337 = load double, double* %181
%338 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.11, i64 0, i64 0), double %336, double %337, i32 %185)
%339 = load double, double* %8
%340 = load double, double* %9
%341 = load double, double* %12
%342 = load double, double* %13
%343 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.12, i64 0, i64 0), double %339, double %340, double %341, double %342, i32 %332)
%344 = call i32 @fclose(i32* %38)
ret void
}