#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 */
float atof(char *);
int atoi(char *);
float exist_file(float **, float, float, int);
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, ...);
int line_count(char *);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ read_data(char *, float **, int);
int /*<<< orphan*/ read_metdata(char *, float **, float, float, int);
int /*<<< orphan*/ sprintf(char *, char *, float, float);
int /*<<< orphan*/ *stderr;
int /*<<< orphan*/ strcat(char *, char *);
int /*<<< orphan*/ strcpy(char *, char *);
void main(int argc, char *argv[]) {
  FILE *fp;
  char fr4[400] = "fr4.ll";
  char fr8[400] = "fr8.ll";
  char indir[400] = "/home/tempbvm/cbr8/metdata/WIND1961-1990/";
  char outdir[400] = "/home/tempbvm/cbr2/metdata/quarter_1961-1990/data_";
  char outfile[400];
  char LATLON[50];
  int i, j;
  int cells8;
  int cells4;
  int param, Nparam;
  float FR4[5000][3];
  float FR8[5000][3];
  float AFR[10957][6];
  float BFR[10957][6];
  float CFR[10957][6];
  float DFR[10957][6];
  float NEW[10957][6];
  float res8;
  float res4;
  float lat, lon;
  float Alat, Blat, Clat, Dlat;
  float Alon, Blon, Clon, Dlon;
  float Afr, Bfr, Cfr, Dfr;
  int Aok, Bok, Cok, Dok;
  float sum_fraction;
  int valid_cells;
  if (argc != 7) {
    fprintf(stderr,
            "Usage: %s <old fraction xyz> <old fraction data dir> <new "
            "fraction xyz> <new fraction data dir> <old resolution> <number of "
            "parameters>\n",
            argv[0]);
    fprintf(stderr, "\t<old fraction xyz> is the 3 coloumn fraction file for "
                    "the old resolution.\n");
    fprintf(stderr, "\t<old fraction data dir> is the directory for the "
                    "forcing data for the old resolution.\n");
    fprintf(stderr, "\t<new fraction xyz> is the 3 coloumn fraction file for "
                    "the new resolution.\n");
    fprintf(stderr, "\t<new fraction data dir> is the directory for the "
                    "forcing data for the new resolution.\n");
    fprintf(
        stderr,
        "\t<old resolution> is the old resoluation in fractions of degrees.\n");
    fprintf(stderr, "\t<number of parameters> is the number of parameters "
                    "(data types / columns) in the forcing file.\n");
    exit(0);
  }
  strcpy(fr4, argv[1]);
  strcpy(indir, argv[2]);
  strcpy(fr8, argv[3]);
  strcpy(outdir, argv[4]);
  res8 = atof(argv[5]);
  res4 = 2 * res8;
  Nparam = atoi(argv[6]);
  cells4 = line_count(fr4);
  cells8 = line_count(fr8);
  printf("File %s has %d lines\n", fr4, cells4);
  printf("File %s has %d lines\n", fr8, cells8);
  read_data(fr4, FR4, cells4);
  read_data(fr8, FR8, cells8);
  for (i = 0; i < cells4; i++) {
    for (j = 0; j < 10957; j++) {
      for (param = 0; param < Nparam; param++) {
        AFR[j][param] = 0.0;
        BFR[j][param] = 0.0;
        CFR[j][param] = 0.0;
        DFR[j][param] = 0.0;
      }
    }
    lat = FR4[i][0];
    lon = FR4[i][1];
    Alat = lat + res8 / 2;
    Alon = lon - res8 / 2;
    Blat = lat + res8 / 2;
    Blon = lon + res8 / 2;
    Clat = lat - res8 / 2;
    Clon = lon - res8 / 2;
    Dlat = lat - res8 / 2;
    Dlon = lon + res8 / 2;
    Afr = exist_file(FR8, Alat, Alon, cells8);
    Bfr = exist_file(FR8, Blat, Blon, cells8);
    Cfr = exist_file(FR8, Clat, Clon, cells8);
    Dfr = exist_file(FR8, Dlat, Dlon, cells8);
    Aok = Bok = Cok = Dok = 0;
    if (Afr > 0.0)
      Aok = 1;
    if (Bfr > 0.0)
      Bok = 1;
    if (Cfr > 0.0)
      Cok = 1;
    if (Dfr > 0.0)
      Dok = 1;
    sum_fraction = Afr + Bfr + Cfr + Dfr;
    valid_cells = Aok + Bok + Cok + Dok;
    printf("lat  %.4f lon  %.4f valid_cells %d sum_fraction %.3f\n", lat, lon,
           valid_cells, sum_fraction);
    printf("Afr %.3f Bfr %.3f Cfr %.3f Dfr %.3f\n", Afr, Bfr, Cfr, Dfr);
    if (Afr > 0)
      read_metdata(indir, AFR, Alat, Alon, Nparam);
    if (Bfr > 0)
      read_metdata(indir, BFR, Blat, Blon, Nparam);
    if (Cfr > 0)
      read_metdata(indir, CFR, Clat, Clon, Nparam);
    if (Dfr > 0)
      read_metdata(indir, DFR, Dlat, Dlon, Nparam);
    for (j = 0; j < 10957; j++) {
      for (param = 0; param < Nparam; param++) {
        NEW[j][param] = (AFR[j][param] * Afr + BFR[j][param] * Bfr +
                         CFR[j][param] * Cfr + DFR[j][param] * Dfr) /
                        sum_fraction;
      }
    }
    strcpy(outfile, outdir);
    sprintf(LATLON, "%.4f_%.4f", lat, lon);
    strcat(outfile, LATLON);
    printf("outfile %s\n", outfile);
    if ((fp = fopen(outfile, "w")) == NULL) {
      printf("Cannot open file %s \n", outfile);
      exit(0);
    }
    for (j = 0; j < 10957; j++) {
      for (param = 0; param < Nparam; param++)
        fprintf(fp, "%.2f", NEW[j][param]);
      fprintf(fp, "\n");
    }
    fclose(fp);
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x15edb0,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
lea    -0x1b0(%rbp),%rdi
xor    %esi,%esi
mov    $0x190,%edx
call   1090 <memset@plt>
movb   $0x66,-0x1b0(%rbp)
movb   $0x72,-0x1af(%rbp)
movb   $0x34,-0x1ae(%rbp)
movb   $0x2e,-0x1ad(%rbp)
movb   $0x6c,-0x1ac(%rbp)
movb   $0x6c,-0x1ab(%rbp)
lea    -0x340(%rbp),%rdi
xor    %esi,%esi
mov    $0x190,%edx
call   1090 <memset@plt>
movb   $0x66,-0x340(%rbp)
movb   $0x72,-0x33f(%rbp)
movb   $0x38,-0x33e(%rbp)
movb   $0x2e,-0x33d(%rbp)
movb   $0x6c,-0x33c(%rbp)
movb   $0x6c,-0x33b(%rbp)
lea    -0x4d0(%rbp),%rdi
lea    0xd76(%rip),%rsi
mov    $0x190,%edx
call   10b0 <memcpy@plt>
lea    -0x660(%rbp),%rdi
lea    0xeee(%rip),%rsi
mov    $0x190,%edx
call   10b0 <memcpy@plt>
cmpl   $0x7,-0x4(%rbp)
je     137c <main+0x17c>
mov    0x2d13(%rip),%rax
mov    (%rax),%rdi
mov    -0x10(%rbp),%rax
mov    (%rax),%rdx
lea    0x1052(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
mov    0x2cf4(%rip),%rax
mov    (%rax),%rdi
lea    0x10c3(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
mov    0x2cdc(%rip),%rax
mov    (%rax),%rdi
lea    0x10f7(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
mov    0x2cc4(%rip),%rax
mov    (%rax),%rdi
lea    0x1137(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
mov    0x2cac(%rip),%rax
mov    (%rax),%rdi
lea    0x116b(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
mov    0x2c94(%rip),%rax
mov    (%rax),%rdi
lea    0x11ab(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
mov    0x2c7c(%rip),%rax
mov    (%rax),%rdi
lea    0x11d6(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
xor    %edi,%edi
call   1120 <exit@plt>
lea    -0x1b0(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rsi
call   1040 <strcpy@plt>
lea    -0x4d0(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rsi
call   1040 <strcpy@plt>
lea    -0x340(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rsi
call   1040 <strcpy@plt>
lea    -0x660(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rsi
call   1040 <strcpy@plt>
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rdi
call   1050 <atof@plt>
movss  %xmm0,-0x15ed54(%rbp)
ff
movss  0xc17(%rip),%xmm0
mulss  -0x15ed54(%rbp),%xmm0
ff
movss  %xmm0,-0x15ed58(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%rdi
call   10f0 <atoi@plt>
mov    %eax,-0x848(%rbp)
lea    -0x1b0(%rbp),%rdi
call   10c0 <line_count@plt>
mov    %eax,-0x840(%rbp)
lea    -0x340(%rbp),%rdi
call   10c0 <line_count@plt>
mov    %eax,-0x83c(%rbp)
lea    -0x1b0(%rbp),%rsi
mov    -0x840(%rbp),%edx
lea    0x1161(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    -0x340(%rbp),%rsi
mov    -0x83c(%rbp),%edx
lea    0x1146(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    -0x1b0(%rbp),%rdi
lea    -0xf2b0(%rbp),%rsi
mov    -0x840(%rbp),%edx
call   1030 <read_data@plt>
lea    -0x340(%rbp),%rdi
lea    -0x1dd10(%rbp),%rsi
mov    -0x83c(%rbp),%edx
call   1030 <read_data@plt>
movl   $0x0,-0x834(%rbp)
mov    -0x834(%rbp),%eax
cmp    -0x840(%rbp),%eax
jge    1cdd <main+0xadd>
movl   $0x0,-0x838(%rbp)
cmpl   $0x2acd,-0x838(%rbp)
jge    15a7 <main+0x3a7>
movl   $0x0,-0x844(%rbp)
mov    -0x844(%rbp),%eax
cmp    -0x848(%rbp),%eax
jge    158e <main+0x38e>
movslq -0x838(%rbp),%rcx
lea    -0x5e050(%rbp),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
movslq -0x844(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movslq -0x838(%rbp),%rcx
lea    -0x9e390(%rbp),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
movslq -0x844(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movslq -0x838(%rbp),%rcx
lea    -0xde6d0(%rbp),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
movslq -0x844(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movslq -0x838(%rbp),%rcx
lea    -0x11ea10(%rbp),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
movslq -0x844(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x844(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x844(%rbp)
jmp    14d8 <main+0x2d8>
jmp    1593 <main+0x393>
mov    -0x838(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x838(%rbp)
jmp    14be <main+0x2be>
movslq -0x834(%rbp),%rcx
lea    -0xf2b0(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x15ed5c(%rbp)
ff
movslq -0x834(%rbp),%rcx
lea    -0xf2b0(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x15ed60(%rbp)
ff
movss  -0x15ed5c(%rbp),%xmm0
ff
movss  -0x15ed54(%rbp),%xmm1
ff
movss  0x9fe(%rip),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x15ed64(%rbp)
ff
movss  -0x15ed60(%rbp),%xmm0
ff
movss  -0x15ed54(%rbp),%xmm1
ff
movss  0x9d6(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x15ed74(%rbp)
ff
movss  -0x15ed5c(%rbp),%xmm0
ff
movss  -0x15ed54(%rbp),%xmm1
ff
movss  0x9ae(%rip),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x15ed68(%rbp)
ff
movss  -0x15ed60(%rbp),%xmm0
ff
movss  -0x15ed54(%rbp),%xmm1
ff
movss  0x986(%rip),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x15ed78(%rbp)
ff
movss  -0x15ed5c(%rbp),%xmm0
ff
movss  -0x15ed54(%rbp),%xmm1
ff
movss  0x95e(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x15ed6c(%rbp)
ff
movss  -0x15ed60(%rbp),%xmm0
ff
movss  -0x15ed54(%rbp),%xmm1
ff
movss  0x936(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x15ed7c(%rbp)
ff
movss  -0x15ed5c(%rbp),%xmm0
ff
movss  -0x15ed54(%rbp),%xmm1
ff
movss  0x90e(%rip),%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x15ed70(%rbp)
ff
movss  -0x15ed60(%rbp),%xmm0
ff
movss  -0x15ed54(%rbp),%xmm1
ff
movss  0x8e6(%rip),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x15ed80(%rbp)
ff
lea    -0x1dd10(%rbp),%rdi
movss  -0x15ed64(%rbp),%xmm0
ff
movss  -0x15ed74(%rbp),%xmm1
ff
mov    -0x83c(%rbp),%esi
call   10e0 <exist_file@plt>
movss  %xmm0,-0x15ed84(%rbp)
ff
lea    -0x1dd10(%rbp),%rdi
movss  -0x15ed68(%rbp),%xmm0
ff
movss  -0x15ed78(%rbp),%xmm1
ff
mov    -0x83c(%rbp),%esi
call   10e0 <exist_file@plt>
movss  %xmm0,-0x15ed88(%rbp)
ff
lea    -0x1dd10(%rbp),%rdi
movss  -0x15ed6c(%rbp),%xmm0
ff
movss  -0x15ed7c(%rbp),%xmm1
ff
mov    -0x83c(%rbp),%esi
call   10e0 <exist_file@plt>
movss  %xmm0,-0x15ed8c(%rbp)
ff
lea    -0x1dd10(%rbp),%rdi
movss  -0x15ed70(%rbp),%xmm0
ff
movss  -0x15ed80(%rbp),%xmm1
ff
mov    -0x83c(%rbp),%esi
call   10e0 <exist_file@plt>
movss  %xmm0,-0x15ed90(%rbp)
ff
movl   $0x0,-0x15eda0(%rbp)
movl   $0x0,-0x15ed9c(%rbp)
movl   $0x0,-0x15ed98(%rbp)
movl   $0x0,-0x15ed94(%rbp)
movss  -0x15ed84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    181d <main+0x61d>
movl   $0x1,-0x15ed94(%rbp)
movss  -0x15ed88(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1840 <main+0x640>
movl   $0x1,-0x15ed98(%rbp)
movss  -0x15ed8c(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1863 <main+0x663>
movl   $0x1,-0x15ed9c(%rbp)
movss  -0x15ed90(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1886 <main+0x686>
movl   $0x1,-0x15eda0(%rbp)
movss  -0x15ed84(%rbp),%xmm0
ff
addss  -0x15ed88(%rbp),%xmm0
ff
addss  -0x15ed8c(%rbp),%xmm0
ff
addss  -0x15ed90(%rbp),%xmm0
ff
movss  %xmm0,-0x15eda4(%rbp)
ff
mov    -0x15ed94(%rbp),%eax
add    -0x15ed98(%rbp),%eax
add    -0x15ed9c(%rbp),%eax
add    -0x15eda0(%rbp),%eax
mov    %eax,-0x15eda8(%rbp)
movss  -0x15ed5c(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movss  -0x15ed60(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mov    -0x15eda8(%rbp),%esi
movss  -0x15eda4(%rbp),%xmm2
ff
cvtss2sd %xmm2,%xmm2
lea    0xcbe(%rip),%rdi
mov    $0x3,%al
call   1080 <printf@plt>
movss  -0x15ed84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movss  -0x15ed88(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movss  -0x15ed8c(%rbp),%xmm2
ff
cvtss2sd %xmm2,%xmm2
movss  -0x15ed90(%rbp),%xmm3
ff
cvtss2sd %xmm3,%xmm3
lea    0xcb6(%rip),%rdi
mov    $0x4,%al
call   1080 <printf@plt>
movss  -0x15ed84(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    197f <main+0x77f>
lea    -0x4d0(%rbp),%rdi
lea    -0x5e050(%rbp),%rsi
movss  -0x15ed64(%rbp),%xmm0
ff
movss  -0x15ed74(%rbp),%xmm1
ff
mov    -0x848(%rbp),%edx
call   1070 <read_metdata@plt>
movss  -0x15ed88(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    19bc <main+0x7bc>
lea    -0x4d0(%rbp),%rdi
lea    -0x9e390(%rbp),%rsi
movss  -0x15ed68(%rbp),%xmm0
ff
movss  -0x15ed78(%rbp),%xmm1
ff
mov    -0x848(%rbp),%edx
call   1070 <read_metdata@plt>
movss  -0x15ed8c(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    19f9 <main+0x7f9>
lea    -0x4d0(%rbp),%rdi
lea    -0xde6d0(%rbp),%rsi
movss  -0x15ed6c(%rbp),%xmm0
ff
movss  -0x15ed7c(%rbp),%xmm1
ff
mov    -0x848(%rbp),%edx
call   1070 <read_metdata@plt>
movss  -0x15ed90(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    1a36 <main+0x836>
lea    -0x4d0(%rbp),%rdi
lea    -0x11ea10(%rbp),%rsi
movss  -0x15ed70(%rbp),%xmm0
ff
movss  -0x15ed80(%rbp),%xmm1
ff
mov    -0x848(%rbp),%edx
call   1070 <read_metdata@plt>
movl   $0x0,-0x838(%rbp)
cmpl   $0x2acd,-0x838(%rbp)
jge    1b7e <main+0x97e>
movl   $0x0,-0x844(%rbp)
mov    -0x844(%rbp),%eax
cmp    -0x848(%rbp),%eax
jge    1b65 <main+0x965>
movslq -0x838(%rbp),%rcx
lea    -0x5e050(%rbp),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
movslq -0x844(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  -0x15ed84(%rbp),%xmm2
ff
movslq -0x838(%rbp),%rcx
lea    -0x9e390(%rbp),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
movslq -0x844(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
mulss  -0x15ed88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movslq -0x838(%rbp),%rcx
lea    -0xde6d0(%rbp),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
movslq -0x844(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x15ed8c(%rbp),%xmm2
ff
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movslq -0x838(%rbp),%rcx
lea    -0x11ea10(%rbp),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
movslq -0x844(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movss  -0x15ed90(%rbp),%xmm2
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
divss  -0x15eda4(%rbp),%xmm0
ff
movslq -0x838(%rbp),%rcx
lea    -0x15ed50(%rbp),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
movslq -0x844(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x844(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x844(%rbp)
jmp    1a5a <main+0x85a>
jmp    1b6a <main+0x96a>
mov    -0x838(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x838(%rbp)
jmp    1a40 <main+0x840>
lea    -0x7f0(%rbp),%rdi
lea    -0x660(%rbp),%rsi
call   1040 <strcpy@plt>
lea    -0x830(%rbp),%rdi
movss  -0x15ed5c(%rbp),%xmm0
ff
movss  -0x15ed60(%rbp),%xmm1
ff
lea    0xa67(%rip),%rsi
call   1110 <sprintf@plt>
lea    -0x7f0(%rbp),%rdi
lea    -0x830(%rbp),%rsi
call   1100 <strcat@plt>
lea    -0x7f0(%rbp),%rsi
lea    0xa4b(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    -0x7f0(%rbp),%rdi
lea    0xa42(%rip),%rsi
call   10d0 <fopen@plt>
mov    %rax,-0x18(%rbp)
cmp    $0x0,%rax
jne    1c19 <main+0xa19>
lea    -0x7f0(%rbp),%rsi
lea    0xa23(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
xor    %edi,%edi
call   1120 <exit@plt>
movl   $0x0,-0x838(%rbp)
cmpl   $0x2acd,-0x838(%rbp)
jge    1cc0 <main+0xac0>
movl   $0x0,-0x844(%rbp)
mov    -0x844(%rbp),%eax
cmp    -0x848(%rbp),%eax
jge    1c9a <main+0xa9a>
mov    -0x18(%rbp),%rdi
movslq -0x838(%rbp),%rcx
lea    -0x15ed50(%rbp),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
movslq -0x844(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x9c5(%rip),%rsi
mov    $0x1,%al
call   10a0 <fprintf@plt>
mov    -0x844(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x844(%rbp)
jmp    1c3d <main+0xa3d>
mov    -0x18(%rbp),%rdi
lea    0x99d(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
mov    -0x838(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x838(%rbp)
jmp    1c23 <main+0xa23>
mov    -0x18(%rbp),%rdi
call   1060 <fclose@plt>
mov    -0x834(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x834(%rbp)
jmp    14a2 <main+0x2a2>
add    $0x15edb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x15edd8,%rsp
mov    %rsi,%rbx
mov    %edi,%ebp
lea    0x430(%rsp),%rdi
mov    $0x190,%edx
xor    %esi,%esi
call   1090 <memset@plt>
movl   $0x2e347266,0x430(%rsp)
66 72 34 2e
movw   $0x6c6c,0x434(%rsp)
lea    0x2a0(%rsp),%rdi
mov    $0x190,%edx
xor    %esi,%esi
call   1090 <memset@plt>
movl   $0x2e387266,0x2a0(%rsp)
66 72 38 2e
movw   $0x6c6c,0x2a4(%rsp)
lea    0xd81(%rip),%rsi
lea    0x110(%rsp),%rdi
mov    $0x190,%edx
call   10c0 <memcpy@plt>
lea    0xef8(%rip),%rsi
lea    0x5c0(%rsp),%rdi
mov    $0x190,%edx
call   10c0 <memcpy@plt>
cmp    $0x7,%ebp
jne    1a60 <main+0x840>
mov    0x8(%rbx),%rsi
lea    0x430(%rsp),%r14
mov    %r14,%rdi
call   1040 <strcpy@plt>
mov    0x10(%rbx),%rsi
lea    0x110(%rsp),%rdi
call   1040 <strcpy@plt>
mov    0x18(%rbx),%rsi
lea    0x2a0(%rsp),%r15
mov    %r15,%rdi
call   1040 <strcpy@plt>
mov    0x20(%rbx),%rsi
lea    0x5c0(%rsp),%rdi
call   1040 <strcpy@plt>
mov    0x28(%rbx),%rdi
call   1050 <atof@plt>
movss  %xmm0,0xc(%rsp)
mov    0x30(%rbx),%rdi
call   1100 <atoi@plt>
mov    %eax,(%rsp)
mov    %r14,%rdi
call   10d0 <line_count@plt>
mov    %eax,%r12d
mov    %r15,%rdi
call   10d0 <line_count@plt>
mov    %eax,%ebx
lea    0x1261(%rip),%rbp
mov    %rbp,%rdi
mov    %r14,%rsi
mov    %r12d,%edx
xor    %eax,%eax
call   1080 <printf@plt>
mov    %rbp,%rdi
mov    %r15,%rsi
mov    %ebx,%edx
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x8e0(%rsp),%rsi
mov    %r14,%rdi
mov    %r12d,%edx
call   1030 <read_data@plt>
lea    0xf340(%rsp),%rsi
mov    %r15,%rdi
mov    %ebx,0x2c(%rsp)
mov    %ebx,%edx
call   1030 <read_data@plt>
test   %r12d,%r12d
jle    1a31 <main+0x811>
movss  0xc(%rsp),%xmm0
mulss  0xc5d(%rip),%xmm0
movss  %xmm0,0xc(%rsp)
mov    (%rsp),%r13d
lea    0x0(,%r13,4),%rax
mov    %r12d,%ecx
mov    %rcx,0x78(%rsp)
mov    %r13d,%ecx
and    $0xfffffffc,%ecx
mov    %rcx,0xa0(%rsp)
mov    %rax,0x58(%rsp)
and    $0xfffffffffffffff0,%rax
xor    %ecx,%ecx
mov    %rcx,0x20(%rsp)
mov    %rax,0xa8(%rsp)
jmp    1414 <main+0x1f4>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r15,%rdi
call   1060 <fclose@plt>
mov    0x20(%rsp),%rcx
add    $0x1,%rcx
mov    %rcx,%rax
mov    %rcx,0x20(%rsp)
cmp    0x78(%rsp),%rcx
je     1a31 <main+0x811>
mov    $0x18,%r14d
jmp    1424 <main+0x204>
nopl   0x0(%rax)
add    $0x30,%r14
cmpl   $0x0,(%rsp)
jle    148c <main+0x26c>
lea    (%rsp,%r14,1),%rdi
add    $0xde748,%rdi
lea    (%rsp,%r14,1),%rbx
add    $0x9e408,%rbx
lea    (%rsp,%r14,1),%rbp
add    $0x5e0c8,%rbp
lea    (%rsp,%r14,1),%r15
add    $0x1dd88,%r15
xor    %esi,%esi
mov    0x58(%rsp),%r12
mov    %r12,%rdx
call   1090 <memset@plt>
mov    %rbx,%rdi
xor    %esi,%esi
mov    %r12,%rdx
call   1090 <memset@plt>
mov    %rbp,%rdi
xor    %esi,%esi
mov    %r12,%rdx
call   1090 <memset@plt>
mov    %r15,%rdi
xor    %esi,%esi
mov    %r12,%rdx
call   1090 <memset@plt>
cmp    $0x40338,%r14
je     1510 <main+0x2f0>
cmpl   $0x0,(%rsp)
jle    1420 <main+0x200>
lea    (%rsp,%r14,1),%rdi
add    $0xde760,%rdi
lea    (%rsp,%r14,1),%rbx
add    $0x9e420,%rbx
lea    (%rsp,%r14,1),%r12
add    $0x5e0e0,%r12
lea    (%rsp,%r14,1),%r15
add    $0x1dda0,%r15
xor    %esi,%esi
mov    0x58(%rsp),%rbp
mov    %rbp,%rdx
call   1090 <memset@plt>
mov    %rbx,%rdi
xor    %esi,%esi
mov    %rbp,%rdx
call   1090 <memset@plt>
mov    %r12,%rdi
xor    %esi,%esi
mov    %rbp,%rdx
call   1090 <memset@plt>
mov    %r15,%rdi
xor    %esi,%esi
mov    %rbp,%rdx
call   1090 <memset@plt>
jmp    1420 <main+0x200>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x20(%rsp),%rax
lea    (%rax,%rax,2),%rax
movss  0x8e0(%rsp,%rax,4),%xmm1
movss  %xmm1,0x1c(%rsp)
movss  0x8e4(%rsp,%rax,4),%xmm2
movss  %xmm2,0x18(%rsp)
movss  0xc(%rsp),%xmm5
movaps %xmm5,%xmm3
addss  %xmm1,%xmm3
movaps %xmm3,%xmm0
movss  %xmm3,0x10(%rsp)
movaps %xmm2,%xmm4
subss  %xmm5,%xmm4
movss  %xmm4,0x14(%rsp)
movaps %xmm5,%xmm3
addss  %xmm2,%xmm3
movss  %xmm3,0x8(%rsp)
subss  %xmm5,%xmm1
movss  %xmm1,0x4(%rsp)
lea    0xf340(%rsp),%rbp
mov    %rbp,%rdi
movaps %xmm4,%xmm1
mov    0x2c(%rsp),%ebx
mov    %ebx,%esi
call   10f0 <exist_file@plt>
movaps %xmm0,0x30(%rsp)
mov    %rbp,%rdi
movss  0x10(%rsp),%xmm0
movss  0x8(%rsp),%xmm1
mov    %ebx,%esi
call   10f0 <exist_file@plt>
movaps %xmm0,0x40(%rsp)
mov    %rbp,%rdi
movss  0x4(%rsp),%xmm0
movss  0x14(%rsp),%xmm1
mov    %ebx,%esi
call   10f0 <exist_file@plt>
movaps %xmm0,0x60(%rsp)
mov    %rbp,%rdi
movss  0x4(%rsp),%xmm0
movss  0x8(%rsp),%xmm1
mov    %ebx,%esi
call   10f0 <exist_file@plt>
xor    %eax,%eax
xorps  %xmm2,%xmm2
movaps 0x30(%rsp),%xmm1
ucomiss %xmm2,%xmm1
seta   %al
xorps  %xmm3,%xmm3
cvtss2sd %xmm1,%xmm3
movsd  %xmm3,0x98(%rsp)
xor    %esi,%esi
movaps 0x40(%rsp),%xmm4
ucomiss %xmm2,%xmm4
xorps  %xmm3,%xmm3
cvtss2sd %xmm4,%xmm3
movsd  %xmm3,0x90(%rsp)
seta   %sil
xor    %ecx,%ecx
movaps 0x60(%rsp),%xmm5
ucomiss %xmm2,%xmm5
seta   %cl
xorps  %xmm3,%xmm3
cvtss2sd %xmm5,%xmm3
movsd  %xmm3,0x88(%rsp)
xor    %edx,%edx
ucomiss %xmm2,%xmm0
xorps  %xmm2,%xmm2
cvtss2sd %xmm0,%xmm2
movsd  %xmm2,0x80(%rsp)
seta   %dl
movaps %xmm1,%xmm2
addss  %xmm4,%xmm2
addss  %xmm5,%xmm2
movaps %xmm0,0xb0(%rsp)
addss  %xmm0,%xmm2
add    %eax,%esi
add    %ecx,%esi
add    %edx,%esi
movss  0x1c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  0x18(%rsp),%xmm1
cvtss2sd %xmm1,%xmm1
movaps %xmm2,0xc0(%rsp)
cvtss2sd %xmm2,%xmm2
lea    0xf29(%rip),%rdi
mov    $0x3,%al
call   1080 <printf@plt>
lea    0xf51(%rip),%rdi
movsd  0x98(%rsp),%xmm0
movsd  0x90(%rsp),%xmm1
movsd  0x88(%rsp),%xmm2
movsd  0x80(%rsp),%xmm3
mov    $0x4,%al
call   1080 <printf@plt>
movaps 0x30(%rsp),%xmm7
ucomiss 0x92d(%rip),%xmm7
jbe    1702 <main+0x4e2>
lea    0x110(%rsp),%rdi
lea    0xde760(%rsp),%rsi
movss  0x10(%rsp),%xmm0
movss  0x14(%rsp),%xmm1
mov    (%rsp),%edx
call   1070 <read_metdata@plt>
movaps 0x30(%rsp),%xmm7
movaps 0x40(%rsp),%xmm0
ucomiss 0x8f6(%rip),%xmm0
jbe    173e <main+0x51e>
lea    0x110(%rsp),%rdi
lea    0x9e420(%rsp),%rsi
movss  0x10(%rsp),%xmm0
movss  0x8(%rsp),%xmm1
mov    (%rsp),%edx
call   1070 <read_metdata@plt>
movaps 0x40(%rsp),%xmm0
movaps 0x30(%rsp),%xmm7
movaps 0x60(%rsp),%xmm2
ucomiss 0x8ba(%rip),%xmm2
jbe    177f <main+0x55f>
lea    0x110(%rsp),%rdi
lea    0x5e0e0(%rsp),%rsi
movss  0x4(%rsp),%xmm0
movss  0x14(%rsp),%xmm1
mov    (%rsp),%edx
call   1070 <read_metdata@plt>
movaps 0x60(%rsp),%xmm2
movaps 0x40(%rsp),%xmm0
movaps 0x30(%rsp),%xmm7
movaps 0xb0(%rsp),%xmm3
ucomiss 0x876(%rip),%xmm3
jbe    17cb <main+0x5ab>
lea    0x110(%rsp),%rdi
lea    0x1dda0(%rsp),%rsi
movss  0x4(%rsp),%xmm0
movss  0x8(%rsp),%xmm1
mov    (%rsp),%edx
call   1070 <read_metdata@plt>
movaps 0xb0(%rsp),%xmm3
movaps 0x60(%rsp),%xmm2
movaps 0x40(%rsp),%xmm0
movaps 0x30(%rsp),%xmm7
movaps %xmm0,%xmm8
shufps $0x0,%xmm0,%xmm8
movaps %xmm7,%xmm9
shufps $0x0,%xmm7,%xmm9
movaps %xmm2,%xmm10
shufps $0x0,%xmm2,%xmm10
movaps %xmm3,%xmm11
shufps $0x0,%xmm3,%xmm11
movaps 0xc0(%rsp),%xmm4
movaps %xmm4,%xmm1
shufps $0x0,%xmm4,%xmm1
lea    0x11eaa0(%rsp),%r9
lea    0x1dda0(%rsp),%r10
lea    0x5e0e0(%rsp),%r11
lea    0x9e420(%rsp),%r14
lea    0xde760(%rsp),%r15
xor    %r8d,%r8d
jmp    1855 <main+0x635>
nopl   0x0(%rax,%rax,1)
add    $0x1,%r8
add    $0x18,%r15
add    $0x18,%r14
add    $0x18,%r11
add    $0x18,%r10
add    $0x18,%r9
cmp    $0x2acd,%r8
je     1950 <main+0x730>
cmpl   $0x0,(%rsp)
jle    1830 <main+0x610>
cmpl   $0x4,(%rsp)
jae    1870 <main+0x650>
xor    %edi,%edi
jmp    18d7 <main+0x6b7>
cs nopw 0x0(%rax,%rax,1)
nop
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movups (%r15,%rax,1),%xmm5
mulps  %xmm9,%xmm5
movups (%r14,%rax,1),%xmm6
mulps  %xmm8,%xmm6
addps  %xmm5,%xmm6
movups (%r11,%rax,1),%xmm5
mulps  %xmm10,%xmm5
addps  %xmm6,%xmm5
movups (%r10,%rax,1),%xmm6
mulps  %xmm11,%xmm6
addps  %xmm5,%xmm6
divps  %xmm1,%xmm6
movups %xmm6,(%r9,%rax,1)
add    $0x10,%rax
cmp    %rax,0xa8(%rsp)
jne    1880 <main+0x660>
mov    0xa0(%rsp),%rax
mov    %rax,%rdi
cmp    %r13,%rax
je     1830 <main+0x610>
lea    (%r15,%rdi,4),%rbx
lea    (%r14,%rdi,4),%rbp
lea    (%r11,%rdi,4),%rax
lea    (%r10,%rdi,4),%rcx
lea    (%r9,%rdi,4),%rdx
mov    %r13,%rsi
sub    %rdi,%rsi
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movss  0x0(%rbp,%rdi,4),%xmm5
mulss  %xmm0,%xmm5
movss  (%rbx,%rdi,4),%xmm6
mulss  %xmm7,%xmm6
addss  %xmm5,%xmm6
movss  (%rax,%rdi,4),%xmm5
mulss  %xmm2,%xmm5
addss  %xmm6,%xmm5
movss  (%rcx,%rdi,4),%xmm6
mulss  %xmm3,%xmm6
addss  %xmm5,%xmm6
divss  %xmm4,%xmm6
movss  %xmm6,(%rdx,%rdi,4)
add    $0x1,%rdi
cmp    %rdi,%rsi
jne    1900 <main+0x6e0>
jmp    1830 <main+0x610>
nopl   0x0(%rax,%rax,1)
lea    0x750(%rsp),%rbx
mov    %rbx,%rdi
lea    0x5c0(%rsp),%rsi
call   1040 <strcpy@plt>
lea    0xd0(%rsp),%rbp
mov    %rbp,%rdi
lea    0xc9c(%rip),%rsi
movss  0x1c(%rsp),%xmm0
movss  0x18(%rsp),%xmm1
call   1120 <sprintf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
call   1110 <strcat@plt>
lea    0xc83(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1080 <printf@plt>
mov    %rbx,%rdi
lea    0xc7b(%rip),%rsi
call   10e0 <fopen@plt>
test   %rax,%rax
je     1a43 <main+0x823>
mov    %rax,%r15
lea    0x11eaa0(%rsp),%rbx
xor    %r14d,%r14d
jmp    19f2 <main+0x7d2>
nop
mov    $0xa,%edi
mov    %r15,%rsi
call   10a0 <fputc@plt>
add    $0x1,%r14
add    $0x18,%rbx
cmp    $0x2acd,%r14
je     13f0 <main+0x1d0>
cmpl   $0x0,(%rsp)
lea    0xc47(%rip),%r12
jle    19d0 <main+0x7b0>
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movss  (%rbx,%rbp,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    %r15,%rdi
mov    %r12,%rsi
mov    $0x1,%al
call   10b0 <fprintf@plt>
add    $0x1,%rbp
cmp    %rbp,%r13
jne    1a10 <main+0x7f0>
jmp    19d0 <main+0x7b0>
add    $0x15edd8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0xbe4(%rip),%rdi
lea    0x750(%rsp),%rsi
xor    %eax,%eax
call   1080 <printf@plt>
xor    %edi,%edi
call   1130 <exit@plt>
mov    0x2579(%rip),%rbp
mov    0x0(%rbp),%rdi
mov    (%rbx),%rdx
lea    0x8bb(%rip),%rsi
xor    %eax,%eax
call   10b0 <fprintf@plt>
mov    0x0(%rbp),%rcx
lea    0x932(%rip),%rdi
mov    $0x4b,%esi
mov    $0x1,%edx
call   1140 <fwrite@plt>
mov    0x0(%rbp),%rcx
lea    0x964(%rip),%rdi
mov    $0x57,%esi
mov    $0x1,%edx
call   1140 <fwrite@plt>
mov    0x0(%rbp),%rcx
lea    0x9a2(%rip),%rdi
mov    $0x4b,%esi
mov    $0x1,%edx
call   1140 <fwrite@plt>
mov    0x0(%rbp),%rcx
lea    0x9d4(%rip),%rdi
mov    $0x57,%esi
mov    $0x1,%edx
call   1140 <fwrite@plt>
mov    0x0(%rbp),%rcx
lea    0xa12(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
call   1140 <fwrite@plt>
mov    0x0(%rbp),%rcx
lea    0xa3b(%rip),%rdi
mov    $0x60,%esi
mov    $0x1,%edx
call   1140 <fwrite@plt>
xor    %edi,%edi
call   1130 <exit@plt>

LLVM IR (-O0):
@__const.main.indir = [400 x i8] c"/home/tempbvm/cbr8/metdata/WIND1961-1990/\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
@__const.main.outdir = [400 x i8] c"/home/tempbvm/cbr2/metdata/quarter_1961-1990/data_\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
@stderr = global i32* null
@.str = [137 x i8] c"Usage: %s <old fraction xyz> <old fraction data dir> <new fraction xyz> <new fraction data dir> <old resolution> <number of parameters>\0A\00"
@.str.1 = [76 x i8] c"\09<old fraction xyz> is the 3 coloumn fraction file for the old resolution.\0A\00"
@.str.2 = [88 x i8] c"\09<old fraction data dir> is the directory for the forcing data for the old resolution.\0A\00"
@.str.3 = [76 x i8] c"\09<new fraction xyz> is the 3 coloumn fraction file for the new resolution.\0A\00"
@.str.4 = [88 x i8] c"\09<new fraction data dir> is the directory for the forcing data for the new resolution.\0A\00"
@.str.5 = [67 x i8] c"\09<old resolution> is the old resoluation in fractions of degrees.\0A\00"
@.str.6 = [97 x i8] c"\09<number of parameters> is the number of parameters (data types / columns) in the forcing file.\0A\00"
@.str.7 = [22 x i8] c"File %s has %d lines\0A\00"
@.str.8 = [54 x i8] c"lat %.4f lon %.4f valid_cells %d sum_fraction %.3f\0A\00"
@.str.9 = [37 x i8] c"Afr %.3f Bfr %.3f Cfr %.3f Dfr %.3f\0A\00"
@.str.10 = [10 x i8] c"%.4f_%.4f\00"
@.str.11 = [12 x i8] c"outfile %s\0A\00"
@.str.12 = [2 x i8] c"w\00"
@.str.13 = [22 x i8] c"Cannot open file %s \0A\00"
@.str.14 = [5 x i8] c"%.2f\00"
@.str.15 = [2 x i8] c"\0A\00"
define void @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i8**
%5 = alloca i32*
%6 = alloca [400 x i8]
%7 = alloca [400 x i8]
%8 = alloca [400 x i8]
%9 = alloca [400 x i8]
%10 = alloca [400 x i8]
%11 = alloca [50 x i8]
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca [5000 x [3 x float]]
%19 = alloca [5000 x [3 x float]]
%20 = alloca [10957 x [6 x float]]
%21 = alloca [10957 x [6 x float]]
%22 = alloca [10957 x [6 x float]]
%23 = alloca [10957 x [6 x float]]
%24 = alloca [10957 x [6 x float]]
%25 = alloca float
%26 = alloca float
%27 = alloca float
%28 = alloca float
%29 = alloca float
%30 = alloca float
%31 = alloca float
%32 = alloca float
%33 = alloca float
%34 = alloca float
%35 = alloca float
%36 = alloca float
%37 = alloca float
%38 = alloca float
%39 = alloca float
%40 = alloca float
%41 = alloca i32
%42 = alloca i32
%43 = alloca i32
%44 = alloca i32
%45 = alloca float
%46 = alloca i32
store i32 %0, i32* %3
store i8** %1, i8*** %4
%47 = bitcast [400 x i8]* %6 to i8*
%48 = bitcast i8* %47 to [400 x i8]*
%49 = getelementptr inbounds [400 x i8], [400 x i8]* %48, i32 0, i32 0
store i8 102, i8* %49
%50 = getelementptr inbounds [400 x i8], [400 x i8]* %48, i32 0, i32 1
store i8 114, i8* %50
%51 = getelementptr inbounds [400 x i8], [400 x i8]* %48, i32 0, i32 2
store i8 52, i8* %51
%52 = getelementptr inbounds [400 x i8], [400 x i8]* %48, i32 0, i32 3
store i8 46, i8* %52
%53 = getelementptr inbounds [400 x i8], [400 x i8]* %48, i32 0, i32 4
store i8 108, i8* %53
%54 = getelementptr inbounds [400 x i8], [400 x i8]* %48, i32 0, i32 5
store i8 108, i8* %54
%55 = bitcast [400 x i8]* %7 to i8*
%56 = bitcast i8* %55 to [400 x i8]*
%57 = getelementptr inbounds [400 x i8], [400 x i8]* %56, i32 0, i32 0
store i8 102, i8* %57
%58 = getelementptr inbounds [400 x i8], [400 x i8]* %56, i32 0, i32 1
store i8 114, i8* %58
%59 = getelementptr inbounds [400 x i8], [400 x i8]* %56, i32 0, i32 2
store i8 56, i8* %59
%60 = getelementptr inbounds [400 x i8], [400 x i8]* %56, i32 0, i32 3
store i8 46, i8* %60
%61 = getelementptr inbounds [400 x i8], [400 x i8]* %56, i32 0, i32 4
store i8 108, i8* %61
%62 = getelementptr inbounds [400 x i8], [400 x i8]* %56, i32 0, i32 5
store i8 108, i8* %62
%63 = bitcast [400 x i8]* %8 to i8*
%64 = bitcast [400 x i8]* %9 to i8*
%65 = load i32, i32* %3
%66 = icmp ne i32 %65, 7
br i1 %66, label %67, label %86
67: ; preds = %2
%68 = load i32*, i32** @stderr
%69 = load i8**, i8*** %4
%70 = getelementptr inbounds i8*, i8** %69, i64 0
%71 = load i8*, i8** %70
%72 = call i32 (i32*, i8*, ...) @fprintf(i32* %68, i8* getelementptr inbounds ([137 x i8], [137 x i8]* @.str, i64 0, i64 0), i8* %71)
%73 = load i32*, i32** @stderr
%74 = call i32 (i32*, i8*, ...) @fprintf(i32* %73, i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.1, i64 0, i64 0))
%75 = load i32*, i32** @stderr
%76 = call i32 (i32*, i8*, ...) @fprintf(i32* %75, i8* getelementptr inbounds ([88 x i8], [88 x i8]* @.str.2, i64 0, i64 0))
%77 = load i32*, i32** @stderr
%78 = call i32 (i32*, i8*, ...) @fprintf(i32* %77, i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.3, i64 0, i64 0))
%79 = load i32*, i32** @stderr
%80 = call i32 (i32*, i8*, ...) @fprintf(i32* %79, i8* getelementptr inbounds ([88 x i8], [88 x i8]* @.str.4, i64 0, i64 0))
%81 = load i32*, i32** @stderr
%82 = call i32 (i32*, i8*, ...) @fprintf(i32* %81, i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.5, i64 0, i64 0))
%83 = load i32*, i32** @stderr
%84 = call i32 (i32*, i8*, ...) @fprintf(i32* %83, i8* getelementptr inbounds ([97 x i8], [97 x i8]* @.str.6, i64 0, i64 0))
%85 = call i32 @exit(i32 0)
unreachable
86: ; preds = %2
%87 = getelementptr inbounds [400 x i8], [400 x i8]* %6, i64 0, i64 0
%88 = load i8**, i8*** %4
%89 = getelementptr inbounds i8*, i8** %88, i64 1
%90 = load i8*, i8** %89
%91 = call i32 @strcpy(i8* %87, i8* %90)
%92 = getelementptr inbounds [400 x i8], [400 x i8]* %8, i64 0, i64 0
%93 = load i8**, i8*** %4
%94 = getelementptr inbounds i8*, i8** %93, i64 2
%95 = load i8*, i8** %94
%96 = call i32 @strcpy(i8* %92, i8* %95)
%97 = getelementptr inbounds [400 x i8], [400 x i8]* %7, i64 0, i64 0
%98 = load i8**, i8*** %4
%99 = getelementptr inbounds i8*, i8** %98, i64 3
%100 = load i8*, i8** %99
%101 = call i32 @strcpy(i8* %97, i8* %100)
%102 = getelementptr inbounds [400 x i8], [400 x i8]* %9, i64 0, i64 0
%103 = load i8**, i8*** %4
%104 = getelementptr inbounds i8*, i8** %103, i64 4
%105 = load i8*, i8** %104
%106 = call i32 @strcpy(i8* %102, i8* %105)
%107 = load i8**, i8*** %4
%108 = getelementptr inbounds i8*, i8** %107, i64 5
%109 = load i8*, i8** %108
%110 = call float @atof(i8* %109)
store float %110, float* %25
%111 = load float, float* %25
%112 = fmul float 2.000000e+00, %111
store float %112, float* %26
%113 = load i8**, i8*** %4
%114 = getelementptr inbounds i8*, i8** %113, i64 6
%115 = load i8*, i8** %114
%116 = call i32 @atoi(i8* %115)
store i32 %116, i32* %17
%117 = getelementptr inbounds [400 x i8], [400 x i8]* %6, i64 0, i64 0
%118 = call i32 @line_count(i8* %117)
store i32 %118, i32* %15
%119 = getelementptr inbounds [400 x i8], [400 x i8]* %7, i64 0, i64 0
%120 = call i32 @line_count(i8* %119)
store i32 %120, i32* %14
%121 = getelementptr inbounds [400 x i8], [400 x i8]* %6, i64 0, i64 0
%122 = load i32, i32* %15
%123 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0), i8* %121, i32 %122)
%124 = getelementptr inbounds [400 x i8], [400 x i8]* %7, i64 0, i64 0
%125 = load i32, i32* %14
%126 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0), i8* %124, i32 %125)
%127 = getelementptr inbounds [400 x i8], [400 x i8]* %6, i64 0, i64 0
%128 = getelementptr inbounds [5000 x [3 x float]], [5000 x [3 x float]]* %18, i64 0, i64 0
%129 = bitcast [3 x float]* %128 to float**
%130 = load i32, i32* %15
%131 = call i32 @read_data(i8* %127, float** %129, i32 %130)
%132 = getelementptr inbounds [400 x i8], [400 x i8]* %7, i64 0, i64 0
%133 = getelementptr inbounds [5000 x [3 x float]], [5000 x [3 x float]]* %19, i64 0, i64 0
%134 = bitcast [3 x float]* %133 to float**
%135 = load i32, i32* %14
%136 = call i32 @read_data(i8* %132, float** %134, i32 %135)
store i32 0, i32* %12
br label %137
137: ; preds = %456, %86
%138 = load i32, i32* %12
%139 = load i32, i32* %15
%140 = icmp slt i32 %138, %139
br i1 %140, label %141, label %459
141: ; preds = %137
store i32 0, i32* %13
br label %142
142: ; preds = %179, %141
%143 = load i32, i32* %13
%144 = icmp slt i32 %143, 10957
br i1 %144, label %145, label %182
145: ; preds = %142
store i32 0, i32* %16
br label %146
146: ; preds = %175, %145
%147 = load i32, i32* %16
%148 = load i32, i32* %17
%149 = icmp slt i32 %147, %148
br i1 %149, label %150, label %178
150: ; preds = %146
%151 = load i32, i32* %13
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %20, i64 0, i64 %152
%154 = load i32, i32* %16
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds [6 x float], [6 x float]* %153, i64 0, i64 %155
store float 0.000000e+00, float* %156
%157 = load i32, i32* %13
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %21, i64 0, i64 %158
%160 = load i32, i32* %16
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds [6 x float], [6 x float]* %159, i64 0, i64 %161
store float 0.000000e+00, float* %162
%163 = load i32, i32* %13
%164 = sext i32 %163 to i64
%165 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %22, i64 0, i64 %164
%166 = load i32, i32* %16
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds [6 x float], [6 x float]* %165, i64 0, i64 %167
store float 0.000000e+00, float* %168
%169 = load i32, i32* %13
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %23, i64 0, i64 %170
%172 = load i32, i32* %16
%173 = sext i32 %172 to i64
%174 = getelementptr inbounds [6 x float], [6 x float]* %171, i64 0, i64 %173
store float 0.000000e+00, float* %174
br label %175
175: ; preds = %150
%176 = load i32, i32* %16
%177 = add nsw i32 %176, 1
store i32 %177, i32* %16
br label %146
178: ; preds = %146
br label %179
179: ; preds = %178
%180 = load i32, i32* %13
%181 = add nsw i32 %180, 1
store i32 %181, i32* %13
br label %142
182: ; preds = %142
%183 = load i32, i32* %12
%184 = sext i32 %183 to i64
%185 = getelementptr inbounds [5000 x [3 x float]], [5000 x [3 x float]]* %18, i64 0, i64 %184
%186 = getelementptr inbounds [3 x float], [3 x float]* %185, i64 0, i64 0
%187 = load float, float* %186
store float %187, float* %27
%188 = load i32, i32* %12
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds [5000 x [3 x float]], [5000 x [3 x float]]* %18, i64 0, i64 %189
%191 = getelementptr inbounds [3 x float], [3 x float]* %190, i64 0, i64 1
%192 = load float, float* %191
store float %192, float* %28
%193 = load float, float* %27
%194 = load float, float* %25
%195 = fdiv float %194, 2.000000e+00
%196 = fadd float %193, %195
store float %196, float* %29
%197 = load float, float* %28
%198 = load float, float* %25
%199 = fdiv float %198, 2.000000e+00
%200 = fsub float %197, %199
store float %200, float* %33
%201 = load float, float* %27
%202 = load float, float* %25
%203 = fdiv float %202, 2.000000e+00
%204 = fadd float %201, %203
store float %204, float* %30
%205 = load float, float* %28
%206 = load float, float* %25
%207 = fdiv float %206, 2.000000e+00
%208 = fadd float %205, %207
store float %208, float* %34
%209 = load float, float* %27
%210 = load float, float* %25
%211 = fdiv float %210, 2.000000e+00
%212 = fsub float %209, %211
store float %212, float* %31
%213 = load float, float* %28
%214 = load float, float* %25
%215 = fdiv float %214, 2.000000e+00
%216 = fsub float %213, %215
store float %216, float* %35
%217 = load float, float* %27
%218 = load float, float* %25
%219 = fdiv float %218, 2.000000e+00
%220 = fsub float %217, %219
store float %220, float* %32
%221 = load float, float* %28
%222 = load float, float* %25
%223 = fdiv float %222, 2.000000e+00
%224 = fadd float %221, %223
store float %224, float* %36
%225 = getelementptr inbounds [5000 x [3 x float]], [5000 x [3 x float]]* %19, i64 0, i64 0
%226 = bitcast [3 x float]* %225 to float**
%227 = load float, float* %29
%228 = load float, float* %33
%229 = load i32, i32* %14
%230 = call float @exist_file(float** %226, float %227, float %228, i32 %229)
store float %230, float* %37
%231 = getelementptr inbounds [5000 x [3 x float]], [5000 x [3 x float]]* %19, i64 0, i64 0
%232 = bitcast [3 x float]* %231 to float**
%233 = load float, float* %30
%234 = load float, float* %34
%235 = load i32, i32* %14
%236 = call float @exist_file(float** %232, float %233, float %234, i32 %235)
store float %236, float* %38
%237 = getelementptr inbounds [5000 x [3 x float]], [5000 x [3 x float]]* %19, i64 0, i64 0
%238 = bitcast [3 x float]* %237 to float**
%239 = load float, float* %31
%240 = load float, float* %35
%241 = load i32, i32* %14
%242 = call float @exist_file(float** %238, float %239, float %240, i32 %241)
store float %242, float* %39
%243 = getelementptr inbounds [5000 x [3 x float]], [5000 x [3 x float]]* %19, i64 0, i64 0
%244 = bitcast [3 x float]* %243 to float**
%245 = load float, float* %32
%246 = load float, float* %36
%247 = load i32, i32* %14
%248 = call float @exist_file(float** %244, float %245, float %246, i32 %247)
store float %248, float* %40
store i32 0, i32* %44
store i32 0, i32* %43
store i32 0, i32* %42
store i32 0, i32* %41
%249 = load float, float* %37
%250 = fpext float %249 to double
%251 = fcmp ogt double %250, 0.000000e+00
br i1 %251, label %252, label %253
252: ; preds = %182
store i32 1, i32* %41
br label %253
253: ; preds = %252, %182
%254 = load float, float* %38
%255 = fpext float %254 to double
%256 = fcmp ogt double %255, 0.000000e+00
br i1 %256, label %257, label %258
257: ; preds = %253
store i32 1, i32* %42
br label %258
258: ; preds = %257, %253
%259 = load float, float* %39
%260 = fpext float %259 to double
%261 = fcmp ogt double %260, 0.000000e+00
br i1 %261, label %262, label %263
262: ; preds = %258
store i32 1, i32* %43
br label %263
263: ; preds = %262, %258
%264 = load float, float* %40
%265 = fpext float %264 to double
%266 = fcmp ogt double %265, 0.000000e+00
br i1 %266, label %267, label %268
267: ; preds = %263
store i32 1, i32* %44
br label %268
268: ; preds = %267, %263
%269 = load float, float* %37
%270 = load float, float* %38
%271 = fadd float %269, %270
%272 = load float, float* %39
%273 = fadd float %271, %272
%274 = load float, float* %40
%275 = fadd float %273, %274
store float %275, float* %45
%276 = load i32, i32* %41
%277 = load i32, i32* %42
%278 = add nsw i32 %276, %277
%279 = load i32, i32* %43
%280 = add nsw i32 %278, %279
%281 = load i32, i32* %44
%282 = add nsw i32 %280, %281
store i32 %282, i32* %46
%283 = load float, float* %27
%284 = fpext float %283 to double
%285 = load float, float* %28
%286 = fpext float %285 to double
%287 = load i32, i32* %46
%288 = load float, float* %45
%289 = fpext float %288 to double
%290 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.8, i64 0, i64 0), double %284, double %286, i32 %287, double %289)
%291 = load float, float* %37
%292 = fpext float %291 to double
%293 = load float, float* %38
%294 = fpext float %293 to double
%295 = load float, float* %39
%296 = fpext float %295 to double
%297 = load float, float* %40
%298 = fpext float %297 to double
%299 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.9, i64 0, i64 0), double %292, double %294, double %296, double %298)
%300 = load float, float* %37
%301 = fcmp ogt float %300, 0.000000e+00
br i1 %301, label %302, label %310
302: ; preds = %268
%303 = getelementptr inbounds [400 x i8], [400 x i8]* %8, i64 0, i64 0
%304 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %20, i64 0, i64 0
%305 = bitcast [6 x float]* %304 to float**
%306 = load float, float* %29
%307 = load float, float* %33
%308 = load i32, i32* %17
%309 = call i32 @read_metdata(i8* %303, float** %305, float %306, float %307, i32 %308)
br label %310
310: ; preds = %302, %268
%311 = load float, float* %38
%312 = fcmp ogt float %311, 0.000000e+00
br i1 %312, label %313, label %321
313: ; preds = %310
%314 = getelementptr inbounds [400 x i8], [400 x i8]* %8, i64 0, i64 0
%315 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %21, i64 0, i64 0
%316 = bitcast [6 x float]* %315 to float**
%317 = load float, float* %30
%318 = load float, float* %34
%319 = load i32, i32* %17
%320 = call i32 @read_metdata(i8* %314, float** %316, float %317, float %318, i32 %319)
br label %321
321: ; preds = %313, %310
%322 = load float, float* %39
%323 = fcmp ogt float %322, 0.000000e+00
br i1 %323, label %324, label %332
324: ; preds = %321
%325 = getelementptr inbounds [400 x i8], [400 x i8]* %8, i64 0, i64 0
%326 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %22, i64 0, i64 0
%327 = bitcast [6 x float]* %326 to float**
%328 = load float, float* %31
%329 = load float, float* %35
%330 = load i32, i32* %17
%331 = call i32 @read_metdata(i8* %325, float** %327, float %328, float %329, i32 %330)
br label %332
332: ; preds = %324, %321
%333 = load float, float* %40
%334 = fcmp ogt float %333, 0.000000e+00
br i1 %334, label %335, label %343
335: ; preds = %332
%336 = getelementptr inbounds [400 x i8], [400 x i8]* %8, i64 0, i64 0
%337 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %23, i64 0, i64 0
%338 = bitcast [6 x float]* %337 to float**
%339 = load float, float* %32
%340 = load float, float* %36
%341 = load i32, i32* %17
%342 = call i32 @read_metdata(i8* %336, float** %338, float %339, float %340, i32 %341)
br label %343
343: ; preds = %335, %332
store i32 0, i32* %13
br label %344
344: ; preds = %401, %343
%345 = load i32, i32* %13
%346 = icmp slt i32 %345, 10957
br i1 %346, label %347, label %404
347: ; preds = %344
store i32 0, i32* %16
br label %348
348: ; preds = %397, %347
%349 = load i32, i32* %16
%350 = load i32, i32* %17
%351 = icmp slt i32 %349, %350
br i1 %351, label %352, label %400
352: ; preds = %348
%353 = load i32, i32* %13
%354 = sext i32 %353 to i64
%355 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %20, i64 0, i64 %354
%356 = load i32, i32* %16
%357 = sext i32 %356 to i64
%358 = getelementptr inbounds [6 x float], [6 x float]* %355, i64 0, i64 %357
%359 = load float, float* %358
%360 = load float, float* %37
%361 = load i32, i32* %13
%362 = sext i32 %361 to i64
%363 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %21, i64 0, i64 %362
%364 = load i32, i32* %16
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds [6 x float], [6 x float]* %363, i64 0, i64 %365
%367 = load float, float* %366
%368 = load float, float* %38
%369 = fmul float %367, %368
%370 = call float @llvm.fmuladd.f32(float %359, float %360, float %369)
%371 = load i32, i32* %13
%372 = sext i32 %371 to i64
%373 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %22, i64 0, i64 %372
%374 = load i32, i32* %16
%375 = sext i32 %374 to i64
%376 = getelementptr inbounds [6 x float], [6 x float]* %373, i64 0, i64 %375
%377 = load float, float* %376
%378 = load float, float* %39
%379 = call float @llvm.fmuladd.f32(float %377, float %378, float %370)
%380 = load i32, i32* %13
%381 = sext i32 %380 to i64
%382 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %23, i64 0, i64 %381
%383 = load i32, i32* %16
%384 = sext i32 %383 to i64
%385 = getelementptr inbounds [6 x float], [6 x float]* %382, i64 0, i64 %384
%386 = load float, float* %385
%387 = load float, float* %40
%388 = call float @llvm.fmuladd.f32(float %386, float %387, float %379)
%389 = load float, float* %45
%390 = fdiv float %388, %389
%391 = load i32, i32* %13
%392 = sext i32 %391 to i64
%393 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %24, i64 0, i64 %392
%394 = load i32, i32* %16
%395 = sext i32 %394 to i64
%396 = getelementptr inbounds [6 x float], [6 x float]* %393, i64 0, i64 %395
store float %390, float* %396
br label %397
397: ; preds = %352
%398 = load i32, i32* %16
%399 = add nsw i32 %398, 1
store i32 %399, i32* %16
br label %348
400: ; preds = %348
br label %401
401: ; preds = %400
%402 = load i32, i32* %13
%403 = add nsw i32 %402, 1
store i32 %403, i32* %13
br label %344
404: ; preds = %344
%405 = getelementptr inbounds [400 x i8], [400 x i8]* %10, i64 0, i64 0
%406 = getelementptr inbounds [400 x i8], [400 x i8]* %9, i64 0, i64 0
%407 = call i32 @strcpy(i8* %405, i8* %406)
%408 = getelementptr inbounds [50 x i8], [50 x i8]* %11, i64 0, i64 0
%409 = load float, float* %27
%410 = load float, float* %28
%411 = call i32 @sprintf(i8* %408, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.10, i64 0, i64 0), float %409, float %410)
%412 = getelementptr inbounds [400 x i8], [400 x i8]* %10, i64 0, i64 0
%413 = getelementptr inbounds [50 x i8], [50 x i8]* %11, i64 0, i64 0
%414 = call i32 @strcat(i8* %412, i8* %413)
%415 = getelementptr inbounds [400 x i8], [400 x i8]* %10, i64 0, i64 0
%416 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.11, i64 0, i64 0), i8* %415)
%417 = getelementptr inbounds [400 x i8], [400 x i8]* %10, i64 0, i64 0
%418 = call i32* @fopen(i8* %417, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0))
store i32* %418, i32** %5
%419 = icmp eq i32* %418, null
br i1 %419, label %420, label %424
420: ; preds = %404
%421 = getelementptr inbounds [400 x i8], [400 x i8]* %10, i64 0, i64 0
%422 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.13, i64 0, i64 0), i8* %421)
%423 = call i32 @exit(i32 0)
unreachable
424: ; preds = %404
store i32 0, i32* %13
br label %425
425: ; preds = %450, %424
%426 = load i32, i32* %13
%427 = icmp slt i32 %426, 10957
br i1 %427, label %428, label %453
428: ; preds = %425
store i32 0, i32* %16
br label %429
429: ; preds = %444, %428
%430 = load i32, i32* %16
%431 = load i32, i32* %17
%432 = icmp slt i32 %430, %431
br i1 %432, label %433, label %447
433: ; preds = %429
%434 = load i32*, i32** %5
%435 = load i32, i32* %13
%436 = sext i32 %435 to i64
%437 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %24, i64 0, i64 %436
%438 = load i32, i32* %16
%439 = sext i32 %438 to i64
%440 = getelementptr inbounds [6 x float], [6 x float]* %437, i64 0, i64 %439
%441 = load float, float* %440
%442 = fpext float %441 to double
%443 = call i32 (i32*, i8*, ...) @fprintf(i32* %434, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), double %442)
br label %444
444: ; preds = %433
%445 = load i32, i32* %16
%446 = add nsw i32 %445, 1
store i32 %446, i32* %16
br label %429
447: ; preds = %429
%448 = load i32*, i32** %5
%449 = call i32 (i32*, i8*, ...) @fprintf(i32* %448, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.15, i64 0, i64 0))
br label %450
450: ; preds = %447
%451 = load i32, i32* %13
%452 = add nsw i32 %451, 1
store i32 %452, i32* %13
br label %425
453: ; preds = %425
%454 = load i32*, i32** %5
%455 = call i32 @fclose(i32* %454)
br label %456
456: ; preds = %453
%457 = load i32, i32* %12
%458 = add nsw i32 %457, 1
store i32 %458, i32* %12
br label %137
459: ; preds = %137
ret void
}

LLVM IR (-O2):
@__const.main.indir = [400 x i8] c"/home/tempbvm/cbr8/metdata/WIND1961-1990/\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
@__const.main.outdir = [400 x i8] c"/home/tempbvm/cbr2/metdata/quarter_1961-1990/data_\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
@stderr = global i32* null
@.str = [137 x i8] c"Usage: %s <old fraction xyz> <old fraction data dir> <new fraction xyz> <new fraction data dir> <old resolution> <number of parameters>\0A\00"
@.str.1 = [76 x i8] c"\09<old fraction xyz> is the 3 coloumn fraction file for the old resolution.\0A\00"
@.str.2 = [88 x i8] c"\09<old fraction data dir> is the directory for the forcing data for the old resolution.\0A\00"
@.str.3 = [76 x i8] c"\09<new fraction xyz> is the 3 coloumn fraction file for the new resolution.\0A\00"
@.str.4 = [88 x i8] c"\09<new fraction data dir> is the directory for the forcing data for the new resolution.\0A\00"
@.str.5 = [67 x i8] c"\09<old resolution> is the old resoluation in fractions of degrees.\0A\00"
@.str.6 = [97 x i8] c"\09<number of parameters> is the number of parameters (data types / columns) in the forcing file.\0A\00"
@.str.7 = [22 x i8] c"File %s has %d lines\0A\00"
@.str.8 = [54 x i8] c"lat %.4f lon %.4f valid_cells %d sum_fraction %.3f\0A\00"
@.str.9 = [37 x i8] c"Afr %.3f Bfr %.3f Cfr %.3f Dfr %.3f\0A\00"
@.str.10 = [10 x i8] c"%.4f_%.4f\00"
@.str.11 = [12 x i8] c"outfile %s\0A\00"
@.str.12 = [2 x i8] c"w\00"
@.str.13 = [22 x i8] c"Cannot open file %s \0A\00"
@.str.14 = [5 x i8] c"%.2f\00"
define void @main(i32 %0, i8** nocapture %1) {
%3 = alloca [400 x i8]
%4 = alloca [400 x i8]
%5 = alloca [400 x i8]
%6 = alloca [400 x i8]
%7 = alloca [400 x i8]
%8 = alloca [50 x i8]
%9 = alloca [5000 x [3 x float]]
%10 = alloca [5000 x [3 x float]]
%11 = alloca [10957 x [6 x float]]
%12 = alloca [10957 x [6 x float]]
%13 = alloca [10957 x [6 x float]]
%14 = alloca [10957 x [6 x float]]
%15 = alloca [10957 x [6 x float]]
%16 = getelementptr inbounds [400 x i8], [400 x i8]* %3, i64 0, i64 0
store i8 102, i8* %16
%17 = getelementptr inbounds [400 x i8], [400 x i8]* %3, i64 0, i64 1
store i8 114, i8* %17
%18 = getelementptr inbounds [400 x i8], [400 x i8]* %3, i64 0, i64 2
store i8 52, i8* %18
%19 = getelementptr inbounds [400 x i8], [400 x i8]* %3, i64 0, i64 3
store i8 46, i8* %19
%20 = getelementptr inbounds [400 x i8], [400 x i8]* %3, i64 0, i64 4
store i8 108, i8* %20
%21 = getelementptr inbounds [400 x i8], [400 x i8]* %3, i64 0, i64 5
store i8 108, i8* %21
%22 = getelementptr inbounds [400 x i8], [400 x i8]* %4, i64 0, i64 0
store i8 102, i8* %22
%23 = getelementptr inbounds [400 x i8], [400 x i8]* %4, i64 0, i64 1
store i8 114, i8* %23
%24 = getelementptr inbounds [400 x i8], [400 x i8]* %4, i64 0, i64 2
store i8 56, i8* %24
%25 = getelementptr inbounds [400 x i8], [400 x i8]* %4, i64 0, i64 3
store i8 46, i8* %25
%26 = getelementptr inbounds [400 x i8], [400 x i8]* %4, i64 0, i64 4
store i8 108, i8* %26
%27 = getelementptr inbounds [400 x i8], [400 x i8]* %4, i64 0, i64 5
store i8 108, i8* %27
%28 = getelementptr inbounds [400 x i8], [400 x i8]* %5, i64 0, i64 0
%29 = getelementptr inbounds [400 x i8], [400 x i8]* %6, i64 0, i64 0
%30 = getelementptr inbounds [400 x i8], [400 x i8]* %7, i64 0, i64 0
%31 = getelementptr inbounds [50 x i8], [50 x i8]* %8, i64 0, i64 0
%32 = bitcast [5000 x [3 x float]]* %9 to i8*
%33 = bitcast [5000 x [3 x float]]* %10 to i8*
%34 = bitcast [10957 x [6 x float]]* %11 to i8*
%35 = bitcast [10957 x [6 x float]]* %12 to i8*
%36 = bitcast [10957 x [6 x float]]* %13 to i8*
%37 = bitcast [10957 x [6 x float]]* %14 to i8*
%38 = bitcast [10957 x [6 x float]]* %15 to i8*
%39 = icmp eq i32 %0, 7
br i1 %39, label %57, label %40
40: ; preds = %2
%41 = load i32*, i32** @stderr
%42 = load i8*, i8** %1
%43 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %41, i8* getelementptr inbounds ([137 x i8], [137 x i8]* @.str, i64 0, i64 0), i8* %42)
%44 = load i32*, i32** @stderr
%45 = tail call i64 @fwrite(i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.1, i64 0, i64 0), i64 75, i64 1, i32* %44)
%46 = load i32*, i32** @stderr
%47 = tail call i64 @fwrite(i8* getelementptr inbounds ([88 x i8], [88 x i8]* @.str.2, i64 0, i64 0), i64 87, i64 1, i32* %46)
%48 = load i32*, i32** @stderr
%49 = tail call i64 @fwrite(i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.3, i64 0, i64 0), i64 75, i64 1, i32* %48)
%50 = load i32*, i32** @stderr
%51 = tail call i64 @fwrite(i8* getelementptr inbounds ([88 x i8], [88 x i8]* @.str.4, i64 0, i64 0), i64 87, i64 1, i32* %50)
%52 = load i32*, i32** @stderr
%53 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.5, i64 0, i64 0), i64 66, i64 1, i32* %52)
%54 = load i32*, i32** @stderr
%55 = tail call i64 @fwrite(i8* getelementptr inbounds ([97 x i8], [97 x i8]* @.str.6, i64 0, i64 0), i64 96, i64 1, i32* %54)
%56 = tail call i32 @exit(i32 0)
unreachable
57: ; preds = %2
%58 = getelementptr inbounds i8*, i8** %1, i64 1
%59 = load i8*, i8** %58
%60 = call i32 @strcpy(i8* %16, i8* %59)
%61 = getelementptr inbounds i8*, i8** %1, i64 2
%62 = load i8*, i8** %61
%63 = call i32 @strcpy(i8* %28, i8* %62)
%64 = getelementptr inbounds i8*, i8** %1, i64 3
%65 = load i8*, i8** %64
%66 = call i32 @strcpy(i8* %22, i8* %65)
%67 = getelementptr inbounds i8*, i8** %1, i64 4
%68 = load i8*, i8** %67
%69 = call i32 @strcpy(i8* %29, i8* %68)
%70 = getelementptr inbounds i8*, i8** %1, i64 5
%71 = load i8*, i8** %70
%72 = call float @atof(i8* %71)
%73 = getelementptr inbounds i8*, i8** %1, i64 6
%74 = load i8*, i8** %73
%75 = call i32 @atoi(i8* %74)
%76 = call i32 @line_count(i8* %16)
%77 = call i32 @line_count(i8* %22)
%78 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0), i8* %16, i32 %76)
%79 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0), i8* %22, i32 %77)
%80 = bitcast [5000 x [3 x float]]* %9 to float**
%81 = call i32 @read_data(i8* %16, float** %80, i32 %76)
%82 = bitcast [5000 x [3 x float]]* %10 to float**
%83 = call i32 @read_data(i8* %22, float** %82, i32 %77)
%84 = icmp sgt i32 %76, 0
br i1 %84, label %85, label %262
85: ; preds = %57
%86 = icmp sgt i32 %75, 0
%87 = fmul float %72, 5.000000e-01
%88 = bitcast [10957 x [6 x float]]* %11 to float**
%89 = bitcast [10957 x [6 x float]]* %12 to float**
%90 = bitcast [10957 x [6 x float]]* %13 to float**
%91 = bitcast [10957 x [6 x float]]* %14 to float**
%92 = zext i32 %75 to i64
%93 = shl nuw nsw i64 %92, 2
%94 = zext i32 %76 to i64
%95 = icmp ult i32 %75, 4
%96 = and i64 %92, 4294967292
%97 = icmp eq i64 %96, %92
br label %98
98: ; preds = %85, %258
%99 = phi i64 [ 0, %85 ], [ %260, %258 ]
br label %100
100: ; preds = %124, %98
%101 = phi i64 [ 0, %98 ], [ %125, %124 ]
br i1 %86, label %102, label %111
102: ; preds = %100
%103 = getelementptr [10957 x [6 x float]], [10957 x [6 x float]]* %11, i64 0, i64 %101, i64 0
%104 = bitcast float* %103 to i8*
%105 = getelementptr [10957 x [6 x float]], [10957 x [6 x float]]* %12, i64 0, i64 %101, i64 0
%106 = bitcast float* %105 to i8*
%107 = getelementptr [10957 x [6 x float]], [10957 x [6 x float]]* %13, i64 0, i64 %101, i64 0
%108 = bitcast float* %107 to i8*
%109 = getelementptr [10957 x [6 x float]], [10957 x [6 x float]]* %14, i64 0, i64 %101, i64 0
%110 = bitcast float* %109 to i8*
br label %111
111: ; preds = %102, %100
%112 = or i64 %101, 1
%113 = icmp eq i64 %112, 10957
br i1 %113, label %126, label %114
114: ; preds = %111
br i1 %86, label %115, label %124
115: ; preds = %114
%116 = getelementptr [10957 x [6 x float]], [10957 x [6 x float]]* %11, i64 0, i64 %112, i64 0
%117 = bitcast float* %116 to i8*
%118 = getelementptr [10957 x [6 x float]], [10957 x [6 x float]]* %12, i64 0, i64 %112, i64 0
%119 = bitcast float* %118 to i8*
%120 = getelementptr [10957 x [6 x float]], [10957 x [6 x float]]* %13, i64 0, i64 %112, i64 0
%121 = bitcast float* %120 to i8*
%122 = getelementptr [10957 x [6 x float]], [10957 x [6 x float]]* %14, i64 0, i64 %112, i64 0
%123 = bitcast float* %122 to i8*
br label %124
124: ; preds = %115, %114
%125 = add nuw nsw i64 %101, 2
br label %100
126: ; preds = %111
%127 = getelementptr inbounds [5000 x [3 x float]], [5000 x [3 x float]]* %9, i64 0, i64 %99, i64 0
%128 = load float, float* %127
%129 = getelementptr inbounds [5000 x [3 x float]], [5000 x [3 x float]]* %9, i64 0, i64 %99, i64 1
%130 = load float, float* %129
%131 = fadd float %87, %128
%132 = fsub float %130, %87
%133 = fadd float %87, %130
%134 = fsub float %128, %87
%135 = call float @exist_file(float** %82, float %131, float %132, i32 %77)
%136 = call float @exist_file(float** %82, float %131, float %133, i32 %77)
%137 = call float @exist_file(float** %82, float %134, float %132, i32 %77)
%138 = call float @exist_file(float** %82, float %134, float %133, i32 %77)
%139 = fpext float %135 to double
%140 = fcmp ogt float %135, 0.000000e+00
%141 = zext i1 %140 to i32
%142 = fpext float %136 to double
%143 = fcmp ogt float %136, 0.000000e+00
%144 = zext i1 %143 to i32
%145 = fpext float %137 to double
%146 = fcmp ogt float %137, 0.000000e+00
%147 = zext i1 %146 to i32
%148 = fpext float %138 to double
%149 = fcmp ogt float %138, 0.000000e+00
%150 = zext i1 %149 to i32
%151 = fadd float %135, %136
%152 = fadd float %151, %137
%153 = fadd float %152, %138
%154 = add nuw nsw i32 %144, %141
%155 = add nuw nsw i32 %154, %147
%156 = add nuw nsw i32 %155, %150
%157 = fpext float %128 to double
%158 = fpext float %130 to double
%159 = fpext float %153 to double
%160 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.8, i64 0, i64 0), double %157, double %158, i32 %156, double %159)
%161 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.9, i64 0, i64 0), double %139, double %142, double %145, double %148)
br i1 %140, label %162, label %164
162: ; preds = %126
%163 = call i32 @read_metdata(i8* %28, float** %88, float %131, float %132, i32 %75)
br label %164
164: ; preds = %162, %126
br i1 %143, label %165, label %167
165: ; preds = %164
%166 = call i32 @read_metdata(i8* %28, float** %89, float %131, float %133, i32 %75)
br label %167
167: ; preds = %165, %164
br i1 %146, label %168, label %170
168: ; preds = %167
%169 = call i32 @read_metdata(i8* %28, float** %90, float %134, float %132, i32 %75)
br label %170
170: ; preds = %168, %167
br i1 %149, label %171, label %173
171: ; preds = %170
%172 = call i32 @read_metdata(i8* %28, float** %91, float %134, float %133, i32 %75)
br label %173
173: ; preds = %171, %170
%174 = insertelement <4 x float> poison, float %136, i64 0
%175 = shufflevector <4 x float> %174, <4 x float> poison, <4 x i32> zeroinitializer
%176 = insertelement <4 x float> poison, float %135, i64 0
%177 = shufflevector <4 x float> %176, <4 x float> poison, <4 x i32> zeroinitializer
%178 = insertelement <4 x float> poison, float %137, i64 0
%179 = shufflevector <4 x float> %178, <4 x float> poison, <4 x i32> zeroinitializer
%180 = insertelement <4 x float> poison, float %138, i64 0
%181 = shufflevector <4 x float> %180, <4 x float> poison, <4 x i32> zeroinitializer
%182 = insertelement <4 x float> poison, float %153, i64 0
%183 = shufflevector <4 x float> %182, <4 x float> poison, <4 x i32> zeroinitializer
br label %184
184: ; preds = %173, %231
%185 = phi i64 [ %232, %231 ], [ 0, %173 ]
br i1 %86, label %186, label %231
186: ; preds = %184
br i1 %95, label %211, label %187
187: ; preds = %186, %187
%188 = phi i64 [ %208, %187 ], [ 0, %186 ]
%189 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %11, i64 0, i64 %185, i64 %188
%190 = bitcast float* %189 to <4 x float>*
%191 = load <4 x float>, <4 x float>* %190
%192 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %12, i64 0, i64 %185, i64 %188
%193 = bitcast float* %192 to <4 x float>*
%194 = load <4 x float>, <4 x float>* %193
%195 = fmul <4 x float> %175, %194
%196 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %191, <4 x float> %177, <4 x float> %195)
%197 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %13, i64 0, i64 %185, i64 %188
%198 = bitcast float* %197 to <4 x float>*
%199 = load <4 x float>, <4 x float>* %198
%200 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %199, <4 x float> %179, <4 x float> %196)
%201 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %14, i64 0, i64 %185, i64 %188
%202 = bitcast float* %201 to <4 x float>*
%203 = load <4 x float>, <4 x float>* %202
%204 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %203, <4 x float> %181, <4 x float> %200)
%205 = fdiv <4 x float> %204, %183
%206 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %15, i64 0, i64 %185, i64 %188
%207 = bitcast float* %206 to <4 x float>*
store <4 x float> %205, <4 x float>* %207
%208 = add nuw i64 %188, 4
%209 = icmp eq i64 %208, %96
br i1 %209, label %210, label %187
210: ; preds = %187
br i1 %97, label %231, label %211
211: ; preds = %186, %210
%212 = phi i64 [ 0, %186 ], [ %96, %210 ]
br label %213
213: ; preds = %211, %213
%214 = phi i64 [ %229, %213 ], [ %212, %211 ]
%215 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %11, i64 0, i64 %185, i64 %214
%216 = load float, float* %215
%217 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %12, i64 0, i64 %185, i64 %214
%218 = load float, float* %217
%219 = fmul float %136, %218
%220 = call float @llvm.fmuladd.f32(float %216, float %135, float %219)
%221 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %13, i64 0, i64 %185, i64 %214
%222 = load float, float* %221
%223 = call float @llvm.fmuladd.f32(float %222, float %137, float %220)
%224 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %14, i64 0, i64 %185, i64 %214
%225 = load float, float* %224
%226 = call float @llvm.fmuladd.f32(float %225, float %138, float %223)
%227 = fdiv float %226, %153
%228 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %15, i64 0, i64 %185, i64 %214
store float %227, float* %228
%229 = add nuw nsw i64 %214, 1
%230 = icmp eq i64 %229, %92
br i1 %230, label %231, label %213
231: ; preds = %213, %210, %184
%232 = add nuw nsw i64 %185, 1
%233 = icmp eq i64 %232, 10957
br i1 %233, label %234, label %184
234: ; preds = %231
%235 = call i32 @strcpy(i8* %30, i8* %29)
%236 = call i32 @sprintf(i8* %31, i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.10, i64 0, i64 0), float %128, float %130)
%237 = call i32 @strcat(i8* %30, i8* %31)
%238 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.11, i64 0, i64 0), i8* %30)
%239 = call i32* @fopen(i8* %30, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0))
%240 = icmp eq i32* %239, null
br i1 %240, label %241, label %244
241: ; preds = %234
%242 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.13, i64 0, i64 0), i8* %30)
%243 = call i32 @exit(i32 0)
unreachable
244: ; preds = %234, %254
%245 = phi i64 [ %256, %254 ], [ 0, %234 ]
br i1 %86, label %246, label %254
246: ; preds = %244, %246
%247 = phi i64 [ %252, %246 ], [ 0, %244 ]
%248 = getelementptr inbounds [10957 x [6 x float]], [10957 x [6 x float]]* %15, i64 0, i64 %245, i64 %247
%249 = load float, float* %248
%250 = fpext float %249 to double
%251 = call i32 (i32*, i8*, ...) @fprintf(i32* %239, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), double %250)
%252 = add nuw nsw i64 %247, 1
%253 = icmp eq i64 %252, %92
br i1 %253, label %254, label %246
254: ; preds = %246, %244
%255 = call i32 @fputc(i32 10, i32* %239)
%256 = add nuw nsw i64 %245, 1
%257 = icmp eq i64 %256, 10957
br i1 %257, label %258, label %244
258: ; preds = %254
%259 = call i32 @fclose(i32* %239)
%260 = add nuw nsw i64 %99, 1
%261 = icmp eq i64 %260, %94
br i1 %261, label %262, label %98
262: ; preds = %258, %57
ret void
}