#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 */
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char const *const, char *);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, int, double, double,
                           double, double, double, double, double, double,
                           double, double, double, double, double, double,
                           double, double);
double lookupSunriseTime(int, double, double);
double lookupSunsetTime(int, double, double);
int /*<<< orphan*/ printf(char *, char const *const);
double sunriseTime(int, double, double);
double sunsetTime(int, double, double);
int writeLookupTableForOctave(const char *const filename, double latitude,
                              double longitude) {
  FILE *fd = fopen(filename, "wt");
  if (!fd) {
    printf("Unable to open %s for writing.\n", filename);
    return 1;
  }
  printf("Writing table to %s...\n", filename);
  for (int day = 0; day < 36525; day++) {
    double eventTimes[] = {sunriseTime(day, 55, 0),
                           lookupSunriseTime(day, 55, 0),
                           sunriseTime(day, (55 + 5), 0),
                           lookupSunriseTime(day, (55 + 5), 0),
                           sunriseTime(day, (55 - 5), 0),
                           lookupSunriseTime(day, (55 - 5), 0),
                           sunsetTime(day, 55, 0),
                           lookupSunsetTime(day, 55, 0),
                           sunsetTime(day, (55 + 5), 0),
                           lookupSunsetTime(day, (55 + 5), 0),
                           sunsetTime(day, (55 - 5), 0),
                           lookupSunsetTime(day, (55 - 5), 0),
                           sunriseTime(day, latitude, longitude),
                           lookupSunriseTime(day, latitude, longitude),
                           sunsetTime(day, latitude, longitude),
                           lookupSunsetTime(day, latitude, longitude)};
    fprintf(fd,
            "%d"
            "\t%.8e\t%.8e"
            "\t%.8e\t%.8e"
            "\t%.8e\t%.8e"
            "\t%.8e\t%.8e"
            "\t%.8e\t%.8e"
            "\t%.8e\t%.8e"
            "\t%.8e\t%.8e"
            "\t%.8e\t%.8e"
            "\n",
            day, eventTimes[0], eventTimes[1], eventTimes[2], eventTimes[3],
            eventTimes[4], eventTimes[5], eventTimes[6], eventTimes[7],
            eventTimes[8], eventTimes[9], eventTimes[10], eventTimes[11],
            eventTimes[12], eventTimes[13], eventTimes[14], eventTimes[15]);
  }
  fclose(fd);
  return 0;
}


