#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*/ HECMW_vis_print_exit(char *);
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int fscanf(int /*<<< orphan*/ *, char *, ...);
int read_voxel_file(char *filename, int n_voxel, double *voxel_dxyz,
                    double *voxel_orig_xyz, int *level,
                    int *voxel_n_neighbor_pe, int **voxel_neighbor_pe) {
  FILE *fp;
  int i, j;
  int ret;
  if ((fp = fopen(filename, "r")) == NULL)
    HECMW_vis_print_exit("ERROR: HEC-MW-VIS-E0010: Cannot open voxel file");
  for (j = 0; j < n_voxel; j++) {
    ret = fscanf(fp, "%lf %lf %lf", &voxel_orig_xyz[j * 3],
                 &voxel_orig_xyz[j * 3 + 1], &voxel_orig_xyz[j * 3 + 2]);
    if (ret != 3)
      HECMW_vis_print_exit("ERROR: voxel file format error\n");
    ret = fscanf(fp, "%lf %lf %lf", &voxel_dxyz[j * 3], &voxel_dxyz[j * 3 + 1],
                 &voxel_dxyz[j * 3 + 2]);
    if (ret != 3)
      HECMW_vis_print_exit("ERROR: voxel file format error\n");
    ret = fscanf(fp, "%d", &voxel_n_neighbor_pe[j]);
    if (ret != 1)
      HECMW_vis_print_exit("ERROR: voxel file format error\n");
    for (i = 0; i < voxel_n_neighbor_pe[j]; i++) {
      ret = fscanf(fp, "%d", &voxel_neighbor_pe[j][i]);
      if (ret != 1)
        HECMW_vis_print_exit("ERROR: voxel file format error\n");
    }
    level[j * 3 + 0] = 0;
    level[j * 3 + 1] = 0;
    level[j * 3 + 2] = 0;
  }
  fclose(fp);
  return 1;
}


