; LLVM IR from Discngine/fpocket :: src (rpdb)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.s_pdb = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, float, float, float, float, float, float, [83 x i8], [500 x i8], float, float, float, i32, i32 }
%struct.s_fparams = type { [2000 x i8], [2000 x i8], [2000 x i8], [8000 x i8], ptr, ptr, ptr, i32, i32, ptr, ptr, ptr, i8, i8, i32, i32, i16, i32, i32, i32, i16, i32, i32, i32, i16, float, float, float, float, float, [20 x ptr], i16, i16, [20 x ptr], i32, [10 x i8] }
%struct.s_atm = type { i32, float, float, float, float, float, float, float, [5 x i8], [7 x i8], [16 x i8], [16 x i8], [3 x i8], [8 x i8], i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, i8, i8, float, float, float, float, i16, ptr, i32 }

@stderr = external global ptr, align 8
@ST_keep_hetatm = external hidden global [1961 x ptr], align 16
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [84 x i8], align 1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

declare ptr @my_malloc(i64 noundef) #1

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #2

; Function Attrs: nounwind uwtable
declare dso_local void @rpdb_extract_pdb_atom(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local void @rpdb_extract_atm_resname(ptr noundef, ptr noundef) #3

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strncmp(ptr noundef, ptr noundef, i64 noundef) #4

; Function Attrs: nounwind
declare ptr @strcpy(ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @rpdb_extract_atm_resumber(ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local void @rpdb_extract_atom_coordinates(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local void @rpdb_extract_cryst1(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @is_ligand(ptr noundef, ptr noundef, i16 noundef zeroext) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @chains_to_delete(ptr noundef, ptr noundef, i32 noundef, i16 noundef zeroext) #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @get_number_of_h_atoms(ptr noundef) #3

; Function Attrs: nounwind uwtable
define dso_local void @rpdb_read(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4) #3 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca [83 x i8], align 16
  %17 = alloca [5 x i8], align 1
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca float, align 4
  %32 = alloca i16, align 2
  %33 = alloca i16, align 2
  %34 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i32 %2, ptr %8, align 4, !tbaa !9
  store i32 %3, ptr %9, align 4, !tbaa !9
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 83, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 5, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  store i32 0, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  store i32 0, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  %35 = call ptr @my_malloc(i64 noundef 2)
  store ptr %35, ptr %21, align 8, !tbaa !5
  %36 = load ptr, ptr %21, align 8, !tbaa !5
  %37 = getelementptr inbounds i8, ptr %36, i64 1
  store i8 0, ptr %37, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  store ptr null, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %38 = load ptr, ptr %6, align 8, !tbaa !5
  %39 = getelementptr inbounds %struct.s_pdb, ptr %38, i32 0, i32 2
  %40 = load ptr, ptr %39, align 8, !tbaa !12
  store ptr %40, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  %41 = load ptr, ptr %6, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.s_pdb, ptr %41, i32 0, i32 3
  %43 = load ptr, ptr %42, align 8, !tbaa !15
  store ptr %43, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  %44 = load ptr, ptr %6, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.s_pdb, ptr %44, i32 0, i32 5
  %46 = load ptr, ptr %45, align 8, !tbaa !16
  store ptr %46, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  store i32 0, ptr %26, align 4, !tbaa !9
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  store i32 0, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  store i32 0, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  br label %47

47:                                               ; preds = %1432, %5
  %48 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %49 = load ptr, ptr %6, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.s_pdb, ptr %49, i32 0, i32 0
  %51 = load ptr, ptr %50, align 8, !tbaa !17
  %52 = call ptr @fgets(ptr noundef %48, i32 noundef 82, ptr noundef %51)
  %53 = icmp ne ptr %52, null
  br i1 %53, label %54, label %1433

54:                                               ; preds = %47
  %55 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %56 = call i32 @strncmp(ptr noundef %55, ptr noundef @.str.4, i64 noundef 5) #6
  %57 = icmp ne i32 %56, 0
  br i1 %57, label %74, label %58

58:                                               ; preds = %54
  %59 = load i32, ptr %9, align 4, !tbaa !9
  %60 = icmp sgt i32 %59, 0
  br i1 %60, label %61, label %74

61:                                               ; preds = %58
  %62 = load ptr, ptr %6, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.s_pdb, ptr %62, i32 0, i32 25
  %64 = load i32, ptr %63, align 8, !tbaa !18
  %65 = icmp ne i32 %64, 0
  br i1 %65, label %66, label %74

66:                                               ; preds = %61
  %67 = load i32, ptr %20, align 4, !tbaa !9
  %68 = add nsw i32 %67, 1
  store i32 %68, ptr %20, align 4, !tbaa !9
  %69 = load i32, ptr %20, align 4, !tbaa !9
  %70 = load i32, ptr %9, align 4, !tbaa !9
  %71 = icmp eq i32 %69, %70
  br i1 %71, label %72, label %73

72:                                               ; preds = %66
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %73

73:                                               ; preds = %72, %66
  br label %74

74:                                               ; preds = %73, %61, %58, %54
  %75 = load ptr, ptr %6, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.s_pdb, ptr %75, i32 0, i32 25
  %77 = load i32, ptr %76, align 8, !tbaa !18
  %78 = icmp eq i32 %77, 0
  br i1 %78, label %82, label %79

79:                                               ; preds = %74
  %80 = load i32, ptr %19, align 4, !tbaa !9
  %81 = icmp eq i32 %80, 1
  br i1 %81, label %82, label %1432

82:                                               ; preds = %79, %74
  %83 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %84 = call i32 @strncmp(ptr noundef %83, ptr noundef @.str.5, i64 noundef 5) #6
  %85 = icmp eq i32 %84, 0
  br i1 %85, label %86, label %639

86:                                               ; preds = %82
  %87 = load ptr, ptr %10, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.s_fparams, ptr %87, i32 0, i32 33
  %89 = getelementptr inbounds [20 x ptr], ptr %88, i64 0, i64 0
  %90 = load ptr, ptr %21, align 8, !tbaa !5
  %91 = load ptr, ptr %10, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.s_fparams, ptr %91, i32 0, i32 32
  %93 = load i16, ptr %92, align 2, !tbaa !19
  %94 = call i32 @is_ligand(ptr noundef %89, ptr noundef %90, i16 noundef zeroext %93)
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %639, label %96

96:                                               ; preds = %86
  %97 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 21
  %98 = load i8, ptr %97, align 1, !tbaa !11
  %99 = load ptr, ptr %21, align 8, !tbaa !5
  %100 = getelementptr inbounds i8, ptr %99, i64 0
  store i8 %98, ptr %100, align 1, !tbaa !11
  %101 = load ptr, ptr %10, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.s_fparams, ptr %101, i32 0, i32 30
  %103 = getelementptr inbounds [20 x ptr], ptr %102, i64 0, i64 0
  %104 = load ptr, ptr %21, align 8, !tbaa !5
  %105 = load ptr, ptr %10, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.s_fparams, ptr %105, i32 0, i32 34
  %107 = load i32, ptr %106, align 8, !tbaa !22
  %108 = load ptr, ptr %10, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.s_fparams, ptr %108, i32 0, i32 31
  %110 = load i16, ptr %109, align 8, !tbaa !23
  %111 = call i32 @chains_to_delete(ptr noundef %103, ptr noundef %104, i32 noundef %107, i16 noundef zeroext %110)
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %113, label %115

113:                                              ; preds = %96
  %114 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  call void @rpdb_extract_atom_coordinates(ptr noundef %114, ptr noundef %29, ptr noundef %30, ptr noundef %31)
  br label %115

115:                                              ; preds = %113, %96
  %116 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 16
  %117 = load i8, ptr %116, align 16, !tbaa !11
  %118 = sext i8 %117 to i32
  %119 = icmp eq i32 %118, 32
  br i1 %119, label %125, label %120

120:                                              ; preds = %115
  %121 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 16
  %122 = load i8, ptr %121, align 16, !tbaa !11
  %123 = sext i8 %122 to i32
  %124 = icmp eq i32 %123, 65
  br i1 %124, label %125, label %512

125:                                              ; preds = %120, %115
  %126 = load float, ptr %29, align 4, !tbaa !24
  %127 = fcmp olt float %126, 9.990000e+03
  br i1 %127, label %128, label %512

128:                                              ; preds = %125
  %129 = load float, ptr %30, align 4, !tbaa !24
  %130 = fcmp olt float %129, 9.990000e+03
  br i1 %130, label %131, label %512

131:                                              ; preds = %128
  %132 = load float, ptr %31, align 4, !tbaa !24
  %133 = fcmp olt float %132, 9.990000e+03
  br i1 %133, label %134, label %512

134:                                              ; preds = %131
  %135 = load ptr, ptr %10, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.s_fparams, ptr %135, i32 0, i32 30
  %137 = getelementptr inbounds [20 x ptr], ptr %136, i64 0, i64 0
  %138 = load ptr, ptr %21, align 8, !tbaa !5
  %139 = load ptr, ptr %10, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.s_fparams, ptr %139, i32 0, i32 34
  %141 = load i32, ptr %140, align 8, !tbaa !22
  %142 = load ptr, ptr %10, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.s_fparams, ptr %142, i32 0, i32 31
  %144 = load i16, ptr %143, align 8, !tbaa !23
  %145 = call i32 @chains_to_delete(ptr noundef %137, ptr noundef %138, i32 noundef %141, i16 noundef zeroext %144)
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %152

147:                                              ; preds = %134
  %148 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %149 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  call void @rpdb_extract_atm_resname(ptr noundef %148, ptr noundef %149)
  %150 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %151 = call i32 @rpdb_extract_atm_resumber(ptr noundef %150)
  store i32 %151, ptr %28, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %147, %134
  %153 = load ptr, ptr %10, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.s_fparams, ptr %153, i32 0, i32 33
  %155 = getelementptr inbounds [20 x ptr], ptr %154, i64 0, i64 0
  %156 = load ptr, ptr %21, align 8, !tbaa !5
  %157 = load ptr, ptr %10, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.s_fparams, ptr %157, i32 0, i32 32
  %159 = load i16, ptr %158, align 2, !tbaa !19
  %160 = call i32 @is_ligand(ptr noundef %155, ptr noundef %156, i16 noundef zeroext %159)
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %162, label %184

162:                                              ; preds = %152
  %163 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %164 = load ptr, ptr %6, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.s_pdb, ptr %164, i32 0, i32 6
  %166 = load ptr, ptr %165, align 8, !tbaa !25
  %167 = load i32, ptr %27, align 4, !tbaa !9
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds float, ptr %166, i64 %168
  %170 = load ptr, ptr %6, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.s_pdb, ptr %170, i32 0, i32 7
  %172 = load ptr, ptr %171, align 8, !tbaa !26
  %173 = load i32, ptr %27, align 4, !tbaa !9
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds float, ptr %172, i64 %174
  %176 = load ptr, ptr %6, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.s_pdb, ptr %176, i32 0, i32 8
  %178 = load ptr, ptr %177, align 8, !tbaa !27
  %179 = load i32, ptr %27, align 4, !tbaa !9
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds float, ptr %178, i64 %180
  call void @rpdb_extract_atom_coordinates(ptr noundef %163, ptr noundef %169, ptr noundef %175, ptr noundef %181)
  %182 = load i32, ptr %27, align 4, !tbaa !9
  %183 = add nsw i32 %182, 1
  store i32 %183, ptr %27, align 4, !tbaa !9
  br label %184

184:                                              ; preds = %162, %152
  %185 = load ptr, ptr %10, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.s_fparams, ptr %185, i32 0, i32 30
  %187 = getelementptr inbounds [20 x ptr], ptr %186, i64 0, i64 0
  %188 = load ptr, ptr %21, align 8, !tbaa !5
  %189 = load ptr, ptr %10, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.s_fparams, ptr %189, i32 0, i32 34
  %191 = load i32, ptr %190, align 8, !tbaa !22
  %192 = load ptr, ptr %10, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.s_fparams, ptr %192, i32 0, i32 31
  %194 = load i16, ptr %193, align 8, !tbaa !23
  %195 = call i32 @chains_to_delete(ptr noundef %187, ptr noundef %188, i32 noundef %191, i16 noundef zeroext %194)
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %197, label %511

197:                                              ; preds = %184
  %198 = load ptr, ptr %7, align 8, !tbaa !5
  %199 = icmp ne ptr %198, null
  br i1 %199, label %200, label %322

200:                                              ; preds = %197
  %201 = load ptr, ptr %7, align 8, !tbaa !5
  %202 = call i64 @strlen(ptr noundef %201) #6
  %203 = icmp ugt i64 %202, 1
  br i1 %203, label %204, label %322

204:                                              ; preds = %200
  %205 = load ptr, ptr %7, align 8, !tbaa !5
  %206 = getelementptr inbounds i8, ptr %205, i64 0
  %207 = load i8, ptr %206, align 1, !tbaa !11
  %208 = sext i8 %207 to i32
  %209 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %210 = load i8, ptr %209, align 1, !tbaa !11
  %211 = sext i8 %210 to i32
  %212 = icmp eq i32 %208, %211
  br i1 %212, label %213, label %322

213:                                              ; preds = %204
  %214 = load ptr, ptr %7, align 8, !tbaa !5
  %215 = getelementptr inbounds i8, ptr %214, i64 1
  %216 = load i8, ptr %215, align 1, !tbaa !11
  %217 = sext i8 %216 to i32
  %218 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 1
  %219 = load i8, ptr %218, align 1, !tbaa !11
  %220 = sext i8 %219 to i32
  %221 = icmp eq i32 %217, %220
  br i1 %221, label %222, label %322

222:                                              ; preds = %213
  %223 = load ptr, ptr %7, align 8, !tbaa !5
  %224 = getelementptr inbounds i8, ptr %223, i64 2
  %225 = load i8, ptr %224, align 1, !tbaa !11
  %226 = sext i8 %225 to i32
  %227 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 2
  %228 = load i8, ptr %227, align 1, !tbaa !11
  %229 = sext i8 %228 to i32
  %230 = icmp eq i32 %226, %229
  br i1 %230, label %231, label %322

231:                                              ; preds = %222
  %232 = load i32, ptr %8, align 4, !tbaa !9
  %233 = icmp ne i32 %232, 0
  br i1 %233, label %234, label %321

234:                                              ; preds = %231
  %235 = load ptr, ptr %23, align 8, !tbaa !5
  %236 = load i32, ptr %12, align 4, !tbaa !9
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds %struct.s_atm, ptr %235, i64 %237
  store ptr %238, ptr %22, align 8, !tbaa !5
  %239 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %240 = load ptr, ptr %22, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.s_atm, ptr %240, i32 0, i32 9
  %242 = getelementptr inbounds [7 x i8], ptr %241, i64 0, i64 0
  %243 = load ptr, ptr %22, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.s_atm, ptr %243, i32 0, i32 14
  %245 = load ptr, ptr %22, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.s_atm, ptr %245, i32 0, i32 8
  %247 = getelementptr inbounds [5 x i8], ptr %246, i64 0, i64 0
  %248 = load ptr, ptr %22, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.s_atm, ptr %248, i32 0, i32 29
  %250 = load ptr, ptr %22, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.s_atm, ptr %250, i32 0, i32 13
  %252 = getelementptr inbounds [8 x i8], ptr %251, i64 0, i64 0
  %253 = load ptr, ptr %22, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.s_atm, ptr %253, i32 0, i32 10
  %255 = getelementptr inbounds [16 x i8], ptr %254, i64 0, i64 0
  %256 = load ptr, ptr %22, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.s_atm, ptr %256, i32 0, i32 16
  %258 = load ptr, ptr %22, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.s_atm, ptr %258, i32 0, i32 28
  %260 = load ptr, ptr %22, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.s_atm, ptr %260, i32 0, i32 5
  %262 = load ptr, ptr %22, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.s_atm, ptr %262, i32 0, i32 6
  %264 = load ptr, ptr %22, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.s_atm, ptr %264, i32 0, i32 7
  %266 = load ptr, ptr %22, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.s_atm, ptr %266, i32 0, i32 23
  %268 = load ptr, ptr %22, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.s_atm, ptr %268, i32 0, i32 24
  %270 = load ptr, ptr %22, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.s_atm, ptr %270, i32 0, i32 12
  %272 = getelementptr inbounds [3 x i8], ptr %271, i64 0, i64 0
  %273 = load ptr, ptr %22, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.s_atm, ptr %273, i32 0, i32 19
  call void @rpdb_extract_pdb_atom(ptr noundef %239, ptr noundef %242, ptr noundef %244, ptr noundef %247, ptr noundef %249, ptr noundef %252, ptr noundef %255, ptr noundef %257, ptr noundef %259, ptr noundef %261, ptr noundef %263, ptr noundef %265, ptr noundef %267, ptr noundef %269, ptr noundef %272, ptr noundef %274, ptr noundef %26)
  %275 = load ptr, ptr %22, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.s_atm, ptr %275, i32 0, i32 12
  %277 = getelementptr inbounds [3 x i8], ptr %276, i64 0, i64 0
  %278 = call float @pte_get_mass(ptr noundef %277)
  %279 = load ptr, ptr %22, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.s_atm, ptr %279, i32 0, i32 21
  store float %278, ptr %280, align 4, !tbaa !28
  %281 = load ptr, ptr %22, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.s_atm, ptr %281, i32 0, i32 12
  %283 = getelementptr inbounds [3 x i8], ptr %282, i64 0, i64 0
  %284 = call float @pte_get_vdw_ray(ptr noundef %283)
  %285 = load ptr, ptr %22, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.s_atm, ptr %285, i32 0, i32 3
  store float %284, ptr %286, align 4, !tbaa !30
  %287 = load ptr, ptr %22, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.s_atm, ptr %287, i32 0, i32 12
  %289 = getelementptr inbounds [3 x i8], ptr %288, i64 0, i64 0
  %290 = call float @pte_get_enegativity(ptr noundef %289)
  %291 = load ptr, ptr %22, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.s_atm, ptr %291, i32 0, i32 22
  store float %290, ptr %292, align 8, !tbaa !31
  %293 = load ptr, ptr %22, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.s_atm, ptr %293, i32 0, i32 0
  store i32 -1, ptr %294, align 8, !tbaa !32
  %295 = load ptr, ptr %22, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.s_atm, ptr %295, i32 0, i32 16
  %297 = load i32, ptr %296, align 8, !tbaa !33
  %298 = load ptr, ptr %22, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.s_atm, ptr %298, i32 0, i32 17
  store i32 %297, ptr %299, align 4, !tbaa !34
  %300 = load ptr, ptr %22, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.s_atm, ptr %300, i32 0, i32 11
  %302 = getelementptr inbounds [16 x i8], ptr %301, i64 0, i64 0
  %303 = load ptr, ptr %22, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.s_atm, ptr %303, i32 0, i32 10
  %305 = getelementptr inbounds [16 x i8], ptr %304, i64 0, i64 0
  %306 = call ptr @strcpy(ptr noundef %302, ptr noundef %305) #5
  %307 = load ptr, ptr %22, align 8, !tbaa !5
  %308 = load ptr, ptr %24, align 8, !tbaa !5
  %309 = load i32, ptr %12, align 4, !tbaa !9
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds ptr, ptr %308, i64 %310
  store ptr %307, ptr %311, align 8, !tbaa !5
  %312 = load i32, ptr %12, align 4, !tbaa !9
  %313 = add nsw i32 %312, 1
  store i32 %313, ptr %12, align 4, !tbaa !9
  %314 = load ptr, ptr %22, align 8, !tbaa !5
  %315 = load ptr, ptr %25, align 8, !tbaa !5
  %316 = load i32, ptr %14, align 4, !tbaa !9
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds ptr, ptr %315, i64 %317
  store ptr %314, ptr %318, align 8, !tbaa !5
  %319 = load i32, ptr %14, align 4, !tbaa !9
  %320 = add nsw i32 %319, 1
  store i32 %320, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %15, align 4, !tbaa !9
  br label %321

321:                                              ; preds = %234, %231
  br label %510

322:                                              ; preds = %222, %213, %204, %200, %197
  %323 = load ptr, ptr %7, align 8, !tbaa !5
  %324 = icmp ne ptr %323, null
  br i1 %324, label %325, label %429

325:                                              ; preds = %322
  %326 = load ptr, ptr %7, align 8, !tbaa !5
  %327 = call i64 @strlen(ptr noundef %326) #6
  %328 = icmp eq i64 %327, 1
  br i1 %328, label %329, label %429

329:                                              ; preds = %325
  %330 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 21
  %331 = load i8, ptr %330, align 1, !tbaa !11
  %332 = sext i8 %331 to i32
  %333 = load ptr, ptr %7, align 8, !tbaa !5
  %334 = getelementptr inbounds i8, ptr %333, i64 0
  %335 = load i8, ptr %334, align 1, !tbaa !11
  %336 = sext i8 %335 to i32
  %337 = icmp eq i32 %332, %336
  br i1 %337, label %338, label %429

338:                                              ; preds = %329
  %339 = load i32, ptr %8, align 4, !tbaa !9
  %340 = icmp ne i32 %339, 0
  br i1 %340, label %341, label %428

341:                                              ; preds = %338
  %342 = load ptr, ptr %23, align 8, !tbaa !5
  %343 = load i32, ptr %12, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds %struct.s_atm, ptr %342, i64 %344
  store ptr %345, ptr %22, align 8, !tbaa !5
  %346 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %347 = load ptr, ptr %22, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.s_atm, ptr %347, i32 0, i32 9
  %349 = getelementptr inbounds [7 x i8], ptr %348, i64 0, i64 0
  %350 = load ptr, ptr %22, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.s_atm, ptr %350, i32 0, i32 14
  %352 = load ptr, ptr %22, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.s_atm, ptr %352, i32 0, i32 8
  %354 = getelementptr inbounds [5 x i8], ptr %353, i64 0, i64 0
  %355 = load ptr, ptr %22, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.s_atm, ptr %355, i32 0, i32 29
  %357 = load ptr, ptr %22, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.s_atm, ptr %357, i32 0, i32 13
  %359 = getelementptr inbounds [8 x i8], ptr %358, i64 0, i64 0
  %360 = load ptr, ptr %22, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.s_atm, ptr %360, i32 0, i32 10
  %362 = getelementptr inbounds [16 x i8], ptr %361, i64 0, i64 0
  %363 = load ptr, ptr %22, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.s_atm, ptr %363, i32 0, i32 16
  %365 = load ptr, ptr %22, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.s_atm, ptr %365, i32 0, i32 28
  %367 = load ptr, ptr %22, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.s_atm, ptr %367, i32 0, i32 5
  %369 = load ptr, ptr %22, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.s_atm, ptr %369, i32 0, i32 6
  %371 = load ptr, ptr %22, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.s_atm, ptr %371, i32 0, i32 7
  %373 = load ptr, ptr %22, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.s_atm, ptr %373, i32 0, i32 23
  %375 = load ptr, ptr %22, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.s_atm, ptr %375, i32 0, i32 24
  %377 = load ptr, ptr %22, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.s_atm, ptr %377, i32 0, i32 12
  %379 = getelementptr inbounds [3 x i8], ptr %378, i64 0, i64 0
  %380 = load ptr, ptr %22, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.s_atm, ptr %380, i32 0, i32 19
  call void @rpdb_extract_pdb_atom(ptr noundef %346, ptr noundef %349, ptr noundef %351, ptr noundef %354, ptr noundef %356, ptr noundef %359, ptr noundef %362, ptr noundef %364, ptr noundef %366, ptr noundef %368, ptr noundef %370, ptr noundef %372, ptr noundef %374, ptr noundef %376, ptr noundef %379, ptr noundef %381, ptr noundef %26)
  %382 = load ptr, ptr %22, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.s_atm, ptr %382, i32 0, i32 12
  %384 = getelementptr inbounds [3 x i8], ptr %383, i64 0, i64 0
  %385 = call float @pte_get_mass(ptr noundef %384)
  %386 = load ptr, ptr %22, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.s_atm, ptr %386, i32 0, i32 21
  store float %385, ptr %387, align 4, !tbaa !28
  %388 = load ptr, ptr %22, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.s_atm, ptr %388, i32 0, i32 12
  %390 = getelementptr inbounds [3 x i8], ptr %389, i64 0, i64 0
  %391 = call float @pte_get_vdw_ray(ptr noundef %390)
  %392 = load ptr, ptr %22, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.s_atm, ptr %392, i32 0, i32 3
  store float %391, ptr %393, align 4, !tbaa !30
  %394 = load ptr, ptr %22, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.s_atm, ptr %394, i32 0, i32 12
  %396 = getelementptr inbounds [3 x i8], ptr %395, i64 0, i64 0
  %397 = call float @pte_get_enegativity(ptr noundef %396)
  %398 = load ptr, ptr %22, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.s_atm, ptr %398, i32 0, i32 22
  store float %397, ptr %399, align 8, !tbaa !31
  %400 = load ptr, ptr %22, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.s_atm, ptr %400, i32 0, i32 0
  store i32 -1, ptr %401, align 8, !tbaa !32
  %402 = load ptr, ptr %22, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.s_atm, ptr %402, i32 0, i32 16
  %404 = load i32, ptr %403, align 8, !tbaa !33
  %405 = load ptr, ptr %22, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.s_atm, ptr %405, i32 0, i32 17
  store i32 %404, ptr %406, align 4, !tbaa !34
  %407 = load ptr, ptr %22, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.s_atm, ptr %407, i32 0, i32 11
  %409 = getelementptr inbounds [16 x i8], ptr %408, i64 0, i64 0
  %410 = load ptr, ptr %22, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.s_atm, ptr %410, i32 0, i32 10
  %412 = getelementptr inbounds [16 x i8], ptr %411, i64 0, i64 0
  %413 = call ptr @strcpy(ptr noundef %409, ptr noundef %412) #5
  %414 = load ptr, ptr %22, align 8, !tbaa !5
  %415 = load ptr, ptr %24, align 8, !tbaa !5
  %416 = load i32, ptr %12, align 4, !tbaa !9
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds ptr, ptr %415, i64 %417
  store ptr %414, ptr %418, align 8, !tbaa !5
  %419 = load i32, ptr %12, align 4, !tbaa !9
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr %12, align 4, !tbaa !9
  %421 = load ptr, ptr %22, align 8, !tbaa !5
  %422 = load ptr, ptr %25, align 8, !tbaa !5
  %423 = load i32, ptr %14, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds ptr, ptr %422, i64 %424
  store ptr %421, ptr %425, align 8, !tbaa !5
  %426 = load i32, ptr %14, align 4, !tbaa !9
  %427 = add nsw i32 %426, 1
  store i32 %427, ptr %14, align 4, !tbaa !9
  store i32 1, ptr %15, align 4, !tbaa !9
  br label %428

428:                                              ; preds = %341, %338
  br label %509

429:                                              ; preds = %329, %325, %322
  %430 = load ptr, ptr %23, align 8, !tbaa !5
  %431 = load i32, ptr %12, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds %struct.s_atm, ptr %430, i64 %432
  store ptr %433, ptr %22, align 8, !tbaa !5
  %434 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %435 = load ptr, ptr %22, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.s_atm, ptr %435, i32 0, i32 9
  %437 = getelementptr inbounds [7 x i8], ptr %436, i64 0, i64 0
  %438 = load ptr, ptr %22, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.s_atm, ptr %438, i32 0, i32 14
  %440 = load ptr, ptr %22, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.s_atm, ptr %440, i32 0, i32 8
  %442 = getelementptr inbounds [5 x i8], ptr %441, i64 0, i64 0
  %443 = load ptr, ptr %22, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.s_atm, ptr %443, i32 0, i32 29
  %445 = load ptr, ptr %22, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.s_atm, ptr %445, i32 0, i32 13
  %447 = getelementptr inbounds [8 x i8], ptr %446, i64 0, i64 0
  %448 = load ptr, ptr %22, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.s_atm, ptr %448, i32 0, i32 10
  %450 = getelementptr inbounds [16 x i8], ptr %449, i64 0, i64 0
  %451 = load ptr, ptr %22, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.s_atm, ptr %451, i32 0, i32 16
  %453 = load ptr, ptr %22, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.s_atm, ptr %453, i32 0, i32 28
  %455 = load ptr, ptr %22, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.s_atm, ptr %455, i32 0, i32 5
  %457 = load ptr, ptr %22, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.s_atm, ptr %457, i32 0, i32 6
  %459 = load ptr, ptr %22, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.s_atm, ptr %459, i32 0, i32 7
  %461 = load ptr, ptr %22, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.s_atm, ptr %461, i32 0, i32 23
  %463 = load ptr, ptr %22, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.s_atm, ptr %463, i32 0, i32 24
  %465 = load ptr, ptr %22, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.s_atm, ptr %465, i32 0, i32 12
  %467 = getelementptr inbounds [3 x i8], ptr %466, i64 0, i64 0
  %468 = load ptr, ptr %22, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.s_atm, ptr %468, i32 0, i32 19
  call void @rpdb_extract_pdb_atom(ptr noundef %434, ptr noundef %437, ptr noundef %439, ptr noundef %442, ptr noundef %444, ptr noundef %447, ptr noundef %450, ptr noundef %452, ptr noundef %454, ptr noundef %456, ptr noundef %458, ptr noundef %460, ptr noundef %462, ptr noundef %464, ptr noundef %467, ptr noundef %469, ptr noundef %26)
  %470 = load ptr, ptr %22, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.s_atm, ptr %470, i32 0, i32 12
  %472 = getelementptr inbounds [3 x i8], ptr %471, i64 0, i64 0
  %473 = call float @pte_get_mass(ptr noundef %472)
  %474 = load ptr, ptr %22, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.s_atm, ptr %474, i32 0, i32 21
  store float %473, ptr %475, align 4, !tbaa !28
  %476 = load ptr, ptr %22, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.s_atm, ptr %476, i32 0, i32 12
  %478 = getelementptr inbounds [3 x i8], ptr %477, i64 0, i64 0
  %479 = call float @pte_get_vdw_ray(ptr noundef %478)
  %480 = load ptr, ptr %22, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.s_atm, ptr %480, i32 0, i32 3
  store float %479, ptr %481, align 4, !tbaa !30
  %482 = load ptr, ptr %22, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.s_atm, ptr %482, i32 0, i32 12
  %484 = getelementptr inbounds [3 x i8], ptr %483, i64 0, i64 0
  %485 = call float @pte_get_enegativity(ptr noundef %484)
  %486 = load ptr, ptr %22, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.s_atm, ptr %486, i32 0, i32 22
  store float %485, ptr %487, align 8, !tbaa !31
  %488 = load ptr, ptr %22, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.s_atm, ptr %488, i32 0, i32 0
  store i32 -1, ptr %489, align 8, !tbaa !32
  %490 = load ptr, ptr %22, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.s_atm, ptr %490, i32 0, i32 16
  %492 = load i32, ptr %491, align 8, !tbaa !33
  %493 = load ptr, ptr %22, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.s_atm, ptr %493, i32 0, i32 17
  store i32 %492, ptr %494, align 4, !tbaa !34
  %495 = load ptr, ptr %22, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.s_atm, ptr %495, i32 0, i32 11
  %497 = getelementptr inbounds [16 x i8], ptr %496, i64 0, i64 0
  %498 = load ptr, ptr %22, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.s_atm, ptr %498, i32 0, i32 10
  %500 = getelementptr inbounds [16 x i8], ptr %499, i64 0, i64 0
  %501 = call ptr @strcpy(ptr noundef %497, ptr noundef %500) #5
  %502 = load ptr, ptr %22, align 8, !tbaa !5
  %503 = load ptr, ptr %24, align 8, !tbaa !5
  %504 = load i32, ptr %12, align 4, !tbaa !9
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds ptr, ptr %503, i64 %505
  store ptr %502, ptr %506, align 8, !tbaa !5
  %507 = load i32, ptr %12, align 4, !tbaa !9
  %508 = add nsw i32 %507, 1
  store i32 %508, ptr %12, align 4, !tbaa !9
  br label %509

509:                                              ; preds = %429, %428
  br label %510

510:                                              ; preds = %509, %321
  br label %511

511:                                              ; preds = %510, %184
  br label %512

512:                                              ; preds = %511, %131, %128, %125, %120
  %513 = load float, ptr %29, align 4, !tbaa !24
  %514 = fcmp olt float %513, 9.990000e+03
  br i1 %514, label %515, label %638

515:                                              ; preds = %512
  %516 = load float, ptr %30, align 4, !tbaa !24
  %517 = fcmp olt float %516, 9.990000e+03
  br i1 %517, label %518, label %638

518:                                              ; preds = %515
  %519 = load float, ptr %31, align 4, !tbaa !24
  %520 = fcmp olt float %519, 9.990000e+03
  br i1 %520, label %521, label %638

521:                                              ; preds = %518
  %522 = load ptr, ptr %6, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.s_pdb, ptr %522, i32 0, i32 9
  %524 = load i32, ptr %523, align 8, !tbaa !35
  %525 = icmp ne i32 %524, 0
  br i1 %525, label %526, label %637

526:                                              ; preds = %521
  %527 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %528 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  call void @rpdb_extract_atm_resname(ptr noundef %527, ptr noundef %528)
  %529 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %530 = call i32 @rpdb_extract_atm_resumber(ptr noundef %529)
  store i32 %530, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr %32) #5
  %531 = load ptr, ptr %10, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.s_fparams, ptr %531, i32 0, i32 33
  %533 = getelementptr inbounds [20 x ptr], ptr %532, i64 0, i64 0
  %534 = load ptr, ptr %21, align 8, !tbaa !5
  %535 = load ptr, ptr %10, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.s_fparams, ptr %535, i32 0, i32 32
  %537 = load i16, ptr %536, align 2, !tbaa !19
  %538 = call i32 @is_ligand(ptr noundef %533, ptr noundef %534, i16 noundef zeroext %537)
  %539 = icmp ne i32 %538, 0
  br i1 %539, label %540, label %552

540:                                              ; preds = %526
  %541 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %542 = call i32 @strncmp(ptr noundef %541, ptr noundef @.str.7, i64 noundef 3) #6
  %543 = icmp ne i32 %542, 0
  br i1 %543, label %544, label %552

544:                                              ; preds = %540
  %545 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %546 = call i32 @strncmp(ptr noundef %545, ptr noundef @.str.8, i64 noundef 3) #6
  %547 = icmp ne i32 %546, 0
  br i1 %547, label %548, label %552

548:                                              ; preds = %544
  %549 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %550 = call i32 @strncmp(ptr noundef %549, ptr noundef @.str.9, i64 noundef 3) #6
  %551 = icmp ne i32 %550, 0
  br label %552

552:                                              ; preds = %548, %544, %540, %526
  %553 = phi i1 [ false, %544 ], [ false, %540 ], [ false, %526 ], [ %551, %548 ]
  %554 = zext i1 %553 to i32
  %555 = trunc i32 %554 to i16
  store i16 %555, ptr %32, align 2, !tbaa !36
  %556 = load i16, ptr %32, align 2, !tbaa !36
  %557 = zext i16 %556 to i32
  %558 = icmp ne i32 %557, 0
  br i1 %558, label %614, label %559

559:                                              ; preds = %552
  %560 = load ptr, ptr %10, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.s_fparams, ptr %560, i32 0, i32 5
  %562 = load ptr, ptr %561, align 8, !tbaa !37
  %563 = icmp ne ptr %562, null
  br i1 %563, label %564, label %636

564:                                              ; preds = %559
  %565 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 21
  %566 = load i8, ptr %565, align 1, !tbaa !11
  %567 = sext i8 %566 to i32
  %568 = load ptr, ptr %10, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.s_fparams, ptr %568, i32 0, i32 5
  %570 = load ptr, ptr %569, align 8, !tbaa !37
  %571 = getelementptr inbounds i8, ptr %570, i64 0
  %572 = load i8, ptr %571, align 1, !tbaa !11
  %573 = sext i8 %572 to i32
  %574 = icmp eq i32 %567, %573
  br i1 %574, label %575, label %636

575:                                              ; preds = %564
  %576 = load i32, ptr %28, align 4, !tbaa !9
  %577 = load ptr, ptr %10, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.s_fparams, ptr %577, i32 0, i32 7
  %579 = load i32, ptr %578, align 8, !tbaa !38
  %580 = icmp eq i32 %576, %579
  br i1 %580, label %581, label %636

581:                                              ; preds = %575
  %582 = load ptr, ptr %10, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.s_fparams, ptr %582, i32 0, i32 6
  %584 = load ptr, ptr %583, align 8, !tbaa !39
  %585 = getelementptr inbounds i8, ptr %584, i64 0
  %586 = load i8, ptr %585, align 1, !tbaa !11
  %587 = sext i8 %586 to i32
  %588 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %589 = load i8, ptr %588, align 1, !tbaa !11
  %590 = sext i8 %589 to i32
  %591 = icmp eq i32 %587, %590
  br i1 %591, label %592, label %636

592:                                              ; preds = %581
  %593 = load ptr, ptr %10, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.s_fparams, ptr %593, i32 0, i32 6
  %595 = load ptr, ptr %594, align 8, !tbaa !39
  %596 = getelementptr inbounds i8, ptr %595, i64 1
  %597 = load i8, ptr %596, align 1, !tbaa !11
  %598 = sext i8 %597 to i32
  %599 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 1
  %600 = load i8, ptr %599, align 1, !tbaa !11
  %601 = sext i8 %600 to i32
  %602 = icmp eq i32 %598, %601
  br i1 %602, label %603, label %636

603:                                              ; preds = %592
  %604 = load ptr, ptr %10, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.s_fparams, ptr %604, i32 0, i32 6
  %606 = load ptr, ptr %605, align 8, !tbaa !39
  %607 = getelementptr inbounds i8, ptr %606, i64 2
  %608 = load i8, ptr %607, align 1, !tbaa !11
  %609 = sext i8 %608 to i32
  %610 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 2
  %611 = load i8, ptr %610, align 1, !tbaa !11
  %612 = sext i8 %611 to i32
  %613 = icmp eq i32 %609, %612
  br i1 %613, label %614, label %636

614:                                              ; preds = %603, %552
  %615 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %616 = load ptr, ptr %6, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.s_pdb, ptr %616, i32 0, i32 6
  %618 = load ptr, ptr %617, align 8, !tbaa !25
  %619 = load i32, ptr %27, align 4, !tbaa !9
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds float, ptr %618, i64 %620
  %622 = load ptr, ptr %6, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.s_pdb, ptr %622, i32 0, i32 7
  %624 = load ptr, ptr %623, align 8, !tbaa !26
  %625 = load i32, ptr %27, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds float, ptr %624, i64 %626
  %628 = load ptr, ptr %6, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.s_pdb, ptr %628, i32 0, i32 8
  %630 = load ptr, ptr %629, align 8, !tbaa !27
  %631 = load i32, ptr %27, align 4, !tbaa !9
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds float, ptr %630, i64 %632
  call void @rpdb_extract_atom_coordinates(ptr noundef %615, ptr noundef %621, ptr noundef %627, ptr noundef %633)
  %634 = load i32, ptr %27, align 4, !tbaa !9
  %635 = add nsw i32 %634, 1
  store i32 %635, ptr %27, align 4, !tbaa !9
  br label %636

636:                                              ; preds = %614, %603, %592, %581, %575, %564, %559
  call void @llvm.lifetime.end.p0(i64 2, ptr %32) #5
  br label %637

637:                                              ; preds = %636, %521
  br label %638

638:                                              ; preds = %637, %518, %515, %512
  br label %1431

639:                                              ; preds = %86, %82
  %640 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %641 = call i32 @strncmp(ptr noundef %640, ptr noundef @.str.6, i64 noundef 6) #6
  %642 = icmp eq i32 %641, 0
  br i1 %642, label %657, label %643

643:                                              ; preds = %639
  %644 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %645 = call i32 @strncmp(ptr noundef %644, ptr noundef @.str.5, i64 noundef 5) #6
  %646 = icmp eq i32 %645, 0
  br i1 %646, label %647, label %1391

647:                                              ; preds = %643
  %648 = load ptr, ptr %10, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.s_fparams, ptr %648, i32 0, i32 33
  %650 = getelementptr inbounds [20 x ptr], ptr %649, i64 0, i64 0
  %651 = load ptr, ptr %21, align 8, !tbaa !5
  %652 = load ptr, ptr %10, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.s_fparams, ptr %652, i32 0, i32 32
  %654 = load i16, ptr %653, align 2, !tbaa !19
  %655 = call i32 @is_ligand(ptr noundef %650, ptr noundef %651, i16 noundef zeroext %654)
  %656 = icmp ne i32 %655, 0
  br i1 %656, label %657, label %1391

657:                                              ; preds = %647, %639
  %658 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 21
  %659 = load i8, ptr %658, align 1, !tbaa !11
  %660 = load ptr, ptr %21, align 8, !tbaa !5
  %661 = getelementptr inbounds i8, ptr %660, i64 0
  store i8 %659, ptr %661, align 1, !tbaa !11
  %662 = load ptr, ptr %10, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.s_fparams, ptr %662, i32 0, i32 30
  %664 = getelementptr inbounds [20 x ptr], ptr %663, i64 0, i64 0
  %665 = load ptr, ptr %21, align 8, !tbaa !5
  %666 = load ptr, ptr %10, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.s_fparams, ptr %666, i32 0, i32 34
  %668 = load i32, ptr %667, align 8, !tbaa !22
  %669 = load ptr, ptr %10, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.s_fparams, ptr %669, i32 0, i32 31
  %671 = load i16, ptr %670, align 8, !tbaa !23
  %672 = call i32 @chains_to_delete(ptr noundef %664, ptr noundef %665, i32 noundef %668, i16 noundef zeroext %671)
  %673 = icmp ne i32 %672, 0
  br i1 %673, label %674, label %678

674:                                              ; preds = %657
  %675 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  call void @rpdb_extract_atom_coordinates(ptr noundef %675, ptr noundef %29, ptr noundef %30, ptr noundef %31)
  %676 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %677 = call i32 @rpdb_extract_atm_resumber(ptr noundef %676)
  store i32 %677, ptr %28, align 4, !tbaa !9
  br label %678

678:                                              ; preds = %674, %657
  %679 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 16
  %680 = load i8, ptr %679, align 16, !tbaa !11
  %681 = sext i8 %680 to i32
  %682 = icmp eq i32 %681, 32
  br i1 %682, label %688, label %683

683:                                              ; preds = %678
  %684 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 16
  %685 = load i8, ptr %684, align 16, !tbaa !11
  %686 = sext i8 %685 to i32
  %687 = icmp eq i32 %686, 65
  br i1 %687, label %688, label %1264

688:                                              ; preds = %683, %678
  %689 = load float, ptr %29, align 4, !tbaa !24
  %690 = fcmp olt float %689, 9.990000e+03
  br i1 %690, label %691, label %1264

691:                                              ; preds = %688
  %692 = load float, ptr %30, align 4, !tbaa !24
  %693 = fcmp olt float %692, 9.990000e+03
  br i1 %693, label %694, label %1264

694:                                              ; preds = %691
  %695 = load float, ptr %31, align 4, !tbaa !24
  %696 = fcmp olt float %695, 9.990000e+03
  br i1 %696, label %697, label %1264

697:                                              ; preds = %694
  %698 = load ptr, ptr %10, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.s_fparams, ptr %698, i32 0, i32 30
  %700 = getelementptr inbounds [20 x ptr], ptr %699, i64 0, i64 0
  %701 = load ptr, ptr %21, align 8, !tbaa !5
  %702 = load ptr, ptr %10, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.s_fparams, ptr %702, i32 0, i32 34
  %704 = load i32, ptr %703, align 8, !tbaa !22
  %705 = load ptr, ptr %10, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.s_fparams, ptr %705, i32 0, i32 31
  %707 = load i16, ptr %706, align 8, !tbaa !23
  %708 = call i32 @chains_to_delete(ptr noundef %700, ptr noundef %701, i32 noundef %704, i16 noundef zeroext %707)
  %709 = icmp ne i32 %708, 0
  br i1 %709, label %710, label %713

710:                                              ; preds = %697
  %711 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %712 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  call void @rpdb_extract_atm_resname(ptr noundef %711, ptr noundef %712)
  br label %713

713:                                              ; preds = %710, %697
  %714 = load ptr, ptr %10, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.s_fparams, ptr %714, i32 0, i32 33
  %716 = getelementptr inbounds [20 x ptr], ptr %715, i64 0, i64 0
  %717 = load ptr, ptr %21, align 8, !tbaa !5
  %718 = load ptr, ptr %10, align 8, !tbaa !5
  %719 = getelementptr inbounds %struct.s_fparams, ptr %718, i32 0, i32 32
  %720 = load i16, ptr %719, align 2, !tbaa !19
  %721 = call i32 @is_ligand(ptr noundef %716, ptr noundef %717, i16 noundef zeroext %720)
  %722 = icmp ne i32 %721, 0
  br i1 %722, label %723, label %745

723:                                              ; preds = %713
  %724 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %725 = load ptr, ptr %6, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.s_pdb, ptr %725, i32 0, i32 6
  %727 = load ptr, ptr %726, align 8, !tbaa !25
  %728 = load i32, ptr %27, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds float, ptr %727, i64 %729
  %731 = load ptr, ptr %6, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.s_pdb, ptr %731, i32 0, i32 7
  %733 = load ptr, ptr %732, align 8, !tbaa !26
  %734 = load i32, ptr %27, align 4, !tbaa !9
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds float, ptr %733, i64 %735
  %737 = load ptr, ptr %6, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.s_pdb, ptr %737, i32 0, i32 8
  %739 = load ptr, ptr %738, align 8, !tbaa !27
  %740 = load i32, ptr %27, align 4, !tbaa !9
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds float, ptr %739, i64 %741
  call void @rpdb_extract_atom_coordinates(ptr noundef %724, ptr noundef %730, ptr noundef %736, ptr noundef %742)
  %743 = load i32, ptr %27, align 4, !tbaa !9
  %744 = add nsw i32 %743, 1
  store i32 %744, ptr %27, align 4, !tbaa !9
  br label %745

745:                                              ; preds = %723, %713
  %746 = load ptr, ptr %10, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.s_fparams, ptr %746, i32 0, i32 30
  %748 = getelementptr inbounds [20 x ptr], ptr %747, i64 0, i64 0
  %749 = load ptr, ptr %21, align 8, !tbaa !5
  %750 = load ptr, ptr %10, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.s_fparams, ptr %750, i32 0, i32 34
  %752 = load i32, ptr %751, align 8, !tbaa !22
  %753 = load ptr, ptr %10, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.s_fparams, ptr %753, i32 0, i32 31
  %755 = load i16, ptr %754, align 8, !tbaa !23
  %756 = call i32 @chains_to_delete(ptr noundef %748, ptr noundef %749, i32 noundef %752, i16 noundef zeroext %755)
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %758, label %1263

758:                                              ; preds = %745
  %759 = load ptr, ptr %7, align 8, !tbaa !5
  %760 = icmp ne ptr %759, null
  br i1 %760, label %761, label %882

761:                                              ; preds = %758
  %762 = load ptr, ptr %7, align 8, !tbaa !5
  %763 = call i64 @strlen(ptr noundef %762) #6
  %764 = icmp ugt i64 %763, 1
  br i1 %764, label %765, label %882

765:                                              ; preds = %761
  %766 = load i32, ptr %8, align 4, !tbaa !9
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %882

768:                                              ; preds = %765
  %769 = load ptr, ptr %7, align 8, !tbaa !5
  %770 = getelementptr inbounds i8, ptr %769, i64 0
  %771 = load i8, ptr %770, align 1, !tbaa !11
  %772 = sext i8 %771 to i32
  %773 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %774 = load i8, ptr %773, align 1, !tbaa !11
  %775 = sext i8 %774 to i32
  %776 = icmp eq i32 %772, %775
  br i1 %776, label %777, label %882

777:                                              ; preds = %768
  %778 = load ptr, ptr %7, align 8, !tbaa !5
  %779 = getelementptr inbounds i8, ptr %778, i64 1
  %780 = load i8, ptr %779, align 1, !tbaa !11
  %781 = sext i8 %780 to i32
  %782 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 1
  %783 = load i8, ptr %782, align 1, !tbaa !11
  %784 = sext i8 %783 to i32
  %785 = icmp eq i32 %781, %784
  br i1 %785, label %786, label %882

786:                                              ; preds = %777
  %787 = load ptr, ptr %7, align 8, !tbaa !5
  %788 = getelementptr inbounds i8, ptr %787, i64 2
  %789 = load i8, ptr %788, align 1, !tbaa !11
  %790 = sext i8 %789 to i32
  %791 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 2
  %792 = load i8, ptr %791, align 1, !tbaa !11
  %793 = sext i8 %792 to i32
  %794 = icmp eq i32 %790, %793
  br i1 %794, label %795, label %882

795:                                              ; preds = %786
  %796 = load ptr, ptr %23, align 8, !tbaa !5
  %797 = load i32, ptr %12, align 4, !tbaa !9
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds %struct.s_atm, ptr %796, i64 %798
  store ptr %799, ptr %22, align 8, !tbaa !5
  %800 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %801 = load ptr, ptr %22, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.s_atm, ptr %801, i32 0, i32 9
  %803 = getelementptr inbounds [7 x i8], ptr %802, i64 0, i64 0
  %804 = load ptr, ptr %22, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.s_atm, ptr %804, i32 0, i32 14
  %806 = load ptr, ptr %22, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.s_atm, ptr %806, i32 0, i32 8
  %808 = getelementptr inbounds [5 x i8], ptr %807, i64 0, i64 0
  %809 = load ptr, ptr %22, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.s_atm, ptr %809, i32 0, i32 29
  %811 = load ptr, ptr %22, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.s_atm, ptr %811, i32 0, i32 13
  %813 = getelementptr inbounds [8 x i8], ptr %812, i64 0, i64 0
  %814 = load ptr, ptr %22, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.s_atm, ptr %814, i32 0, i32 10
  %816 = getelementptr inbounds [16 x i8], ptr %815, i64 0, i64 0
  %817 = load ptr, ptr %22, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.s_atm, ptr %817, i32 0, i32 16
  %819 = load ptr, ptr %22, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.s_atm, ptr %819, i32 0, i32 28
  %821 = load ptr, ptr %22, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.s_atm, ptr %821, i32 0, i32 5
  %823 = load ptr, ptr %22, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.s_atm, ptr %823, i32 0, i32 6
  %825 = load ptr, ptr %22, align 8, !tbaa !5
  %826 = getelementptr inbounds %struct.s_atm, ptr %825, i32 0, i32 7
  %827 = load ptr, ptr %22, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.s_atm, ptr %827, i32 0, i32 23
  %829 = load ptr, ptr %22, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.s_atm, ptr %829, i32 0, i32 24
  %831 = load ptr, ptr %22, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.s_atm, ptr %831, i32 0, i32 12
  %833 = getelementptr inbounds [3 x i8], ptr %832, i64 0, i64 0
  %834 = load ptr, ptr %22, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.s_atm, ptr %834, i32 0, i32 19
  call void @rpdb_extract_pdb_atom(ptr noundef %800, ptr noundef %803, ptr noundef %805, ptr noundef %808, ptr noundef %810, ptr noundef %813, ptr noundef %816, ptr noundef %818, ptr noundef %820, ptr noundef %822, ptr noundef %824, ptr noundef %826, ptr noundef %828, ptr noundef %830, ptr noundef %833, ptr noundef %835, ptr noundef %26)
  %836 = load ptr, ptr %22, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.s_atm, ptr %836, i32 0, i32 12
  %838 = getelementptr inbounds [3 x i8], ptr %837, i64 0, i64 0
  %839 = call float @pte_get_mass(ptr noundef %838)
  %840 = load ptr, ptr %22, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.s_atm, ptr %840, i32 0, i32 21
  store float %839, ptr %841, align 4, !tbaa !28
  %842 = load ptr, ptr %22, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.s_atm, ptr %842, i32 0, i32 12
  %844 = getelementptr inbounds [3 x i8], ptr %843, i64 0, i64 0
  %845 = call float @pte_get_vdw_ray(ptr noundef %844)
  %846 = load ptr, ptr %22, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.s_atm, ptr %846, i32 0, i32 3
  store float %845, ptr %847, align 4, !tbaa !30
  %848 = load ptr, ptr %22, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.s_atm, ptr %848, i32 0, i32 12
  %850 = getelementptr inbounds [3 x i8], ptr %849, i64 0, i64 0
  %851 = call float @pte_get_enegativity(ptr noundef %850)
  %852 = load ptr, ptr %22, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.s_atm, ptr %852, i32 0, i32 22
  store float %851, ptr %853, align 8, !tbaa !31
  %854 = load ptr, ptr %22, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.s_atm, ptr %854, i32 0, i32 0
  store i32 -1, ptr %855, align 8, !tbaa !32
  %856 = load ptr, ptr %22, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.s_atm, ptr %856, i32 0, i32 16
  %858 = load i32, ptr %857, align 8, !tbaa !33
  %859 = load ptr, ptr %22, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.s_atm, ptr %859, i32 0, i32 17
  store i32 %858, ptr %860, align 4, !tbaa !34
  %861 = load ptr, ptr %22, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.s_atm, ptr %861, i32 0, i32 11
  %863 = getelementptr inbounds [16 x i8], ptr %862, i64 0, i64 0
  %864 = load ptr, ptr %22, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.s_atm, ptr %864, i32 0, i32 10
  %866 = getelementptr inbounds [16 x i8], ptr %865, i64 0, i64 0
  %867 = call ptr @strcpy(ptr noundef %863, ptr noundef %866) #5
  %868 = load ptr, ptr %22, align 8, !tbaa !5
  %869 = load ptr, ptr %24, align 8, !tbaa !5
  %870 = load i32, ptr %12, align 4, !tbaa !9
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds ptr, ptr %869, i64 %871
  store ptr %868, ptr %872, align 8, !tbaa !5
  %873 = load ptr, ptr %22, align 8, !tbaa !5
  %874 = load ptr, ptr %25, align 8, !tbaa !5
  %875 = load i32, ptr %14, align 4, !tbaa !9
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds ptr, ptr %874, i64 %876
  store ptr %873, ptr %877, align 8, !tbaa !5
  %878 = load i32, ptr %14, align 4, !tbaa !9
  %879 = add nsw i32 %878, 1
  store i32 %879, ptr %14, align 4, !tbaa !9
  %880 = load i32, ptr %12, align 4, !tbaa !9
  %881 = add nsw i32 %880, 1
  store i32 %881, ptr %12, align 4, !tbaa !9
  store i32 1, ptr %15, align 4, !tbaa !9
  br label %1262

882:                                              ; preds = %786, %777, %768, %765, %761, %758
  %883 = load ptr, ptr %7, align 8, !tbaa !5
  %884 = icmp ne ptr %883, null
  br i1 %884, label %885, label %989

885:                                              ; preds = %882
  %886 = load ptr, ptr %7, align 8, !tbaa !5
  %887 = call i64 @strlen(ptr noundef %886) #6
  %888 = icmp eq i64 %887, 1
  br i1 %888, label %889, label %989

889:                                              ; preds = %885
  %890 = load ptr, ptr %7, align 8, !tbaa !5
  %891 = getelementptr inbounds i8, ptr %890, i64 0
  %892 = load i8, ptr %891, align 1, !tbaa !11
  %893 = sext i8 %892 to i32
  %894 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 21
  %895 = load i8, ptr %894, align 1, !tbaa !11
  %896 = sext i8 %895 to i32
  %897 = icmp eq i32 %893, %896
  br i1 %897, label %898, label %989

898:                                              ; preds = %889
  %899 = load i32, ptr %8, align 4, !tbaa !9
  %900 = icmp ne i32 %899, 0
  br i1 %900, label %901, label %988

901:                                              ; preds = %898
  %902 = load ptr, ptr %23, align 8, !tbaa !5
  %903 = load i32, ptr %12, align 4, !tbaa !9
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds %struct.s_atm, ptr %902, i64 %904
  store ptr %905, ptr %22, align 8, !tbaa !5
  %906 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %907 = load ptr, ptr %22, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.s_atm, ptr %907, i32 0, i32 9
  %909 = getelementptr inbounds [7 x i8], ptr %908, i64 0, i64 0
  %910 = load ptr, ptr %22, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.s_atm, ptr %910, i32 0, i32 14
  %912 = load ptr, ptr %22, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.s_atm, ptr %912, i32 0, i32 8
  %914 = getelementptr inbounds [5 x i8], ptr %913, i64 0, i64 0
  %915 = load ptr, ptr %22, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.s_atm, ptr %915, i32 0, i32 29
  %917 = load ptr, ptr %22, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.s_atm, ptr %917, i32 0, i32 13
  %919 = getelementptr inbounds [8 x i8], ptr %918, i64 0, i64 0
  %920 = load ptr, ptr %22, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.s_atm, ptr %920, i32 0, i32 10
  %922 = getelementptr inbounds [16 x i8], ptr %921, i64 0, i64 0
  %923 = load ptr, ptr %22, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.s_atm, ptr %923, i32 0, i32 16
  %925 = load ptr, ptr %22, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.s_atm, ptr %925, i32 0, i32 28
  %927 = load ptr, ptr %22, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.s_atm, ptr %927, i32 0, i32 5
  %929 = load ptr, ptr %22, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.s_atm, ptr %929, i32 0, i32 6
  %931 = load ptr, ptr %22, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.s_atm, ptr %931, i32 0, i32 7
  %933 = load ptr, ptr %22, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.s_atm, ptr %933, i32 0, i32 23
  %935 = load ptr, ptr %22, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.s_atm, ptr %935, i32 0, i32 24
  %937 = load ptr, ptr %22, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.s_atm, ptr %937, i32 0, i32 12
  %939 = getelementptr inbounds [3 x i8], ptr %938, i64 0, i64 0
  %940 = load ptr, ptr %22, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.s_atm, ptr %940, i32 0, i32 19
  call void @rpdb_extract_pdb_atom(ptr noundef %906, ptr noundef %909, ptr noundef %911, ptr noundef %914, ptr noundef %916, ptr noundef %919, ptr noundef %922, ptr noundef %924, ptr noundef %926, ptr noundef %928, ptr noundef %930, ptr noundef %932, ptr noundef %934, ptr noundef %936, ptr noundef %939, ptr noundef %941, ptr noundef %26)
  %942 = load ptr, ptr %22, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.s_atm, ptr %942, i32 0, i32 12
  %944 = getelementptr inbounds [3 x i8], ptr %943, i64 0, i64 0
  %945 = call float @pte_get_mass(ptr noundef %944)
  %946 = load ptr, ptr %22, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.s_atm, ptr %946, i32 0, i32 21
  store float %945, ptr %947, align 4, !tbaa !28
  %948 = load ptr, ptr %22, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.s_atm, ptr %948, i32 0, i32 12
  %950 = getelementptr inbounds [3 x i8], ptr %949, i64 0, i64 0
  %951 = call float @pte_get_vdw_ray(ptr noundef %950)
  %952 = load ptr, ptr %22, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.s_atm, ptr %952, i32 0, i32 3
  store float %951, ptr %953, align 4, !tbaa !30
  %954 = load ptr, ptr %22, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.s_atm, ptr %954, i32 0, i32 12
  %956 = getelementptr inbounds [3 x i8], ptr %955, i64 0, i64 0
  %957 = call float @pte_get_enegativity(ptr noundef %956)
  %958 = load ptr, ptr %22, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.s_atm, ptr %958, i32 0, i32 22
  store float %957, ptr %959, align 8, !tbaa !31
  %960 = load ptr, ptr %22, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.s_atm, ptr %960, i32 0, i32 0
  store i32 -1, ptr %961, align 8, !tbaa !32
  %962 = load ptr, ptr %22, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.s_atm, ptr %962, i32 0, i32 16
  %964 = load i32, ptr %963, align 8, !tbaa !33
  %965 = load ptr, ptr %22, align 8, !tbaa !5
  %966 = getelementptr inbounds %struct.s_atm, ptr %965, i32 0, i32 17
  store i32 %964, ptr %966, align 4, !tbaa !34
  %967 = load ptr, ptr %22, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.s_atm, ptr %967, i32 0, i32 11
  %969 = getelementptr inbounds [16 x i8], ptr %968, i64 0, i64 0
  %970 = load ptr, ptr %22, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.s_atm, ptr %970, i32 0, i32 10
  %972 = getelementptr inbounds [16 x i8], ptr %971, i64 0, i64 0
  %973 = call ptr @strcpy(ptr noundef %969, ptr noundef %972) #5
  %974 = load ptr, ptr %22, align 8, !tbaa !5
  %975 = load ptr, ptr %24, align 8, !tbaa !5
  %976 = load i32, ptr %12, align 4, !tbaa !9
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds ptr, ptr %975, i64 %977
  store ptr %974, ptr %978, align 8, !tbaa !5
  %979 = load ptr, ptr %22, align 8, !tbaa !5
  %980 = load ptr, ptr %25, align 8, !tbaa !5
  %981 = load i32, ptr %14, align 4, !tbaa !9
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds ptr, ptr %980, i64 %982
  store ptr %979, ptr %983, align 8, !tbaa !5
  %984 = load i32, ptr %14, align 4, !tbaa !9
  %985 = add nsw i32 %984, 1
  store i32 %985, ptr %14, align 4, !tbaa !9
  %986 = load i32, ptr %12, align 4, !tbaa !9
  %987 = add nsw i32 %986, 1
  store i32 %987, ptr %12, align 4, !tbaa !9
  store i32 1, ptr %15, align 4, !tbaa !9
  br label %988

988:                                              ; preds = %901, %898
  br label %1261

989:                                              ; preds = %889, %885, %882
  %990 = load ptr, ptr %6, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.s_pdb, ptr %990, i32 0, i32 4
  %992 = load ptr, ptr %991, align 8, !tbaa !40
  %993 = icmp ne ptr %992, null
  br i1 %993, label %994, label %1260

994:                                              ; preds = %989
  %995 = load i32, ptr %8, align 4, !tbaa !9
  %996 = icmp ne i32 %995, 0
  br i1 %996, label %997, label %1012

997:                                              ; preds = %994
  %998 = load ptr, ptr %7, align 8, !tbaa !5
  %999 = icmp ne ptr %998, null
  br i1 %999, label %1012, label %1000

1000:                                             ; preds = %997
  %1001 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %1002 = call i32 @strncmp(ptr noundef %1001, ptr noundef @.str.7, i64 noundef 3) #6
  %1003 = icmp ne i32 %1002, 0
  br i1 %1003, label %1004, label %1012

1004:                                             ; preds = %1000
  %1005 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %1006 = call i32 @strncmp(ptr noundef %1005, ptr noundef @.str.8, i64 noundef 3) #6
  %1007 = icmp ne i32 %1006, 0
  br i1 %1007, label %1008, label %1012

1008:                                             ; preds = %1004
  %1009 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %1010 = call i32 @strncmp(ptr noundef %1009, ptr noundef @.str.9, i64 noundef 3) #6
  %1011 = icmp ne i32 %1010, 0
  br i1 %1011, label %1025, label %1012

1012:                                             ; preds = %1008, %1004, %1000, %997, %994
  %1013 = load i32, ptr %8, align 4, !tbaa !9
  %1014 = icmp ne i32 %1013, 0
  br i1 %1014, label %1015, label %1114

1015:                                             ; preds = %1012
  %1016 = load ptr, ptr %10, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.s_fparams, ptr %1016, i32 0, i32 33
  %1018 = getelementptr inbounds [20 x ptr], ptr %1017, i64 0, i64 0
  %1019 = load ptr, ptr %21, align 8, !tbaa !5
  %1020 = load ptr, ptr %10, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.s_fparams, ptr %1020, i32 0, i32 32
  %1022 = load i16, ptr %1021, align 2, !tbaa !19
  %1023 = call i32 @is_ligand(ptr noundef %1018, ptr noundef %1019, i16 noundef zeroext %1022)
  %1024 = icmp ne i32 %1023, 0
  br i1 %1024, label %1025, label %1114

1025:                                             ; preds = %1015, %1008
  %1026 = load ptr, ptr %23, align 8, !tbaa !5
  %1027 = load i32, ptr %12, align 4, !tbaa !9
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds %struct.s_atm, ptr %1026, i64 %1028
  store ptr %1029, ptr %22, align 8, !tbaa !5
  %1030 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %1031 = load ptr, ptr %22, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.s_atm, ptr %1031, i32 0, i32 9
  %1033 = getelementptr inbounds [7 x i8], ptr %1032, i64 0, i64 0
  %1034 = load ptr, ptr %22, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.s_atm, ptr %1034, i32 0, i32 14
  %1036 = load ptr, ptr %22, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.s_atm, ptr %1036, i32 0, i32 8
  %1038 = getelementptr inbounds [5 x i8], ptr %1037, i64 0, i64 0
  %1039 = load ptr, ptr %22, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.s_atm, ptr %1039, i32 0, i32 29
  %1041 = load ptr, ptr %22, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.s_atm, ptr %1041, i32 0, i32 13
  %1043 = getelementptr inbounds [8 x i8], ptr %1042, i64 0, i64 0
  %1044 = load ptr, ptr %22, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.s_atm, ptr %1044, i32 0, i32 10
  %1046 = getelementptr inbounds [16 x i8], ptr %1045, i64 0, i64 0
  %1047 = load ptr, ptr %22, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.s_atm, ptr %1047, i32 0, i32 16
  %1049 = load ptr, ptr %22, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.s_atm, ptr %1049, i32 0, i32 28
  %1051 = load ptr, ptr %22, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.s_atm, ptr %1051, i32 0, i32 5
  %1053 = load ptr, ptr %22, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.s_atm, ptr %1053, i32 0, i32 6
  %1055 = load ptr, ptr %22, align 8, !tbaa !5
  %1056 = getelementptr inbounds %struct.s_atm, ptr %1055, i32 0, i32 7
  %1057 = load ptr, ptr %22, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.s_atm, ptr %1057, i32 0, i32 23
  %1059 = load ptr, ptr %22, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.s_atm, ptr %1059, i32 0, i32 24
  %1061 = load ptr, ptr %22, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.s_atm, ptr %1061, i32 0, i32 12
  %1063 = getelementptr inbounds [3 x i8], ptr %1062, i64 0, i64 0
  %1064 = load ptr, ptr %22, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.s_atm, ptr %1064, i32 0, i32 19
  call void @rpdb_extract_pdb_atom(ptr noundef %1030, ptr noundef %1033, ptr noundef %1035, ptr noundef %1038, ptr noundef %1040, ptr noundef %1043, ptr noundef %1046, ptr noundef %1048, ptr noundef %1050, ptr noundef %1052, ptr noundef %1054, ptr noundef %1056, ptr noundef %1058, ptr noundef %1060, ptr noundef %1063, ptr noundef %1065, ptr noundef %26)
  %1066 = load ptr, ptr %22, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.s_atm, ptr %1066, i32 0, i32 12
  %1068 = getelementptr inbounds [3 x i8], ptr %1067, i64 0, i64 0
  %1069 = call float @pte_get_mass(ptr noundef %1068)
  %1070 = load ptr, ptr %22, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.s_atm, ptr %1070, i32 0, i32 21
  store float %1069, ptr %1071, align 4, !tbaa !28
  %1072 = load ptr, ptr %22, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.s_atm, ptr %1072, i32 0, i32 12
  %1074 = getelementptr inbounds [3 x i8], ptr %1073, i64 0, i64 0
  %1075 = call float @pte_get_vdw_ray(ptr noundef %1074)
  %1076 = load ptr, ptr %22, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.s_atm, ptr %1076, i32 0, i32 3
  store float %1075, ptr %1077, align 4, !tbaa !30
  %1078 = load ptr, ptr %22, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.s_atm, ptr %1078, i32 0, i32 12
  %1080 = getelementptr inbounds [3 x i8], ptr %1079, i64 0, i64 0
  %1081 = call float @pte_get_enegativity(ptr noundef %1080)
  %1082 = load ptr, ptr %22, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.s_atm, ptr %1082, i32 0, i32 22
  store float %1081, ptr %1083, align 8, !tbaa !31
  %1084 = load ptr, ptr %22, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct.s_atm, ptr %1084, i32 0, i32 0
  store i32 -1, ptr %1085, align 8, !tbaa !32
  %1086 = load ptr, ptr %22, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.s_atm, ptr %1086, i32 0, i32 16
  %1088 = load i32, ptr %1087, align 8, !tbaa !33
  %1089 = load ptr, ptr %22, align 8, !tbaa !5
  %1090 = getelementptr inbounds %struct.s_atm, ptr %1089, i32 0, i32 17
  store i32 %1088, ptr %1090, align 4, !tbaa !34
  %1091 = load ptr, ptr %22, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.s_atm, ptr %1091, i32 0, i32 11
  %1093 = getelementptr inbounds [16 x i8], ptr %1092, i64 0, i64 0
  %1094 = load ptr, ptr %22, align 8, !tbaa !5
  %1095 = getelementptr inbounds %struct.s_atm, ptr %1094, i32 0, i32 10
  %1096 = getelementptr inbounds [16 x i8], ptr %1095, i64 0, i64 0
  %1097 = call ptr @strcpy(ptr noundef %1093, ptr noundef %1096) #5
  %1098 = load ptr, ptr %22, align 8, !tbaa !5
  %1099 = load ptr, ptr %24, align 8, !tbaa !5
  %1100 = load i32, ptr %12, align 4, !tbaa !9
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds ptr, ptr %1099, i64 %1101
  store ptr %1098, ptr %1102, align 8, !tbaa !5
  %1103 = load ptr, ptr %22, align 8, !tbaa !5
  %1104 = load ptr, ptr %6, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.s_pdb, ptr %1104, i32 0, i32 4
  %1106 = load ptr, ptr %1105, align 8, !tbaa !40
  %1107 = load i32, ptr %13, align 4, !tbaa !9
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds ptr, ptr %1106, i64 %1108
  store ptr %1103, ptr %1109, align 8, !tbaa !5
  %1110 = load i32, ptr %13, align 4, !tbaa !9
  %1111 = add nsw i32 %1110, 1
  store i32 %1111, ptr %13, align 4, !tbaa !9
  %1112 = load i32, ptr %12, align 4, !tbaa !9
  %1113 = add nsw i32 %1112, 1
  store i32 %1113, ptr %12, align 4, !tbaa !9
  br label %1259

1114:                                             ; preds = %1015, %1012
  %1115 = load ptr, ptr %10, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.s_fparams, ptr %1115, i32 0, i32 33
  %1117 = getelementptr inbounds [20 x ptr], ptr %1116, i64 0, i64 0
  %1118 = load ptr, ptr %21, align 8, !tbaa !5
  %1119 = load ptr, ptr %10, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.s_fparams, ptr %1119, i32 0, i32 32
  %1121 = load i16, ptr %1120, align 2, !tbaa !19
  %1122 = call i32 @is_ligand(ptr noundef %1117, ptr noundef %1118, i16 noundef zeroext %1121)
  %1123 = icmp ne i32 %1122, 0
  br i1 %1123, label %1258, label %1124

1124:                                             ; preds = %1114
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %1125

1125:                                             ; preds = %1254, %1124
  %1126 = load i32, ptr %11, align 4, !tbaa !9
  %1127 = icmp slt i32 %1126, 1961
  br i1 %1127, label %1128, label %1257

1128:                                             ; preds = %1125
  %1129 = load i32, ptr %11, align 4, !tbaa !9
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds [1961 x ptr], ptr @ST_keep_hetatm, i64 0, i64 %1130
  %1132 = load ptr, ptr %1131, align 8, !tbaa !5
  %1133 = getelementptr inbounds i8, ptr %1132, i64 0
  %1134 = load i8, ptr %1133, align 1, !tbaa !11
  %1135 = sext i8 %1134 to i32
  %1136 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %1137 = load i8, ptr %1136, align 1, !tbaa !11
  %1138 = sext i8 %1137 to i32
  %1139 = icmp eq i32 %1135, %1138
  br i1 %1139, label %1140, label %1253

1140:                                             ; preds = %1128
  %1141 = load i32, ptr %11, align 4, !tbaa !9
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds [1961 x ptr], ptr @ST_keep_hetatm, i64 0, i64 %1142
  %1144 = load ptr, ptr %1143, align 8, !tbaa !5
  %1145 = getelementptr inbounds i8, ptr %1144, i64 1
  %1146 = load i8, ptr %1145, align 1, !tbaa !11
  %1147 = sext i8 %1146 to i32
  %1148 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 1
  %1149 = load i8, ptr %1148, align 1, !tbaa !11
  %1150 = sext i8 %1149 to i32
  %1151 = icmp eq i32 %1147, %1150
  br i1 %1151, label %1152, label %1253

1152:                                             ; preds = %1140
  %1153 = load i32, ptr %11, align 4, !tbaa !9
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds [1961 x ptr], ptr @ST_keep_hetatm, i64 0, i64 %1154
  %1156 = load ptr, ptr %1155, align 8, !tbaa !5
  %1157 = getelementptr inbounds i8, ptr %1156, i64 2
  %1158 = load i8, ptr %1157, align 1, !tbaa !11
  %1159 = sext i8 %1158 to i32
  %1160 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 2
  %1161 = load i8, ptr %1160, align 1, !tbaa !11
  %1162 = sext i8 %1161 to i32
  %1163 = icmp eq i32 %1159, %1162
  br i1 %1163, label %1164, label %1253

1164:                                             ; preds = %1152
  %1165 = load ptr, ptr %23, align 8, !tbaa !5
  %1166 = load i32, ptr %12, align 4, !tbaa !9
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds %struct.s_atm, ptr %1165, i64 %1167
  store ptr %1168, ptr %22, align 8, !tbaa !5
  %1169 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %1170 = load ptr, ptr %22, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.s_atm, ptr %1170, i32 0, i32 9
  %1172 = getelementptr inbounds [7 x i8], ptr %1171, i64 0, i64 0
  %1173 = load ptr, ptr %22, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.s_atm, ptr %1173, i32 0, i32 14
  %1175 = load ptr, ptr %22, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.s_atm, ptr %1175, i32 0, i32 8
  %1177 = getelementptr inbounds [5 x i8], ptr %1176, i64 0, i64 0
  %1178 = load ptr, ptr %22, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.s_atm, ptr %1178, i32 0, i32 29
  %1180 = load ptr, ptr %22, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.s_atm, ptr %1180, i32 0, i32 13
  %1182 = getelementptr inbounds [8 x i8], ptr %1181, i64 0, i64 0
  %1183 = load ptr, ptr %22, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.s_atm, ptr %1183, i32 0, i32 10
  %1185 = getelementptr inbounds [16 x i8], ptr %1184, i64 0, i64 0
  %1186 = load ptr, ptr %22, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.s_atm, ptr %1186, i32 0, i32 16
  %1188 = load ptr, ptr %22, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.s_atm, ptr %1188, i32 0, i32 28
  %1190 = load ptr, ptr %22, align 8, !tbaa !5
  %1191 = getelementptr inbounds %struct.s_atm, ptr %1190, i32 0, i32 5
  %1192 = load ptr, ptr %22, align 8, !tbaa !5
  %1193 = getelementptr inbounds %struct.s_atm, ptr %1192, i32 0, i32 6
  %1194 = load ptr, ptr %22, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.s_atm, ptr %1194, i32 0, i32 7
  %1196 = load ptr, ptr %22, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.s_atm, ptr %1196, i32 0, i32 23
  %1198 = load ptr, ptr %22, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.s_atm, ptr %1198, i32 0, i32 24
  %1200 = load ptr, ptr %22, align 8, !tbaa !5
  %1201 = getelementptr inbounds %struct.s_atm, ptr %1200, i32 0, i32 12
  %1202 = getelementptr inbounds [3 x i8], ptr %1201, i64 0, i64 0
  %1203 = load ptr, ptr %22, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.s_atm, ptr %1203, i32 0, i32 19
  call void @rpdb_extract_pdb_atom(ptr noundef %1169, ptr noundef %1172, ptr noundef %1174, ptr noundef %1177, ptr noundef %1179, ptr noundef %1182, ptr noundef %1185, ptr noundef %1187, ptr noundef %1189, ptr noundef %1191, ptr noundef %1193, ptr noundef %1195, ptr noundef %1197, ptr noundef %1199, ptr noundef %1202, ptr noundef %1204, ptr noundef %26)
  %1205 = load ptr, ptr %22, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.s_atm, ptr %1205, i32 0, i32 12
  %1207 = getelementptr inbounds [3 x i8], ptr %1206, i64 0, i64 0
  %1208 = call float @pte_get_mass(ptr noundef %1207)
  %1209 = load ptr, ptr %22, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.s_atm, ptr %1209, i32 0, i32 21
  store float %1208, ptr %1210, align 4, !tbaa !28
  %1211 = load ptr, ptr %22, align 8, !tbaa !5
  %1212 = getelementptr inbounds %struct.s_atm, ptr %1211, i32 0, i32 12
  %1213 = getelementptr inbounds [3 x i8], ptr %1212, i64 0, i64 0
  %1214 = call float @pte_get_vdw_ray(ptr noundef %1213)
  %1215 = load ptr, ptr %22, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.s_atm, ptr %1215, i32 0, i32 3
  store float %1214, ptr %1216, align 4, !tbaa !30
  %1217 = load ptr, ptr %22, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.s_atm, ptr %1217, i32 0, i32 12
  %1219 = getelementptr inbounds [3 x i8], ptr %1218, i64 0, i64 0
  %1220 = call float @pte_get_enegativity(ptr noundef %1219)
  %1221 = load ptr, ptr %22, align 8, !tbaa !5
  %1222 = getelementptr inbounds %struct.s_atm, ptr %1221, i32 0, i32 22
  store float %1220, ptr %1222, align 8, !tbaa !31
  %1223 = load ptr, ptr %22, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.s_atm, ptr %1223, i32 0, i32 0
  store i32 -1, ptr %1224, align 8, !tbaa !32
  %1225 = load ptr, ptr %22, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.s_atm, ptr %1225, i32 0, i32 16
  %1227 = load i32, ptr %1226, align 8, !tbaa !33
  %1228 = load ptr, ptr %22, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.s_atm, ptr %1228, i32 0, i32 17
  store i32 %1227, ptr %1229, align 4, !tbaa !34
  %1230 = load ptr, ptr %22, align 8, !tbaa !5
  %1231 = getelementptr inbounds %struct.s_atm, ptr %1230, i32 0, i32 11
  %1232 = getelementptr inbounds [16 x i8], ptr %1231, i64 0, i64 0
  %1233 = load ptr, ptr %22, align 8, !tbaa !5
  %1234 = getelementptr inbounds %struct.s_atm, ptr %1233, i32 0, i32 10
  %1235 = getelementptr inbounds [16 x i8], ptr %1234, i64 0, i64 0
  %1236 = call ptr @strcpy(ptr noundef %1232, ptr noundef %1235) #5
  %1237 = load ptr, ptr %22, align 8, !tbaa !5
  %1238 = load ptr, ptr %24, align 8, !tbaa !5
  %1239 = load i32, ptr %12, align 4, !tbaa !9
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds ptr, ptr %1238, i64 %1240
  store ptr %1237, ptr %1241, align 8, !tbaa !5
  %1242 = load ptr, ptr %22, align 8, !tbaa !5
  %1243 = load ptr, ptr %6, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.s_pdb, ptr %1243, i32 0, i32 4
  %1245 = load ptr, ptr %1244, align 8, !tbaa !40
  %1246 = load i32, ptr %13, align 4, !tbaa !9
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr inbounds ptr, ptr %1245, i64 %1247
  store ptr %1242, ptr %1248, align 8, !tbaa !5
  %1249 = load i32, ptr %13, align 4, !tbaa !9
  %1250 = add nsw i32 %1249, 1
  store i32 %1250, ptr %13, align 4, !tbaa !9
  %1251 = load i32, ptr %12, align 4, !tbaa !9
  %1252 = add nsw i32 %1251, 1
  store i32 %1252, ptr %12, align 4, !tbaa !9
  br label %1257

1253:                                             ; preds = %1152, %1140, %1128
  br label %1254

1254:                                             ; preds = %1253
  %1255 = load i32, ptr %11, align 4, !tbaa !9
  %1256 = add nsw i32 %1255, 1
  store i32 %1256, ptr %11, align 4, !tbaa !9
  br label %1125, !llvm.loop !41

1257:                                             ; preds = %1164, %1125
  br label %1258

1258:                                             ; preds = %1257, %1114
  br label %1259

1259:                                             ; preds = %1258, %1025
  br label %1260

1260:                                             ; preds = %1259, %989
  br label %1261

1261:                                             ; preds = %1260, %988
  br label %1262

1262:                                             ; preds = %1261, %795
  br label %1263

1263:                                             ; preds = %1262, %745
  br label %1264

1264:                                             ; preds = %1263, %694, %691, %688, %683
  %1265 = load float, ptr %29, align 4, !tbaa !24
  %1266 = fcmp olt float %1265, 9.990000e+03
  br i1 %1266, label %1267, label %1390

1267:                                             ; preds = %1264
  %1268 = load float, ptr %30, align 4, !tbaa !24
  %1269 = fcmp olt float %1268, 9.990000e+03
  br i1 %1269, label %1270, label %1390

1270:                                             ; preds = %1267
  %1271 = load float, ptr %31, align 4, !tbaa !24
  %1272 = fcmp olt float %1271, 9.990000e+03
  br i1 %1272, label %1273, label %1390

1273:                                             ; preds = %1270
  %1274 = load ptr, ptr %6, align 8, !tbaa !5
  %1275 = getelementptr inbounds %struct.s_pdb, ptr %1274, i32 0, i32 9
  %1276 = load i32, ptr %1275, align 8, !tbaa !35
  %1277 = icmp ne i32 %1276, 0
  br i1 %1277, label %1278, label %1389

1278:                                             ; preds = %1273
  %1279 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %1280 = call i32 @rpdb_extract_atm_resumber(ptr noundef %1279)
  store i32 %1280, ptr %28, align 4, !tbaa !9
  %1281 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %1282 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  call void @rpdb_extract_atm_resname(ptr noundef %1281, ptr noundef %1282)
  call void @llvm.lifetime.start.p0(i64 2, ptr %33) #5
  %1283 = load ptr, ptr %10, align 8, !tbaa !5
  %1284 = getelementptr inbounds %struct.s_fparams, ptr %1283, i32 0, i32 33
  %1285 = getelementptr inbounds [20 x ptr], ptr %1284, i64 0, i64 0
  %1286 = load ptr, ptr %21, align 8, !tbaa !5
  %1287 = load ptr, ptr %10, align 8, !tbaa !5
  %1288 = getelementptr inbounds %struct.s_fparams, ptr %1287, i32 0, i32 32
  %1289 = load i16, ptr %1288, align 2, !tbaa !19
  %1290 = call i32 @is_ligand(ptr noundef %1285, ptr noundef %1286, i16 noundef zeroext %1289)
  %1291 = icmp ne i32 %1290, 0
  br i1 %1291, label %1292, label %1304

1292:                                             ; preds = %1278
  %1293 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %1294 = call i32 @strncmp(ptr noundef %1293, ptr noundef @.str.7, i64 noundef 3) #6
  %1295 = icmp ne i32 %1294, 0
  br i1 %1295, label %1296, label %1304

1296:                                             ; preds = %1292
  %1297 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %1298 = call i32 @strncmp(ptr noundef %1297, ptr noundef @.str.8, i64 noundef 3) #6
  %1299 = icmp ne i32 %1298, 0
  br i1 %1299, label %1300, label %1304

1300:                                             ; preds = %1296
  %1301 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %1302 = call i32 @strncmp(ptr noundef %1301, ptr noundef @.str.9, i64 noundef 3) #6
  %1303 = icmp ne i32 %1302, 0
  br label %1304

1304:                                             ; preds = %1300, %1296, %1292, %1278
  %1305 = phi i1 [ false, %1296 ], [ false, %1292 ], [ false, %1278 ], [ %1303, %1300 ]
  %1306 = zext i1 %1305 to i32
  %1307 = trunc i32 %1306 to i16
  store i16 %1307, ptr %33, align 2, !tbaa !36
  %1308 = load i16, ptr %33, align 2, !tbaa !36
  %1309 = zext i16 %1308 to i32
  %1310 = icmp ne i32 %1309, 0
  br i1 %1310, label %1366, label %1311

1311:                                             ; preds = %1304
  %1312 = load ptr, ptr %10, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.s_fparams, ptr %1312, i32 0, i32 5
  %1314 = load ptr, ptr %1313, align 8, !tbaa !37
  %1315 = icmp ne ptr %1314, null
  br i1 %1315, label %1316, label %1388

1316:                                             ; preds = %1311
  %1317 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 21
  %1318 = load i8, ptr %1317, align 1, !tbaa !11
  %1319 = sext i8 %1318 to i32
  %1320 = load ptr, ptr %10, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.s_fparams, ptr %1320, i32 0, i32 5
  %1322 = load ptr, ptr %1321, align 8, !tbaa !37
  %1323 = getelementptr inbounds i8, ptr %1322, i64 0
  %1324 = load i8, ptr %1323, align 1, !tbaa !11
  %1325 = sext i8 %1324 to i32
  %1326 = icmp eq i32 %1319, %1325
  br i1 %1326, label %1327, label %1388

1327:                                             ; preds = %1316
  %1328 = load i32, ptr %28, align 4, !tbaa !9
  %1329 = load ptr, ptr %10, align 8, !tbaa !5
  %1330 = getelementptr inbounds %struct.s_fparams, ptr %1329, i32 0, i32 7
  %1331 = load i32, ptr %1330, align 8, !tbaa !38
  %1332 = icmp eq i32 %1328, %1331
  br i1 %1332, label %1333, label %1388

1333:                                             ; preds = %1327
  %1334 = load ptr, ptr %10, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.s_fparams, ptr %1334, i32 0, i32 6
  %1336 = load ptr, ptr %1335, align 8, !tbaa !39
  %1337 = getelementptr inbounds i8, ptr %1336, i64 0
  %1338 = load i8, ptr %1337, align 1, !tbaa !11
  %1339 = sext i8 %1338 to i32
  %1340 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 0
  %1341 = load i8, ptr %1340, align 1, !tbaa !11
  %1342 = sext i8 %1341 to i32
  %1343 = icmp eq i32 %1339, %1342
  br i1 %1343, label %1344, label %1388

1344:                                             ; preds = %1333
  %1345 = load ptr, ptr %10, align 8, !tbaa !5
  %1346 = getelementptr inbounds %struct.s_fparams, ptr %1345, i32 0, i32 6
  %1347 = load ptr, ptr %1346, align 8, !tbaa !39
  %1348 = getelementptr inbounds i8, ptr %1347, i64 1
  %1349 = load i8, ptr %1348, align 1, !tbaa !11
  %1350 = sext i8 %1349 to i32
  %1351 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 1
  %1352 = load i8, ptr %1351, align 1, !tbaa !11
  %1353 = sext i8 %1352 to i32
  %1354 = icmp eq i32 %1350, %1353
  br i1 %1354, label %1355, label %1388

1355:                                             ; preds = %1344
  %1356 = load ptr, ptr %10, align 8, !tbaa !5
  %1357 = getelementptr inbounds %struct.s_fparams, ptr %1356, i32 0, i32 6
  %1358 = load ptr, ptr %1357, align 8, !tbaa !39
  %1359 = getelementptr inbounds i8, ptr %1358, i64 2
  %1360 = load i8, ptr %1359, align 1, !tbaa !11
  %1361 = sext i8 %1360 to i32
  %1362 = getelementptr inbounds [5 x i8], ptr %17, i64 0, i64 2
  %1363 = load i8, ptr %1362, align 1, !tbaa !11
  %1364 = sext i8 %1363 to i32
  %1365 = icmp eq i32 %1361, %1364
  br i1 %1365, label %1366, label %1388

1366:                                             ; preds = %1355, %1304
  %1367 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %1368 = load ptr, ptr %6, align 8, !tbaa !5
  %1369 = getelementptr inbounds %struct.s_pdb, ptr %1368, i32 0, i32 6
  %1370 = load ptr, ptr %1369, align 8, !tbaa !25
  %1371 = load i32, ptr %27, align 4, !tbaa !9
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds float, ptr %1370, i64 %1372
  %1374 = load ptr, ptr %6, align 8, !tbaa !5
  %1375 = getelementptr inbounds %struct.s_pdb, ptr %1374, i32 0, i32 7
  %1376 = load ptr, ptr %1375, align 8, !tbaa !26
  %1377 = load i32, ptr %27, align 4, !tbaa !9
  %1378 = sext i32 %1377 to i64
  %1379 = getelementptr inbounds float, ptr %1376, i64 %1378
  %1380 = load ptr, ptr %6, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.s_pdb, ptr %1380, i32 0, i32 8
  %1382 = load ptr, ptr %1381, align 8, !tbaa !27
  %1383 = load i32, ptr %27, align 4, !tbaa !9
  %1384 = sext i32 %1383 to i64
  %1385 = getelementptr inbounds float, ptr %1382, i64 %1384
  call void @rpdb_extract_atom_coordinates(ptr noundef %1367, ptr noundef %1373, ptr noundef %1379, ptr noundef %1385)
  %1386 = load i32, ptr %27, align 4, !tbaa !9
  %1387 = add nsw i32 %1386, 1
  store i32 %1387, ptr %27, align 4, !tbaa !9
  br label %1388

1388:                                             ; preds = %1366, %1355, %1344, %1333, %1327, %1316, %1311
  call void @llvm.lifetime.end.p0(i64 2, ptr %33) #5
  br label %1389

1389:                                             ; preds = %1388, %1273
  br label %1390

1390:                                             ; preds = %1389, %1270, %1267, %1264
  br label %1430

1391:                                             ; preds = %647, %643
  %1392 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %1393 = call i32 @strncmp(ptr noundef %1392, ptr noundef @.str.13, i64 noundef 6) #6
  %1394 = icmp eq i32 %1393, 0
  br i1 %1394, label %1395, label %1409

1395:                                             ; preds = %1391
  %1396 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %1397 = load ptr, ptr %6, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.s_pdb, ptr %1397, i32 0, i32 17
  %1399 = load ptr, ptr %6, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.s_pdb, ptr %1399, i32 0, i32 18
  %1401 = load ptr, ptr %6, align 8, !tbaa !5
  %1402 = getelementptr inbounds %struct.s_pdb, ptr %1401, i32 0, i32 19
  %1403 = load ptr, ptr %6, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.s_pdb, ptr %1403, i32 0, i32 14
  %1405 = load ptr, ptr %6, align 8, !tbaa !5
  %1406 = getelementptr inbounds %struct.s_pdb, ptr %1405, i32 0, i32 15
  %1407 = load ptr, ptr %6, align 8, !tbaa !5
  %1408 = getelementptr inbounds %struct.s_pdb, ptr %1407, i32 0, i32 16
  call void @rpdb_extract_cryst1(ptr noundef %1396, ptr noundef %1398, ptr noundef %1400, ptr noundef %1402, ptr noundef %1404, ptr noundef %1406, ptr noundef %1408)
  br label %1429

1409:                                             ; preds = %1391
  %1410 = load i32, ptr %19, align 4, !tbaa !9
  %1411 = icmp eq i32 %1410, 1
  br i1 %1411, label %1412, label %1417

1412:                                             ; preds = %1409
  %1413 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %1414 = call i32 @strncmp(ptr noundef %1413, ptr noundef @.str.10, i64 noundef 6) #6
  %1415 = icmp ne i32 %1414, 0
  br i1 %1415, label %1417, label %1416

1416:                                             ; preds = %1412
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1428

1417:                                             ; preds = %1412, %1409
  %1418 = load ptr, ptr %6, align 8, !tbaa !5
  %1419 = getelementptr inbounds %struct.s_pdb, ptr %1418, i32 0, i32 25
  %1420 = load i32, ptr %1419, align 8, !tbaa !18
  %1421 = icmp eq i32 %1420, 0
  br i1 %1421, label %1422, label %1427

1422:                                             ; preds = %1417
  %1423 = getelementptr inbounds [83 x i8], ptr %16, i64 0, i64 0
  %1424 = call i32 @strncmp(ptr noundef %1423, ptr noundef @.str.14, i64 noundef 3) #6
  %1425 = icmp ne i32 %1424, 0
  br i1 %1425, label %1427, label %1426

1426:                                             ; preds = %1422
  br label %1433

1427:                                             ; preds = %1422, %1417
  br label %1428

1428:                                             ; preds = %1427, %1416
  br label %1429

1429:                                             ; preds = %1428, %1395
  br label %1430

1430:                                             ; preds = %1429, %1390
  br label %1431

1431:                                             ; preds = %1430, %638
  br label %1432

1432:                                             ; preds = %1431, %79
  br label %47, !llvm.loop !43

1433:                                             ; preds = %1426, %47
  %1434 = load ptr, ptr %6, align 8, !tbaa !5
  %1435 = getelementptr inbounds %struct.s_pdb, ptr %1434, i32 0, i32 22
  store float 0.000000e+00, ptr %1435, align 4, !tbaa !44
  %1436 = load ptr, ptr %6, align 8, !tbaa !5
  %1437 = getelementptr inbounds %struct.s_pdb, ptr %1436, i32 0, i32 23
  store float 0.000000e+00, ptr %1437, align 8, !tbaa !45
  %1438 = load ptr, ptr %6, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct.s_pdb, ptr %1438, i32 0, i32 24
  store float 0.000000e+00, ptr %1439, align 4, !tbaa !46
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %1440

1440:                                             ; preds = %1502, %1433
  %1441 = load i32, ptr %11, align 4, !tbaa !9
  %1442 = load i32, ptr %12, align 4, !tbaa !9
  %1443 = icmp slt i32 %1441, %1442
  br i1 %1443, label %1444, label %1505

1444:                                             ; preds = %1440
  %1445 = load ptr, ptr %23, align 8, !tbaa !5
  %1446 = load i32, ptr %11, align 4, !tbaa !9
  %1447 = sext i32 %1446 to i64
  %1448 = getelementptr inbounds %struct.s_atm, ptr %1445, i64 %1447
  store ptr %1448, ptr %22, align 8, !tbaa !5
  %1449 = load ptr, ptr %22, align 8, !tbaa !5
  %1450 = getelementptr inbounds %struct.s_atm, ptr %1449, i32 0, i32 25
  store float 0.000000e+00, ptr %1450, align 4, !tbaa !47
  %1451 = load ptr, ptr %22, align 8, !tbaa !5
  %1452 = getelementptr inbounds %struct.s_atm, ptr %1451, i32 0, i32 26
  store float 0.000000e+00, ptr %1452, align 8, !tbaa !48
  %1453 = load ptr, ptr %22, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct.s_atm, ptr %1453, i32 0, i32 27
  store float 0.000000e+00, ptr %1454, align 4, !tbaa !49
  %1455 = load ptr, ptr %22, align 8, !tbaa !5
  %1456 = getelementptr inbounds %struct.s_atm, ptr %1455, i32 0, i32 20
  store i32 0, ptr %1456, align 8, !tbaa !50
  %1457 = load ptr, ptr %22, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct.s_atm, ptr %1457, i32 0, i32 24
  %1459 = load float, ptr %1458, align 8, !tbaa !51
  %1460 = load ptr, ptr %6, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.s_pdb, ptr %1460, i32 0, i32 22
  %1462 = load float, ptr %1461, align 4, !tbaa !44
  %1463 = fadd float %1462, %1459
  store float %1463, ptr %1461, align 4, !tbaa !44
  %1464 = load ptr, ptr %22, align 8, !tbaa !5
  %1465 = getelementptr inbounds %struct.s_atm, ptr %1464, i32 0, i32 32
  store float 0.000000e+00, ptr %1465, align 4, !tbaa !52
  %1466 = load ptr, ptr %22, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.s_atm, ptr %1466, i32 0, i32 30
  store float 0.000000e+00, ptr %1467, align 4, !tbaa !53
  %1468 = load ptr, ptr %22, align 8, !tbaa !5
  %1469 = getelementptr inbounds %struct.s_atm, ptr %1468, i32 0, i32 31
  store float 0.000000e+00, ptr %1469, align 8, !tbaa !54
  %1470 = load ptr, ptr %22, align 8, !tbaa !5
  %1471 = getelementptr inbounds %struct.s_atm, ptr %1470, i32 0, i32 33
  store float 0.000000e+00, ptr %1471, align 8, !tbaa !55
  %1472 = load ptr, ptr %22, align 8, !tbaa !5
  %1473 = getelementptr inbounds %struct.s_atm, ptr %1472, i32 0, i32 34
  store i16 0, ptr %1473, align 4, !tbaa !56
  %1474 = load ptr, ptr %22, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.s_atm, ptr %1474, i32 0, i32 24
  %1476 = load float, ptr %1475, align 8, !tbaa !51
  %1477 = load ptr, ptr %6, align 8, !tbaa !5
  %1478 = getelementptr inbounds %struct.s_pdb, ptr %1477, i32 0, i32 23
  %1479 = load float, ptr %1478, align 8, !tbaa !45
  %1480 = fcmp olt float %1476, %1479
  br i1 %1480, label %1481, label %1487

1481:                                             ; preds = %1444
  %1482 = load ptr, ptr %22, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.s_atm, ptr %1482, i32 0, i32 24
  %1484 = load float, ptr %1483, align 8, !tbaa !51
  %1485 = load ptr, ptr %6, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.s_pdb, ptr %1485, i32 0, i32 23
  store float %1484, ptr %1486, align 8, !tbaa !45
  br label %1487

1487:                                             ; preds = %1481, %1444
  %1488 = load ptr, ptr %22, align 8, !tbaa !5
  %1489 = getelementptr inbounds %struct.s_atm, ptr %1488, i32 0, i32 24
  %1490 = load float, ptr %1489, align 8, !tbaa !51
  %1491 = load ptr, ptr %6, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.s_pdb, ptr %1491, i32 0, i32 24
  %1493 = load float, ptr %1492, align 4, !tbaa !46
  %1494 = fcmp ogt float %1490, %1493
  br i1 %1494, label %1495, label %1501

1495:                                             ; preds = %1487
  %1496 = load ptr, ptr %22, align 8, !tbaa !5
  %1497 = getelementptr inbounds %struct.s_atm, ptr %1496, i32 0, i32 24
  %1498 = load float, ptr %1497, align 8, !tbaa !51
  %1499 = load ptr, ptr %6, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.s_pdb, ptr %1499, i32 0, i32 24
  store float %1498, ptr %1500, align 4, !tbaa !46
  br label %1501

1501:                                             ; preds = %1495, %1487
  br label %1502

1502:                                             ; preds = %1501
  %1503 = load i32, ptr %11, align 4, !tbaa !9
  %1504 = add nsw i32 %1503, 1
  store i32 %1504, ptr %11, align 4, !tbaa !9
  br label %1440, !llvm.loop !57

1505:                                             ; preds = %1440
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  %1506 = load ptr, ptr %6, align 8, !tbaa !5
  %1507 = call i32 @get_number_of_h_atoms(ptr noundef %1506)
  store i32 %1507, ptr %34, align 4, !tbaa !9
  %1508 = load i32, ptr %34, align 4, !tbaa !9
  %1509 = load ptr, ptr %6, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct.s_pdb, ptr %1509, i32 0, i32 13
  store i32 %1508, ptr %1510, align 8, !tbaa !58
  %1511 = load i32, ptr %12, align 4, !tbaa !9
  %1512 = load i32, ptr %34, align 4, !tbaa !9
  %1513 = sub nsw i32 %1511, %1512
  %1514 = sitofp i32 %1513 to float
  %1515 = load ptr, ptr %6, align 8, !tbaa !5
  %1516 = getelementptr inbounds %struct.s_pdb, ptr %1515, i32 0, i32 22
  %1517 = load float, ptr %1516, align 4, !tbaa !44
  %1518 = fdiv float %1517, %1514
  store float %1518, ptr %1516, align 4, !tbaa !44
  %1519 = load ptr, ptr %7, align 8, !tbaa !5
  %1520 = icmp ne ptr %1519, null
  br i1 %1520, label %1521, label %1550

1521:                                             ; preds = %1505
  %1522 = load i32, ptr %8, align 4, !tbaa !9
  %1523 = icmp ne i32 %1522, 0
  br i1 %1523, label %1524, label %1550

1524:                                             ; preds = %1521
  %1525 = load i32, ptr %15, align 4, !tbaa !9
  %1526 = icmp eq i32 %1525, 0
  br i1 %1526, label %1532, label %1527

1527:                                             ; preds = %1524
  %1528 = load ptr, ptr %6, align 8, !tbaa !5
  %1529 = getelementptr inbounds %struct.s_pdb, ptr %1528, i32 0, i32 12
  %1530 = load i32, ptr %1529, align 4, !tbaa !59
  %1531 = icmp sle i32 %1530, 0
  br i1 %1531, label %1532, label %1550

1532:                                             ; preds = %1527, %1524
  %1533 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1534 = load ptr, ptr %7, align 8, !tbaa !5
  %1535 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1533, ptr noundef @.str.15, ptr noundef %1534) #5
  %1536 = load ptr, ptr %6, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct.s_pdb, ptr %1536, i32 0, i32 5
  %1538 = load ptr, ptr %1537, align 8, !tbaa !16
  %1539 = icmp ne ptr %1538, null
  br i1 %1539, label %1540, label %1543

1540:                                             ; preds = %1532
  %1541 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1542 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1541, ptr noundef @.str.16) #5
  br label %1543

1543:                                             ; preds = %1540, %1532
  %1544 = load i32, ptr %15, align 4, !tbaa !9
  %1545 = icmp eq i32 %1544, 1
  br i1 %1545, label %1546, label %1549

1546:                                             ; preds = %1543
  %1547 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1548 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1547, ptr noundef @.str.17) #5
  br label %1549

1549:                                             ; preds = %1546, %1543
  br label %1582

1550:                                             ; preds = %1527, %1521, %1505
  %1551 = load i32, ptr %15, align 4, !tbaa !9
  %1552 = icmp eq i32 %1551, 1
  br i1 %1552, label %1553, label %1560

1553:                                             ; preds = %1550
  %1554 = load i32, ptr %14, align 4, !tbaa !9
  %1555 = icmp sle i32 %1554, 0
  br i1 %1555, label %1556, label %1560

1556:                                             ; preds = %1553
  %1557 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1558 = load ptr, ptr %7, align 8, !tbaa !5
  %1559 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1557, ptr noundef @.str.18, ptr noundef %1558) #5
  br label %1581

