#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*/ base_frame(long, char *, long **, long *, char **, char **,
                              char *, long *, char **, double **, double **,
                              double **);
double fabs(int);
long find_1st_atom(char *, char **, long, long, char *);
int /*<<< orphan*/ o3_p_xyz(long, long, char *, char **, double **, double *,
                            int);
void base_info(long num_residue, char *bseq, long **seidx, long *RY,
               char **AtomName, char **ResName, char *ChainID, long *ResSeq,
               char **Miscs, double **xyz, double **orien, double **org,
               double **Nxyz, double **o3_p, double *BPRS) {
  char str[512];
  long i, ib, ie, j, k;
  FILE *fpar;
  base_frame(num_residue, bseq, seidx, RY, AtomName, ResName, ChainID, ResSeq,
             Miscs, xyz, orien, org);
  BPRS[1] = 3.4;
  BPRS[2] = 26.0;
  BPRS[3] = 2.5;
  BPRS[4] = 90.0 - fabs(65 - 90.0);
  BPRS[5] = 5.4;
  BPRS[6] = 8.0;
  for (i = 1; i <= num_residue; i++) {
    ib = seidx[i][1];
    ie = seidx[i][2];
    if (RY[i] == 1)
      j = find_1st_atom(" N9 ", AtomName, ib, ie, "");
    else if (RY[i] == 0) {
      if (bseq[i] == 'P' || bseq[i] == 'p')
        j = find_1st_atom(" C5 ", AtomName, ib, ie, "");
      else
        j = find_1st_atom(" N1 ", AtomName, ib, ie, "");
    }
    if (RY[i] >= 0) {
      for (k = 1; k <= 3; k++)
        Nxyz[i][k] = xyz[j][k];
      o3_p_xyz(ib, ie, " O3'", AtomName, xyz, o3_p[i], 4);
      o3_p_xyz(ib, ie, " P  ", AtomName, xyz, o3_p[i], 8);
    }
  }
}