x86 assembly (clang, -O0):
<read_voxel_file>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    -0x8(%rbp),%rdi
lea    0xe92(%rip),%rsi
call   1060 <fopen@plt>
mov    %rax,-0x38(%rbp)
cmp    $0x0,%rax
jne    118d <read_voxel_file+0x4d>
lea    0xe7a(%rip),%rdi
call   1040 <HECMW_vis_print_exit@plt>
movl   $0x0,-0x40(%rbp)
mov    -0x40(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    135f <read_voxel_file+0x21f>
mov    -0x38(%rbp),%rdi
mov    -0x20(%rbp),%rdx
imul   $0x3,-0x40(%rbp),%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    -0x20(%rbp),%rcx
imul   $0x3,-0x40(%rbp),%eax
add    $0x1,%eax
cltq
shl    $0x3,%rax
add    %rax,%rcx
mov    -0x20(%rbp),%r8
imul   $0x3,-0x40(%rbp),%eax
add    $0x2,%eax
cltq
shl    $0x3,%rax
add    %rax,%r8
lea    0xe4e(%rip),%rsi
mov    $0x0,%al
call   1050 <fscanf@plt>
mov    %eax,-0x44(%rbp)
cmpl   $0x3,-0x44(%rbp)
je     1204 <read_voxel_file+0xc4>
lea    0xe3f(%rip),%rdi
call   1040 <HECMW_vis_print_exit@plt>
mov    -0x38(%rbp),%rdi
mov    -0x18(%rbp),%rdx
imul   $0x3,-0x40(%rbp),%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    -0x18(%rbp),%rcx
imul   $0x3,-0x40(%rbp),%eax
add    $0x1,%eax
cltq
shl    $0x3,%rax
add    %rax,%rcx
mov    -0x18(%rbp),%r8
imul   $0x3,-0x40(%rbp),%eax
add    $0x2,%eax
cltq
shl    $0x3,%rax
add    %rax,%r8
lea    0xdea(%rip),%rsi
mov    $0x0,%al
call   1050 <fscanf@plt>
mov    %eax,-0x44(%rbp)
cmpl   $0x3,-0x44(%rbp)
je     1268 <read_voxel_file+0x128>
lea    0xddb(%rip),%rdi
call   1040 <HECMW_vis_print_exit@plt>
mov    -0x38(%rbp),%rdi
mov    -0x30(%rbp),%rdx
movslq -0x40(%rbp),%rax
shl    $0x2,%rax
add    %rax,%rdx
lea    0xddc(%rip),%rsi
mov    $0x0,%al
call   1050 <fscanf@plt>
mov    %eax,-0x44(%rbp)
cmpl   $0x1,-0x44(%rbp)
je     12a2 <read_voxel_file+0x162>
lea    0xda1(%rip),%rdi
call   1040 <HECMW_vis_print_exit@plt>
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    -0x30(%rbp),%rcx
movslq -0x40(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
jge    1312 <read_voxel_file+0x1d2>
mov    -0x38(%rbp),%rdi
mov    0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
movslq -0x3c(%rbp),%rax
shl    $0x2,%rax
add    %rax,%rdx
lea    0xd7f(%rip),%rsi
mov    $0x0,%al
call   1050 <fscanf@plt>
mov    %eax,-0x44(%rbp)
cmpl   $0x1,-0x44(%rbp)
je     12ff <read_voxel_file+0x1bf>
lea    0xd44(%rip),%rdi
call   1040 <HECMW_vis_print_exit@plt>
jmp    1304 <read_voxel_file+0x1c4>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    12a9 <read_voxel_file+0x169>
mov    -0x28(%rbp),%rax
imul   $0x3,-0x40(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
imul   $0x3,-0x40(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
imul   $0x3,-0x40(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    1194 <read_voxel_file+0x54>
mov    -0x38(%rbp),%rdi
call   1030 <fclose@plt>
mov    $0x1,%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<read_voxel_file>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    %r9,0x28(%rsp)
mov    %r8,0x20(%rsp)
mov    %rcx,0x18(%rsp)
mov    %rdx,0x10(%rsp)
mov    %esi,%ebp
lea    0xe95(%rip),%rsi
call   1060 <fopen@plt>
mov    %rax,%rbx
test   %rax,%rax
je     1181 <read_voxel_file+0x41>
test   %ebp,%ebp
jg     1195 <read_voxel_file+0x55>
jmp    12e0 <read_voxel_file+0x1a0>
lea    0xe7a(%rip),%rdi
call   1040 <HECMW_vis_print_exit@plt>
test   %ebp,%ebp
jle    12e0 <read_voxel_file+0x1a0>
mov    %ebp,%eax
mov    %rax,0x8(%rsp)
lea    0xe8f(%rip),%r15
lea    0xeb4(%rip),%r14
xor    %r13d,%r13d
jmp    11e0 <read_voxel_file+0xa0>
nop
mov    0x20(%rsp),%rax
mov    0x30(%rsp),%rcx
movl   $0x0,(%rax,%rcx,4)
movq   $0x0,0x4(%rax,%rcx,4)
add    $0x1,%r13
cmp    0x8(%rsp),%r13
lea    0xe58(%rip),%r15
je     12e0 <read_voxel_file+0x1a0>
lea    0x0(,%r13,2),%rbp
add    %r13,%rbp
mov    0x18(%rsp),%rax
lea    (%rax,%rbp,8),%rdx
lea    0x8(%rax,%rbp,8),%rcx
lea    (%rax,%rbp,8),%r8
add    $0x10,%r8
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1050 <fscanf@plt>
cmp    $0x3,%eax
je     121f <read_voxel_file+0xdf>
lea    0xe24(%rip),%rdi
call   1040 <HECMW_vis_print_exit@plt>
lea    0x1(,%r13,2),%rax
add    %r13,%rax
lea    0x2(%r13,%r13,2),%rsi
mov    0x10(%rsp),%rdi
mov    %rbp,0x30(%rsp)
lea    (%rdi,%rbp,8),%rdx
lea    (%rdi,%rax,8),%rcx
lea    (%rdi,%rsi,8),%r8
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1050 <fscanf@plt>
cmp    $0x3,%eax
je     1263 <read_voxel_file+0x123>
lea    0xde0(%rip),%rdi
call   1040 <HECMW_vis_print_exit@plt>
mov    0x28(%rsp),%rax
lea    (%rax,%r13,4),%r15
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r15,%rdx
xor    %eax,%eax
call   1050 <fscanf@plt>
cmp    $0x1,%eax
je     128d <read_voxel_file+0x14d>
lea    0xdb6(%rip),%rdi
call   1040 <HECMW_vis_print_exit@plt>
cmpl   $0x0,(%r15)
jle    11b0 <read_voxel_file+0x70>
xor    %ebp,%ebp
xor    %r12d,%r12d
jmp    12b4 <read_voxel_file+0x174>
xchg   %ax,%ax
add    $0x1,%r12
movslq (%r15),%rax
add    $0x4,%rbp
cmp    %rax,%r12
jge    11b0 <read_voxel_file+0x70>
mov    0x70(%rsp),%rax
mov    (%rax,%r13,8),%rdx
add    %rbp,%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1050 <fscanf@plt>
cmp    $0x1,%eax
je     12a0 <read_voxel_file+0x160>
lea    0xd65(%rip),%rdi
call   1040 <HECMW_vis_print_exit@plt>
jmp    12a0 <read_voxel_file+0x160>
mov    %rbx,%rdi
call   1030 <fclose@plt>
mov    $0x1,%eax
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [2 x i8] c"r\00"
@.str.1 = [48 x i8] c"ERROR: HEC-MW-VIS-E0010: Cannot open voxel file\00"
@.str.2 = [12 x i8] c"%lf %lf %lf\00"
@.str.3 = [32 x i8] c"ERROR: voxel file format error\0A\00"
@.str.4 = [3 x i8] c"%d\00"
define i32 @read_voxel_file(i8* %0, i32 %1, double* %2, double* %3, i32* %4, i32* %5, i32** %6) {
%8 = alloca i8*
%9 = alloca i32
%10 = alloca double*
%11 = alloca double*
%12 = alloca i32*
%13 = alloca i32*
%14 = alloca i32**
%15 = alloca i32*
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
store i8* %0, i8** %8
store i32 %1, i32* %9
store double* %2, double** %10
store double* %3, double** %11
store i32* %4, i32** %12
store i32* %5, i32** %13
store i32** %6, i32*** %14
%19 = load i8*, i8** %8
%20 = call i32* @fopen(i8* %19, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i32* %20, i32** %15
%21 = icmp eq i32* %20, null
br i1 %21, label %22, label %24
22: ; preds = %7
%23 = call i32 @HECMW_vis_print_exit(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.1, i64 0, i64 0))
br label %24
24: ; preds = %22, %7
store i32 0, i32* %17
br label %25
25: ; preds = %135, %24
%26 = load i32, i32* %17
%27 = load i32, i32* %9
%28 = icmp slt i32 %26, %27
br i1 %28, label %29, label %138
29: ; preds = %25
%30 = load i32*, i32** %15
%31 = load double*, double** %11
%32 = load i32, i32* %17
%33 = mul nsw i32 %32, 3
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds double, double* %31, i64 %34
%36 = load double*, double** %11
%37 = load i32, i32* %17
%38 = mul nsw i32 %37, 3
%39 = add nsw i32 %38, 1
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds double, double* %36, i64 %40
%42 = load double*, double** %11
%43 = load i32, i32* %17
%44 = mul nsw i32 %43, 3
%45 = add nsw i32 %44, 2
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds double, double* %42, i64 %46
%48 = call i32 (i32*, i8*, ...) @fscanf(i32* %30, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0), double* %35, double* %41, double* %47)
store i32 %48, i32* %18
%49 = load i32, i32* %18
%50 = icmp ne i32 %49, 3
br i1 %50, label %51, label %53
51: ; preds = %29
%52 = call i32 @HECMW_vis_print_exit(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.3, i64 0, i64 0))
br label %53
53: ; preds = %51, %29
%54 = load i32*, i32** %15
%55 = load double*, double** %10
%56 = load i32, i32* %17
%57 = mul nsw i32 %56, 3
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds double, double* %55, i64 %58
%60 = load double*, double** %10
%61 = load i32, i32* %17
%62 = mul nsw i32 %61, 3
%63 = add nsw i32 %62, 1
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds double, double* %60, i64 %64
%66 = load double*, double** %10
%67 = load i32, i32* %17
%68 = mul nsw i32 %67, 3
%69 = add nsw i32 %68, 2
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds double, double* %66, i64 %70
%72 = call i32 (i32*, i8*, ...) @fscanf(i32* %54, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0), double* %59, double* %65, double* %71)
store i32 %72, i32* %18
%73 = load i32, i32* %18
%74 = icmp ne i32 %73, 3
br i1 %74, label %75, label %77
75: ; preds = %53
%76 = call i32 @HECMW_vis_print_exit(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.3, i64 0, i64 0))
br label %77
77: ; preds = %75, %53
%78 = load i32*, i32** %15
%79 = load i32*, i32** %13
%80 = load i32, i32* %17
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds i32, i32* %79, i64 %81
%83 = call i32 (i32*, i8*, ...) @fscanf(i32* %78, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %82)
store i32 %83, i32* %18
%84 = load i32, i32* %18
%85 = icmp ne i32 %84, 1
br i1 %85, label %86, label %88
86: ; preds = %77
%87 = call i32 @HECMW_vis_print_exit(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.3, i64 0, i64 0))
br label %88
88: ; preds = %86, %77
store i32 0, i32* %16
br label %89
89: ; preds = %113, %88
%90 = load i32, i32* %16
%91 = load i32*, i32** %13
%92 = load i32, i32* %17
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds i32, i32* %91, i64 %93
%95 = load i32, i32* %94
%96 = icmp slt i32 %90, %95
br i1 %96, label %97, label %116
97: ; preds = %89
%98 = load i32*, i32** %15
%99 = load i32**, i32*** %14
%100 = load i32, i32* %17
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds i32*, i32** %99, i64 %101
%103 = load i32*, i32** %102
%104 = load i32, i32* %16
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds i32, i32* %103, i64 %105
%107 = call i32 (i32*, i8*, ...) @fscanf(i32* %98, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %106)
store i32 %107, i32* %18
%108 = load i32, i32* %18
%109 = icmp ne i32 %108, 1
br i1 %109, label %110, label %112
110: ; preds = %97
%111 = call i32 @HECMW_vis_print_exit(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.3, i64 0, i64 0))
br label %112
112: ; preds = %110, %97
br label %113
113: ; preds = %112
%114 = load i32, i32* %16
%115 = add nsw i32 %114, 1
store i32 %115, i32* %16
br label %89
116: ; preds = %89
%117 = load i32*, i32** %12
%118 = load i32, i32* %17
%119 = mul nsw i32 %118, 3
%120 = add nsw i32 %119, 0
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds i32, i32* %117, i64 %121
store i32 0, i32* %122
%123 = load i32*, i32** %12
%124 = load i32, i32* %17
%125 = mul nsw i32 %124, 3
%126 = add nsw i32 %125, 1
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds i32, i32* %123, i64 %127
store i32 0, i32* %128
%129 = load i32*, i32** %12
%130 = load i32, i32* %17
%131 = mul nsw i32 %130, 3
%132 = add nsw i32 %131, 2
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds i32, i32* %129, i64 %133
store i32 0, i32* %134
br label %135
135: ; preds = %116
%136 = load i32, i32* %17
%137 = add nsw i32 %136, 1
store i32 %137, i32* %17
br label %25
138: ; preds = %25
%139 = load i32*, i32** %15
%140 = call i32 @fclose(i32* %139)
ret i32 1
}