1560:                                             ; preds = %1553, %1550
  %1561 = load i32, ptr %15, align 4, !tbaa !9
  %1562 = icmp eq i32 %1561, 1
  br i1 %1562, label %1563, label %1568

1563:                                             ; preds = %1560
  %1564 = load ptr, ptr %6, align 8, !tbaa !5
  %1565 = getelementptr inbounds %struct.s_pdb, ptr %1564, i32 0, i32 12
  %1566 = load i32, ptr %1565, align 4, !tbaa !59
  %1567 = icmp sle i32 %1566, 0
  br i1 %1567, label %1576, label %1568

1568:                                             ; preds = %1563, %1560
  %1569 = load ptr, ptr %6, align 8, !tbaa !5
  %1570 = getelementptr inbounds %struct.s_pdb, ptr %1569, i32 0, i32 12
  %1571 = load i32, ptr %1570, align 4, !tbaa !59
  %1572 = icmp sle i32 %1571, 0
  br i1 %1572, label %1573, label %1580

1573:                                             ; preds = %1568
  %1574 = load i32, ptr %14, align 4, !tbaa !9
  %1575 = icmp sgt i32 %1574, 0
  br i1 %1575, label %1576, label %1580

1576:                                             ; preds = %1573, %1563
  %1577 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1578 = load ptr, ptr %7, align 8, !tbaa !5
  %1579 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1577, ptr noundef @.str.19, ptr noundef %1578) #5
  br label %1580