x86 assembly (clang, -O0):
<writeLookupTableForOctave>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
mov    %rdi,-0x10(%rbp)
movsd  %xmm0,-0x18(%rbp)
movsd  %xmm1,-0x20(%rbp)
mov    -0x10(%rbp),%rdi
lea    0xe74(%rip),%rsi
call   10a0 <fopen@plt>
mov    %rax,-0x28(%rbp)
cmpq   $0x0,-0x28(%rbp)
jne    11d4 <writeLookupTableForOctave+0x54>
mov    -0x10(%rbp),%rsi
lea    0xe58(%rip),%rdi
call   1050 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    1458 <writeLookupTableForOctave+0x2d8>
mov    -0x10(%rbp),%rsi
lea    0xe5c(%rip),%rdi
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
cmpl   $0x8ead,-0x2c(%rbp)
jge    1448 <writeLookupTableForOctave+0x2c8>
mov    -0x2c(%rbp),%edi
movsd  0xe0d(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1040 <sunriseTime@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x2c(%rbp),%edi
movsd  0xdf2(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1080 <lookupSunriseTime@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x2c(%rbp),%edi
movsd  0xdcf(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1040 <sunriseTime@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x2c(%rbp),%edi
movsd  0xdb4(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1080 <lookupSunriseTime@plt>
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x2c(%rbp),%edi
movsd  0xd91(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1040 <sunriseTime@plt>
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x2c(%rbp),%edi
movsd  0xd76(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1080 <lookupSunriseTime@plt>
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x2c(%rbp),%edi
movsd  0xd6b(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1070 <sunsetTime@plt>
movsd  %xmm0,-0x80(%rbp)
mov    -0x2c(%rbp),%edi
movsd  0xd53(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1090 <lookupSunsetTime@plt>
movsd  %xmm0,-0x78(%rbp)
mov    -0x2c(%rbp),%edi
movsd  0xd33(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1070 <sunsetTime@plt>
movsd  %xmm0,-0x70(%rbp)
mov    -0x2c(%rbp),%edi
movsd  0xd1b(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1090 <lookupSunsetTime@plt>
movsd  %xmm0,-0x68(%rbp)
mov    -0x2c(%rbp),%edi
movsd  0xcfb(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1070 <sunsetTime@plt>
movsd  %xmm0,-0x60(%rbp)
mov    -0x2c(%rbp),%edi
movsd  0xce3(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1090 <lookupSunsetTime@plt>
movsd  %xmm0,-0x58(%rbp)
mov    -0x2c(%rbp),%edi
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
call   1040 <sunriseTime@plt>
movsd  %xmm0,-0x50(%rbp)
mov    -0x2c(%rbp),%edi
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
call   1080 <lookupSunriseTime@plt>
movsd  %xmm0,-0x48(%rbp)
mov    -0x2c(%rbp),%edi
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
call   1070 <sunsetTime@plt>
movsd  %xmm0,-0x40(%rbp)
mov    -0x2c(%rbp),%edi
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
call   1090 <lookupSunsetTime@plt>
movsd  %xmm0,-0x38(%rbp)
mov    -0x28(%rbp),%rdi
mov    -0x2c(%rbp),%edx
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm1
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm3
ff
movsd  -0x90(%rbp),%xmm4
ff
movsd  -0x88(%rbp),%xmm5
ff
movsd  -0x80(%rbp),%xmm6
movsd  -0x78(%rbp),%xmm7
movsd  -0x70(%rbp),%xmm15
movsd  -0x68(%rbp),%xmm14
movsd  -0x60(%rbp),%xmm13
movsd  -0x58(%rbp),%xmm12
movsd  -0x50(%rbp),%xmm11
movsd  -0x48(%rbp),%xmm10
movsd  -0x40(%rbp),%xmm9
movsd  -0x38(%rbp),%xmm8
lea    0xc55(%rip),%rsi
movsd  %xmm15,(%rsp)
movsd  %xmm14,0x8(%rsp)
movsd  %xmm13,0x10(%rsp)
movsd  %xmm12,0x18(%rsp)
movsd  %xmm11,0x20(%rsp)
movsd  %xmm10,0x28(%rsp)
movsd  %xmm9,0x30(%rsp)
movsd  %xmm8,0x38(%rsp)
call   1060 <fprintf@plt>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    11eb <writeLookupTableForOctave+0x6b>
mov    -0x28(%rbp),%rdi
call   1030 <fclose@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<writeLookupTableForOctave>:
push   %rbp
push   %r14
push   %rbx
sub    $0xd0,%rsp
movsd  %xmm1,0x50(%rsp)
movsd  %xmm0,0x48(%rsp)
mov    %rdi,%rbp
lea    0xe77(%rip),%rsi
call   10a0 <fopen@plt>
test   %rax,%rax
je     143b <writeLookupTableForOctave+0x2bb>
mov    %rax,%rbx
lea    0xe82(%rip),%rdi
mov    %rbp,%rsi
call   1050 <printf@plt>
xor    %ebp,%ebp
lea    0xe89(%rip),%r14
nopw   0x0(%rax,%rax,1)
xorps  %xmm1,%xmm1
mov    %ebp,%edi
movsd  0xe23(%rip),%xmm0
call   1040 <sunriseTime@plt>
movsd  %xmm0,0xc8(%rsp)
xorps  %xmm1,%xmm1
mov    %ebp,%edi
movsd  0xe08(%rip),%xmm0
call   1080 <lookupSunriseTime@plt>
movsd  %xmm0,0xc0(%rsp)
xorps  %xmm1,%xmm1
mov    %ebp,%edi
movsd  0xdf5(%rip),%xmm0
call   1040 <sunriseTime@plt>
movsd  %xmm0,0xb8(%rsp)
xorps  %xmm1,%xmm1
mov    %ebp,%edi
movsd  0xdda(%rip),%xmm0
call   1080 <lookupSunriseTime@plt>
movsd  %xmm0,0xb0(%rsp)
xorps  %xmm1,%xmm1
mov    %ebp,%edi
movsd  0xdc7(%rip),%xmm0
call   1040 <sunriseTime@plt>
movsd  %xmm0,0xa8(%rsp)
xorps  %xmm1,%xmm1
mov    %ebp,%edi
movsd  0xdac(%rip),%xmm0
call   1080 <lookupSunriseTime@plt>
movsd  %xmm0,0xa0(%rsp)
xorps  %xmm1,%xmm1
mov    %ebp,%edi
movsd  0xd81(%rip),%xmm0
call   1070 <sunsetTime@plt>
movsd  %xmm0,0x98(%rsp)
xorps  %xmm1,%xmm1
mov    %ebp,%edi
movsd  0xd66(%rip),%xmm0
call   1090 <lookupSunsetTime@plt>
movsd  %xmm0,0x90(%rsp)
xorps  %xmm1,%xmm1
mov    %ebp,%edi
movsd  0xd53(%rip),%xmm0
call   1070 <sunsetTime@plt>
movsd  %xmm0,0x88(%rsp)
xorps  %xmm1,%xmm1
mov    %ebp,%edi
movsd  0xd38(%rip),%xmm0
call   1090 <lookupSunsetTime@plt>
movsd  %xmm0,0x80(%rsp)
xorps  %xmm1,%xmm1
mov    %ebp,%edi
movsd  0xd25(%rip),%xmm0
call   1070 <sunsetTime@plt>
movsd  %xmm0,0x78(%rsp)
xorps  %xmm1,%xmm1
mov    %ebp,%edi
movsd  0xd0d(%rip),%xmm0
call   1090 <lookupSunsetTime@plt>
movsd  %xmm0,0x70(%rsp)
mov    %ebp,%edi
movsd  0x48(%rsp),%xmm0
movsd  0x50(%rsp),%xmm1
call   1040 <sunriseTime@plt>
movsd  %xmm0,0x68(%rsp)
mov    %ebp,%edi
movsd  0x48(%rsp),%xmm0
movsd  0x50(%rsp),%xmm1
call   1080 <lookupSunriseTime@plt>
movsd  %xmm0,0x60(%rsp)
mov    %ebp,%edi
movsd  0x48(%rsp),%xmm0
movsd  0x50(%rsp),%xmm1
call   1070 <sunsetTime@plt>
movsd  %xmm0,0x58(%rsp)
mov    %ebp,%edi
movsd  0x48(%rsp),%xmm0
movsd  0x50(%rsp),%xmm1
call   1090 <lookupSunsetTime@plt>
movsd  %xmm0,0x38(%rsp)
movsd  0x58(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x60(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x68(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x70(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x78(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x80(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x88(%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %ebp,%edx
movsd  0xc8(%rsp),%xmm0
movsd  0xc0(%rsp),%xmm1
movsd  0xb8(%rsp),%xmm2
movsd  0xb0(%rsp),%xmm3
movsd  0xa8(%rsp),%xmm4
movsd  0xa0(%rsp),%xmm5
movsd  0x98(%rsp),%xmm6
movsd  0x90(%rsp),%xmm7
call   1060 <fprintf@plt>
add    $0x1,%ebp
cmp    $0x8ead,%ebp
jne    11d0 <writeLookupTableForOctave+0x50>
mov    %rbx,%rdi
call   1030 <fclose@plt>
xor    %eax,%eax
jmp    144f <writeLookupTableForOctave+0x2cf>
lea    0xbd9(%rip),%rdi
mov    %rbp,%rsi
call   1050 <printf@plt>
mov    $0x1,%eax
add    $0xd0,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@.str = [3 x i8] c"wt\00"
@.str.1 = [32 x i8] c"Unable to open %s for writing.\0A\00"
@.str.2 = [24 x i8] c"Writing table to %s...\0A\00"
@.str.3 = [84 x i8] c"%d\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\0A\00"
define i32 @writeLookupTableForOctave(i8* %0, double %1, double %2) {
%4 = alloca i32
%5 = alloca i8*
%6 = alloca double
%7 = alloca double
%8 = alloca i32*
%9 = alloca i32
%10 = alloca [16 x double]
store i8* %0, i8** %5
store double %1, double* %6
store double %2, double* %7
%11 = load i8*, i8** %5
%12 = call i32* @fopen(i8* %11, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
store i32* %12, i32** %8
%13 = load i32*, i32** %8
%14 = icmp ne i32* %13, null
br i1 %14, label %18, label %15
15: ; preds = %3
%16 = load i8*, i8** %5
%17 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i8* %16)
store i32 1, i32* %4
br label %122
18: ; preds = %3
%19 = load i8*, i8** %5
%20 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* %19)
store i32 0, i32* %9
br label %21
21: ; preds = %116, %18
%22 = load i32, i32* %9
%23 = icmp slt i32 %22, 36525
br i1 %23, label %24, label %119
24: ; preds = %21
%25 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 0
%26 = load i32, i32* %9
%27 = call double @sunriseTime(i32 %26, double 5.500000e+01, double 0.000000e+00)
store double %27, double* %25
%28 = getelementptr inbounds double, double* %25, i64 1
%29 = load i32, i32* %9
%30 = call double @lookupSunriseTime(i32 %29, double 5.500000e+01, double 0.000000e+00)
store double %30, double* %28
%31 = getelementptr inbounds double, double* %28, i64 1
%32 = load i32, i32* %9
%33 = call double @sunriseTime(i32 %32, double 6.000000e+01, double 0.000000e+00)
store double %33, double* %31
%34 = getelementptr inbounds double, double* %31, i64 1
%35 = load i32, i32* %9
%36 = call double @lookupSunriseTime(i32 %35, double 6.000000e+01, double 0.000000e+00)
store double %36, double* %34
%37 = getelementptr inbounds double, double* %34, i64 1
%38 = load i32, i32* %9
%39 = call double @sunriseTime(i32 %38, double 5.000000e+01, double 0.000000e+00)
store double %39, double* %37
%40 = getelementptr inbounds double, double* %37, i64 1
%41 = load i32, i32* %9
%42 = call double @lookupSunriseTime(i32 %41, double 5.000000e+01, double 0.000000e+00)
store double %42, double* %40
%43 = getelementptr inbounds double, double* %40, i64 1
%44 = load i32, i32* %9
%45 = call double @sunsetTime(i32 %44, double 5.500000e+01, double 0.000000e+00)
store double %45, double* %43
%46 = getelementptr inbounds double, double* %43, i64 1
%47 = load i32, i32* %9
%48 = call double @lookupSunsetTime(i32 %47, double 5.500000e+01, double 0.000000e+00)
store double %48, double* %46
%49 = getelementptr inbounds double, double* %46, i64 1
%50 = load i32, i32* %9
%51 = call double @sunsetTime(i32 %50, double 6.000000e+01, double 0.000000e+00)
store double %51, double* %49
%52 = getelementptr inbounds double, double* %49, i64 1
%53 = load i32, i32* %9
%54 = call double @lookupSunsetTime(i32 %53, double 6.000000e+01, double 0.000000e+00)
store double %54, double* %52
%55 = getelementptr inbounds double, double* %52, i64 1
%56 = load i32, i32* %9
%57 = call double @sunsetTime(i32 %56, double 5.000000e+01, double 0.000000e+00)
store double %57, double* %55
%58 = getelementptr inbounds double, double* %55, i64 1
%59 = load i32, i32* %9
%60 = call double @lookupSunsetTime(i32 %59, double 5.000000e+01, double 0.000000e+00)
store double %60, double* %58
%61 = getelementptr inbounds double, double* %58, i64 1
%62 = load i32, i32* %9
%63 = load double, double* %6
%64 = load double, double* %7
%65 = call double @sunriseTime(i32 %62, double %63, double %64)
store double %65, double* %61
%66 = getelementptr inbounds double, double* %61, i64 1
%67 = load i32, i32* %9
%68 = load double, double* %6
%69 = load double, double* %7
%70 = call double @lookupSunriseTime(i32 %67, double %68, double %69)
store double %70, double* %66
%71 = getelementptr inbounds double, double* %66, i64 1
%72 = load i32, i32* %9
%73 = load double, double* %6
%74 = load double, double* %7
%75 = call double @sunsetTime(i32 %72, double %73, double %74)
store double %75, double* %71
%76 = getelementptr inbounds double, double* %71, i64 1
%77 = load i32, i32* %9
%78 = load double, double* %6
%79 = load double, double* %7
%80 = call double @lookupSunsetTime(i32 %77, double %78, double %79)
store double %80, double* %76
%81 = load i32*, i32** %8
%82 = load i32, i32* %9
%83 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 0
%84 = load double, double* %83
%85 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 1
%86 = load double, double* %85
%87 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 2
%88 = load double, double* %87
%89 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 3
%90 = load double, double* %89
%91 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 4
%92 = load double, double* %91
%93 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 5
%94 = load double, double* %93
%95 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 6
%96 = load double, double* %95
%97 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 7
%98 = load double, double* %97
%99 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 8
%100 = load double, double* %99
%101 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 9
%102 = load double, double* %101
%103 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 10
%104 = load double, double* %103
%105 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 11
%106 = load double, double* %105
%107 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 12
%108 = load double, double* %107
%109 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 13
%110 = load double, double* %109
%111 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 14
%112 = load double, double* %111
%113 = getelementptr inbounds [16 x double], [16 x double]* %10, i64 0, i64 15
%114 = load double, double* %113
%115 = call i32 @fprintf(i32* %81, i8* getelementptr inbounds ([84 x i8], [84 x i8]* @.str.3, i64 0, i64 0), i32 %82, double %84, double %86, double %88, double %90, double %92, double %94, double %96, double %98, double %100, double %102, double %104, double %106, double %108, double %110, double %112, double %114)
br label %116
116: ; preds = %24
%117 = load i32, i32* %9
%118 = add nsw i32 %117, 1
store i32 %118, i32* %9
br label %21
119: ; preds = %21
%120 = load i32*, i32** %8
%121 = call i32 @fclose(i32* %120)
store i32 0, i32* %4
br label %122
122: ; preds = %119, %15
%123 = load i32, i32* %4
ret i32 %123
}

LLVM IR (-O2):
@.str = [3 x i8] c"wt\00"
@.str.1 = [32 x i8] c"Unable to open %s for writing.\0A\00"
@.str.2 = [24 x i8] c"Writing table to %s...\0A\00"
@.str.3 = [84 x i8] c"%d\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\09%.8e\0A\00"
define i32 @writeLookupTableForOctave(i8* %0, double %1, double %2) {
%4 = tail call i32* @fopen(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
%5 = icmp eq i32* %4, null
br i1 %5, label %6, label %8
6: ; preds = %3
%7 = tail call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i8* %0)
br label %33
8: ; preds = %3
%9 = tail call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* %0)
br label %12
10: ; preds = %12
%11 = tail call i32 @fclose(i32* %4)
br label %33
12: ; preds = %8, %12
%13 = phi i32 [ 0, %8 ], [ %31, %12 ]
%14 = tail call double @sunriseTime(i32 %13, double 5.500000e+01, double 0.000000e+00)
%15 = tail call double @lookupSunriseTime(i32 %13, double 5.500000e+01, double 0.000000e+00)
%16 = tail call double @sunriseTime(i32 %13, double 6.000000e+01, double 0.000000e+00)
%17 = tail call double @lookupSunriseTime(i32 %13, double 6.000000e+01, double 0.000000e+00)
%18 = tail call double @sunriseTime(i32 %13, double 5.000000e+01, double 0.000000e+00)
%19 = tail call double @lookupSunriseTime(i32 %13, double 5.000000e+01, double 0.000000e+00)
%20 = tail call double @sunsetTime(i32 %13, double 5.500000e+01, double 0.000000e+00)
%21 = tail call double @lookupSunsetTime(i32 %13, double 5.500000e+01, double 0.000000e+00)
%22 = tail call double @sunsetTime(i32 %13, double 6.000000e+01, double 0.000000e+00)
%23 = tail call double @lookupSunsetTime(i32 %13, double 6.000000e+01, double 0.000000e+00)
%24 = tail call double @sunsetTime(i32 %13, double 5.000000e+01, double 0.000000e+00)
%25 = tail call double @lookupSunsetTime(i32 %13, double 5.000000e+01, double 0.000000e+00)
%26 = tail call double @sunriseTime(i32 %13, double %1, double %2)
%27 = tail call double @lookupSunriseTime(i32 %13, double %1, double %2)
%28 = tail call double @sunsetTime(i32 %13, double %1, double %2)
%29 = tail call double @lookupSunsetTime(i32 %13, double %1, double %2)
%30 = tail call i32 @fprintf(i32* %4, i8* getelementptr inbounds ([84 x i8], [84 x i8]* @.str.3, i64 0, i64 0), i32 %13, double %14, double %15, double %16, double %17, double %18, double %19, double %20, double %21, double %22, double %23, double %24, double %25, double %26, double %27, double %28, double %29)
%31 = add nuw nsw i32 %13, 1
%32 = icmp eq i32 %31, 36525
br i1 %32, label %10, label %12
33: ; preds = %10, %6
%34 = phi i32 [ 0, %10 ], [ 1, %6 ]
ret i32 %34
}