LLVM IR (-O2):
@.str = [2 x i8] c"r\00"
@.str.1 = [48 x i8] c"ERROR: HEC-MW-VIS-E0010: Cannot open voxel file\00"
@.str.2 = [12 x i8] c"%lf %lf %lf\00"
@.str.3 = [32 x i8] c"ERROR: voxel file format error\0A\00"
@.str.4 = [3 x i8] c"%d\00"
define i32 @read_voxel_file(i8* nocapture %0, i32 %1, double* %2, double* %3, i32* nocapture writeonly %4, i32* %5, i32** nocapture %6) {
%8 = tail call i32* @fopen(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%9 = icmp eq i32* %8, null
br i1 %9, label %10, label %12
10: ; preds = %7
%11 = tail call i32 @HECMW_vis_print_exit(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.1, i64 0, i64 0))
br label %12
12: ; preds = %10, %7
%13 = icmp sgt i32 %1, 0
br i1 %13, label %14, label %66
14: ; preds = %12
%15 = zext i32 %1 to i64
br label %16
16: ; preds = %14, %60
%17 = phi i64 [ 0, %14 ], [ %64, %60 ]
%18 = mul nuw nsw i64 %17, 3
%19 = getelementptr inbounds double, double* %3, i64 %18
%20 = add nuw nsw i64 %18, 1
%21 = getelementptr inbounds double, double* %3, i64 %20
%22 = add nuw nsw i64 %18, 2
%23 = getelementptr inbounds double, double* %3, i64 %22
%24 = tail call i32 (i32*, i8*, ...) @fscanf(i32* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0), double* %19, double* %21, double* %23)
%25 = icmp eq i32 %24, 3
br i1 %25, label %28, label %26
26: ; preds = %16
%27 = tail call i32 @HECMW_vis_print_exit(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.3, i64 0, i64 0))
br label %28
28: ; preds = %26, %16
%29 = getelementptr inbounds double, double* %2, i64 %18
%30 = getelementptr inbounds double, double* %2, i64 %20
%31 = getelementptr inbounds double, double* %2, i64 %22
%32 = tail call i32 (i32*, i8*, ...) @fscanf(i32* %8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0), double* %29, double* %30, double* %31)
%33 = icmp eq i32 %32, 3
br i1 %33, label %36, label %34
34: ; preds = %28
%35 = tail call i32 @HECMW_vis_print_exit(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.3, i64 0, i64 0))
br label %36
36: ; preds = %34, %28
%37 = getelementptr inbounds i32, i32* %5, i64 %17
%38 = tail call i32 (i32*, i8*, ...) @fscanf(i32* %8, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %37)
%39 = icmp eq i32 %38, 1
br i1 %39, label %42, label %40
40: ; preds = %36
%41 = tail call i32 @HECMW_vis_print_exit(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.3, i64 0, i64 0))
br label %42
42: ; preds = %40, %36
%43 = load i32, i32* %37
%44 = icmp sgt i32 %43, 0
br i1 %44, label %45, label %60
45: ; preds = %42
%46 = getelementptr inbounds i32*, i32** %6, i64 %17
br label %47
47: ; preds = %45, %55
%48 = phi i64 [ 0, %45 ], [ %56, %55 ]
%49 = load i32*, i32** %46
%50 = getelementptr inbounds i32, i32* %49, i64 %48
%51 = tail call i32 (i32*, i8*, ...) @fscanf(i32* %8, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %50)
%52 = icmp eq i32 %51, 1
br i1 %52, label %55, label %53
53: ; preds = %47
%54 = tail call i32 @HECMW_vis_print_exit(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.3, i64 0, i64 0))
br label %55
55: ; preds = %47, %53
%56 = add nuw nsw i64 %48, 1
%57 = load i32, i32* %37
%58 = sext i32 %57 to i64
%59 = icmp slt i64 %56, %58
br i1 %59, label %47, label %60
60: ; preds = %55, %42
%61 = getelementptr inbounds i32, i32* %4, i64 %18
store i32 0, i32* %61
%62 = getelementptr inbounds i32, i32* %4, i64 %20
store i32 0, i32* %62
%63 = getelementptr inbounds i32, i32* %4, i64 %22
store i32 0, i32* %63
%64 = add nuw nsw i64 %17, 1
%65 = icmp eq i64 %64, %15
br i1 %65, label %66, label %16
66: ; preds = %60, %12
%67 = tail call i32 @fclose(i32* %8)
ret i32 1
}