1580:                                             ; preds = %1576, %1573, %1568
  br label %1581

1581:                                             ; preds = %1580, %1556
  br label %1582

1582:                                             ; preds = %1581, %1549
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 5, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 83, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  ret void
}

declare float @pte_get_mass(ptr noundef) #1

declare float @pte_get_vdw_ray(ptr noundef) #1

declare float @pte_get_enegativity(ptr noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { nounwind willreturn memory(read) }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !6, i64 16}
!13 = !{!"s_pdb", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !14, i64 92, !14, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !14, i64 112, !7, i64 116, !7, i64 199, !14, i64 700, !14, i64 704, !14, i64 708, !10, i64 712, !10, i64 716}
!14 = !{!"float", !7, i64 0}
!15 = !{!13, !6, i64 24}
!16 = !{!13, !6, i64 40}
!17 = !{!13, !6, i64 0}
!18 = !{!13, !10, i64 712}
!19 = !{!20, !21, i64 14290}
!20 = !{!"s_fparams", !7, i64 0, !7, i64 2000, !7, i64 4000, !7, i64 6000, !6, i64 14000, !6, i64 14008, !6, i64 14016, !10, i64 14024, !10, i64 14028, !6, i64 14032, !6, i64 14040, !6, i64 14048, !7, i64 14056, !7, i64 14057, !10, i64 14060, !10, i64 14064, !21, i64 14068, !10, i64 14072, !10, i64 14076, !10, i64 14080, !21, i64 14084, !10, i64 14088, !10, i64 14092, !10, i64 14096, !21, i64 14100, !14, i64 14104, !14, i64 14108, !14, i64 14112, !14, i64 14116, !14, i64 14120, !7, i64 14128, !21, i64 14288, !21, i64 14290, !7, i64 14296, !10, i64 14456, !7, i64 14460}
!21 = !{!"short", !7, i64 0}
!22 = !{!20, !10, i64 14456}
!23 = !{!20, !21, i64 14288}
!24 = !{!14, !14, i64 0}
!25 = !{!13, !6, i64 48}
!26 = !{!13, !6, i64 56}
!27 = !{!13, !6, i64 64}
!28 = !{!29, !14, i64 116}
!29 = !{!"s_atm", !10, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !7, i64 32, !7, i64 37, !7, i64 44, !7, i64 60, !7, i64 76, !7, i64 79, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !14, i64 132, !14, i64 136, !14, i64 140, !7, i64 144, !7, i64 145, !14, i64 148, !14, i64 152, !14, i64 156, !14, i64 160, !21, i64 164, !6, i64 168, !10, i64 176}
!30 = !{!29, !14, i64 12}
!31 = !{!29, !14, i64 120}
!32 = !{!29, !10, i64 0}
!33 = !{!29, !10, i64 96}
!34 = !{!29, !10, i64 100}
!35 = !{!13, !10, i64 72}
!36 = !{!21, !21, i64 0}
!37 = !{!20, !6, i64 14008}
!38 = !{!20, !10, i64 14024}
!39 = !{!20, !6, i64 14016}
!40 = !{!13, !6, i64 32}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = distinct !{!43, !42}
!44 = !{!13, !14, i64 700}
!45 = !{!13, !14, i64 704}
!46 = !{!13, !14, i64 708}
!47 = !{!29, !14, i64 132}
!48 = !{!29, !14, i64 136}
!49 = !{!29, !14, i64 140}
!50 = !{!29, !10, i64 112}
!51 = !{!29, !14, i64 128}
!52 = !{!29, !14, i64 156}
!53 = !{!29, !14, i64 148}
!54 = !{!29, !14, i64 152}
!55 = !{!29, !14, i64 160}
!56 = !{!29, !21, i64 164}
!57 = distinct !{!57, !42}
!58 = !{!13, !10, i64 88}
!59 = !{!13, !10, i64 84}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.s_atm = type { i32, float, float, float, float, float, float, float, [5 x i8], [7 x i8], [16 x i8], [16 x i8], [3 x i8], [8 x i8], i32, i32, i32, i32, i32, i32, i32, float, float, float, float, float, float, float, i8, i8, float, float, float, float, i16, ptr, i32 }

