#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
float atof(char *);
float cos(float);
int pow(float, double);
int /*<<< orphan*/ print_array(float *);
int /*<<< orphan*/ rg4th(float **, float *, float *, float, float, float,
                         float);
float sin(float);
int sqrt(int);
int main(int argc, char **argv) {
  float n_time = 100;
  float momento;
  momento = 938.272 * 1.602 * pow(10.0, -19) * pow(10, 6.0);
  float c;
  c = 2.998 * pow(10.0, 8.0);
  float m;
  m = momento / pow(c, 2.0);
  float rt;
  rt = 6378.1 * pow(10.0, 3.0);
  float q;
  q = 1.602 * pow(10.0, -19.0);
  float pos[3];
  pos[0] = 2.0 * rt;
  pos[1] = 0.0;
  pos[2] = 0.0;
  float kinetic_energy = atof(argv[1]);
  float alpha = atof(argv[2]);
  float v;
  float k;
  k = kinetic_energy * (10 * 6) * 1.602 * pow(10.0, -19.0);
  v = c * sqrt(1 - 1 / (pow(k / (m * pow(c, 2.0)) + 1, 2.0)));
  float vel[3];
  vel[0] = 0.0;
  vel[1] = v * sin(alpha);
  vel[2] = v * cos(alpha);
  float gamma;
  gamma =
      1 / (sqrt(1 - (pow(vel[0], 2.0) + pow(vel[1], 2.0) + pow(vel[2], 2.0)) /
                        pow(c, 2.0)));
  int t;
  for (t = 0; t < n_time; t++) {
    print_array(pos);
    int p;
    float *temp[6];
    int tm;
    for (tm = 0; tm < 6; tm++) {
      rg4th(temp, pos, vel, m, gamma, q, rt);
      for (p = 0; p < 3; p++) {
        pos[p] = *temp[p];
        vel[p] = *temp[p + 3];
      }
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movss  0xec3(%rip),%xmm0
movss  %xmm0,-0x14(%rbp)
movss  0xeae(%rip),%xmm0
movsd  0xe62(%rip),%xmm1
call   1070 <pow@plt>
cvtsi2sd %eax,%xmm1
movsd  0xe89(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movss  0xe81(%rip),%xmm0
movsd  0xe65(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0xd0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xe53(%rip),%xmm0
movsd  0xe2f(%rip),%xmm1
call   1070 <pow@plt>
cvtsi2sd %eax,%xmm1
movsd  0xe16(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  -0x18(%rbp),%xmm0
movss  %xmm0,-0xc4(%rbp)
ff
movss  -0x1c(%rbp),%xmm0
movsd  0xdc7(%rip),%xmm1
call   1070 <pow@plt>
movss  -0xc4(%rbp),%xmm0
ff
cvtsi2ss %eax,%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x20(%rbp)
movss  0xdf1(%rip),%xmm0
movsd  0xdbd(%rip),%xmm1
call   1070 <pow@plt>
cvtsi2sd %eax,%xmm1
movsd  0xda4(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  0xdc3(%rip),%xmm0
movsd  0xd77(%rip),%xmm1
call   1070 <pow@plt>
cvtsi2sd %eax,%xmm1
movsd  0xd6e(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0x24(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xd40(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1030 <atof@plt>
movss  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1030 <atof@plt>
movss  %xmm0,-0x3c(%rbp)
movss  0xd47(%rip),%xmm0
mulss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xcf6(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movss  0xd1e(%rip),%xmm0
movsd  0xcd2(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0xc0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0xac(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  %xmm0,-0xb0(%rbp)
ff
movss  -0x20(%rbp),%xmm0
movss  %xmm0,-0xb4(%rbp)
ff
movss  -0x1c(%rbp),%xmm0
movsd  0xc78(%rip),%xmm1
call   1070 <pow@plt>
movss  -0xb4(%rbp),%xmm1
ff
movss  -0xb0(%rbp),%xmm0
ff
cvtsi2ss %eax,%xmm2
mulss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  0xc97(%rip),%xmm1
addss  %xmm1,%xmm0
movsd  0xc43(%rip),%xmm1
call   1070 <pow@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cltd
idiv   %ecx
mov    $0x1,%edi
sub    %eax,%edi
call   1080 <sqrt@plt>
movss  -0xac(%rbp),%xmm0
ff
cvtsi2ss %eax,%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x40(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x40(%rbp),%xmm0
movss  %xmm0,-0xa8(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
call   1050 <sin@plt>
movaps %xmm0,%xmm1
movss  -0xa8(%rbp),%xmm0
ff
mulss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movss  -0xa4(%rbp),%xmm0
ff
mulss  %xmm1,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x50(%rbp),%xmm0
movsd  0xba8(%rip),%xmm1
call   1070 <pow@plt>
mov    %eax,-0xa0(%rbp)
movss  -0x4c(%rbp),%xmm0
movsd  0xb90(%rip),%xmm1
call   1070 <pow@plt>
mov    %eax,%ecx
mov    -0xa0(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0x9c(%rbp)
movss  -0x48(%rbp),%xmm0
movsd  0xb6e(%rip),%xmm1
call   1070 <pow@plt>
mov    %eax,%ecx
mov    -0x9c(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0x98(%rbp)
movss  -0x1c(%rbp),%xmm0
movsd  0xb4c(%rip),%xmm1
call   1070 <pow@plt>
mov    %eax,%ecx
mov    -0x98(%rbp),%eax
cltd
idiv   %ecx
mov    $0x1,%edi
sub    %eax,%edi
call   1080 <sqrt@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x54(%rbp)
movl   $0x0,-0x58(%rbp)
cvtsi2ssl -0x58(%rbp),%xmm1
movss  -0x14(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    15c8 <main+0x458>
lea    -0x34(%rbp),%rdi
call   1040 <print_array@plt>
movl   $0x0,-0x94(%rbp)
cmpl   $0x6,-0x94(%rbp)
jge    15b5 <main+0x445>
lea    -0x90(%rbp),%rdi
lea    -0x34(%rbp),%rsi
lea    -0x50(%rbp),%rdx
movss  -0x20(%rbp),%xmm0
movss  -0x54(%rbp),%xmm1
movss  -0x28(%rbp),%xmm2
movss  -0x24(%rbp),%xmm3
call   1090 <rg4th@plt>
movl   $0x0,-0x5c(%rbp)
cmpl   $0x3,-0x5c(%rbp)
jge    159c <main+0x42c>
movslq -0x5c(%rbp),%rax
mov    -0x90(%rbp,%rax,8),%rax
ff
movss  (%rax),%xmm0
movslq -0x5c(%rbp),%rax
movss  %xmm0,-0x34(%rbp,%rax,4)
mov    -0x5c(%rbp),%eax
add    $0x3,%eax
cltq
mov    -0x90(%rbp,%rax,8),%rax
ff
movss  (%rax),%xmm0
movslq -0x5c(%rbp),%rax
movss  %xmm0,-0x50(%rbp,%rax,4)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    154c <main+0x3dc>
jmp    15a1 <main+0x431>
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    1510 <main+0x3a0>
jmp    15ba <main+0x44a>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    14ea <main+0x37a>
xor    %eax,%eax
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x70,%rsp
mov    %rsi,%rbx
movss  0xe79(%rip),%xmm0
movsd  0xe81(%rip),%xmm1
call   1070 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xe75(%rip),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0xe6f(%rip),%xmm1
movss  0xe47(%rip),%xmm0
call   1070 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x10(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x10(%rsp)
movsd  0xe4b(%rip),%xmm1
movss  0xe1b(%rip),%xmm0
call   1070 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xe37(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rsp)
movsd  0xe2e(%rip),%xmm1
call   1070 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  0x10(%rsp),%xmm1
divss  %xmm0,%xmm1
movss  %xmm1,0x10(%rsp)
movsd  0xe12(%rip),%xmm1
movss  0xdca(%rip),%xmm0
call   1070 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xdfe(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x1c(%rsp)
movss  0xda4(%rip),%xmm0
movsd  0xdac(%rip),%xmm1
call   1070 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xdd8(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x30(%rsp)
movss  0x1c(%rsp),%xmm0
addss  %xmm0,%xmm0
movss  %xmm0,0x34(%rsp)
movq   $0x0,0x38(%rsp)
mov    0x8(%rbx),%rdi
call   1030 <atof@plt>
movss  %xmm0,0x8(%rsp)
mov    0x10(%rbx),%rdi
call   1030 <atof@plt>
movss  %xmm0,0x4(%rsp)
movss  0x8(%rsp),%xmm0
mulss  0xd3d(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  0xd7d(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movss  0xd1f(%rip),%xmm0
movsd  0xd27(%rip),%xmm1
call   1070 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x8(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x8(%rsp)
movss  (%rsp),%xmm0
movsd  0xd26(%rip),%xmm1
call   1070 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
mulss  0x10(%rsp),%xmm0
movss  0x8(%rsp),%xmm1
divss  %xmm0,%xmm1
addss  0xcd2(%rip),%xmm1
movaps %xmm1,%xmm0
movsd  0xcf7(%rip),%xmm1
call   1070 <pow@plt>
mov    $0x1,%r14d
mov    $0x1,%edi
sub    %eax,%edi
add    $0x1,%eax
cmp    $0x3,%eax
cmovae %r14d,%edi
call   1080 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
mulss  (%rsp),%xmm0
movss  %xmm0,0x8(%rsp)
movl   $0x0,0x20(%rsp)
movss  0x4(%rsp),%xmm0
call   1050 <sin@plt>
mulss  0x8(%rsp),%xmm0
movss  %xmm0,0x2c(%rsp)
movss  %xmm0,0x24(%rsp)
movss  0x4(%rsp),%xmm0
call   1060 <cos@plt>
mulss  0x8(%rsp),%xmm0
movss  %xmm0,0x4(%rsp)
movss  %xmm0,0x28(%rsp)
xorps  %xmm0,%xmm0
movsd  0xc77(%rip),%xmm1
call   1070 <pow@plt>
mov    %eax,%ebp
movss  0x2c(%rsp),%xmm0
movsd  0xc62(%rip),%xmm1
call   1070 <pow@plt>
mov    %eax,%ebx
add    %ebp,%ebx
movss  0x4(%rsp),%xmm0
movsd  0xc4b(%rip),%xmm1
call   1070 <pow@plt>
mov    %eax,%ebp
add    %ebx,%ebp
movss  (%rsp),%xmm0
movsd  0xc35(%rip),%xmm1
call   1070 <pow@plt>
mov    %eax,%ecx
mov    %ebp,%eax
cltd
idiv   %ecx
sub    %eax,%r14d
mov    %r14d,%edi
call   1080 <sqrt@plt>
lea    0x1(%rax),%ecx
xor    %r12d,%r12d
cmp    $0x3,%ecx
cmovae %r12d,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  %xmm0,(%rsp)
lea    0x34(%rsp),%rbx
lea    0x40(%rsp),%r14
lea    0x20(%rsp),%r15
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %rbx,%rdi
call   1040 <print_array@plt>
mov    $0x6,%ebp
nopl   (%rax)
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15,%rdx
movss  0x10(%rsp),%xmm0
movss  (%rsp),%xmm1
movss  0x30(%rsp),%xmm2
movss  0x1c(%rsp),%xmm3
call   1090 <rg4th@plt>
mov    0x40(%rsp),%rax
movss  (%rax),%xmm0
mov    0x48(%rsp),%rax
movss  %xmm0,0x34(%rsp)
mov    0x58(%rsp),%rcx
movss  (%rcx),%xmm0
movss  %xmm0,0x20(%rsp)
movss  (%rax),%xmm0
movss  %xmm0,0x38(%rsp)
mov    0x60(%rsp),%rax
movss  (%rax),%xmm0
movss  %xmm0,0x24(%rsp)
mov    0x50(%rsp),%rax
movss  (%rax),%xmm0
movss  %xmm0,0x3c(%rsp)
mov    0x68(%rsp),%rax
movss  (%rax),%xmm0
movss  %xmm0,0x28(%rsp)
add    $0xffffffff,%ebp
jne    1460 <main+0x2f0>
add    $0x1,%r12d
cmp    $0x64,%r12d
jne    1450 <main+0x2e0>
xor    %eax,%eax
add    $0x70,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca float
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca [3 x float]
%13 = alloca float
%14 = alloca float
%15 = alloca float
%16 = alloca float
%17 = alloca [3 x float]
%18 = alloca float
%19 = alloca i32
%20 = alloca i32
%21 = alloca [6 x float*]
%22 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store float 1.000000e+02, float* %6
%23 = call i32 @pow(float 1.000000e+01, double -1.900000e+01)
%24 = sitofp i32 %23 to double
%25 = fmul double 0x40977C726D04E61A, %24
%26 = call i32 @pow(float 1.000000e+01, double 6.000000e+00)
%27 = sitofp i32 %26 to double
%28 = fmul double %25, %27
%29 = fptrunc double %28 to float
store float %29, float* %7
%30 = call i32 @pow(float 1.000000e+01, double 8.000000e+00)
%31 = sitofp i32 %30 to double
%32 = fmul double 2.998000e+00, %31
%33 = fptrunc double %32 to float
store float %33, float* %8
%34 = load float, float* %7
%35 = load float, float* %8
%36 = call i32 @pow(float %35, double 2.000000e+00)
%37 = sitofp i32 %36 to float
%38 = fdiv float %34, %37
store float %38, float* %9
%39 = call i32 @pow(float 1.000000e+01, double 3.000000e+00)
%40 = sitofp i32 %39 to double
%41 = fmul double 6.378100e+03, %40
%42 = fptrunc double %41 to float
store float %42, float* %10
%43 = call i32 @pow(float 1.000000e+01, double -1.900000e+01)
%44 = sitofp i32 %43 to double
%45 = fmul double 1.602000e+00, %44
%46 = fptrunc double %45 to float
store float %46, float* %11
%47 = load float, float* %10
%48 = fpext float %47 to double
%49 = fmul double 2.000000e+00, %48
%50 = fptrunc double %49 to float
%51 = getelementptr inbounds [3 x float], [3 x float]* %12, i64 0, i64 0
store float %50, float* %51
%52 = getelementptr inbounds [3 x float], [3 x float]* %12, i64 0, i64 1
store float 0.000000e+00, float* %52
%53 = getelementptr inbounds [3 x float], [3 x float]* %12, i64 0, i64 2
store float 0.000000e+00, float* %53
%54 = load i8**, i8*** %5
%55 = getelementptr inbounds i8*, i8** %54, i64 1
%56 = load i8*, i8** %55
%57 = call float @atof(i8* %56)
store float %57, float* %13
%58 = load i8**, i8*** %5
%59 = getelementptr inbounds i8*, i8** %58, i64 2
%60 = load i8*, i8** %59
%61 = call float @atof(i8* %60)
store float %61, float* %14
%62 = load float, float* %13
%63 = fmul float %62, 6.000000e+01
%64 = fpext float %63 to double
%65 = fmul double %64, 1.602000e+00
%66 = call i32 @pow(float 1.000000e+01, double -1.900000e+01)
%67 = sitofp i32 %66 to double
%68 = fmul double %65, %67
%69 = fptrunc double %68 to float
store float %69, float* %16
%70 = load float, float* %8
%71 = load float, float* %16
%72 = load float, float* %9
%73 = load float, float* %8
%74 = call i32 @pow(float %73, double 2.000000e+00)
%75 = sitofp i32 %74 to float
%76 = fmul float %72, %75
%77 = fdiv float %71, %76
%78 = fadd float %77, 1.000000e+00
%79 = call i32 @pow(float %78, double 2.000000e+00)
%80 = sdiv i32 1, %79
%81 = sub nsw i32 1, %80
%82 = call i32 @sqrt(i32 %81)
%83 = sitofp i32 %82 to float
%84 = fmul float %70, %83
store float %84, float* %15
%85 = getelementptr inbounds [3 x float], [3 x float]* %17, i64 0, i64 0
store float 0.000000e+00, float* %85
%86 = load float, float* %15
%87 = load float, float* %14
%88 = call float @sin(float %87)
%89 = fmul float %86, %88
%90 = getelementptr inbounds [3 x float], [3 x float]* %17, i64 0, i64 1
store float %89, float* %90
%91 = load float, float* %15
%92 = load float, float* %14
%93 = call float @cos(float %92)
%94 = fmul float %91, %93
%95 = getelementptr inbounds [3 x float], [3 x float]* %17, i64 0, i64 2
store float %94, float* %95
%96 = getelementptr inbounds [3 x float], [3 x float]* %17, i64 0, i64 0
%97 = load float, float* %96
%98 = call i32 @pow(float %97, double 2.000000e+00)
%99 = getelementptr inbounds [3 x float], [3 x float]* %17, i64 0, i64 1
%100 = load float, float* %99
%101 = call i32 @pow(float %100, double 2.000000e+00)
%102 = add nsw i32 %98, %101
%103 = getelementptr inbounds [3 x float], [3 x float]* %17, i64 0, i64 2
%104 = load float, float* %103
%105 = call i32 @pow(float %104, double 2.000000e+00)
%106 = add nsw i32 %102, %105
%107 = load float, float* %8
%108 = call i32 @pow(float %107, double 2.000000e+00)
%109 = sdiv i32 %106, %108
%110 = sub nsw i32 1, %109
%111 = call i32 @sqrt(i32 %110)
%112 = sdiv i32 1, %111
%113 = sitofp i32 %112 to float
store float %113, float* %18
store i32 0, i32* %19
br label %114
114: ; preds = %163, %2
%115 = load i32, i32* %19
%116 = sitofp i32 %115 to float
%117 = load float, float* %6
%118 = fcmp olt float %116, %117
br i1 %118, label %119, label %166
119: ; preds = %114
%120 = getelementptr inbounds [3 x float], [3 x float]* %12, i64 0, i64 0
%121 = call i32 @print_array(float* %120)
store i32 0, i32* %22
br label %122
122: ; preds = %159, %119
%123 = load i32, i32* %22
%124 = icmp slt i32 %123, 6
br i1 %124, label %125, label %162
125: ; preds = %122
%126 = getelementptr inbounds [6 x float*], [6 x float*]* %21, i64 0, i64 0
%127 = getelementptr inbounds [3 x float], [3 x float]* %12, i64 0, i64 0
%128 = getelementptr inbounds [3 x float], [3 x float]* %17, i64 0, i64 0
%129 = load float, float* %9
%130 = load float, float* %18
%131 = load float, float* %11
%132 = load float, float* %10
%133 = call i32 @rg4th(float** %126, float* %127, float* %128, float %129, float %130, float %131, float %132)
store i32 0, i32* %20
br label %134
134: ; preds = %155, %125
%135 = load i32, i32* %20
%136 = icmp slt i32 %135, 3
br i1 %136, label %137, label %158
137: ; preds = %134
%138 = load i32, i32* %20
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds [6 x float*], [6 x float*]* %21, i64 0, i64 %139
%141 = load float*, float** %140
%142 = load float, float* %141
%143 = load i32, i32* %20
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds [3 x float], [3 x float]* %12, i64 0, i64 %144
store float %142, float* %145
%146 = load i32, i32* %20
%147 = add nsw i32 %146, 3
%148 = sext i32 %147 to i64
%149 = getelementptr inbounds [6 x float*], [6 x float*]* %21, i64 0, i64 %148
%150 = load float*, float** %149
%151 = load float, float* %150
%152 = load i32, i32* %20
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds [3 x float], [3 x float]* %17, i64 0, i64 %153
store float %151, float* %154
br label %155
155: ; preds = %137
%156 = load i32, i32* %20
%157 = add nsw i32 %156, 1
store i32 %157, i32* %20
br label %134
158: ; preds = %134
br label %159
159: ; preds = %158
%160 = load i32, i32* %22
%161 = add nsw i32 %160, 1
store i32 %161, i32* %22
br label %122
162: ; preds = %122
br label %163
163: ; preds = %162
%164 = load i32, i32* %19
%165 = add nsw i32 %164, 1
store i32 %165, i32* %19
br label %114
166: ; preds = %114
ret i32 0
}

LLVM IR (-O2):
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca [3 x float]
%4 = alloca [3 x float]
%5 = alloca [6 x float*]
%6 = tail call i32 @pow(float 1.000000e+01, double -1.900000e+01)
%7 = sitofp i32 %6 to double
%8 = fmul double %7, 0x40977C726D04E61A
%9 = tail call i32 @pow(float 1.000000e+01, double 6.000000e+00)
%10 = sitofp i32 %9 to double
%11 = fmul double %8, %10
%12 = fptrunc double %11 to float
%13 = tail call i32 @pow(float 1.000000e+01, double 8.000000e+00)
%14 = sitofp i32 %13 to double
%15 = fmul double %14, 2.998000e+00
%16 = fptrunc double %15 to float
%17 = tail call i32 @pow(float %16, double 2.000000e+00)
%18 = sitofp i32 %17 to float
%19 = fdiv float %12, %18
%20 = tail call i32 @pow(float 1.000000e+01, double 3.000000e+00)
%21 = sitofp i32 %20 to double
%22 = fmul double %21, 6.378100e+03
%23 = fptrunc double %22 to float
%24 = tail call i32 @pow(float 1.000000e+01, double -1.900000e+01)
%25 = sitofp i32 %24 to double
%26 = fmul double %25, 1.602000e+00
%27 = fptrunc double %26 to float
%28 = bitcast [3 x float]* %3 to i8*
%29 = fmul float %23, 2.000000e+00
%30 = getelementptr inbounds [3 x float], [3 x float]* %3, i64 0, i64 0
store float %29, float* %30
%31 = getelementptr inbounds [3 x float], [3 x float]* %3, i64 0, i64 1
store float 0.000000e+00, float* %31
%32 = getelementptr inbounds [3 x float], [3 x float]* %3, i64 0, i64 2
store float 0.000000e+00, float* %32
%33 = getelementptr inbounds i8*, i8** %1, i64 1
%34 = load i8*, i8** %33
%35 = tail call float @atof(i8* %34)
%36 = getelementptr inbounds i8*, i8** %1, i64 2
%37 = load i8*, i8** %36
%38 = tail call float @atof(i8* %37)
%39 = fmul float %35, 6.000000e+01
%40 = fpext float %39 to double
%41 = fmul double %40, 1.602000e+00
%42 = tail call i32 @pow(float 1.000000e+01, double -1.900000e+01)
%43 = sitofp i32 %42 to double
%44 = fmul double %41, %43
%45 = fptrunc double %44 to float
%46 = tail call i32 @pow(float %16, double 2.000000e+00)
%47 = sitofp i32 %46 to float
%48 = fmul float %19, %47
%49 = fdiv float %45, %48
%50 = fadd float %49, 1.000000e+00
%51 = tail call i32 @pow(float %50, double 2.000000e+00)
%52 = add i32 %51, 1
%53 = icmp ult i32 %52, 3
%54 = sub nsw i32 1, %51
%55 = select i1 %53, i32 %54, i32 1
%56 = tail call i32 @sqrt(i32 %55)
%57 = sitofp i32 %56 to float
%58 = fmul float %16, %57
%59 = bitcast [3 x float]* %4 to i8*
%60 = getelementptr inbounds [3 x float], [3 x float]* %4, i64 0, i64 0
store float 0.000000e+00, float* %60
%61 = tail call float @sin(float %38)
%62 = fmul float %58, %61
%63 = getelementptr inbounds [3 x float], [3 x float]* %4, i64 0, i64 1
store float %62, float* %63
%64 = tail call float @cos(float %38)
%65 = fmul float %58, %64
%66 = getelementptr inbounds [3 x float], [3 x float]* %4, i64 0, i64 2
store float %65, float* %66
%67 = tail call i32 @pow(float 0.000000e+00, double 2.000000e+00)
%68 = tail call i32 @pow(float %62, double 2.000000e+00)
%69 = add nsw i32 %68, %67
%70 = tail call i32 @pow(float %65, double 2.000000e+00)
%71 = add nsw i32 %69, %70
%72 = tail call i32 @pow(float %16, double 2.000000e+00)
%73 = sdiv i32 %71, %72
%74 = sub nsw i32 1, %73
%75 = tail call i32 @sqrt(i32 %74)
%76 = add i32 %75, 1
%77 = icmp ult i32 %76, 3
%78 = select i1 %77, i32 %75, i32 0
%79 = sitofp i32 %78 to float
%80 = bitcast [6 x float*]* %5 to i8*
%81 = getelementptr inbounds [6 x float*], [6 x float*]* %5, i64 0, i64 0
%82 = getelementptr inbounds [6 x float*], [6 x float*]* %5, i64 0, i64 3
%83 = getelementptr inbounds [6 x float*], [6 x float*]* %5, i64 0, i64 1
%84 = getelementptr inbounds [6 x float*], [6 x float*]* %5, i64 0, i64 4
%85 = getelementptr inbounds [6 x float*], [6 x float*]* %5, i64 0, i64 2
%86 = getelementptr inbounds [6 x float*], [6 x float*]* %5, i64 0, i64 5
br label %87
87: ; preds = %2, %107
%88 = phi i32 [ 0, %2 ], [ %108, %107 ]
%89 = call i32 @print_array(float* %30)
br label %90
90: ; preds = %87, %90
%91 = phi i32 [ 0, %87 ], [ %105, %90 ]
%92 = call i32 @rg4th(float** %81, float* %30, float* %60, float %19, float %79, float %27, float %23)
%93 = load float*, float** %81
%94 = load float, float* %93
store float %94, float* %30
%95 = load float*, float** %82
%96 = load float, float* %95
store float %96, float* %60
%97 = load float*, float** %83
%98 = load float, float* %97
store float %98, float* %31
%99 = load float*, float** %84
%100 = load float, float* %99
store float %100, float* %63
%101 = load float*, float** %85
%102 = load float, float* %101
store float %102, float* %32
%103 = load float*, float** %86
%104 = load float, float* %103
store float %104, float* %66
%105 = add nuw nsw i32 %91, 1
%106 = icmp eq i32 %105, 6
br i1 %106, label %107, label %90
107: ; preds = %90
%108 = add nuw nsw i32 %88, 1
%109 = icmp eq i32 %108, 100
br i1 %109, label %110, label %87
110: ; preds = %107
ret i32 0
}