x86 assembly (clang, -O0):
<base_info>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %rbx
sub    $0x298,%rsp
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x20(%rbp)
mov    %rsi,-0x28(%rbp)
mov    %rdx,-0x30(%rbp)
mov    %rcx,-0x38(%rbp)
mov    %r8,-0x40(%rbp)
mov    %r9,-0x48(%rbp)
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
mov    -0x38(%rbp),%rcx
mov    -0x40(%rbp),%r8
mov    -0x48(%rbp),%r9
mov    0x10(%rbp),%r15
mov    0x18(%rbp),%r14
mov    0x20(%rbp),%rbx
mov    0x28(%rbp),%r11
mov    0x30(%rbp),%r10
mov    0x38(%rbp),%rax
mov    %r15,(%rsp)
mov    %r14,0x8(%rsp)
mov    %rbx,0x10(%rsp)
mov    %r11,0x18(%rsp)
mov    %r10,0x20(%rsp)
mov    %rax,0x28(%rsp)
call   1050 <base_frame@plt>
mov    0x50(%rbp),%rax
movsd  0xe3e(%rip),%xmm0
movsd  %xmm0,0x8(%rax)
mov    0x50(%rbp),%rax
movsd  0xe25(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
mov    0x50(%rbp),%rax
movsd  0xe0c(%rip),%xmm0
movsd  %xmm0,0x18(%rax)
mov    $0xffffffe7,%edi
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0xdea(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    0x50(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    0x50(%rbp),%rax
movsd  0xdc9(%rip),%xmm0
movsd  %xmm0,0x28(%rax)
mov    0x50(%rbp),%rax
movsd  0xdb0(%rip),%xmm0
movsd  %xmm0,0x30(%rax)
movq   $0x1,-0x258(%rbp)
mov    -0x258(%rbp),%rax
cmp    -0x20(%rbp),%rax
jg     14a1 <base_info+0x361>
mov    -0x30(%rbp),%rax
mov    -0x258(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x260(%rbp)
mov    -0x30(%rbp),%rax
mov    -0x258(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x10(%rax),%rax
mov    %rax,-0x268(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x258(%rbp),%rcx
cmpq   $0x1,(%rax,%rcx,8)
jne    12ec <base_info+0x1ac>
mov    -0x40(%rbp),%rsi
mov    -0x260(%rbp),%rdx
mov    -0x268(%rbp),%rcx
lea    0xd5c(%rip),%rdi
lea    0xd6d(%rip),%r8
call   1030 <find_1st_atom@plt>
mov    %rax,-0x270(%rbp)
jmp    1399 <base_info+0x259>
mov    -0x38(%rbp),%rax
mov    -0x258(%rbp),%rcx
cmpq   $0x0,(%rax,%rcx,8)
jne    1394 <base_info+0x254>
mov    -0x28(%rbp),%rax
mov    -0x258(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x50,%eax
je     1332 <base_info+0x1f2>
mov    -0x28(%rbp),%rax
mov    -0x258(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x70,%eax
jne    1363 <base_info+0x223>
mov    -0x40(%rbp),%rsi
mov    -0x260(%rbp),%rdx
mov    -0x268(%rbp),%rcx
lea    0xcea(%rip),%rdi
lea    0xcf6(%rip),%r8
call   1030 <find_1st_atom@plt>
mov    %rax,-0x270(%rbp)
jmp    138f <base_info+0x24f>
mov    -0x40(%rbp),%rsi
mov    -0x260(%rbp),%rdx
mov    -0x268(%rbp),%rcx
lea    0xcbe(%rip),%rdi
lea    0xcc5(%rip),%r8
call   1030 <find_1st_atom@plt>
mov    %rax,-0x270(%rbp)
jmp    1394 <base_info+0x254>
jmp    1399 <base_info+0x259>
mov    -0x38(%rbp),%rax
mov    -0x258(%rbp),%rcx
cmpq   $0x0,(%rax,%rcx,8)
jl     1485 <base_info+0x345>
movq   $0x1,-0x278(%rbp)
cmpq   $0x3,-0x278(%rbp)
03
jg     1415 <base_info+0x2d5>
mov    0x28(%rbp),%rax
mov    -0x270(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x278(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x40(%rbp),%rax
mov    -0x258(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x278(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x278(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x278(%rbp)
jmp    13ba <base_info+0x27a>
mov    -0x260(%rbp),%rdi
mov    -0x268(%rbp),%rsi
mov    -0x40(%rbp),%rcx
mov    0x28(%rbp),%r8
mov    0x48(%rbp),%rax
mov    -0x258(%rbp),%rdx
mov    (%rax,%rdx,8),%r9
lea    0xbfe(%rip),%rdx
movl   $0x4,(%rsp)
call   1060 <o3_p_xyz@plt>
mov    -0x260(%rbp),%rdi
mov    -0x268(%rbp),%rsi
mov    -0x40(%rbp),%rcx
mov    0x28(%rbp),%r8
mov    0x48(%rbp),%rax
mov    -0x258(%rbp),%rdx
mov    (%rax,%rdx,8),%r9
lea    0xbcb(%rip),%rdx
movl   $0x8,(%rsp)
call   1060 <o3_p_xyz@plt>
jmp    148a <base_info+0x34a>
mov    -0x258(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x258(%rbp)
jmp    1260 <base_info+0x120>
add    $0x298,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<base_info>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    %rcx,%rbx
mov    %rdi,%rbp
mov    0xb8(%rsp),%rcx
mov    0xe0(%rsp),%r15
movaps 0xa0(%rsp),%xmm0
mov    0xb0(%rsp),%rax
movaps 0xc0(%rsp),%xmm1
movups %xmm1,0x20(%rsp)
mov    %rcx,0x18(%rsp)
mov    %rax,0x10(%rsp)
movups %xmm0,(%rsp)
mov    %rsi,0x40(%rsp)
mov    %rdx,0x58(%rsp)
mov    %rbx,%rcx
mov    %r8,0x38(%rsp)
call   1050 <base_frame@plt>
movapd 0xe52(%rip),%xmm0
movupd %xmm0,0x8(%r15)
movabs $0x4004000000000000,%rax
mov    %rax,0x18(%r15)
mov    $0xffffffe7,%edi
call   1040 <fabs@plt>
movsd  0xe4c(%rip),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%r15)
movaps 0xe2b(%rip),%xmm0
movups %xmm0,0x28(%r15)
mov    %rbp,0x50(%rsp)
test   %rbp,%rbp
jle    1328 <base_info+0x1e8>
xor    %r13d,%r13d
mov    %rbx,0x48(%rsp)
mov    0x38(%rsp),%r12
jmp    121f <base_info+0xdf>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r13
cmp    %r13,0x50(%rsp)
je     1328 <base_info+0x1e8>
mov    0x58(%rsp),%rax
mov    0x8(%rax,%r13,8),%rax
mov    0x8(%rax),%rbp
mov    0x10(%rax),%r15
mov    0x8(%rbx,%r13,8),%rax
lea    0xdeb(%rip),%rdi
cmp    $0x1,%rax
je     1269 <base_info+0x129>
test   %rax,%rax
jne    1288 <base_info+0x148>
mov    0x40(%rsp),%rax
movzbl 0x1(%rax,%r13,1),%eax
and    $0xdf,%al
cmp    $0x50,%al
lea    0xdd4(%rip),%rdi
lea    0xdc8(%rip),%rax
cmove  %rax,%rdi
mov    0x38(%rsp),%rsi
mov    %rbp,%rdx
mov    %r15,%rcx
lea    0xdc5(%rip),%r8
call   1030 <find_1st_atom@plt>
mov    %rax,%rcx
mov    0x8(%rbx,%r13,8),%rax
test   %rax,%rax
js     1210 <base_info+0xd0>
mov    0xb8(%rsp),%rbx
mov    (%rbx,%rcx,8),%rax
mov    %rcx,0x60(%rsp)
mov    0xd0(%rsp),%rcx
mov    0x8(%rcx,%r13,8),%rcx
movsd  0x8(%rax),%xmm0
movsd  %xmm0,0x8(%rcx)
movsd  0x10(%rax),%xmm0
movsd  %xmm0,0x10(%rcx)
movsd  0x18(%rax),%xmm0
movsd  %xmm0,0x18(%rcx)
mov    0xd8(%rsp),%r14
mov    0x8(%r14,%r13,8),%r9
movl   $0x4,(%rsp)
mov    %rbp,%rdi
mov    %r15,%rsi
lea    0xd4d(%rip),%rdx
mov    %r12,%rcx
mov    %rbx,%r8
call   1060 <o3_p_xyz@plt>
mov    0x8(%r14,%r13,8),%r9
movl   $0x8,(%rsp)
mov    %rbp,%rdi
mov    %r15,%rsi
lea    0xd2e(%rip),%rdx
mov    %r12,%rcx
mov    %rbx,%r8
mov    0x48(%rsp),%rbx
call   1060 <o3_p_xyz@plt>
mov    0x60(%rsp),%rcx
jmp    1210 <base_info+0xd0>
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [5 x i8] c" N9 \00"
@.str.1 = [1 x i8] zeroinitializer
@.str.2 = [5 x i8] c" C5 \00"
@.str.3 = [5 x i8] c" N1 \00"
@.str.4 = [5 x i8] c" O3'\00"
@.str.5 = [5 x i8] c" P \00"
define void @base_info(i64 %0, i8* %1, i64** %2, i64* %3, i8** %4, i8** %5, i8* %6, i64* %7, i8** %8, double** %9, double** %10, double** %11, double** %12, double** %13, double* %14) {
%16 = alloca i64
%17 = alloca i8*
%18 = alloca i64**
%19 = alloca i64*
%20 = alloca i8**
%21 = alloca i8**
%22 = alloca i8*
%23 = alloca i64*
%24 = alloca i8**
%25 = alloca double**
%26 = alloca double**
%27 = alloca double**
%28 = alloca double**
%29 = alloca double**
%30 = alloca double*
%31 = alloca [512 x i8]
%32 = alloca i64
%33 = alloca i64
%34 = alloca i64
%35 = alloca i64
%36 = alloca i64
%37 = alloca i32*
store i64 %0, i64* %16
store i8* %1, i8** %17
store i64** %2, i64*** %18
store i64* %3, i64** %19
store i8** %4, i8*** %20
store i8** %5, i8*** %21
store i8* %6, i8** %22
store i64* %7, i64** %23
store i8** %8, i8*** %24
store double** %9, double*** %25
store double** %10, double*** %26
store double** %11, double*** %27
store double** %12, double*** %28
store double** %13, double*** %29
store double* %14, double** %30
%38 = load i64, i64* %16
%39 = load i8*, i8** %17
%40 = load i64**, i64*** %18
%41 = load i64*, i64** %19
%42 = load i8**, i8*** %20
%43 = load i8**, i8*** %21
%44 = load i8*, i8** %22
%45 = load i64*, i64** %23
%46 = load i8**, i8*** %24
%47 = load double**, double*** %25
%48 = load double**, double*** %26
%49 = load double**, double*** %27
%50 = call i32 @base_frame(i64 %38, i8* %39, i64** %40, i64* %41, i8** %42, i8** %43, i8* %44, i64* %45, i8** %46, double** %47, double** %48, double** %49)
%51 = load double*, double** %30
%52 = getelementptr inbounds double, double* %51, i64 1
store double 3.400000e+00, double* %52
%53 = load double*, double** %30
%54 = getelementptr inbounds double, double* %53, i64 2
store double 2.600000e+01, double* %54
%55 = load double*, double** %30
%56 = getelementptr inbounds double, double* %55, i64 3
store double 2.500000e+00, double* %56
%57 = call double @fabs(i32 -25)
%58 = fsub double 9.000000e+01, %57
%59 = load double*, double** %30
%60 = getelementptr inbounds double, double* %59, i64 4
store double %58, double* %60
%61 = load double*, double** %30
%62 = getelementptr inbounds double, double* %61, i64 5
store double 5.400000e+00, double* %62
%63 = load double*, double** %30
%64 = getelementptr inbounds double, double* %63, i64 6
store double 8.000000e+00, double* %64
store i64 1, i64* %32
br label %65
65: ; preds = %171, %15
%66 = load i64, i64* %32
%67 = load i64, i64* %16
%68 = icmp sle i64 %66, %67
br i1 %68, label %69, label %174
69: ; preds = %65
%70 = load i64**, i64*** %18
%71 = load i64, i64* %32
%72 = getelementptr inbounds i64*, i64** %70, i64 %71
%73 = load i64*, i64** %72
%74 = getelementptr inbounds i64, i64* %73, i64 1
%75 = load i64, i64* %74
store i64 %75, i64* %33
%76 = load i64**, i64*** %18
%77 = load i64, i64* %32
%78 = getelementptr inbounds i64*, i64** %76, i64 %77
%79 = load i64*, i64** %78
%80 = getelementptr inbounds i64, i64* %79, i64 2
%81 = load i64, i64* %80
store i64 %81, i64* %34
%82 = load i64*, i64** %19
%83 = load i64, i64* %32
%84 = getelementptr inbounds i64, i64* %82, i64 %83
%85 = load i64, i64* %84
%86 = icmp eq i64 %85, 1
br i1 %86, label %87, label %92
87: ; preds = %69
%88 = load i8**, i8*** %20
%89 = load i64, i64* %33
%90 = load i64, i64* %34
%91 = call i64 @find_1st_atom(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i8** %88, i64 %89, i64 %90, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.1, i64 0, i64 0))
store i64 %91, i64* %35
br label %124
92: ; preds = %69
%93 = load i64*, i64** %19
%94 = load i64, i64* %32
%95 = getelementptr inbounds i64, i64* %93, i64 %94
%96 = load i64, i64* %95
%97 = icmp eq i64 %96, 0
br i1 %97, label %98, label %123
98: ; preds = %92
%99 = load i8*, i8** %17
%100 = load i64, i64* %32
%101 = getelementptr inbounds i8, i8* %99, i64 %100
%102 = load i8, i8* %101
%103 = sext i8 %102 to i32
%104 = icmp eq i32 %103, 80
br i1 %104, label %112, label %105
105: ; preds = %98
%106 = load i8*, i8** %17
%107 = load i64, i64* %32
%108 = getelementptr inbounds i8, i8* %106, i64 %107
%109 = load i8, i8* %108
%110 = sext i8 %109 to i32
%111 = icmp eq i32 %110, 112
br i1 %111, label %112, label %117
112: ; preds = %105, %98
%113 = load i8**, i8*** %20
%114 = load i64, i64* %33
%115 = load i64, i64* %34
%116 = call i64 @find_1st_atom(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i8** %113, i64 %114, i64 %115, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.1, i64 0, i64 0))
store i64 %116, i64* %35
br label %122
117: ; preds = %105
%118 = load i8**, i8*** %20
%119 = load i64, i64* %33
%120 = load i64, i64* %34
%121 = call i64 @find_1st_atom(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8** %118, i64 %119, i64 %120, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.1, i64 0, i64 0))
store i64 %121, i64* %35
br label %122
122: ; preds = %117, %112
br label %123
123: ; preds = %122, %92
br label %124
124: ; preds = %123, %87
%125 = load i64*, i64** %19
%126 = load i64, i64* %32
%127 = getelementptr inbounds i64, i64* %125, i64 %126
%128 = load i64, i64* %127
%129 = icmp sge i64 %128, 0
br i1 %129, label %130, label %170
130: ; preds = %124
store i64 1, i64* %36
br label %131
131: ; preds = %148, %130
%132 = load i64, i64* %36
%133 = icmp sle i64 %132, 3
br i1 %133, label %134, label %151
134: ; preds = %131
%135 = load double**, double*** %25
%136 = load i64, i64* %35
%137 = getelementptr inbounds double*, double** %135, i64 %136
%138 = load double*, double** %137
%139 = load i64, i64* %36
%140 = getelementptr inbounds double, double* %138, i64 %139
%141 = load double, double* %140
%142 = load double**, double*** %28
%143 = load i64, i64* %32
%144 = getelementptr inbounds double*, double** %142, i64 %143
%145 = load double*, double** %144
%146 = load i64, i64* %36
%147 = getelementptr inbounds double, double* %145, i64 %146
store double %141, double* %147
br label %148
148: ; preds = %134
%149 = load i64, i64* %36
%150 = add nsw i64 %149, 1
store i64 %150, i64* %36
br label %131
151: ; preds = %131
%152 = load i64, i64* %33
%153 = load i64, i64* %34
%154 = load i8**, i8*** %20
%155 = load double**, double*** %25
%156 = load double**, double*** %29
%157 = load i64, i64* %32
%158 = getelementptr inbounds double*, double** %156, i64 %157
%159 = load double*, double** %158
%160 = call i32 @o3_p_xyz(i64 %152, i64 %153, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i8** %154, double** %155, double* %159, i32 4)
%161 = load i64, i64* %33
%162 = load i64, i64* %34
%163 = load i8**, i8*** %20
%164 = load double**, double*** %25
%165 = load double**, double*** %29
%166 = load i64, i64* %32
%167 = getelementptr inbounds double*, double** %165, i64 %166
%168 = load double*, double** %167
%169 = call i32 @o3_p_xyz(i64 %161, i64 %162, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i8** %163, double** %164, double* %168, i32 8)
br label %170
170: ; preds = %151, %124
br label %171
171: ; preds = %170
%172 = load i64, i64* %32
%173 = add nsw i64 %172, 1
store i64 %173, i64* %32
br label %65
174: ; preds = %65
ret void
}

LLVM IR (-O2):
@.str = [5 x i8] c" N9 \00"
@.str.1 = [1 x i8] zeroinitializer
@.str.2 = [5 x i8] c" C5 \00"
@.str.3 = [5 x i8] c" N1 \00"
@.str.4 = [5 x i8] c" O3'\00"
@.str.5 = [5 x i8] c" P \00"
define void @base_info(i64 %0, i8* %1, i64** %2, i64* %3, i8** %4, i8** %5, i8* %6, i64* %7, i8** %8, double** %9, double** %10, double** %11, double** nocapture %12, double** nocapture %13, double* nocapture writeonly %14) {
%16 = tail call i32 @base_frame(i64 %0, i8* %1, i64** %2, i64* %3, i8** %4, i8** %5, i8* %6, i64* %7, i8** %8, double** %9, double** %10, double** %11)
%17 = getelementptr inbounds double, double* %14, i64 1
%18 = bitcast double* %17 to <2 x double>*
store <2 x double> <double 3.400000e+00, double 2.600000e+01>, <2 x double>* %18
%19 = getelementptr inbounds double, double* %14, i64 3
store double 2.500000e+00, double* %19
%20 = tail call double @fabs(i32 -25)
%21 = fsub double 9.000000e+01, %20
%22 = getelementptr inbounds double, double* %14, i64 4
store double %21, double* %22
%23 = getelementptr inbounds double, double* %14, i64 5
%24 = bitcast double* %23 to <2 x double>*
store <2 x double> <double 5.400000e+00, double 8.000000e+00>, <2 x double>* %24
%25 = icmp slt i64 %0, 1
br i1 %25, label %73, label %26
26: ; preds = %15, %70
%27 = phi i64 [ %71, %70 ], [ 1, %15 ]
%28 = phi i64 [ %49, %70 ], [ undef, %15 ]
%29 = getelementptr inbounds i64*, i64** %2, i64 %27
%30 = load i64*, i64** %29
%31 = getelementptr inbounds i64, i64* %30, i64 1
%32 = load i64, i64* %31
%33 = getelementptr inbounds i64, i64* %30, i64 2
%34 = load i64, i64* %33
%35 = getelementptr inbounds i64, i64* %3, i64 %27
%36 = load i64, i64* %35
switch i64 %36, label %47 [
i64 1, label %43
i64 0, label %37
]
37: ; preds = %26
%38 = getelementptr inbounds i8, i8* %1, i64 %27
%39 = load i8, i8* %38
%40 = and i8 %39, -33
%41 = icmp eq i8 %40, 80
%42 = select i1 %41, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0)
br label %43
43: ; preds = %37, %26
%44 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), %26 ], [ %42, %37 ]
%45 = tail call i64 @find_1st_atom(i8* %44, i8** %4, i64 %32, i64 %34, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.1, i64 0, i64 0))
%46 = load i64, i64* %35
br label %47
47: ; preds = %43, %26
%48 = phi i64 [ %46, %43 ], [ %36, %26 ]
%49 = phi i64 [ %45, %43 ], [ %28, %26 ]
%50 = icmp sgt i64 %48, -1
br i1 %50, label %51, label %70
51: ; preds = %47
%52 = getelementptr inbounds double*, double** %9, i64 %49
%53 = load double*, double** %52
%54 = getelementptr inbounds double*, double** %12, i64 %27
%55 = load double*, double** %54
%56 = getelementptr inbounds double, double* %53, i64 1
%57 = load double, double* %56
%58 = getelementptr inbounds double, double* %55, i64 1
store double %57, double* %58
%59 = getelementptr inbounds double, double* %53, i64 2
%60 = load double, double* %59
%61 = getelementptr inbounds double, double* %55, i64 2
store double %60, double* %61
%62 = getelementptr inbounds double, double* %53, i64 3
%63 = load double, double* %62
%64 = getelementptr inbounds double, double* %55, i64 3
store double %63, double* %64
%65 = getelementptr inbounds double*, double** %13, i64 %27
%66 = load double*, double** %65
%67 = tail call i32 @o3_p_xyz(i64 %32, i64 %34, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i8** %4, double** %9, double* %66, i32 4)
%68 = load double*, double** %65
%69 = tail call i32 @o3_p_xyz(i64 %32, i64 %34, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i8** %4, double** %9, double* %68, i32 8)
br label %70
70: ; preds = %47, %51
%71 = add nuw i64 %27, 1
%72 = icmp eq i64 %27, %0
br i1 %72, label %73, label %26
73: ; preds = %70, %15
ret void
}