@stderr = external local_unnamed_addr global ptr, align 8
@ST_keep_hetatm = external hidden local_unnamed_addr global [1961 x ptr], align 16
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [84 x i8], align 1

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

declare ptr @my_malloc(i64 noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @rpdb_extract_pdb_atom(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local void @rpdb_extract_atm_resname(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strncmp(ptr nocapture noundef, ptr nocapture noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare dso_local i32 @rpdb_extract_atm_resumber(ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local void @rpdb_extract_atom_coordinates(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local void @rpdb_extract_cryst1(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nofree nounwind
declare noundef ptr @fgets(ptr noundef, i32 noundef, ptr nocapture noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @is_ligand(ptr noundef, ptr noundef, i16 noundef zeroext) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @chains_to_delete(ptr noundef, ptr noundef, i32 noundef, i16 noundef zeroext) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local i32 @get_number_of_h_atoms(ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
define dso_local void @rpdb_read(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4) local_unnamed_addr #3 {
  %6 = alloca [83 x i8], align 16
  %7 = alloca [5 x i8], align 1
  %8 = alloca i32, align 4
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 83, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 5, ptr nonnull %7) #7
  %12 = tail call ptr @my_malloc(i64 noundef 2) #7
  %13 = getelementptr inbounds i8, ptr %12, i64 1
  store i8 0, ptr %13, align 1, !tbaa !5
  %14 = getelementptr inbounds i8, ptr %0, i64 16
  %15 = load ptr, ptr %14, align 8, !tbaa !8
  %16 = getelementptr inbounds i8, ptr %0, i64 24
  %17 = load ptr, ptr %16, align 8, !tbaa !13
  %18 = getelementptr inbounds i8, ptr %0, i64 40
  %19 = load ptr, ptr %18, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #7
  store i32 0, ptr %8, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  %20 = load ptr, ptr %0, align 8, !tbaa !16
  %21 = call ptr @fgets(ptr noundef nonnull %6, i32 noundef 82, ptr noundef %20)
  %.not563 = icmp eq ptr %21, null
  br i1 %.not563, label %._crit_edge.thread, label %.lr.ph

._crit_edge.thread:                               ; preds = %5
  %22 = getelementptr inbounds i8, ptr %0, i64 700
  store <2 x float> zeroinitializer, ptr %22, align 4, !tbaa !17
  %23 = getelementptr inbounds i8, ptr %0, i64 708
  store float 0.000000e+00, ptr %23, align 4, !tbaa !18
  br label %617

.lr.ph:                                           ; preds = %5
  %24 = icmp sgt i32 %3, 0
  %25 = getelementptr inbounds i8, ptr %0, i64 712
  %26 = getelementptr inbounds i8, ptr %4, i64 14296
  %27 = getelementptr inbounds i8, ptr %4, i64 14290
  %28 = getelementptr inbounds i8, ptr %0, i64 104
  %29 = getelementptr inbounds i8, ptr %0, i64 108
  %30 = getelementptr inbounds i8, ptr %0, i64 112
  %31 = getelementptr inbounds i8, ptr %0, i64 92
  %32 = getelementptr inbounds i8, ptr %0, i64 96
  %33 = getelementptr inbounds i8, ptr %0, i64 100
  %34 = getelementptr inbounds i8, ptr %6, i64 21
  %35 = getelementptr inbounds i8, ptr %4, i64 14128
  %36 = getelementptr inbounds i8, ptr %4, i64 14456
  %37 = getelementptr inbounds i8, ptr %4, i64 14288
  %38 = getelementptr inbounds i8, ptr %6, i64 16
  %39 = getelementptr inbounds i8, ptr %0, i64 48
  %40 = getelementptr inbounds i8, ptr %0, i64 56
  %41 = getelementptr inbounds i8, ptr %0, i64 64
  %42 = icmp ne ptr %1, null
  %43 = icmp ne i32 %2, 0
  %.not544 = icmp eq i32 %2, 0
  %44 = getelementptr inbounds i8, ptr %1, i64 1
  %45 = getelementptr inbounds i8, ptr %7, i64 1
  %46 = getelementptr inbounds i8, ptr %1, i64 2
  %47 = getelementptr inbounds i8, ptr %7, i64 2
  %48 = getelementptr inbounds i8, ptr %0, i64 32
  %or.cond31 = or i1 %42, %.not544
  %49 = getelementptr inbounds i8, ptr %0, i64 72
  %50 = getelementptr inbounds i8, ptr %4, i64 14008
  %51 = getelementptr inbounds i8, ptr %4, i64 14024
  %52 = getelementptr inbounds i8, ptr %4, i64 14016
  %.not521 = icmp eq ptr %1, null
  br label %53

53:                                               ; preds = %.lr.ph, %590
  %.0481570 = phi i32 [ 0, %.lr.ph ], [ %.3, %590 ]
  %.0483569 = phi i32 [ 0, %.lr.ph ], [ %.2485, %590 ]
  %.0486568 = phi i32 [ 0, %.lr.ph ], [ %.7, %590 ]
  %.0490567 = phi i32 [ 0, %.lr.ph ], [ %.3493, %590 ]
  %.0494566 = phi i32 [ 0, %.lr.ph ], [ %.3497, %590 ]
  %.0498565 = phi i32 [ 0, %.lr.ph ], [ %.2500, %590 ]
  %.0501564 = phi i32 [ 0, %.lr.ph ], [ %.1502593, %590 ]
  %54 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %6, ptr noundef nonnull dereferenceable(1) @.str.4, i64 noundef 5) #8
  %55 = icmp eq i32 %54, 0
  %or.cond = and i1 %24, %55
  %.pre = load i32, ptr %25, align 8, !tbaa !19
  br i1 %or.cond, label %56, label %61

56:                                               ; preds = %53
  %.not515 = icmp eq i32 %.pre, 0
  br i1 %.not515, label %.thread, label %58

.thread:                                          ; preds = %56
  %57 = icmp eq i32 %.0498565, 1
  br label %64

58:                                               ; preds = %56
  %59 = add nsw i32 %.0501564, 1
  %60 = icmp eq i32 %59, %3
  %spec.select = select i1 %60, i32 1, i32 %.0498565
  br label %61

61:                                               ; preds = %58, %53
  %.1502 = phi i32 [ %.0501564, %53 ], [ %59, %58 ]
  %.1499 = phi i32 [ %.0498565, %53 ], [ %spec.select, %58 ]
  %62 = icmp eq i32 %.pre, 0
  %63 = icmp eq i32 %.1499, 1
  %or.cond3 = select i1 %62, i1 true, i1 %63
  br i1 %or.cond3, label %64, label %590

64:                                               ; preds = %.thread, %61
  %65 = phi i1 [ %57, %.thread ], [ %63, %61 ]
  %.1499595 = phi i32 [ %.0498565, %.thread ], [ %.1499, %61 ]
  %.1502594 = phi i32 [ %.0501564, %.thread ], [ %.1502, %61 ]
  %66 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %6, ptr noundef nonnull dereferenceable(1) @.str.5, i64 noundef 5) #8
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %68, label %279

68:                                               ; preds = %64
  %69 = load i16, ptr %27, align 2, !tbaa !20
  %70 = call i32 @is_ligand(ptr noundef nonnull %26, ptr noundef %12, i16 noundef zeroext %69)
  %.not516 = icmp eq i32 %70, 0
  br i1 %.not516, label %71, label %279

71:                                               ; preds = %68
  %72 = load i8, ptr %34, align 1, !tbaa !5
  store i8 %72, ptr %12, align 1, !tbaa !5
  %73 = load i32, ptr %36, align 8, !tbaa !23
  %74 = load i16, ptr %37, align 8, !tbaa !24
  %75 = call i32 @chains_to_delete(ptr noundef nonnull %35, ptr noundef nonnull %12, i32 noundef %73, i16 noundef zeroext %74)
  %.not517 = icmp eq i32 %75, 0
  br i1 %.not517, label %77, label %76

76:                                               ; preds = %71
  call void @rpdb_extract_atom_coordinates(ptr noundef nonnull %6, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11)
  br label %77

77:                                               ; preds = %76, %71
  %78 = load i8, ptr %38, align 16
  %79 = icmp eq i8 %78, 32
  %80 = icmp eq i8 %78, 65
  %or.cond7 = or i1 %79, %80
  %81 = load float, ptr %9, align 4
  %82 = fcmp olt float %81, 9.990000e+03
  %or.cond9 = select i1 %or.cond7, i1 %82, i1 false
  %83 = load float, ptr %10, align 4
  %84 = fcmp olt float %83, 9.990000e+03
  %or.cond11 = select i1 %or.cond9, i1 %84, i1 false
  %85 = load float, ptr %11, align 4
  %86 = fcmp olt float %85, 9.990000e+03
  %or.cond13 = select i1 %or.cond11, i1 %86, i1 false
  br i1 %or.cond13, label %87, label %228

87:                                               ; preds = %77
  %88 = load i32, ptr %36, align 8, !tbaa !23
  %89 = load i16, ptr %37, align 8, !tbaa !24
  %90 = call i32 @chains_to_delete(ptr noundef nonnull %35, ptr noundef nonnull %12, i32 noundef %88, i16 noundef zeroext %89)
  %.not518 = icmp eq i32 %90, 0
  br i1 %.not518, label %93, label %91

91:                                               ; preds = %87
  call void @rpdb_extract_atm_resname(ptr noundef nonnull %6, ptr noundef nonnull %7)
  %92 = call i32 @rpdb_extract_atm_resumber(ptr noundef nonnull %6)
  br label %93

93:                                               ; preds = %91, %87
  %94 = load i16, ptr %27, align 2, !tbaa !20
  %95 = call i32 @is_ligand(ptr noundef nonnull %26, ptr noundef nonnull %12, i16 noundef zeroext %94)
  %.not519 = icmp eq i32 %95, 0
  br i1 %.not519, label %105, label %96

96:                                               ; preds = %93
  %97 = load ptr, ptr %39, align 8, !tbaa !25
  %98 = sext i32 %.0486568 to i64
  %99 = getelementptr inbounds float, ptr %97, i64 %98
  %100 = load ptr, ptr %40, align 8, !tbaa !26
  %101 = getelementptr inbounds float, ptr %100, i64 %98
  %102 = load ptr, ptr %41, align 8, !tbaa !27
  %103 = getelementptr inbounds float, ptr %102, i64 %98
  call void @rpdb_extract_atom_coordinates(ptr noundef nonnull %6, ptr noundef %99, ptr noundef %101, ptr noundef %103)
  %104 = add nsw i32 %.0486568, 1
  br label %105

105:                                              ; preds = %96, %93
  %.1487 = phi i32 [ %104, %96 ], [ %.0486568, %93 ]
  %106 = load i32, ptr %36, align 8, !tbaa !23
  %107 = load i16, ptr %37, align 8, !tbaa !24
  %108 = call i32 @chains_to_delete(ptr noundef nonnull %35, ptr noundef nonnull %12, i32 noundef %106, i16 noundef zeroext %107)
  %.not520 = icmp eq i32 %108, 0
  br i1 %.not520, label %228, label %109

109:                                              ; preds = %105
  br i1 %.not521, label %.critedge, label %110

110:                                              ; preds = %109
  %111 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #8
  %112 = icmp ugt i64 %111, 1
  br i1 %112, label %113, label %159

113:                                              ; preds = %110
  %114 = load i8, ptr %1, align 1, !tbaa !5
  %115 = load i8, ptr %7, align 1, !tbaa !5
  %116 = icmp eq i8 %114, %115
  br i1 %116, label %117, label %.critedge

117:                                              ; preds = %113
  %118 = load i8, ptr %44, align 1, !tbaa !5
  %119 = load i8, ptr %45, align 1, !tbaa !5
  %120 = icmp eq i8 %118, %119
  br i1 %120, label %121, label %.critedge

121:                                              ; preds = %117
  %122 = load i8, ptr %46, align 1, !tbaa !5
  %123 = load i8, ptr %47, align 1, !tbaa !5
  %124 = icmp eq i8 %122, %123
  br i1 %124, label %125, label %.critedge

125:                                              ; preds = %121
  br i1 %.not544, label %228, label %126

126:                                              ; preds = %125
  %127 = sext i32 %.0481570 to i64
  %128 = getelementptr inbounds %struct.s_atm, ptr %15, i64 %127
  %129 = getelementptr inbounds i8, ptr %128, i64 37
  %130 = getelementptr inbounds i8, ptr %128, i64 88
  %131 = getelementptr inbounds i8, ptr %128, i64 32
  %132 = getelementptr inbounds i8, ptr %128, i64 145
  %133 = getelementptr inbounds i8, ptr %128, i64 79
  %134 = getelementptr inbounds i8, ptr %128, i64 44
  %135 = getelementptr inbounds i8, ptr %128, i64 96
  %136 = getelementptr inbounds i8, ptr %128, i64 144
  %137 = getelementptr inbounds i8, ptr %128, i64 20
  %138 = getelementptr inbounds i8, ptr %128, i64 24
  %139 = getelementptr inbounds i8, ptr %128, i64 28
  %140 = getelementptr inbounds i8, ptr %128, i64 124
  %141 = getelementptr inbounds i8, ptr %128, i64 128
  %142 = getelementptr inbounds i8, ptr %128, i64 76
  %143 = getelementptr inbounds i8, ptr %128, i64 108
  call void @rpdb_extract_pdb_atom(ptr noundef nonnull %6, ptr noundef nonnull %129, ptr noundef nonnull %130, ptr noundef nonnull %131, ptr noundef nonnull %132, ptr noundef nonnull %133, ptr noundef nonnull %134, ptr noundef nonnull %135, ptr noundef nonnull %136, ptr noundef nonnull %137, ptr noundef nonnull %138, ptr noundef nonnull %139, ptr noundef nonnull %140, ptr noundef nonnull %141, ptr noundef nonnull %142, ptr noundef nonnull %143, ptr noundef nonnull %8)
  %144 = call float @pte_get_mass(ptr noundef nonnull %142) #7
  %145 = getelementptr inbounds i8, ptr %128, i64 116
  store float %144, ptr %145, align 4, !tbaa !28
  %146 = call float @pte_get_vdw_ray(ptr noundef nonnull %142) #7
  %147 = getelementptr inbounds i8, ptr %128, i64 12
  store float %146, ptr %147, align 4, !tbaa !30
  %148 = call float @pte_get_enegativity(ptr noundef nonnull %142) #7
  %149 = getelementptr inbounds i8, ptr %128, i64 120
  store float %148, ptr %149, align 8, !tbaa !31
  store i32 -1, ptr %128, align 8, !tbaa !32
  %150 = load i32, ptr %135, align 8, !tbaa !33
  %151 = getelementptr inbounds i8, ptr %128, i64 100
  store i32 %150, ptr %151, align 4, !tbaa !34
  %152 = getelementptr inbounds i8, ptr %128, i64 60
  %153 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %152, ptr noundef nonnull dereferenceable(1) %134) #7
  %154 = getelementptr inbounds ptr, ptr %17, i64 %127
  store ptr %128, ptr %154, align 8, !tbaa !35
  %155 = add nsw i32 %.0481570, 1
  %156 = sext i32 %.0490567 to i64
  %157 = getelementptr inbounds ptr, ptr %19, i64 %156
  store ptr %128, ptr %157, align 8, !tbaa !35
  %158 = add nsw i32 %.0490567, 1
  br label %228

159:                                              ; preds = %110
  %160 = icmp eq i64 %111, 1
  br i1 %160, label %161, label %.critedge

161:                                              ; preds = %159
  %162 = load i8, ptr %34, align 1, !tbaa !5
  %163 = load i8, ptr %1, align 1, !tbaa !5
  %164 = icmp eq i8 %162, %163
  br i1 %164, label %165, label %.critedge

165:                                              ; preds = %161
  br i1 %.not544, label %228, label %166

166:                                              ; preds = %165
  %167 = sext i32 %.0481570 to i64
  %168 = getelementptr inbounds %struct.s_atm, ptr %15, i64 %167
  %169 = getelementptr inbounds i8, ptr %168, i64 37
  %170 = getelementptr inbounds i8, ptr %168, i64 88
  %171 = getelementptr inbounds i8, ptr %168, i64 32
  %172 = getelementptr inbounds i8, ptr %168, i64 145
  %173 = getelementptr inbounds i8, ptr %168, i64 79
  %174 = getelementptr inbounds i8, ptr %168, i64 44
  %175 = getelementptr inbounds i8, ptr %168, i64 96
  %176 = getelementptr inbounds i8, ptr %168, i64 144
  %177 = getelementptr inbounds i8, ptr %168, i64 20
  %178 = getelementptr inbounds i8, ptr %168, i64 24
  %179 = getelementptr inbounds i8, ptr %168, i64 28
  %180 = getelementptr inbounds i8, ptr %168, i64 124
  %181 = getelementptr inbounds i8, ptr %168, i64 128
  %182 = getelementptr inbounds i8, ptr %168, i64 76
  %183 = getelementptr inbounds i8, ptr %168, i64 108
  call void @rpdb_extract_pdb_atom(ptr noundef nonnull %6, ptr noundef nonnull %169, ptr noundef nonnull %170, ptr noundef nonnull %171, ptr noundef nonnull %172, ptr noundef nonnull %173, ptr noundef nonnull %174, ptr noundef nonnull %175, ptr noundef nonnull %176, ptr noundef nonnull %177, ptr noundef nonnull %178, ptr noundef nonnull %179, ptr noundef nonnull %180, ptr noundef nonnull %181, ptr noundef nonnull %182, ptr noundef nonnull %183, ptr noundef nonnull %8)
  %184 = call float @pte_get_mass(ptr noundef nonnull %182) #7
  %185 = getelementptr inbounds i8, ptr %168, i64 116
  store float %184, ptr %185, align 4, !tbaa !28
  %186 = call float @pte_get_vdw_ray(ptr noundef nonnull %182) #7
  %187 = getelementptr inbounds i8, ptr %168, i64 12
  store float %186, ptr %187, align 4, !tbaa !30
  %188 = call float @pte_get_enegativity(ptr noundef nonnull %182) #7
  %189 = getelementptr inbounds i8, ptr %168, i64 120
  store float %188, ptr %189, align 8, !tbaa !31
  store i32 -1, ptr %168, align 8, !tbaa !32
  %190 = load i32, ptr %175, align 8, !tbaa !33
  %191 = getelementptr inbounds i8, ptr %168, i64 100
  store i32 %190, ptr %191, align 4, !tbaa !34
  %192 = getelementptr inbounds i8, ptr %168, i64 60
  %193 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %192, ptr noundef nonnull dereferenceable(1) %174) #7
  %194 = getelementptr inbounds ptr, ptr %17, i64 %167
  store ptr %168, ptr %194, align 8, !tbaa !35
  %195 = add nsw i32 %.0481570, 1
  %196 = sext i32 %.0490567 to i64
  %197 = getelementptr inbounds ptr, ptr %19, i64 %196
  store ptr %168, ptr %197, align 8, !tbaa !35
  %198 = add nsw i32 %.0490567, 1
  br label %228

.critedge:                                        ; preds = %121, %117, %113, %109, %161, %159
  %199 = sext i32 %.0481570 to i64
  %200 = getelementptr inbounds %struct.s_atm, ptr %15, i64 %199
  %201 = getelementptr inbounds i8, ptr %200, i64 37
  %202 = getelementptr inbounds i8, ptr %200, i64 88
  %203 = getelementptr inbounds i8, ptr %200, i64 32
  %204 = getelementptr inbounds i8, ptr %200, i64 145
  %205 = getelementptr inbounds i8, ptr %200, i64 79
  %206 = getelementptr inbounds i8, ptr %200, i64 44
  %207 = getelementptr inbounds i8, ptr %200, i64 96
  %208 = getelementptr inbounds i8, ptr %200, i64 144
  %209 = getelementptr inbounds i8, ptr %200, i64 20
  %210 = getelementptr inbounds i8, ptr %200, i64 24
  %211 = getelementptr inbounds i8, ptr %200, i64 28
  %212 = getelementptr inbounds i8, ptr %200, i64 124
  %213 = getelementptr inbounds i8, ptr %200, i64 128
  %214 = getelementptr inbounds i8, ptr %200, i64 76
  %215 = getelementptr inbounds i8, ptr %200, i64 108
  call void @rpdb_extract_pdb_atom(ptr noundef nonnull %6, ptr noundef nonnull %201, ptr noundef nonnull %202, ptr noundef nonnull %203, ptr noundef nonnull %204, ptr noundef nonnull %205, ptr noundef nonnull %206, ptr noundef nonnull %207, ptr noundef nonnull %208, ptr noundef nonnull %209, ptr noundef nonnull %210, ptr noundef nonnull %211, ptr noundef nonnull %212, ptr noundef nonnull %213, ptr noundef nonnull %214, ptr noundef nonnull %215, ptr noundef nonnull %8)
  %216 = call float @pte_get_mass(ptr noundef nonnull %214) #7
  %217 = getelementptr inbounds i8, ptr %200, i64 116
  store float %216, ptr %217, align 4, !tbaa !28
  %218 = call float @pte_get_vdw_ray(ptr noundef nonnull %214) #7
  %219 = getelementptr inbounds i8, ptr %200, i64 12
  store float %218, ptr %219, align 4, !tbaa !30
  %220 = call float @pte_get_enegativity(ptr noundef nonnull %214) #7
  %221 = getelementptr inbounds i8, ptr %200, i64 120
  store float %220, ptr %221, align 8, !tbaa !31
  store i32 -1, ptr %200, align 8, !tbaa !32
  %222 = load i32, ptr %207, align 8, !tbaa !33
  %223 = getelementptr inbounds i8, ptr %200, i64 100
  store i32 %222, ptr %223, align 4, !tbaa !34
  %224 = getelementptr inbounds i8, ptr %200, i64 60
  %225 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %224, ptr noundef nonnull dereferenceable(1) %206) #7
  %226 = getelementptr inbounds ptr, ptr %17, i64 %199
  store ptr %200, ptr %226, align 8, !tbaa !35
  %227 = add nsw i32 %.0481570, 1
  br label %228

228:                                              ; preds = %105, %.critedge, %166, %165, %125, %126, %77
  %.1495 = phi i32 [ 1, %126 ], [ %.0494566, %125 ], [ 1, %166 ], [ %.0494566, %165 ], [ %.0494566, %.critedge ], [ %.0494566, %105 ], [ %.0494566, %77 ]
  %.1491 = phi i32 [ %158, %126 ], [ %.0490567, %125 ], [ %198, %166 ], [ %.0490567, %165 ], [ %.0490567, %.critedge ], [ %.0490567, %105 ], [ %.0490567, %77 ]
  %.2488 = phi i32 [ %.1487, %126 ], [ %.1487, %125 ], [ %.1487, %166 ], [ %.1487, %165 ], [ %.1487, %.critedge ], [ %.1487, %105 ], [ %.0486568, %77 ]
  %.1482 = phi i32 [ %155, %126 ], [ %.0481570, %125 ], [ %195, %166 ], [ %.0481570, %165 ], [ %227, %.critedge ], [ %.0481570, %105 ], [ %.0481570, %77 ]
  %229 = load float, ptr %9, align 4, !tbaa !17
  %230 = fcmp olt float %229, 9.990000e+03
  %231 = load float, ptr %10, align 4
  %232 = fcmp olt float %231, 9.990000e+03
  %or.cond15 = select i1 %230, i1 %232, i1 false
  %233 = load float, ptr %11, align 4
  %234 = fcmp olt float %233, 9.990000e+03
  %or.cond17 = select i1 %or.cond15, i1 %234, i1 false
  br i1 %or.cond17, label %235, label %590

235:                                              ; preds = %228
  %236 = load i32, ptr %49, align 8, !tbaa !36
  %.not524 = icmp eq i32 %236, 0
  br i1 %.not524, label %590, label %237

237:                                              ; preds = %235
  call void @rpdb_extract_atm_resname(ptr noundef nonnull %6, ptr noundef nonnull %7)
  %238 = call i32 @rpdb_extract_atm_resumber(ptr noundef nonnull %6)
  %239 = load i16, ptr %27, align 2, !tbaa !20
  %240 = call i32 @is_ligand(ptr noundef nonnull %26, ptr noundef nonnull %12, i16 noundef zeroext %239)
  %.not525 = icmp eq i32 %240, 0
  br i1 %.not525, label %.critedge551, label %241

241:                                              ; preds = %237
  %242 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) @.str.7, i64 noundef 3) #8
  %.not526 = icmp eq i32 %242, 0
  br i1 %.not526, label %.critedge551, label %243

243:                                              ; preds = %241
  %244 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) @.str.8, i64 noundef 3) #8
  %.not527 = icmp eq i32 %244, 0
  br i1 %.not527, label %.critedge551, label %245

