#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 M_PI;
double atof(char *);
double *calloc(int, int);
double exp(double);
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
scalar_t__ fgets(char *, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int /*<<< orphan*/ fscanf(int /*<<< orphan*/ *, char *, double *, double *);
double pow(double, double);
int /*<<< orphan*/ printf(char *, double, double);
int /*<<< orphan*/ strcpy(char *, char *);
int /*<<< orphan*/ usage(char *);
int main(int argc, char **argv) {
  int i, N;
  FILE *fp_fit;
  char linebuf[256];
  double r, r_min, r_max, r_inc;
  double first_derivative, second_derivative, integrand;
  double *r_input, *fit_input;
  char fit_file[256];
  double temperature, temperature_min, temperature_max, temperature_inc;
  double B, B_classical, B_quantum_first, B_quantum_second, B_quantum_ideal;
  if (argc != 5)
    usage(argv[0]);
  temperature_min = atof(argv[1]);
  temperature_max = atof(argv[2]);
  temperature_inc = atof(argv[3]);
  strcpy(fit_file, argv[4]);
  fp_fit = fopen(fit_file, "r");
  for (N = 0; fgets(linebuf, 256, fp_fit); N++)
    ;
  fclose(fp_fit);
  r_input = calloc(N, sizeof(double));
  fit_input = calloc(N, sizeof(double));
  fp_fit = fopen(fit_file, "r");
  for (i = 0; i < N; i++)
    fscanf(fp_fit, "%lg %lg\n", &r_input[i], &fit_input[i]);
  fclose(fp_fit);
  r_min = r_input[0];
  r_max = r_input[N - 1];
  r_inc = r_input[1] - r_input[0];
  for (temperature = temperature_min; temperature <= temperature_max;
       temperature += temperature_inc) {
    B_classical = 0;
    for (r = r_min, i = 0; r < r_max; r += r_inc, i++) {
      integrand = (exp(-fit_input[i] / temperature) - 1.0) * pow(r, 2) * r_inc;
      B_classical += integrand;
    }
    B_classical *= -2.0 * M_PI;
    B_classical *= 1.0e-24 * 6.0221415e23;
    B_quantum_first = 0;
    for (r = r_min, i = 0; r < r_max; r += r_inc, i++) {
      first_derivative =
          1.3806503e-23 * (fit_input[i + 1] - fit_input[i]) / r_inc;
      integrand = exp(-fit_input[i] / temperature) *
                  pow(first_derivative * r, 2) * r_inc;
      B_quantum_first += integrand;
    }
    B_quantum_first *= (6.626068e-34 * 6.626068e-34 / 3.348e-27) /
                       (24.0 * M_PI * pow(1.3806503e-23 * temperature, 3));
    B_quantum_first *= 1.0e-4 * 6.0221415e23;
    B_quantum_second = 0;
    for (r = r_min, i = 0; r < (r_max - r_inc); r += r_inc, i++) {
      first_derivative =
          1.3806503e-23 * (fit_input[i + 1] - fit_input[i]) / r_inc;
      second_derivative =
          1.3806503e-23 *
          ((fit_input[i + 2] - fit_input[i + 1]) / r_inc - first_derivative) /
          r_inc;
      integrand =
          pow(second_derivative, 2) + 2.0 * pow((first_derivative / r), 2);
      integrand += (10.0 / (9.0 * 1.3806503e-23 * temperature)) *
                   pow(first_derivative, 3) / r;
      integrand -= (5.0 / (36.0 * pow(1.3806503e-23 * temperature, 2))) *
                   pow(first_derivative, 4) / r;
      integrand *= exp(-fit_input[i] / temperature) * pow(r, 2) * r_inc;
      B_quantum_second += integrand;
    }
    B_quantum_second *=
        pow(6.626068e-34 * 6.626068e-34 / 3.348e-27, 2) /
        (960.0 * M_PI * M_PI * M_PI * pow(1.3806503e-23 * temperature, 4));
    B_quantum_second *= -1.0e11 * 6.0221415e23;
    B_quantum_ideal =
        -6.0221415e23 *
        pow((6.626068e-34 * 6.626068e-34 /
             (2.0 * M_PI * 3.348e-27 * 1.3806503e-23 * temperature)),
            (3.0 / 2.0)) *
        pow(2.0, (-5.0 / 2.0));
    B_quantum_ideal *= 1.0e6;
    B = B_classical + B_quantum_first + B_quantum_second + B_quantum_ideal;
    printf("%f %f\n", temperature, B);
  }
  return (0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x310,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
cmpl   $0x5,-0x8(%rbp)
je     11df <main+0x2f>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
call   10b0 <usage@plt>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1040 <atof@plt>
movsd  %xmm0,-0x280(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1040 <atof@plt>
movsd  %xmm0,-0x288(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
call   1040 <atof@plt>
movsd  %xmm0,-0x290(%rbp)
ff
lea    -0x270(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rsi
call   1030 <strcpy@plt>
lea    -0x270(%rbp),%rdi
lea    0xe70(%rip),%rsi
call   10c0 <fopen@plt>
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x18(%rbp)
lea    -0x120(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    $0x100,%esi
call   1080 <fgets@plt>
cmp    $0x0,%rax
je     1282 <main+0xd2>
jmp    1274 <main+0xc4>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1250 <main+0xa0>
mov    -0x20(%rbp),%rdi
call   1050 <fclose@plt>
mov    -0x18(%rbp),%edi
mov    $0x8,%esi
call   1090 <calloc@plt>
mov    %rax,-0x160(%rbp)
mov    -0x18(%rbp),%edi
mov    $0x8,%esi
call   1090 <calloc@plt>
mov    %rax,-0x168(%rbp)
lea    -0x270(%rbp),%rdi
lea    0xdef(%rip),%rsi
call   10c0 <fopen@plt>
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    131f <main+0x16f>
mov    -0x20(%rbp),%rdi
mov    -0x160(%rbp),%rdx
movslq -0x14(%rbp),%rax
shl    $0x3,%rax
add    %rax,%rdx
mov    -0x168(%rbp),%rcx
movslq -0x14(%rbp),%rax
shl    $0x3,%rax
add    %rax,%rcx
lea    0xda6(%rip),%rsi
call   1070 <fscanf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    12d1 <main+0x121>
mov    -0x20(%rbp),%rdi
call   1050 <fclose@plt>
mov    -0x160(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x160(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x160(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x160(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x280(%rbp),%xmm0
ff
movsd  %xmm0,-0x278(%rbp)
ff
movsd  -0x278(%rbp),%xmm1
ff
movsd  -0x288(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1af0 <main+0x940>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x2a0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movl   $0x0,-0x14(%rbp)
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x138(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1497 <main+0x2e7>
mov    -0x168(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x278(%rbp),%xmm0
ff
call   10a0 <exp@plt>
movsd  0xc8f(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x2c0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  0xc0b(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x2c0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
addsd  -0x2a0(%rbp),%xmm0
ff
movsd  %xmm0,-0x2a0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    13c3 <main+0x213>
movsd  0xb69(%rip),%xmm0
mov    0x2b42(%rip),%rax
mulsd  (%rax),%xmm0
mulsd  -0x2a0(%rbp),%xmm0
ff
movsd  %xmm0,-0x2a0(%rbp)
ff
movsd  0xb3e(%rip),%xmm0
mulsd  -0x2a0(%rbp),%xmm0
ff
movsd  %xmm0,-0x2a0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x2a8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movl   $0x0,-0x14(%rbp)
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x138(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1605 <main+0x455>
mov    -0x168(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x168(%rbp),%rax
movslq -0x14(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm1
movsd  0xaed(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x168(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x278(%rbp),%xmm0
ff
call   10a0 <exp@plt>
movsd  %xmm0,-0x2c8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  0xa9d(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x2c8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
addsd  -0x2a8(%rbp),%xmm0
ff
movsd  %xmm0,-0x2a8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    14f4 <main+0x344>
movsd  0xa23(%rip),%xmm0
mov    0x29d4(%rip),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x2d0(%rbp)
ff
movsd  0xa00(%rip),%xmm0
mulsd  -0x278(%rbp),%xmm0
ff
movsd  0x9e8(%rip),%xmm1
call   10d0 <pow@plt>
movsd  -0x2d0(%rbp),%xmm1
ff
mulsd  %xmm0,%xmm1
movsd  0x9c7(%rip),%xmm0
divsd  %xmm1,%xmm0
mulsd  -0x2a8(%rbp),%xmm0
ff
movsd  %xmm0,-0x2a8(%rbp)
ff
movsd  0x9a3(%rip),%xmm0
mulsd  -0x2a8(%rbp),%xmm0
ff
movsd  %xmm0,-0x2a8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x2b0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movl   $0x0,-0x14(%rbp)
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x138(%rbp),%xmm0
ff
subsd  -0x140(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    193a <main+0x78a>
mov    -0x168(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x168(%rbp),%rax
movslq -0x14(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm1
movsd  0x93a(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x168(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x168(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm1
divsd  -0x140(%rbp),%xmm1
ff
subsd  -0x148(%rbp),%xmm1
ff
movsd  0x8e4(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  0x8d8(%rip),%xmm1
call   10d0 <pow@plt>
movsd  %xmm0,-0x2f0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
divsd  -0x128(%rbp),%xmm0
ff
movsd  0x8b3(%rip),%xmm1
call   10d0 <pow@plt>
movsd  -0x2f0(%rbp),%xmm1
ff
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  0x8ee(%rip),%xmm1
mulsd  -0x278(%rbp),%xmm1
ff
movsd  0x8d6(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x2e8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  0x842(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x2e8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
divsd  -0x128(%rbp),%xmm0
ff
addsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  0x816(%rip),%xmm0
mulsd  -0x278(%rbp),%xmm0
ff
movsd  0x81e(%rip),%xmm1
call   10d0 <pow@plt>
movsd  0x861(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x84d(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x2e0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  0x821(%rip),%xmm1
call   10d0 <pow@plt>
movsd  -0x2e0(%rbp),%xmm1
ff
mulsd  %xmm0,%xmm1
divsd  -0x128(%rbp),%xmm1
ff
movsd  -0x158(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x168(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x278(%rbp),%xmm0
ff
call   10a0 <exp@plt>
movsd  %xmm0,-0x2d8(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  0x770(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x2d8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
addsd  -0x2b0(%rbp),%xmm0
ff
movsd  %xmm0,-0x2b0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    169f <main+0x4ef>
movsd  0x6d6(%rip),%xmm0
movsd  0x6f6(%rip),%xmm1
call   10d0 <pow@plt>
movsd  %xmm0,-0x300(%rbp)
ff
movsd  0x721(%rip),%xmm0
mov    0x2682(%rip),%rax
mulsd  (%rax),%xmm0
mov    0x2677(%rip),%rax
mulsd  (%rax),%xmm0
mov    0x266c(%rip),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x308(%rbp)
ff
movsd  0x698(%rip),%xmm0
mulsd  -0x278(%rbp),%xmm0
ff
movsd  0x6d8(%rip),%xmm1
call   10d0 <pow@plt>
movsd  -0x308(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x300(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mulsd  -0x2b0(%rbp),%xmm0
ff
movsd  %xmm0,-0x2b0(%rbp)
ff
movsd  0x698(%rip),%xmm0
mulsd  -0x2b0(%rbp),%xmm0
ff
movsd  %xmm0,-0x2b0(%rbp)
ff
movsd  0x650(%rip),%xmm1
mov    0x25f1(%rip),%rax
mulsd  (%rax),%xmm1
movsd  0x665(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0x619(%rip),%xmm0
mulsd  %xmm0,%xmm1
mulsd  -0x278(%rbp),%xmm1
ff
movsd  0x63d(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  0x629(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x611(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x2f8(%rbp)
ff
movsd  0x5ed(%rip),%xmm0
movsd  0x5ed(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x2f8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x2b8(%rbp)
ff
movsd  0x5b9(%rip),%xmm0
mulsd  -0x2b8(%rbp),%xmm0
ff
movsd  %xmm0,-0x2b8(%rbp)
ff
movsd  -0x2a0(%rbp),%xmm0
ff
addsd  -0x2a8(%rbp),%xmm0
ff
addsd  -0x2b0(%rbp),%xmm0
ff
addsd  -0x2b8(%rbp),%xmm0
ff
movsd  %xmm0,-0x298(%rbp)
ff
movsd  -0x278(%rbp),%xmm0
ff
movsd  -0x298(%rbp),%xmm1
ff
lea    0x5ed(%rip),%rdi
call   1060 <printf@plt>
movsd  -0x290(%rbp),%xmm0
ff
addsd  -0x278(%rbp),%xmm0
ff
movsd  %xmm0,-0x278(%rbp)
ff
jmp    1387 <main+0x1d7>
xor    %eax,%eax
add    $0x310,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x2e8,%rsp
mov    %rsi,%rbx
cmp    $0x5,%edi
je     11d1 <main+0x21>
mov    (%rbx),%rdi
call   10b0 <usage@plt>
mov    0x8(%rbx),%rdi
call   1040 <atof@plt>
movaps %xmm0,0x20(%rsp)
mov    0x10(%rbx),%rdi
call   1040 <atof@plt>
movsd  %xmm0,0x60(%rsp)
mov    0x18(%rbx),%rdi
call   1040 <atof@plt>
movsd  %xmm0,0x80(%rsp)
mov    0x20(%rbx),%rsi
lea    0xe0(%rsp),%rbx
mov    %rbx,%rdi
call   1030 <strcpy@plt>
lea    0xead(%rip),%rsi
mov    %rbx,%rdi
call   10c0 <fopen@plt>
mov    %rax,%rbp
mov    $0xffffffffffffffff,%r13
lea    0x1e0(%rsp),%r14
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r14,%rdi
mov    $0x100,%esi
mov    %rbp,%rdx
call   1080 <fgets@plt>
add    $0x1,%r13
test   %rax,%rax
jne    1240 <main+0x90>
mov    %rbp,%rdi
call   1050 <fclose@plt>
mov    %r13d,%edi
mov    $0x8,%esi
call   1090 <calloc@plt>
mov    %rax,(%rsp)
mov    %r13d,%edi
mov    $0x8,%esi
call   1090 <calloc@plt>
mov    %rax,0x58(%rsp)
lea    0xe3d(%rip),%rsi
lea    0xe0(%rsp),%rdi
call   10c0 <fopen@plt>
mov    %rax,%r12
test   %r13d,%r13d
je     12df <main+0x12f>
lea    0xe23(%rip),%r14
mov    %r13,%rbx
mov    (%rsp),%rbp
mov    0x58(%rsp),%r15
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r12,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    %r15,%rcx
call   1070 <fscanf@plt>
add    $0x8,%r15
add    $0x8,%rbp
add    $0xffffffffffffffff,%rbx
jne    12c0 <main+0x110>
mov    %r12,%rdi
call   1050 <fclose@plt>
movapd 0x20(%rsp),%xmm6
movsd  0x60(%rsp),%xmm0
ucomisd %xmm6,%xmm0
mov    0x58(%rsp),%r14
jae    1312 <main+0x162>
xor    %eax,%eax
add    $0x2e8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    (%rsp),%rax
movsd  (%rax),%xmm0
movsd  0x8(%rax),%xmm2
movsd  -0x8(%rax,%r13,8),%xmm3
subsd  %xmm0,%xmm2
movapd %xmm2,0x70(%rsp)
movapd %xmm3,%xmm4
subsd  %xmm2,%xmm4
movsd  %xmm4,0x68(%rsp)
unpcklpd %xmm2,%xmm2
movapd %xmm2,0xa0(%rsp)
mov    %r14,%r15
add    $0x8,%r15
movapd 0xca6(%rip),%xmm2
mov    0x2c87(%rip),%r13
lea    0xd6b(%rip),%r12
movsd  %xmm0,0x38(%rsp)
movsd  %xmm3,0x50(%rsp)
jmp    1488 <main+0x2d8>
nopl   0x0(%rax)
movsd  %xmm4,0x18(%rsp)
movsd  0x0(%r13),%xmm0
movapd %xmm0,%xmm1
mulsd  0xce8(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movapd 0x90(%rsp),%xmm0
movsd  0xcc2(%rip),%xmm1
call   10d0 <pow@plt>
mulsd  (%rsp),%xmm0
movsd  0xcc0(%rip),%xmm1
divsd  %xmm0,%xmm1
mulsd  0x18(%rsp),%xmm1
mulsd  0xcb6(%rip),%xmm1
movsd  %xmm1,(%rsp)
movsd  0x0(%r13),%xmm1
addsd  %xmm1,%xmm1
mulsd  0xca7(%rip),%xmm1
mulsd  0xc4f(%rip),%xmm1
mulsd  0x20(%rsp),%xmm1
movsd  0xc99(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  0xc95(%rip),%xmm1
call   10d0 <pow@plt>
mulsd  0xc90(%rip),%xmm0
mulsd  0xc90(%rip),%xmm0
mulsd  0xc90(%rip),%xmm0
movsd  0x88(%rsp),%xmm1
subsd  0x10(%rsp),%xmm1
addsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
mov    %r12,%rdi
movaps 0x20(%rsp),%xmm0
call   1060 <printf@plt>
movapd 0x20(%rsp),%xmm6
addsd  0x80(%rsp),%xmm6
movsd  0x60(%rsp),%xmm0
ucomisd %xmm6,%xmm0
movsd  0x38(%rsp),%xmm0
movsd  0x50(%rsp),%xmm3
movapd 0xb7e(%rip),%xmm2
jb     12fe <main+0x14e>
ucomisd %xmm0,%xmm3
movapd %xmm6,0x20(%rsp)
jbe    15e0 <main+0x430>
xorps  %xmm7,%xmm7
mov    %r14,%rbx
movapd %xmm0,%xmm1
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  %xmm1,(%rsp)
movsd  %xmm7,0x10(%rsp)
movsd  (%rbx),%xmm0
xorpd  %xmm2,%xmm0
divsd  %xmm6,%xmm0
call   10a0 <exp@plt>
movsd  0x10(%rsp),%xmm7
movapd 0xb26(%rip),%xmm2
movsd  0x50(%rsp),%xmm4
movapd 0x70(%rsp),%xmm3
addsd  0xb52(%rip),%xmm0
movapd %xmm3,%xmm1
movsd  (%rsp),%xmm5
addsd  %xmm5,%xmm1
mulsd  %xmm5,%xmm5
mulsd  %xmm0,%xmm5
mulsd  %xmm3,%xmm5
addsd  %xmm5,%xmm7
add    $0x8,%rbx
ucomisd %xmm1,%xmm4
movapd 0x20(%rsp),%xmm6
ja     14b0 <main+0x300>
movsd  0x38(%rsp),%xmm2
ucomisd %xmm2,%xmm4
movsd  0x0(%r13),%xmm1
movapd %xmm1,%xmm0
addsd  %xmm1,%xmm0
mulsd  %xmm0,%xmm7
movsd  %xmm7,0x10(%rsp)
xorpd  %xmm0,%xmm0
jbe    1620 <main+0x470>
movsd  %xmm0,(%rsp)
mov    %r15,%rbx
nop
movsd  %xmm2,0x40(%rsp)
movsd  -0x8(%rbx),%xmm0
movsd  (%rbx),%xmm1
subsd  %xmm0,%xmm1
mulsd  0xadd(%rip),%xmm1
divsd  %xmm3,%xmm1
movsd  %xmm1,0x18(%rsp)
xorpd  0xa83(%rip),%xmm0
divsd  %xmm6,%xmm0
call   10a0 <exp@plt>
movsd  0x40(%rsp),%xmm2
movapd 0x70(%rsp),%xmm3
movapd 0x20(%rsp),%xmm6
movsd  0x18(%rsp),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm3,%xmm1
movsd  (%rsp),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rsp)
addsd  %xmm3,%xmm2
add    $0x8,%rbx
movsd  0x50(%rsp),%xmm0
ucomisd %xmm2,%xmm0
ja     1550 <main+0x3a0>
movsd  0x0(%r13),%xmm0
movsd  %xmm0,0x40(%rsp)
jmp    160b <main+0x45b>
xchg   %ax,%ax
movsd  0x0(%r13),%xmm0
movsd  %xmm0,0x40(%rsp)
movapd %xmm0,%xmm2
addsd  %xmm0,%xmm2
xorpd  %xmm1,%xmm1
xorpd  %xmm0,%xmm0
movsd  %xmm0,(%rsp)
mulsd  %xmm1,%xmm2
movsd  %xmm2,0x10(%rsp)
movsd  0xa35(%rip),%xmm0
jmp    1633 <main+0x483>
cs nopw 0x0(%rax,%rax,1)
nop
movsd  %xmm0,(%rsp)
movsd  0xa1b(%rip),%xmm0
movsd  %xmm1,0x40(%rsp)
movsd  0xa15(%rip),%xmm1
mulsd  %xmm0,%xmm6
movapd %xmm6,0x90(%rsp)
movapd %xmm6,%xmm0
call   10d0 <pow@plt>
movsd  0x68(%rsp),%xmm2
ucomisd 0x38(%rsp),%xmm2
movsd  0x10(%rsp),%xmm1
mulsd  0x9ed(%rip),%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0x40(%rsp),%xmm1
mulsd  0x9e1(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x9dd(%rip),%xmm0
divsd  %xmm1,%xmm0
mulsd  (%rsp),%xmm0
mulsd  0x9d4(%rip),%xmm0
movsd  %xmm0,0x88(%rsp)
xorpd  %xmm4,%xmm4
movapd 0x70(%rsp),%xmm3
movapd 0xa0(%rsp),%xmm5
movapd 0x970(%rip),%xmm6
jbe    1380 <main+0x1d0>
movapd 0x90(%rsp),%xmm0
mulsd  %xmm0,%xmm0
movapd 0x20(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0x92b(%rip),%xmm1
movapd 0x933(%rip),%xmm0
divpd  %xmm1,%xmm0
movapd %xmm0,0xb0(%rsp)
xorpd  %xmm4,%xmm4
mov    %r14,%rbx
movsd  0x38(%rsp),%xmm7
nopw   0x0(%rax,%rax,1)
movapd %xmm7,0x40(%rsp)
movsd  %xmm4,0x18(%rsp)
lea    0x8(%rbx),%rbp
movsd  0x8(%rbx),%xmm0
movsd  0x10(%rbx),%xmm1
movapd %xmm1,%xmm2
subpd  %xmm0,%xmm1
subsd  (%rbx),%xmm0
unpcklpd %xmm0,%xmm2
mulpd  %xmm6,%xmm2
movsd  %xmm1,%xmm2
divpd  %xmm5,%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm2,%xmm1
subsd  %xmm1,%xmm2
mulsd  0x8ee(%rip),%xmm2
divsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm2
movapd %xmm1,%xmm0
movapd %xmm1,0xc0(%rsp)
divsd  %xmm7,%xmm0
mulsd  %xmm0,%xmm0
addsd  %xmm0,%xmm0
addsd  %xmm2,%xmm0
movapd %xmm0,(%rsp)
movapd %xmm1,%xmm0
movsd  0x8c0(%rip),%xmm1
call   10d0 <pow@plt>
movapd %xmm0,0xd0(%rsp)
movapd 0xc0(%rsp),%xmm0
movsd  0x8c9(%rip),%xmm1
call   10d0 <pow@plt>
movapd 0xd0(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0xb0(%rsp),%xmm1
movapd 0x40(%rsp),%xmm0
unpcklpd %xmm0,%xmm0
divpd  %xmm0,%xmm1
movapd (%rsp),%xmm0
addsd  %xmm1,%xmm0
unpckhpd %xmm1,%xmm1
subsd  %xmm1,%xmm0
movapd %xmm0,(%rsp)
movsd  (%rbx),%xmm0
xorpd  0x806(%rip),%xmm0
divsd  0x20(%rsp),%xmm0
call   10a0 <exp@plt>
movapd 0x823(%rip),%xmm6
movapd 0xa0(%rsp),%xmm5
movsd  0x18(%rsp),%xmm4
movsd  0x68(%rsp),%xmm2
movapd 0x70(%rsp),%xmm3
movapd %xmm3,%xmm1
movapd 0x40(%rsp),%xmm7
addsd  %xmm7,%xmm1
mulsd  %xmm7,%xmm7
mulsd  %xmm0,%xmm7
mulsd  %xmm3,%xmm7
mulsd  (%rsp),%xmm7
addsd  %xmm7,%xmm4
ucomisd %xmm1,%xmm2
mov    %rbp,%rbx
movapd %xmm1,%xmm7
ja     1710 <main+0x560>
jmp    1380 <main+0x1d0>

LLVM IR (-O0):
@.str = [2 x i8] c"r\00"
@.str.1 = [9 x i8] c"%lg %lg\0A\00"
@M_PI = global double 0.000000e+00
@.str.2 = [7 x i8] c"%f %f\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32*
%9 = alloca [256 x i8]
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double*
%18 = alloca double*
%19 = alloca [256 x i8]
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%29 = load i32, i32* %4
%30 = icmp ne i32 %29, 5
br i1 %30, label %31, label %36
31: ; preds = %2
%32 = load i8**, i8*** %5
%33 = getelementptr inbounds i8*, i8** %32, i64 0
%34 = load i8*, i8** %33
%35 = call i32 @usage(i8* %34)
br label %36
36: ; preds = %31, %2
%37 = load i8**, i8*** %5
%38 = getelementptr inbounds i8*, i8** %37, i64 1
%39 = load i8*, i8** %38
%40 = call double @atof(i8* %39)
store double %40, double* %21
%41 = load i8**, i8*** %5
%42 = getelementptr inbounds i8*, i8** %41, i64 2
%43 = load i8*, i8** %42
%44 = call double @atof(i8* %43)
store double %44, double* %22
%45 = load i8**, i8*** %5
%46 = getelementptr inbounds i8*, i8** %45, i64 3
%47 = load i8*, i8** %46
%48 = call double @atof(i8* %47)
store double %48, double* %23
%49 = getelementptr inbounds [256 x i8], [256 x i8]* %19, i64 0, i64 0
%50 = load i8**, i8*** %5
%51 = getelementptr inbounds i8*, i8** %50, i64 4
%52 = load i8*, i8** %51
%53 = call i32 @strcpy(i8* %49, i8* %52)
%54 = getelementptr inbounds [256 x i8], [256 x i8]* %19, i64 0, i64 0
%55 = call i32* @fopen(i8* %54, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i32* %55, i32** %8
store i32 0, i32* %7
br label %56
56: ; preds = %62, %36
%57 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%58 = load i32*, i32** %8
%59 = call i64 @fgets(i8* %57, i32 256, i32* %58)
%60 = icmp ne i64 %59, 0
br i1 %60, label %61, label %65
61: ; preds = %56
br label %62
62: ; preds = %61
%63 = load i32, i32* %7
%64 = add nsw i32 %63, 1
store i32 %64, i32* %7
br label %56
65: ; preds = %56
%66 = load i32*, i32** %8
%67 = call i32 @fclose(i32* %66)
%68 = load i32, i32* %7
%69 = call double* @calloc(i32 %68, i32 8)
store double* %69, double** %17
%70 = load i32, i32* %7
%71 = call double* @calloc(i32 %70, i32 8)
store double* %71, double** %18
%72 = getelementptr inbounds [256 x i8], [256 x i8]* %19, i64 0, i64 0
%73 = call i32* @fopen(i8* %72, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i32* %73, i32** %8
store i32 0, i32* %6
br label %74
74: ; preds = %89, %65
%75 = load i32, i32* %6
%76 = load i32, i32* %7
%77 = icmp slt i32 %75, %76
br i1 %77, label %78, label %92
78: ; preds = %74
%79 = load i32*, i32** %8
%80 = load double*, double** %17
%81 = load i32, i32* %6
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds double, double* %80, i64 %82
%84 = load double*, double** %18
%85 = load i32, i32* %6
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds double, double* %84, i64 %86
%88 = call i32 @fscanf(i32* %79, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0), double* %83, double* %87)
br label %89
89: ; preds = %78
%90 = load i32, i32* %6
%91 = add nsw i32 %90, 1
store i32 %91, i32* %6
br label %74
92: ; preds = %74
%93 = load i32*, i32** %8
%94 = call i32 @fclose(i32* %93)
%95 = load double*, double** %17
%96 = getelementptr inbounds double, double* %95, i64 0
%97 = load double, double* %96
store double %97, double* %11
%98 = load double*, double** %17
%99 = load i32, i32* %7
%100 = sub nsw i32 %99, 1
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds double, double* %98, i64 %101
%103 = load double, double* %102
store double %103, double* %12
%104 = load double*, double** %17
%105 = getelementptr inbounds double, double* %104, i64 1
%106 = load double, double* %105
%107 = load double*, double** %17
%108 = getelementptr inbounds double, double* %107, i64 0
%109 = load double, double* %108
%110 = fsub double %106, %109
store double %110, double* %13
%111 = load double, double* %21
store double %111, double* %20
br label %112
112: ; preds = %349, %92
%113 = load double, double* %20
%114 = load double, double* %22
%115 = fcmp ole double %113, %114
br i1 %115, label %116, label %353
116: ; preds = %112
store double 0.000000e+00, double* %25
%117 = load double, double* %11
store double %117, double* %10
store i32 0, i32* %6
br label %118
118: ; preds = %141, %116
%119 = load double, double* %10
%120 = load double, double* %12
%121 = fcmp olt double %119, %120
br i1 %121, label %122, label %147
122: ; preds = %118
%123 = load double*, double** %18
%124 = load i32, i32* %6
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds double, double* %123, i64 %125
%127 = load double, double* %126
%128 = fneg double %127
%129 = load double, double* %20
%130 = fdiv double %128, %129
%131 = call double @exp(double %130)
%132 = fsub double %131, 1.000000e+00
%133 = load double, double* %10
%134 = call double @pow(double %133, double 2.000000e+00)
%135 = fmul double %132, %134
%136 = load double, double* %13
%137 = fmul double %135, %136
store double %137, double* %16
%138 = load double, double* %16
%139 = load double, double* %25
%140 = fadd double %139, %138
store double %140, double* %25
br label %141
141: ; preds = %122
%142 = load double, double* %13
%143 = load double, double* %10
%144 = fadd double %143, %142
store double %144, double* %10
%145 = load i32, i32* %6
%146 = add nsw i32 %145, 1
store i32 %146, i32* %6
br label %118
147: ; preds = %118
%148 = load double, double* @M_PI
%149 = fmul double -2.000000e+00, %148
%150 = load double, double* %25
%151 = fmul double %150, %149
store double %151, double* %25
%152 = load double, double* %25
%153 = fmul double %152, 0x3FE345569BEE07B0
store double %153, double* %25
store double 0.000000e+00, double* %26
%154 = load double, double* %11
store double %154, double* %10
store i32 0, i32* %6
br label %155
155: ; preds = %194, %147
%156 = load double, double* %10
%157 = load double, double* %12
%158 = fcmp olt double %156, %157
br i1 %158, label %159, label %200
159: ; preds = %155
%160 = load double*, double** %18
%161 = load i32, i32* %6
%162 = add nsw i32 %161, 1
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds double, double* %160, i64 %163
%165 = load double, double* %164
%166 = load double*, double** %18
%167 = load i32, i32* %6
%168 = sext i32 %167 to i64
%169 = getelementptr inbounds double, double* %166, i64 %168
%170 = load double, double* %169
%171 = fsub double %165, %170
%172 = fmul double 0x3B30B0E7DD0A406E, %171
%173 = load double, double* %13
%174 = fdiv double %172, %173
store double %174, double* %14
%175 = load double*, double** %18
%176 = load i32, i32* %6
%177 = sext i32 %176 to i64
%178 = getelementptr inbounds double, double* %175, i64 %177
%179 = load double, double* %178
%180 = fneg double %179
%181 = load double, double* %20
%182 = fdiv double %180, %181
%183 = call double @exp(double %182)
%184 = load double, double* %14
%185 = load double, double* %10
%186 = fmul double %184, %185
%187 = call double @pow(double %186, double 2.000000e+00)
%188 = fmul double %183, %187
%189 = load double, double* %13
%190 = fmul double %188, %189
store double %190, double* %16
%191 = load double, double* %16
%192 = load double, double* %26
%193 = fadd double %192, %191
store double %193, double* %26
br label %194
194: ; preds = %159
%195 = load double, double* %13
%196 = load double, double* %10
%197 = fadd double %196, %195
store double %197, double* %10
%198 = load i32, i32* %6
%199 = add nsw i32 %198, 1
store i32 %199, i32* %6
br label %155
200: ; preds = %155
%201 = load double, double* @M_PI
%202 = fmul double 2.400000e+01, %201
%203 = load double, double* %20
%204 = fmul double 0x3B30B0E7DD0A406E, %203
%205 = call double @pow(double %204, double 3.000000e+00)
%206 = fmul double %202, %205
%207 = fdiv double 0x37A6D8EB94C8BF7D, %206
%208 = load double, double* %26
%209 = fmul double %208, %207
store double %209, double* %26
%210 = load double, double* %26
%211 = fmul double %210, 0x440A1DEB8F01930C
store double %211, double* %26
store double 0.000000e+00, double* %27
%212 = load double, double* %11
store double %212, double* %10
store i32 0, i32* %6
br label %213
213: ; preds = %303, %200
%214 = load double, double* %10
%215 = load double, double* %12
%216 = load double, double* %13
%217 = fsub double %215, %216
%218 = fcmp olt double %214, %217
br i1 %218, label %219, label %309
219: ; preds = %213
%220 = load double*, double** %18
%221 = load i32, i32* %6
%222 = add nsw i32 %221, 1
%223 = sext i32 %222 to i64
%224 = getelementptr inbounds double, double* %220, i64 %223
%225 = load double, double* %224
%226 = load double*, double** %18
%227 = load i32, i32* %6
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds double, double* %226, i64 %228
%230 = load double, double* %229
%231 = fsub double %225, %230
%232 = fmul double 0x3B30B0E7DD0A406E, %231
%233 = load double, double* %13
%234 = fdiv double %232, %233
store double %234, double* %14
%235 = load double*, double** %18
%236 = load i32, i32* %6
%237 = add nsw i32 %236, 2
%238 = sext i32 %237 to i64
%239 = getelementptr inbounds double, double* %235, i64 %238
%240 = load double, double* %239
%241 = load double*, double** %18
%242 = load i32, i32* %6
%243 = add nsw i32 %242, 1
%244 = sext i32 %243 to i64
%245 = getelementptr inbounds double, double* %241, i64 %244
%246 = load double, double* %245
%247 = fsub double %240, %246
%248 = load double, double* %13
%249 = fdiv double %247, %248
%250 = load double, double* %14
%251 = fsub double %249, %250
%252 = fmul double 0x3B30B0E7DD0A406E, %251
%253 = load double, double* %13
%254 = fdiv double %252, %253
store double %254, double* %15
%255 = load double, double* %15
%256 = call double @pow(double %255, double 2.000000e+00)
%257 = load double, double* %14
%258 = load double, double* %10
%259 = fdiv double %257, %258
%260 = call double @pow(double %259, double 2.000000e+00)
%261 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %260, double %256)
store double %261, double* %16
%262 = load double, double* %20
%263 = fmul double 0x3B62C704D8AB887C, %262
%264 = fdiv double 1.000000e+01, %263
%265 = load double, double* %14
%266 = call double @pow(double %265, double 3.000000e+00)
%267 = fmul double %264, %266
%268 = load double, double* %10
%269 = fdiv double %267, %268
%270 = load double, double* %16
%271 = fadd double %270, %269
store double %271, double* %16
%272 = load double, double* %20
%273 = fmul double 0x3B30B0E7DD0A406E, %272
%274 = call double @pow(double %273, double 2.000000e+00)
%275 = fmul double 3.600000e+01, %274
%276 = fdiv double 5.000000e+00, %275
%277 = load double, double* %14
%278 = call double @pow(double %277, double 4.000000e+00)
%279 = fmul double %276, %278
%280 = load double, double* %10
%281 = fdiv double %279, %280
%282 = load double, double* %16
%283 = fsub double %282, %281
store double %283, double* %16
%284 = load double*, double** %18
%285 = load i32, i32* %6
%286 = sext i32 %285 to i64
%287 = getelementptr inbounds double, double* %284, i64 %286
%288 = load double, double* %287
%289 = fneg double %288
%290 = load double, double* %20
%291 = fdiv double %289, %290
%292 = call double @exp(double %291)
%293 = load double, double* %10
%294 = call double @pow(double %293, double 2.000000e+00)
%295 = fmul double %292, %294
%296 = load double, double* %13
%297 = fmul double %295, %296
%298 = load double, double* %16
%299 = fmul double %298, %297
store double %299, double* %16
%300 = load double, double* %16
%301 = load double, double* %27
%302 = fadd double %301, %300
store double %302, double* %27
br label %303
303: ; preds = %219
%304 = load double, double* %13
%305 = load double, double* %10
%306 = fadd double %305, %304
store double %306, double* %10
%307 = load i32, i32* %6
%308 = add nsw i32 %307, 1
store i32 %308, i32* %6
br label %213
309: ; preds = %213
%310 = call double @pow(double 0x37A6D8EB94C8BF7D, double 2.000000e+00)
%311 = load double, double* @M_PI
%312 = fmul double 9.600000e+02, %311
%313 = load double, double* @M_PI
%314 = fmul double %312, %313
%315 = load double, double* @M_PI
%316 = fmul double %314, %315
%317 = load double, double* %20
%318 = fmul double 0x3B30B0E7DD0A406E, %317
%319 = call double @pow(double %318, double 4.000000e+00)
%320 = fmul double %316, %319
%321 = fdiv double %310, %320
%322 = load double, double* %27
%323 = fmul double %322, %321
store double %323, double* %27
%324 = load double, double* %27
%325 = fmul double %324, 0xC727324A3D09052B
store double %325, double* %27
%326 = load double, double* @M_PI
%327 = fmul double 2.000000e+00, %326
%328 = fmul double %327, 3.348000e-27
%329 = fmul double %328, 0x3B30B0E7DD0A406E
%330 = load double, double* %20
%331 = fmul double %329, %330
%332 = fdiv double 0x3227AC64884C3B77, %331
%333 = call double @pow(double %332, double 1.500000e+00)
%334 = fmul double 0xC4DFE1860C116C00, %333
%335 = call double @pow(double 2.000000e+00, double -2.500000e+00)
%336 = fmul double %334, %335
store double %336, double* %28
%337 = load double, double* %28
%338 = fmul double %337, 1.000000e+06
store double %338, double* %28
%339 = load double, double* %25
%340 = load double, double* %26
%341 = fadd double %339, %340
%342 = load double, double* %27
%343 = fadd double %341, %342
%344 = load double, double* %28
%345 = fadd double %343, %344
store double %345, double* %24
%346 = load double, double* %20
%347 = load double, double* %24
%348 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), double %346, double %347)
br label %349
349: ; preds = %309
%350 = load double, double* %23
%351 = load double, double* %20
%352 = fadd double %351, %350
store double %352, double* %20
br label %112
353: ; preds = %112
ret i32 0
}

LLVM IR (-O2):
@.str = [2 x i8] c"r\00"
@.str.1 = [9 x i8] c"%lg %lg\0A\00"
@M_PI = global double 0.000000e+00
@.str.2 = [7 x i8] c"%f %f\0A\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca [256 x i8]
%4 = alloca [256 x i8]
%5 = getelementptr inbounds [256 x i8], [256 x i8]* %3, i64 0, i64 0
%6 = getelementptr inbounds [256 x i8], [256 x i8]* %4, i64 0, i64 0
%7 = icmp eq i32 %0, 5
br i1 %7, label %11, label %8
8: ; preds = %2
%9 = load i8*, i8** %1
%10 = tail call i32 @usage(i8* %9)
br label %11
11: ; preds = %8, %2
%12 = getelementptr inbounds i8*, i8** %1, i64 1
%13 = load i8*, i8** %12
%14 = tail call double @atof(i8* %13)
%15 = getelementptr inbounds i8*, i8** %1, i64 2
%16 = load i8*, i8** %15
%17 = tail call double @atof(i8* %16)
%18 = getelementptr inbounds i8*, i8** %1, i64 3
%19 = load i8*, i8** %18
%20 = tail call double @atof(i8* %19)
%21 = getelementptr inbounds i8*, i8** %1, i64 4
%22 = load i8*, i8** %21
%23 = call i32 @strcpy(i8* %6, i8* %22)
%24 = call i32* @fopen(i8* %6, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
br label %25
25: ; preds = %25, %11
%26 = phi i32 [ 0, %11 ], [ %29, %25 ]
%27 = call i64 @fgets(i8* %5, i32 256, i32* %24)
%28 = icmp eq i64 %27, 0
%29 = add nuw nsw i32 %26, 1
br i1 %28, label %30, label %25
30: ; preds = %25
%31 = call i32 @fclose(i32* %24)
%32 = call double* @calloc(i32 %26, i32 8)
%33 = call double* @calloc(i32 %26, i32 8)
%34 = call i32* @fopen(i8* %6, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%35 = icmp eq i32 %26, 0
br i1 %35, label %45, label %36
36: ; preds = %30
%37 = zext i32 %26 to i64
br label %38
38: ; preds = %36, %38
%39 = phi i64 [ 0, %36 ], [ %43, %38 ]
%40 = getelementptr inbounds double, double* %32, i64 %39
%41 = getelementptr inbounds double, double* %33, i64 %39
%42 = call i32 @fscanf(i32* %34, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0), double* %40, double* %41)
%43 = add nuw nsw i64 %39, 1
%44 = icmp eq i64 %43, %37
br i1 %44, label %45, label %38
45: ; preds = %38, %30
%46 = call i32 @fclose(i32* %34)
%47 = load double, double* %32
%48 = add nsw i32 %26, -1
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds double, double* %32, i64 %49
%51 = load double, double* %50
%52 = getelementptr inbounds double, double* %32, i64 1
%53 = load double, double* %52
%54 = fsub double %53, %47
%55 = fcmp ugt double %14, %17
br i1 %55, label %210, label %56
56: ; preds = %45
%57 = fcmp olt double %47, %51
%58 = fsub double %51, %54
%59 = fcmp olt double %47, %58
%60 = insertelement <2 x double> poison, double %54, i64 0
%61 = shufflevector <2 x double> %60, <2 x double> poison, <2 x i32> zeroinitializer
br label %62
62: ; preds = %56, %183
%63 = phi double [ %14, %56 ], [ %208, %183 ]
br i1 %57, label %68, label %64
64: ; preds = %62
%65 = load double, double* @M_PI
%66 = fmul double %65, 2.000000e+00
%67 = fmul double %66, 0.000000e+00
br label %113
68: ; preds = %62, %68
%69 = phi i64 [ %83, %68 ], [ 0, %62 ]
%70 = phi double [ %81, %68 ], [ 0.000000e+00, %62 ]
%71 = phi double [ %82, %68 ], [ %47, %62 ]
%72 = getelementptr inbounds double, double* %33, i64 %69
%73 = load double, double* %72
%74 = fneg double %73
%75 = fdiv double %74, %63
%76 = call double @exp(double %75)
%77 = fadd double %76, -1.000000e+00
%78 = fmul double %71, %71
%79 = fmul double %78, %77
%80 = fmul double %54, %79
%81 = fadd double %70, %80
%82 = fadd double %54, %71
%83 = add nuw i64 %69, 1
%84 = fcmp olt double %82, %51
br i1 %84, label %68, label %85
85: ; preds = %68
%86 = load double, double* @M_PI
%87 = fmul double %86, 2.000000e+00
%88 = fmul double %81, %87
br i1 %57, label %89, label %113
89: ; preds = %85, %89
%90 = phi i64 [ %93, %89 ], [ 0, %85 ]
%91 = phi double [ %108, %89 ], [ 0.000000e+00, %85 ]
%92 = phi double [ %109, %89 ], [ %47, %85 ]
%93 = add nuw nsw i64 %90, 1
%94 = getelementptr inbounds double, double* %33, i64 %93
%95 = load double, double* %94
%96 = getelementptr inbounds double, double* %33, i64 %90
%97 = load double, double* %96
%98 = fsub double %95, %97
%99 = fmul double %98, 0x3B30B0E7DD0A406E
%100 = fdiv double %99, %54
%101 = fneg double %97
%102 = fdiv double %101, %63
%103 = call double @exp(double %102)
%104 = fmul double %92, %100
%105 = fmul double %104, %104
%106 = fmul double %103, %105
%107 = fmul double %54, %106
%108 = fadd double %91, %107
%109 = fadd double %54, %92
%110 = fcmp olt double %109, %51
br i1 %110, label %89, label %111
111: ; preds = %89
%112 = load double, double* @M_PI
br label %113
113: ; preds = %64, %111, %85
%114 = phi double [ %88, %85 ], [ %88, %111 ], [ %67, %64 ]
%115 = phi double [ %86, %85 ], [ %112, %111 ], [ %65, %64 ]
%116 = phi double [ 0.000000e+00, %85 ], [ %108, %111 ], [ 0.000000e+00, %64 ]
%117 = fmul double %114, 0x3FE345569BEE07B0
%118 = fmul double %115, 2.400000e+01
%119 = fmul double %63, 0x3B30B0E7DD0A406E
%120 = call double @pow(double %119, double 3.000000e+00)
%121 = fmul double %118, %120
%122 = fdiv double 0x37A6D8EB94C8BF7D, %121
%123 = fmul double %116, %122
%124 = fmul double %123, 0x440A1DEB8F01930C
br i1 %59, label %125, label %183
125: ; preds = %113
%126 = fmul double %119, %119
%127 = insertelement <2 x double> poison, double %63, i64 0
%128 = insertelement <2 x double> %127, double %126, i64 1
%129 = fmul <2 x double> %128, <double 0x3B62C704D8AB887C, double 3.600000e+01>
%130 = fdiv <2 x double> <double 1.000000e+01, double 5.000000e+00>, %129
br label %131
131: ; preds = %125, %131
%132 = phi i64 [ 0, %125 ], [ %135, %131 ]
%133 = phi double [ 0.000000e+00, %125 ], [ %180, %131 ]
%134 = phi double [ %47, %125 ], [ %181, %131 ]
%135 = add nuw nsw i64 %132, 1
%136 = getelementptr inbounds double, double* %33, i64 %135
%137 = load double, double* %136
%138 = getelementptr inbounds double, double* %33, i64 %132
%139 = load double, double* %138
%140 = fsub double %137, %139
%141 = add nuw nsw i64 %132, 2
%142 = getelementptr inbounds double, double* %33, i64 %141
%143 = load double, double* %142
%144 = insertelement <2 x double> poison, double %143, i64 0
%145 = insertelement <2 x double> %144, double %140, i64 1
%146 = insertelement <2 x double> <double poison, double 0x3B30B0E7DD0A406E>, double %137, i64 0
%147 = fsub <2 x double> %145, %146
%148 = fmul <2 x double> %145, %146
%149 = shufflevector <2 x double> %147, <2 x double> %148, <2 x i32> <i32 0, i32 3>
%150 = fdiv <2 x double> %149, %61
%151 = extractelement <2 x double> %150, i64 0
%152 = extractelement <2 x double> %150, i64 1
%153 = fsub double %151, %152
%154 = fmul double %153, 0x3B30B0E7DD0A406E
%155 = fdiv double %154, %54
%156 = fmul double %155, %155
%157 = fdiv double %152, %134
%158 = fmul double %157, %157
%159 = call double @llvm.fmuladd.f64(double %158, double 2.000000e+00, double %156)
%160 = call double @pow(double %152, double 3.000000e+00)
%161 = call double @pow(double %152, double 4.000000e+00)
%162 = insertelement <2 x double> poison, double %160, i64 0
%163 = insertelement <2 x double> %162, double %161, i64 1
%164 = fmul <2 x double> %130, %163
%165 = insertelement <2 x double> poison, double %134, i64 0
%166 = shufflevector <2 x double> %165, <2 x double> poison, <2 x i32> zeroinitializer
%167 = fdiv <2 x double> %164, %166
%168 = extractelement <2 x double> %167, i64 0
%169 = fadd double %168, %159
%170 = extractelement <2 x double> %167, i64 1
%171 = fsub double %169, %170
%172 = load double, double* %138
%173 = fneg double %172
%174 = fdiv double %173, %63
%175 = call double @exp(double %174)
%176 = fmul double %134, %134
%177 = fmul double %176, %175
%178 = fmul double %54, %177
%179 = fmul double %178, %171
%180 = fadd double %133, %179
%181 = fadd double %54, %134
%182 = fcmp olt double %181, %58
br i1 %182, label %131, label %183
183: ; preds = %131, %113
%184 = phi double [ 0.000000e+00, %113 ], [ %180, %131 ]
%185 = load double, double* @M_PI
%186 = fmul double %185, 9.600000e+02
%187 = fmul double %185, %186
%188 = fmul double %185, %187
%189 = call double @pow(double %119, double 4.000000e+00)
%190 = fmul double %189, %188
%191 = fdiv double 0x2F6050025FB2F15D, %190
%192 = fmul double %184, %191
%193 = fmul double %192, 0x4727324A3D09052B
%194 = load double, double* @M_PI
%195 = fmul double %194, 2.000000e+00
%196 = fmul double %195, 3.348000e-27
%197 = fmul double %196, 0x3B30B0E7DD0A406E
%198 = fmul double %63, %197
%199 = fdiv double 0x3227AC64884C3B77, %198
%200 = call double @pow(double %199, double 1.500000e+00)
%201 = fmul double %200, 0x44DFE1860C116C00
%202 = fmul double %201, 0x3FC6A09E667F3BCD
%203 = fmul double %202, 1.000000e+06
%204 = fsub double %124, %117
%205 = fsub double %204, %193
%206 = fsub double %205, %203
%207 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), double %63, double %206)
%208 = fadd double %20, %63
%209 = fcmp ugt double %208, %17
br i1 %209, label %210, label %62
210: ; preds = %183, %45
ret i32 0
}