245:                                              ; preds = %243
  %246 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) @.str.9, i64 noundef 3) #8
  %.not561 = icmp eq i32 %246, 0
  br i1 %.not561, label %.critedge551, label %270

.critedge551:                                     ; preds = %243, %241, %237, %245
  %247 = load ptr, ptr %50, align 8, !tbaa !37
  %.not528 = icmp eq ptr %247, null
  br i1 %.not528, label %590, label %248

248:                                              ; preds = %.critedge551
  %249 = load i8, ptr %34, align 1, !tbaa !5
  %250 = load i8, ptr %247, align 1, !tbaa !5
  %251 = icmp eq i8 %249, %250
  br i1 %251, label %252, label %590

252:                                              ; preds = %248
  %253 = load i32, ptr %51, align 8, !tbaa !38
  %254 = icmp eq i32 %238, %253
  br i1 %254, label %255, label %590

255:                                              ; preds = %252
  %256 = load ptr, ptr %52, align 8, !tbaa !39
  %257 = load i8, ptr %256, align 1, !tbaa !5
  %258 = load i8, ptr %7, align 1, !tbaa !5
  %259 = icmp eq i8 %257, %258
  br i1 %259, label %260, label %590

260:                                              ; preds = %255
  %261 = getelementptr inbounds i8, ptr %256, i64 1
  %262 = load i8, ptr %261, align 1, !tbaa !5
  %263 = load i8, ptr %45, align 1, !tbaa !5
  %264 = icmp eq i8 %262, %263
  br i1 %264, label %265, label %590

265:                                              ; preds = %260
  %266 = getelementptr inbounds i8, ptr %256, i64 2
  %267 = load i8, ptr %266, align 1, !tbaa !5
  %268 = load i8, ptr %47, align 1, !tbaa !5
  %269 = icmp eq i8 %267, %268
  br i1 %269, label %270, label %590

270:                                              ; preds = %265, %245
  %271 = load ptr, ptr %39, align 8, !tbaa !25
  %272 = sext i32 %.2488 to i64
  %273 = getelementptr inbounds float, ptr %271, i64 %272
  %274 = load ptr, ptr %40, align 8, !tbaa !26
  %275 = getelementptr inbounds float, ptr %274, i64 %272
  %276 = load ptr, ptr %41, align 8, !tbaa !27
  %277 = getelementptr inbounds float, ptr %276, i64 %272
  call void @rpdb_extract_atom_coordinates(ptr noundef nonnull %6, ptr noundef %273, ptr noundef %275, ptr noundef %277)
  %278 = add nsw i32 %.2488, 1
  br label %590

279:                                              ; preds = %68, %64
  %280 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %6, ptr noundef nonnull dereferenceable(1) @.str.6, i64 noundef 6) #8
  %281 = icmp eq i32 %280, 0
  br i1 %281, label %288, label %282

282:                                              ; preds = %279
  %283 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %6, ptr noundef nonnull dereferenceable(1) @.str.5, i64 noundef 5) #8
  %284 = icmp eq i32 %283, 0
  br i1 %284, label %285, label %578

285:                                              ; preds = %282
  %286 = load i16, ptr %27, align 2, !tbaa !20
  %287 = call i32 @is_ligand(ptr noundef nonnull %26, ptr noundef %12, i16 noundef zeroext %286)
  %.not529 = icmp eq i32 %287, 0
  br i1 %.not529, label %578, label %288

288:                                              ; preds = %285, %279
  %289 = load i8, ptr %34, align 1, !tbaa !5
  store i8 %289, ptr %12, align 1, !tbaa !5
  %290 = load i32, ptr %36, align 8, !tbaa !23
  %291 = load i16, ptr %37, align 8, !tbaa !24
  %292 = call i32 @chains_to_delete(ptr noundef nonnull %35, ptr noundef nonnull %12, i32 noundef %290, i16 noundef zeroext %291)
  %.not533 = icmp eq i32 %292, 0
  br i1 %.not533, label %295, label %293

293:                                              ; preds = %288
  call void @rpdb_extract_atom_coordinates(ptr noundef nonnull %6, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11)
  %294 = call i32 @rpdb_extract_atm_resumber(ptr noundef nonnull %6)
  br label %295

295:                                              ; preds = %293, %288
  %296 = load i8, ptr %38, align 16
  %297 = icmp eq i8 %296, 32
  %298 = icmp eq i8 %296, 65
  %or.cond21 = or i1 %297, %298
  %299 = load float, ptr %9, align 4
  %300 = fcmp olt float %299, 9.990000e+03
  %or.cond23 = select i1 %or.cond21, i1 %300, i1 false
  %301 = load float, ptr %10, align 4
  %302 = fcmp olt float %301, 9.990000e+03
  %or.cond25 = select i1 %or.cond23, i1 %302, i1 false
  %303 = load float, ptr %11, align 4
  %304 = fcmp olt float %303, 9.990000e+03
  %or.cond27 = select i1 %or.cond25, i1 %304, i1 false
  br i1 %or.cond27, label %305, label %.loopexit

305:                                              ; preds = %295
  %306 = load i32, ptr %36, align 8, !tbaa !23
  %307 = load i16, ptr %37, align 8, !tbaa !24
  %308 = call i32 @chains_to_delete(ptr noundef nonnull %35, ptr noundef nonnull %12, i32 noundef %306, i16 noundef zeroext %307)
  %.not534 = icmp eq i32 %308, 0
  br i1 %.not534, label %310, label %309

309:                                              ; preds = %305
  call void @rpdb_extract_atm_resname(ptr noundef nonnull %6, ptr noundef nonnull %7)
  br label %310

310:                                              ; preds = %309, %305
  %311 = load i16, ptr %27, align 2, !tbaa !20
  %312 = call i32 @is_ligand(ptr noundef nonnull %26, ptr noundef nonnull %12, i16 noundef zeroext %311)
  %.not535 = icmp eq i32 %312, 0
  br i1 %.not535, label %322, label %313

313:                                              ; preds = %310
  %314 = load ptr, ptr %39, align 8, !tbaa !25
  %315 = sext i32 %.0486568 to i64
  %316 = getelementptr inbounds float, ptr %314, i64 %315
  %317 = load ptr, ptr %40, align 8, !tbaa !26
  %318 = getelementptr inbounds float, ptr %317, i64 %315
  %319 = load ptr, ptr %41, align 8, !tbaa !27
  %320 = getelementptr inbounds float, ptr %319, i64 %315
  call void @rpdb_extract_atom_coordinates(ptr noundef nonnull %6, ptr noundef %316, ptr noundef %318, ptr noundef %320)
  %321 = add nsw i32 %.0486568, 1
  br label %322

322:                                              ; preds = %313, %310
  %.4 = phi i32 [ %321, %313 ], [ %.0486568, %310 ]
  %323 = load i32, ptr %36, align 8, !tbaa !23
  %324 = load i16, ptr %37, align 8, !tbaa !24
  %325 = call i32 @chains_to_delete(ptr noundef nonnull %35, ptr noundef nonnull %12, i32 noundef %323, i16 noundef zeroext %324)
  %.not536 = icmp eq i32 %325, 0
  br i1 %.not536, label %.loopexit, label %326

326:                                              ; preds = %322
  br i1 %42, label %327, label %.critedge553

327:                                              ; preds = %326
  %328 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #8
  %329 = icmp ugt i64 %328, 1
  %or.cond29 = and i1 %43, %329
  br i1 %or.cond29, label %330, label %375

330:                                              ; preds = %327
  %331 = load i8, ptr %1, align 1, !tbaa !5
  %332 = load i8, ptr %7, align 1, !tbaa !5
  %333 = icmp eq i8 %331, %332
  br i1 %333, label %334, label %.critedge553

334:                                              ; preds = %330
  %335 = load i8, ptr %44, align 1, !tbaa !5
  %336 = load i8, ptr %45, align 1, !tbaa !5
  %337 = icmp eq i8 %335, %336
  br i1 %337, label %338, label %.critedge553

338:                                              ; preds = %334
  %339 = load i8, ptr %46, align 1, !tbaa !5
  %340 = load i8, ptr %47, align 1, !tbaa !5
  %341 = icmp eq i8 %339, %340
  br i1 %341, label %342, label %.critedge553

342:                                              ; preds = %338
  %343 = sext i32 %.0481570 to i64
  %344 = getelementptr inbounds %struct.s_atm, ptr %15, i64 %343
  %345 = getelementptr inbounds i8, ptr %344, i64 37
  %346 = getelementptr inbounds i8, ptr %344, i64 88
  %347 = getelementptr inbounds i8, ptr %344, i64 32
  %348 = getelementptr inbounds i8, ptr %344, i64 145
  %349 = getelementptr inbounds i8, ptr %344, i64 79
  %350 = getelementptr inbounds i8, ptr %344, i64 44
  %351 = getelementptr inbounds i8, ptr %344, i64 96
  %352 = getelementptr inbounds i8, ptr %344, i64 144
  %353 = getelementptr inbounds i8, ptr %344, i64 20
  %354 = getelementptr inbounds i8, ptr %344, i64 24
  %355 = getelementptr inbounds i8, ptr %344, i64 28
  %356 = getelementptr inbounds i8, ptr %344, i64 124
  %357 = getelementptr inbounds i8, ptr %344, i64 128
  %358 = getelementptr inbounds i8, ptr %344, i64 76
  %359 = getelementptr inbounds i8, ptr %344, i64 108
  call void @rpdb_extract_pdb_atom(ptr noundef nonnull %6, ptr noundef nonnull %345, ptr noundef nonnull %346, ptr noundef nonnull %347, ptr noundef nonnull %348, ptr noundef nonnull %349, ptr noundef nonnull %350, ptr noundef nonnull %351, ptr noundef nonnull %352, ptr noundef nonnull %353, ptr noundef nonnull %354, ptr noundef nonnull %355, ptr noundef nonnull %356, ptr noundef nonnull %357, ptr noundef nonnull %358, ptr noundef nonnull %359, ptr noundef nonnull %8)
  %360 = call float @pte_get_mass(ptr noundef nonnull %358) #7
  %361 = getelementptr inbounds i8, ptr %344, i64 116
  store float %360, ptr %361, align 4, !tbaa !28
  %362 = call float @pte_get_vdw_ray(ptr noundef nonnull %358) #7
  %363 = getelementptr inbounds i8, ptr %344, i64 12
  store float %362, ptr %363, align 4, !tbaa !30
  %364 = call float @pte_get_enegativity(ptr noundef nonnull %358) #7
  %365 = getelementptr inbounds i8, ptr %344, i64 120
  store float %364, ptr %365, align 8, !tbaa !31
  store i32 -1, ptr %344, align 8, !tbaa !32
  %366 = load i32, ptr %351, align 8, !tbaa !33
  %367 = getelementptr inbounds i8, ptr %344, i64 100
  store i32 %366, ptr %367, align 4, !tbaa !34
  %368 = getelementptr inbounds i8, ptr %344, i64 60
  %369 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %368, ptr noundef nonnull dereferenceable(1) %350) #7
  %370 = getelementptr inbounds ptr, ptr %17, i64 %343
  store ptr %344, ptr %370, align 8, !tbaa !35
  %371 = sext i32 %.0490567 to i64
  %372 = getelementptr inbounds ptr, ptr %19, i64 %371
  store ptr %344, ptr %372, align 8, !tbaa !35
  %373 = add nsw i32 %.0490567, 1
  %374 = add nsw i32 %.0481570, 1
  br label %.loopexit

375:                                              ; preds = %327
  %376 = icmp eq i64 %328, 1
  br i1 %376, label %377, label %.critedge553

377:                                              ; preds = %375
  %378 = load i8, ptr %1, align 1, !tbaa !5
  %379 = load i8, ptr %34, align 1, !tbaa !5
  %380 = icmp eq i8 %378, %379
  br i1 %380, label %381, label %.critedge553

381:                                              ; preds = %377
  br i1 %.not544, label %.loopexit, label %382

382:                                              ; preds = %381
  %383 = sext i32 %.0481570 to i64
  %384 = getelementptr inbounds %struct.s_atm, ptr %15, i64 %383
  %385 = getelementptr inbounds i8, ptr %384, i64 37
  %386 = getelementptr inbounds i8, ptr %384, i64 88
  %387 = getelementptr inbounds i8, ptr %384, i64 32
  %388 = getelementptr inbounds i8, ptr %384, i64 145
  %389 = getelementptr inbounds i8, ptr %384, i64 79
  %390 = getelementptr inbounds i8, ptr %384, i64 44
  %391 = getelementptr inbounds i8, ptr %384, i64 96
  %392 = getelementptr inbounds i8, ptr %384, i64 144
  %393 = getelementptr inbounds i8, ptr %384, i64 20
  %394 = getelementptr inbounds i8, ptr %384, i64 24
  %395 = getelementptr inbounds i8, ptr %384, i64 28
  %396 = getelementptr inbounds i8, ptr %384, i64 124
  %397 = getelementptr inbounds i8, ptr %384, i64 128
  %398 = getelementptr inbounds i8, ptr %384, i64 76
  %399 = getelementptr inbounds i8, ptr %384, i64 108
  call void @rpdb_extract_pdb_atom(ptr noundef nonnull %6, ptr noundef nonnull %385, ptr noundef nonnull %386, ptr noundef nonnull %387, ptr noundef nonnull %388, ptr noundef nonnull %389, ptr noundef nonnull %390, ptr noundef nonnull %391, ptr noundef nonnull %392, ptr noundef nonnull %393, ptr noundef nonnull %394, ptr noundef nonnull %395, ptr noundef nonnull %396, ptr noundef nonnull %397, ptr noundef nonnull %398, ptr noundef nonnull %399, ptr noundef nonnull %8)
  %400 = call float @pte_get_mass(ptr noundef nonnull %398) #7
  %401 = getelementptr inbounds i8, ptr %384, i64 116
  store float %400, ptr %401, align 4, !tbaa !28
  %402 = call float @pte_get_vdw_ray(ptr noundef nonnull %398) #7
  %403 = getelementptr inbounds i8, ptr %384, i64 12
  store float %402, ptr %403, align 4, !tbaa !30
  %404 = call float @pte_get_enegativity(ptr noundef nonnull %398) #7
  %405 = getelementptr inbounds i8, ptr %384, i64 120
  store float %404, ptr %405, align 8, !tbaa !31
  store i32 -1, ptr %384, align 8, !tbaa !32
  %406 = load i32, ptr %391, align 8, !tbaa !33
  %407 = getelementptr inbounds i8, ptr %384, i64 100
  store i32 %406, ptr %407, align 4, !tbaa !34
  %408 = getelementptr inbounds i8, ptr %384, i64 60
  %409 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %408, ptr noundef nonnull dereferenceable(1) %390) #7
  %410 = getelementptr inbounds ptr, ptr %17, i64 %383
  store ptr %384, ptr %410, align 8, !tbaa !35
  %411 = sext i32 %.0490567 to i64
  %412 = getelementptr inbounds ptr, ptr %19, i64 %411
  store ptr %384, ptr %412, align 8, !tbaa !35
  %413 = add nsw i32 %.0490567, 1
  %414 = add nsw i32 %.0481570, 1
  br label %.loopexit

.critedge553:                                     ; preds = %338, %334, %330, %326, %377, %375
  %415 = load ptr, ptr %48, align 8, !tbaa !40
  %.not537 = icmp eq ptr %415, null
  br i1 %.not537, label %.loopexit, label %416

416:                                              ; preds = %.critedge553
  br i1 %or.cond31, label %423, label %417

417:                                              ; preds = %416
  %418 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) @.str.7, i64 noundef 3) #8
  %.not538 = icmp eq i32 %418, 0
  br i1 %.not538, label %.thread559, label %419

419:                                              ; preds = %417
  %420 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) @.str.8, i64 noundef 3) #8
  %.not539 = icmp eq i32 %420, 0
  br i1 %.not539, label %.thread559, label %421

421:                                              ; preds = %419
  %422 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) @.str.9, i64 noundef 3) #8
  %.not540 = icmp eq i32 %422, 0
  br i1 %.not540, label %.thread559, label %426

423:                                              ; preds = %416
  br i1 %.not544, label %460, label %.thread559

.thread559:                                       ; preds = %417, %419, %421, %423
  %424 = load i16, ptr %27, align 2, !tbaa !20
  %425 = call i32 @is_ligand(ptr noundef nonnull %26, ptr noundef nonnull %12, i16 noundef zeroext %424)
  %.not542 = icmp eq i32 %425, 0
  br i1 %.not542, label %460, label %426

426:                                              ; preds = %.thread559, %421
  %427 = sext i32 %.0481570 to i64
  %428 = getelementptr inbounds %struct.s_atm, ptr %15, i64 %427
  %429 = getelementptr inbounds i8, ptr %428, i64 37
  %430 = getelementptr inbounds i8, ptr %428, i64 88
  %431 = getelementptr inbounds i8, ptr %428, i64 32
  %432 = getelementptr inbounds i8, ptr %428, i64 145
  %433 = getelementptr inbounds i8, ptr %428, i64 79
  %434 = getelementptr inbounds i8, ptr %428, i64 44
  %435 = getelementptr inbounds i8, ptr %428, i64 96
  %436 = getelementptr inbounds i8, ptr %428, i64 144
  %437 = getelementptr inbounds i8, ptr %428, i64 20
  %438 = getelementptr inbounds i8, ptr %428, i64 24
  %439 = getelementptr inbounds i8, ptr %428, i64 28
  %440 = getelementptr inbounds i8, ptr %428, i64 124
  %441 = getelementptr inbounds i8, ptr %428, i64 128
  %442 = getelementptr inbounds i8, ptr %428, i64 76
  %443 = getelementptr inbounds i8, ptr %428, i64 108
  call void @rpdb_extract_pdb_atom(ptr noundef nonnull %6, ptr noundef nonnull %429, ptr noundef nonnull %430, ptr noundef nonnull %431, ptr noundef nonnull %432, ptr noundef nonnull %433, ptr noundef nonnull %434, ptr noundef nonnull %435, ptr noundef nonnull %436, ptr noundef nonnull %437, ptr noundef nonnull %438, ptr noundef nonnull %439, ptr noundef nonnull %440, ptr noundef nonnull %441, ptr noundef nonnull %442, ptr noundef nonnull %443, ptr noundef nonnull %8)
  %444 = call float @pte_get_mass(ptr noundef nonnull %442) #7
  %445 = getelementptr inbounds i8, ptr %428, i64 116
  store float %444, ptr %445, align 4, !tbaa !28
  %446 = call float @pte_get_vdw_ray(ptr noundef nonnull %442) #7
  %447 = getelementptr inbounds i8, ptr %428, i64 12
  store float %446, ptr %447, align 4, !tbaa !30
  %448 = call float @pte_get_enegativity(ptr noundef nonnull %442) #7
  %449 = getelementptr inbounds i8, ptr %428, i64 120
  store float %448, ptr %449, align 8, !tbaa !31
  store i32 -1, ptr %428, align 8, !tbaa !32
  %450 = load i32, ptr %435, align 8, !tbaa !33
  %451 = getelementptr inbounds i8, ptr %428, i64 100
  store i32 %450, ptr %451, align 4, !tbaa !34
  %452 = getelementptr inbounds i8, ptr %428, i64 60
  %453 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %452, ptr noundef nonnull dereferenceable(1) %434) #7
  %454 = getelementptr inbounds ptr, ptr %17, i64 %427
  store ptr %428, ptr %454, align 8, !tbaa !35
  %455 = load ptr, ptr %48, align 8, !tbaa !40
  %456 = sext i32 %.0483569 to i64
  %457 = getelementptr inbounds ptr, ptr %455, i64 %456
  store ptr %428, ptr %457, align 8, !tbaa !35
  %458 = add nsw i32 %.0483569, 1
  %459 = add nsw i32 %.0481570, 1
  br label %.loopexit

460:                                              ; preds = %.thread559, %423
  %461 = load i16, ptr %27, align 2, !tbaa !20
  %462 = call i32 @is_ligand(ptr noundef nonnull %26, ptr noundef nonnull %12, i16 noundef zeroext %461)
  %.not543 = icmp eq i32 %462, 0
  br i1 %.not543, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %460
  %463 = load i8, ptr %7, align 1, !tbaa !5
  %464 = load i8, ptr %45, align 1
  %465 = load i8, ptr %47, align 1
  br label %466

466:                                              ; preds = %527, %.preheader
  %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next.1, %527 ]
  %467 = getelementptr inbounds [1961 x ptr], ptr @ST_keep_hetatm, i64 0, i64 %indvars.iv
  %468 = load ptr, ptr %467, align 16, !tbaa !35
  %469 = load i8, ptr %468, align 1, !tbaa !5
  %470 = icmp eq i8 %469, %463
  br i1 %470, label %471, label %513

471:                                              ; preds = %466
  %472 = getelementptr inbounds i8, ptr %468, i64 1
  %473 = load i8, ptr %472, align 1, !tbaa !5
  %474 = icmp eq i8 %473, %464
  br i1 %474, label %475, label %513

475:                                              ; preds = %471
  %476 = getelementptr inbounds i8, ptr %468, i64 2
  %477 = load i8, ptr %476, align 1, !tbaa !5
  %478 = icmp eq i8 %477, %465
  br i1 %478, label %479, label %513

479:                                              ; preds = %523, %475
  %480 = sext i32 %.0481570 to i64
  %481 = getelementptr inbounds %struct.s_atm, ptr %15, i64 %480
  %482 = getelementptr inbounds i8, ptr %481, i64 37
  %483 = getelementptr inbounds i8, ptr %481, i64 88
  %484 = getelementptr inbounds i8, ptr %481, i64 32
  %485 = getelementptr inbounds i8, ptr %481, i64 145
  %486 = getelementptr inbounds i8, ptr %481, i64 79
  %487 = getelementptr inbounds i8, ptr %481, i64 44
  %488 = getelementptr inbounds i8, ptr %481, i64 96
  %489 = getelementptr inbounds i8, ptr %481, i64 144
  %490 = getelementptr inbounds i8, ptr %481, i64 20
  %491 = getelementptr inbounds i8, ptr %481, i64 24
  %492 = getelementptr inbounds i8, ptr %481, i64 28
  %493 = getelementptr inbounds i8, ptr %481, i64 124
  %494 = getelementptr inbounds i8, ptr %481, i64 128
  %495 = getelementptr inbounds i8, ptr %481, i64 76
  %496 = getelementptr inbounds i8, ptr %481, i64 108
  call void @rpdb_extract_pdb_atom(ptr noundef nonnull %6, ptr noundef nonnull %482, ptr noundef nonnull %483, ptr noundef nonnull %484, ptr noundef nonnull %485, ptr noundef nonnull %486, ptr noundef nonnull %487, ptr noundef nonnull %488, ptr noundef nonnull %489, ptr noundef nonnull %490, ptr noundef nonnull %491, ptr noundef nonnull %492, ptr noundef nonnull %493, ptr noundef nonnull %494, ptr noundef nonnull %495, ptr noundef nonnull %496, ptr noundef nonnull %8)
  %497 = call float @pte_get_mass(ptr noundef nonnull %495) #7
  %498 = getelementptr inbounds i8, ptr %481, i64 116
  store float %497, ptr %498, align 4, !tbaa !28
  %499 = call float @pte_get_vdw_ray(ptr noundef nonnull %495) #7
  %500 = getelementptr inbounds i8, ptr %481, i64 12
  store float %499, ptr %500, align 4, !tbaa !30
  %501 = call float @pte_get_enegativity(ptr noundef nonnull %495) #7
  %502 = getelementptr inbounds i8, ptr %481, i64 120
  store float %501, ptr %502, align 8, !tbaa !31
  store i32 -1, ptr %481, align 8, !tbaa !32
  %503 = load i32, ptr %488, align 8, !tbaa !33
  %504 = getelementptr inbounds i8, ptr %481, i64 100
  store i32 %503, ptr %504, align 4, !tbaa !34
  %505 = getelementptr inbounds i8, ptr %481, i64 60
  %506 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %505, ptr noundef nonnull dereferenceable(1) %487) #7
  %507 = getelementptr inbounds ptr, ptr %17, i64 %480
  store ptr %481, ptr %507, align 8, !tbaa !35
  %508 = load ptr, ptr %48, align 8, !tbaa !40
  %509 = sext i32 %.0483569 to i64
  %510 = getelementptr inbounds ptr, ptr %508, i64 %509
  store ptr %481, ptr %510, align 8, !tbaa !35
  %511 = add nsw i32 %.0483569, 1
  %512 = add nsw i32 %.0481570, 1
  br label %.loopexit

513:                                              ; preds = %466, %471, %475
  %exitcond.not = icmp eq i64 %indvars.iv, 1960
  br i1 %exitcond.not, label %.loopexit, label %514, !llvm.loop !41

514:                                              ; preds = %513
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %515 = getelementptr inbounds [1961 x ptr], ptr @ST_keep_hetatm, i64 0, i64 %indvars.iv.next
  %516 = load ptr, ptr %515, align 8, !tbaa !35
  %517 = load i8, ptr %516, align 1, !tbaa !5
  %518 = icmp eq i8 %517, %463
  br i1 %518, label %519, label %527

519:                                              ; preds = %514
  %520 = getelementptr inbounds i8, ptr %516, i64 1
  %521 = load i8, ptr %520, align 1, !tbaa !5
  %522 = icmp eq i8 %521, %464
  br i1 %522, label %523, label %527

523:                                              ; preds = %519
  %524 = getelementptr inbounds i8, ptr %516, i64 2
  %525 = load i8, ptr %524, align 1, !tbaa !5
  %526 = icmp eq i8 %525, %465
  br i1 %526, label %479, label %527

527:                                              ; preds = %523, %519, %514
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  br label %466

.loopexit:                                        ; preds = %513, %322, %382, %381, %426, %479, %460, %.critedge553, %342, %295
  %.2496 = phi i32 [ 1, %342 ], [ 1, %382 ], [ %.0494566, %381 ], [ %.0494566, %426 ], [ %.0494566, %460 ], [ %.0494566, %479 ], [ %.0494566, %.critedge553 ], [ %.0494566, %322 ], [ %.0494566, %295 ], [ %.0494566, %513 ]
  %.2492 = phi i32 [ %373, %342 ], [ %413, %382 ], [ %.0490567, %381 ], [ %.0490567, %426 ], [ %.0490567, %460 ], [ %.0490567, %479 ], [ %.0490567, %.critedge553 ], [ %.0490567, %322 ], [ %.0490567, %295 ], [ %.0490567, %513 ]
  %.5 = phi i32 [ %.4, %342 ], [ %.4, %382 ], [ %.4, %381 ], [ %.4, %426 ], [ %.4, %460 ], [ %.4, %479 ], [ %.4, %.critedge553 ], [ %.4, %322 ], [ %.0486568, %295 ], [ %.4, %513 ]
  %.1484 = phi i32 [ %.0483569, %342 ], [ %.0483569, %382 ], [ %.0483569, %381 ], [ %458, %426 ], [ %.0483569, %460 ], [ %511, %479 ], [ %.0483569, %.critedge553 ], [ %.0483569, %322 ], [ %.0483569, %295 ], [ %.0483569, %513 ]
  %.2 = phi i32 [ %374, %342 ], [ %414, %382 ], [ %.0481570, %381 ], [ %459, %426 ], [ %.0481570, %460 ], [ %512, %479 ], [ %.0481570, %.critedge553 ], [ %.0481570, %322 ], [ %.0481570, %295 ], [ %.0481570, %513 ]
  %528 = load float, ptr %9, align 4, !tbaa !17
  %529 = fcmp olt float %528, 9.990000e+03
  %530 = load float, ptr %10, align 4
  %531 = fcmp olt float %530, 9.990000e+03
  %or.cond33 = select i1 %529, i1 %531, i1 false
  %532 = load float, ptr %11, align 4
  %533 = fcmp olt float %532, 9.990000e+03
  %or.cond35 = select i1 %or.cond33, i1 %533, i1 false
  br i1 %or.cond35, label %534, label %590

534:                                              ; preds = %.loopexit
  %535 = load i32, ptr %49, align 8, !tbaa !36
  %.not545 = icmp eq i32 %535, 0
  br i1 %.not545, label %590, label %536

536:                                              ; preds = %534
  %537 = call i32 @rpdb_extract_atm_resumber(ptr noundef nonnull %6)
  call void @rpdb_extract_atm_resname(ptr noundef nonnull %6, ptr noundef nonnull %7)
  %538 = load i16, ptr %27, align 2, !tbaa !20
  %539 = call i32 @is_ligand(ptr noundef nonnull %26, ptr noundef nonnull %12, i16 noundef zeroext %538)
  %.not546 = icmp eq i32 %539, 0
  br i1 %.not546, label %.critedge555, label %540

540:                                              ; preds = %536
  %541 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) @.str.7, i64 noundef 3) #8
  %.not547 = icmp eq i32 %541, 0
  br i1 %.not547, label %.critedge555, label %542

542:                                              ; preds = %540
  %543 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) @.str.8, i64 noundef 3) #8
  %.not548 = icmp eq i32 %543, 0
  br i1 %.not548, label %.critedge555, label %544

544:                                              ; preds = %542
  %545 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) @.str.9, i64 noundef 3) #8
  %.not560 = icmp eq i32 %545, 0
  br i1 %.not560, label %.critedge555, label %569

.critedge555:                                     ; preds = %542, %540, %536, %544
  %546 = load ptr, ptr %50, align 8, !tbaa !37
  %.not549 = icmp eq ptr %546, null
  br i1 %.not549, label %590, label %547

547:                                              ; preds = %.critedge555
  %548 = load i8, ptr %34, align 1, !tbaa !5
  %549 = load i8, ptr %546, align 1, !tbaa !5
  %550 = icmp eq i8 %548, %549
  br i1 %550, label %551, label %590

551:                                              ; preds = %547
  %552 = load i32, ptr %51, align 8, !tbaa !38
  %553 = icmp eq i32 %537, %552
  br i1 %553, label %554, label %590

554:                                              ; preds = %551
  %555 = load ptr, ptr %52, align 8, !tbaa !39
  %556 = load i8, ptr %555, align 1, !tbaa !5
  %557 = load i8, ptr %7, align 1, !tbaa !5
  %558 = icmp eq i8 %556, %557
  br i1 %558, label %559, label %590

559:                                              ; preds = %554
  %560 = getelementptr inbounds i8, ptr %555, i64 1
  %561 = load i8, ptr %560, align 1, !tbaa !5
  %562 = load i8, ptr %45, align 1, !tbaa !5
  %563 = icmp eq i8 %561, %562
  br i1 %563, label %564, label %590

564:                                              ; preds = %559
  %565 = getelementptr inbounds i8, ptr %555, i64 2
  %566 = load i8, ptr %565, align 1, !tbaa !5
  %567 = load i8, ptr %47, align 1, !tbaa !5
  %568 = icmp eq i8 %566, %567
  br i1 %568, label %569, label %590

569:                                              ; preds = %564, %544
  %570 = load ptr, ptr %39, align 8, !tbaa !25
  %571 = sext i32 %.5 to i64
  %572 = getelementptr inbounds float, ptr %570, i64 %571
  %573 = load ptr, ptr %40, align 8, !tbaa !26
  %574 = getelementptr inbounds float, ptr %573, i64 %571
  %575 = load ptr, ptr %41, align 8, !tbaa !27
  %576 = getelementptr inbounds float, ptr %575, i64 %571
  call void @rpdb_extract_atom_coordinates(ptr noundef nonnull %6, ptr noundef %572, ptr noundef %574, ptr noundef %576)
  %577 = add nsw i32 %.5, 1
  br label %590

578:                                              ; preds = %285, %282
  %579 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %6, ptr noundef nonnull dereferenceable(1) @.str.13, i64 noundef 6) #8
  %580 = icmp eq i32 %579, 0
  br i1 %580, label %581, label %582

581:                                              ; preds = %578
  call void @rpdb_extract_cryst1(ptr noundef nonnull %6, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %33)
  br label %590

582:                                              ; preds = %578
  br i1 %65, label %583, label %585

583:                                              ; preds = %582
  %584 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %6, ptr noundef nonnull dereferenceable(1) @.str.10, i64 noundef 6) #8
  %.not530 = icmp eq i32 %584, 0
  br i1 %.not530, label %590, label %585

585:                                              ; preds = %583, %582
  %586 = load i32, ptr %25, align 8, !tbaa !19
  %587 = icmp eq i32 %586, 0
  br i1 %587, label %588, label %590

588:                                              ; preds = %585
  %589 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %6, ptr noundef nonnull dereferenceable(1) @.str.14, i64 noundef 3) #8
  %.not531 = icmp eq i32 %589, 0
  br i1 %.not531, label %._crit_edge, label %590

590:                                              ; preds = %583, %.critedge555, %547, %551, %554, %559, %564, %569, %.critedge551, %248, %252, %255, %260, %265, %270, %235, %228, %581, %585, %588, %.loopexit, %534, %61
  %.1502593 = phi i32 [ %.1502594, %534 ], [ %.1502594, %.loopexit ], [ %.1502594, %581 ], [ %.1502594, %588 ], [ %.1502594, %585 ], [ %.1502594, %235 ], [ %.1502594, %228 ], [ %.1502, %61 ], [ %.1502594, %270 ], [ %.1502594, %265 ], [ %.1502594, %260 ], [ %.1502594, %255 ], [ %.1502594, %252 ], [ %.1502594, %248 ], [ %.1502594, %.critedge551 ], [ %.1502594, %569 ], [ %.1502594, %564 ], [ %.1502594, %559 ], [ %.1502594, %554 ], [ %.1502594, %551 ], [ %.1502594, %547 ], [ %.1502594, %.critedge555 ], [ %.1502594, %583 ]
  %.2500 = phi i32 [ %.1499595, %534 ], [ %.1499595, %.loopexit ], [ %.1499595, %581 ], [ %.1499595, %588 ], [ %.1499595, %585 ], [ %.1499595, %235 ], [ %.1499595, %228 ], [ 0, %61 ], [ %.1499595, %270 ], [ %.1499595, %265 ], [ %.1499595, %260 ], [ %.1499595, %255 ], [ %.1499595, %252 ], [ %.1499595, %248 ], [ %.1499595, %.critedge551 ], [ %.1499595, %569 ], [ %.1499595, %564 ], [ %.1499595, %559 ], [ %.1499595, %554 ], [ %.1499595, %551 ], [ %.1499595, %547 ], [ %.1499595, %.critedge555 ], [ 0, %583 ]
  %.3497 = phi i32 [ %.2496, %534 ], [ %.2496, %.loopexit ], [ %.0494566, %581 ], [ %.0494566, %588 ], [ %.0494566, %585 ], [ %.1495, %235 ], [ %.1495, %228 ], [ %.0494566, %61 ], [ %.1495, %270 ], [ %.1495, %265 ], [ %.1495, %260 ], [ %.1495, %255 ], [ %.1495, %252 ], [ %.1495, %248 ], [ %.1495, %.critedge551 ], [ %.2496, %569 ], [ %.2496, %564 ], [ %.2496, %559 ], [ %.2496, %554 ], [ %.2496, %551 ], [ %.2496, %547 ], [ %.2496, %.critedge555 ], [ %.0494566, %583 ]
  %.3493 = phi i32 [ %.2492, %534 ], [ %.2492, %.loopexit ], [ %.0490567, %581 ], [ %.0490567, %588 ], [ %.0490567, %585 ], [ %.1491, %235 ], [ %.1491, %228 ], [ %.0490567, %61 ], [ %.1491, %270 ], [ %.1491, %265 ], [ %.1491, %260 ], [ %.1491, %255 ], [ %.1491, %252 ], [ %.1491, %248 ], [ %.1491, %.critedge551 ], [ %.2492, %569 ], [ %.2492, %564 ], [ %.2492, %559 ], [ %.2492, %554 ], [ %.2492, %551 ], [ %.2492, %547 ], [ %.2492, %.critedge555 ], [ %.0490567, %583 ]
  %.7 = phi i32 [ %.5, %534 ], [ %.5, %.loopexit ], [ %.0486568, %581 ], [ %.0486568, %588 ], [ %.0486568, %585 ], [ %.2488, %235 ], [ %.2488, %228 ], [ %.0486568, %61 ], [ %278, %270 ], [ %.2488, %265 ], [ %.2488, %260 ], [ %.2488, %255 ], [ %.2488, %252 ], [ %.2488, %248 ], [ %.2488, %.critedge551 ], [ %577, %569 ], [ %.5, %564 ], [ %.5, %559 ], [ %.5, %554 ], [ %.5, %551 ], [ %.5, %547 ], [ %.5, %.critedge555 ], [ %.0486568, %583 ]
  %.2485 = phi i32 [ %.1484, %534 ], [ %.1484, %.loopexit ], [ %.0483569, %581 ], [ %.0483569, %588 ], [ %.0483569, %585 ], [ %.0483569, %235 ], [ %.0483569, %228 ], [ %.0483569, %61 ], [ %.0483569, %270 ], [ %.0483569, %265 ], [ %.0483569, %260 ], [ %.0483569, %255 ], [ %.0483569, %252 ], [ %.0483569, %248 ], [ %.0483569, %.critedge551 ], [ %.1484, %569 ], [ %.1484, %564 ], [ %.1484, %559 ], [ %.1484, %554 ], [ %.1484, %551 ], [ %.1484, %547 ], [ %.1484, %.critedge555 ], [ %.0483569, %583 ]
  %.3 = phi i32 [ %.2, %534 ], [ %.2, %.loopexit ], [ %.0481570, %581 ], [ %.0481570, %588 ], [ %.0481570, %585 ], [ %.1482, %235 ], [ %.1482, %228 ], [ %.0481570, %61 ], [ %.1482, %270 ], [ %.1482, %265 ], [ %.1482, %260 ], [ %.1482, %255 ], [ %.1482, %252 ], [ %.1482, %248 ], [ %.1482, %.critedge551 ], [ %.2, %569 ], [ %.2, %564 ], [ %.2, %559 ], [ %.2, %554 ], [ %.2, %551 ], [ %.2, %547 ], [ %.2, %.critedge555 ], [ %.0481570, %583 ]
  %591 = load ptr, ptr %0, align 8, !tbaa !16
  %592 = call ptr @fgets(ptr noundef nonnull %6, i32 noundef 82, ptr noundef %591)
  %.not = icmp eq ptr %592, null
  br i1 %.not, label %._crit_edge, label %53, !llvm.loop !43

._crit_edge:                                      ; preds = %590, %588
  %.0494.lcssa = phi i32 [ %.3497, %590 ], [ %.0494566, %588 ]
  %.0490.lcssa = phi i32 [ %.3493, %590 ], [ %.0490567, %588 ]
  %.0481.lcssa = phi i32 [ %.3, %590 ], [ %.0481570, %588 ]
  %593 = getelementptr inbounds i8, ptr %0, i64 700
  %594 = getelementptr inbounds i8, ptr %0, i64 704
  store <2 x float> zeroinitializer, ptr %593, align 4, !tbaa !17
  %595 = getelementptr inbounds i8, ptr %0, i64 708
  store float 0.000000e+00, ptr %595, align 4, !tbaa !18
  %596 = icmp sgt i32 %.0481.lcssa, 0
  br i1 %596, label %.lr.ph579, label %617

.lr.ph579:                                        ; preds = %._crit_edge
  %wide.trip.count = zext nneg i32 %.0481.lcssa to i64
  br label %597

597:                                              ; preds = %.lr.ph579, %615
  %indvars.iv584 = phi i64 [ 0, %.lr.ph579 ], [ %indvars.iv.next585, %615 ]
  %598 = phi float [ 0.000000e+00, %.lr.ph579 ], [ %616, %615 ]
  %599 = phi float [ 0.000000e+00, %.lr.ph579 ], [ %612, %615 ]
  %600 = phi float [ 0.000000e+00, %.lr.ph579 ], [ %607, %615 ]
  %601 = getelementptr inbounds %struct.s_atm, ptr %15, i64 %indvars.iv584
  %602 = getelementptr inbounds i8, ptr %601, i64 132
  store <2 x float> zeroinitializer, ptr %602, align 4, !tbaa !17
  %603 = getelementptr inbounds i8, ptr %601, i64 140
  store float 0.000000e+00, ptr %603, align 4, !tbaa !44
  %604 = getelementptr inbounds i8, ptr %601, i64 112
  store i32 0, ptr %604, align 8, !tbaa !45
  %605 = getelementptr inbounds i8, ptr %601, i64 128
  %606 = load float, ptr %605, align 8, !tbaa !46
  %607 = fadd float %606, %600
  %608 = getelementptr inbounds i8, ptr %601, i64 148
  %609 = fcmp olt float %606, %599
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(18) %608, i8 0, i64 18, i1 false)
  br i1 %609, label %610, label %611

610:                                              ; preds = %597
  store float %606, ptr %594, align 8, !tbaa !47
  br label %611

611:                                              ; preds = %610, %597
  %612 = phi float [ %606, %610 ], [ %599, %597 ]
  %613 = fcmp ogt float %606, %598
  br i1 %613, label %614, label %615

614:                                              ; preds = %611
  store float %606, ptr %595, align 4, !tbaa !18
  br label %615

615:                                              ; preds = %611, %614
  %616 = phi float [ %598, %611 ], [ %606, %614 ]
  %indvars.iv.next585 = add nuw nsw i64 %indvars.iv584, 1
  %exitcond587.not = icmp eq i64 %indvars.iv.next585, %wide.trip.count
  br i1 %exitcond587.not, label %._crit_edge580, label %597, !llvm.loop !48

._crit_edge580:                                   ; preds = %615
  store float %607, ptr %593, align 4, !tbaa !49
  br label %617

617:                                              ; preds = %._crit_edge.thread, %._crit_edge580, %._crit_edge
  %618 = phi ptr [ %22, %._crit_edge.thread ], [ %593, %._crit_edge580 ], [ %593, %._crit_edge ]
  %.0481.lcssa601 = phi i32 [ 0, %._crit_edge.thread ], [ %.0481.lcssa, %._crit_edge580 ], [ %.0481.lcssa, %._crit_edge ]
  %.0490.lcssa600 = phi i32 [ 0, %._crit_edge.thread ], [ %.0490.lcssa, %._crit_edge580 ], [ %.0490.lcssa, %._crit_edge ]
  %.0494.lcssa599 = phi i32 [ 0, %._crit_edge.thread ], [ %.0494.lcssa, %._crit_edge580 ], [ %.0494.lcssa, %._crit_edge ]
  %619 = call i32 @get_number_of_h_atoms(ptr noundef nonnull %0)
  %620 = getelementptr inbounds i8, ptr %0, i64 88
  store i32 %619, ptr %620, align 8, !tbaa !50
  %621 = sub nsw i32 %.0481.lcssa601, %619
  %622 = sitofp i32 %621 to float
  %623 = load float, ptr %618, align 4, !tbaa !49
  %624 = fdiv float %623, %622
  store float %624, ptr %618, align 4, !tbaa !49
  %625 = icmp ne ptr %1, null
  %626 = icmp ne i32 %2, 0
  %or.cond37 = and i1 %625, %626
  br i1 %or.cond37, label %627, label %645

627:                                              ; preds = %617
  %628 = icmp eq i32 %.0494.lcssa599, 0
  br i1 %628, label %633, label %629

629:                                              ; preds = %627
  %630 = getelementptr inbounds i8, ptr %0, i64 84
  %631 = load i32, ptr %630, align 4, !tbaa !51
  %632 = icmp slt i32 %631, 1
  br i1 %632, label %633, label %645

633:                                              ; preds = %629, %627
  %634 = load ptr, ptr @stderr, align 8, !tbaa !35
  %635 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %634, ptr noundef nonnull @.str.15, ptr noundef nonnull %1) #9
  %636 = load ptr, ptr %18, align 8, !tbaa !14
  %.not532 = icmp eq ptr %636, null
  br i1 %.not532, label %640, label %637

637:                                              ; preds = %633
  %638 = load ptr, ptr @stderr, align 8, !tbaa !35
  %639 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %638, ptr noundef nonnull @.str.16) #9
  br label %640

640:                                              ; preds = %637, %633
  %641 = icmp eq i32 %.0494.lcssa599, 1
  br i1 %641, label %642, label %.thread602

642:                                              ; preds = %640
  %643 = load ptr, ptr @stderr, align 8, !tbaa !35
  %644 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %643, ptr noundef nonnull @.str.17) #9
  br label %.thread602

645:                                              ; preds = %629, %617
  %646 = icmp eq i32 %.0494.lcssa599, 1
  %647 = icmp slt i32 %.0490.lcssa600, 1
  %or.cond39 = select i1 %646, i1 %647, i1 false
  br i1 %or.cond39, label %648, label %651

648:                                              ; preds = %645
  %649 = load ptr, ptr @stderr, align 8, !tbaa !35
  %650 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %649, ptr noundef nonnull @.str.18, ptr noundef %1) #9
  br label %.thread602

651:                                              ; preds = %645
  %652 = getelementptr inbounds i8, ptr %0, i64 84
  %653 = load i32, ptr %652, align 4, !tbaa !51
  %654 = icmp slt i32 %653, 1
  br i1 %646, label %655, label %656

655:                                              ; preds = %651
  br i1 %654, label %658, label %.thread602

656:                                              ; preds = %651
  %657 = icmp sgt i32 %.0490.lcssa600, 0
  %or.cond41 = select i1 %654, i1 %657, i1 false
  br i1 %or.cond41, label %658, label %.thread602

658:                                              ; preds = %656, %655
  %659 = load ptr, ptr @stderr, align 8, !tbaa !35
  %660 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %659, ptr noundef nonnull @.str.19, ptr noundef %1) #9
  br label %.thread602

.thread602:                                       ; preds = %655, %648, %658, %656, %640, %642
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 83, ptr nonnull %6) #7
  ret void
}

declare float @pte_get_mass(ptr noundef) local_unnamed_addr #1

declare float @pte_get_vdw_ray(ptr noundef) local_unnamed_addr #1

declare float @pte_get_enegativity(ptr noundef) local_unnamed_addr #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nofree nounwind willreturn memory(argmem: readwrite) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(read) }
attributes #9 = { cold nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C/C++ TBAA"}
!8 = !{!9, !10, i64 16}
!9 = !{!"s_pdb", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !6, i64 116, !6, i64 199, !12, i64 700, !12, i64 704, !12, i64 708, !11, i64 712, !11, i64 716}
!10 = !{!"any pointer", !6, i64 0}
!11 = !{!"int", !6, i64 0}
!12 = !{!"float", !6, i64 0}
!13 = !{!9, !10, i64 24}
!14 = !{!9, !10, i64 40}
!15 = !{!11, !11, i64 0}
!16 = !{!9, !10, i64 0}
!17 = !{!12, !12, i64 0}
!18 = !{!9, !12, i64 708}
!19 = !{!9, !11, i64 712}
!20 = !{!21, !22, i64 14290}
!21 = !{!"s_fparams", !6, i64 0, !6, i64 2000, !6, i64 4000, !6, i64 6000, !10, i64 14000, !10, i64 14008, !10, i64 14016, !11, i64 14024, !11, i64 14028, !10, i64 14032, !10, i64 14040, !10, i64 14048, !6, i64 14056, !6, i64 14057, !11, i64 14060, !11, i64 14064, !22, i64 14068, !11, i64 14072, !11, i64 14076, !11, i64 14080, !22, i64 14084, !11, i64 14088, !11, i64 14092, !11, i64 14096, !22, i64 14100, !12, i64 14104, !12, i64 14108, !12, i64 14112, !12, i64 14116, !12, i64 14120, !6, i64 14128, !22, i64 14288, !22, i64 14290, !6, i64 14296, !11, i64 14456, !6, i64 14460}
!22 = !{!"short", !6, i64 0}
!23 = !{!21, !11, i64 14456}
!24 = !{!21, !22, i64 14288}
!25 = !{!9, !10, i64 48}
!26 = !{!9, !10, i64 56}
!27 = !{!9, !10, i64 64}
!28 = !{!29, !12, i64 116}
!29 = !{!"s_atm", !11, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !6, i64 32, !6, i64 37, !6, i64 44, !6, i64 60, !6, i64 76, !6, i64 79, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !6, i64 144, !6, i64 145, !12, i64 148, !12, i64 152, !12, i64 156, !12, i64 160, !22, i64 164, !10, i64 168, !11, i64 176}
!30 = !{!29, !12, i64 12}
!31 = !{!29, !12, i64 120}
!32 = !{!29, !11, i64 0}
!33 = !{!29, !11, i64 96}
!34 = !{!29, !11, i64 100}
!35 = !{!10, !10, i64 0}
!36 = !{!9, !11, i64 72}
!37 = !{!21, !10, i64 14008}
!38 = !{!21, !11, i64 14024}
!39 = !{!21, !10, i64 14016}
!40 = !{!9, !10, i64 32}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = distinct !{!43, !42}
!44 = !{!29, !12, i64 140}
!45 = !{!29, !11, i64 112}
!46 = !{!29, !12, i64 128}
!47 = !{!9, !12, i64 704}
!48 = distinct !{!48, !42}
!49 = !{!9, !12, i64 700}
!50 = !{!9, !11, i64 88}
!51 = !{!9, !11, i64 84}


; Effective O3 passes: BDCEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass