; LLVM IR from siconos/siconos :: externals/lbl/metis4/ccgraph.ll_ (ReAdjustMemory)

; 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.graphdef = type { ptr, ptr, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr }

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #0

; Function Attrs: nounwind uwtable
define dso_local void @__ReAdjustMemory(ptr noundef %0, ptr noundef %1, i32 noundef %2) #1 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store i32 %2, ptr %6, align 4, !tbaa !9
  %7 = load ptr, ptr %5, align 8, !tbaa !5
  %8 = getelementptr inbounds %struct.graphdef, ptr %7, i32 0, i32 3
  %9 = load i32, ptr %8, align 4, !tbaa !11
  %10 = icmp sgt i32 %9, 100000
  br i1 %10, label %11, label %404

11:                                               ; preds = %3
  %12 = load ptr, ptr %4, align 8, !tbaa !5
  %13 = getelementptr inbounds %struct.graphdef, ptr %12, i32 0, i32 3
  %14 = load i32, ptr %13, align 4, !tbaa !11
  %15 = sitofp i32 %14 to double
  %16 = load ptr, ptr %4, align 8, !tbaa !5
  %17 = getelementptr inbounds %struct.graphdef, ptr %16, i32 0, i32 3
  %18 = load i32, ptr %17, align 4, !tbaa !11
  %19 = sitofp i32 %18 to double
  %20 = fmul double 0x3FE6666666666666, %19
  %21 = fcmp olt double %15, %20
  br i1 %21, label %22, label %404

22:                                               ; preds = %11
  %23 = load ptr, ptr %5, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct.graphdef, ptr %23, i32 0, i32 7
  %25 = load ptr, ptr %24, align 8, !tbaa !13
  %26 = load ptr, ptr %5, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct.graphdef, ptr %26, i32 0, i32 3
  %28 = load i32, ptr %27, align 4, !tbaa !11
  %29 = sext i32 %28 to i64
  %30 = getelementptr inbounds i32, ptr %25, i64 %29
  %31 = load ptr, ptr %5, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.graphdef, ptr %31, i32 0, i32 8
  %33 = load ptr, ptr %32, align 8, !tbaa !14
  %34 = load ptr, ptr %5, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.graphdef, ptr %34, i32 0, i32 3
  %36 = load i32, ptr %35, align 4, !tbaa !11
  %37 = sext i32 %36 to i64
  %38 = mul i64 4, %37
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %30, ptr align 1 %33, i64 %38, i1 false)
  %39 = load ptr, ptr %4, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.graphdef, ptr %39, i32 0, i32 24
  %41 = load i32, ptr %40, align 8, !tbaa !15
  %42 = icmp eq i32 %41, 1
  br i1 %42, label %43, label %235

43:                                               ; preds = %22
  %44 = load i32, ptr %6, align 4, !tbaa !9
  %45 = icmp ne i32 %44, 0
  br i1 %45, label %46, label %146

46:                                               ; preds = %43
  %47 = load ptr, ptr %5, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.graphdef, ptr %47, i32 0, i32 0
  %49 = load ptr, ptr %48, align 8, !tbaa !16
  %50 = load ptr, ptr %5, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.graphdef, ptr %50, i32 0, i32 2
  %52 = load i32, ptr %51, align 8, !tbaa !17
  %53 = mul nsw i32 5, %52
  %54 = add nsw i32 %53, 1
  %55 = load ptr, ptr %5, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.graphdef, ptr %55, i32 0, i32 3
  %57 = load i32, ptr %56, align 4, !tbaa !11
  %58 = mul nsw i32 2, %57
  %59 = add nsw i32 %54, %58
  %60 = sext i32 %59 to i64
  %61 = mul i64 %60, 4
  %62 = call ptr @realloc(ptr noundef %49, i64 noundef %61) #3
  %63 = load ptr, ptr %5, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.graphdef, ptr %63, i32 0, i32 0
  store ptr %62, ptr %64, align 8, !tbaa !16
  %65 = load ptr, ptr %5, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.graphdef, ptr %65, i32 0, i32 0
  %67 = load ptr, ptr %66, align 8, !tbaa !16
  %68 = load ptr, ptr %5, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.graphdef, ptr %68, i32 0, i32 4
  store ptr %67, ptr %69, align 8, !tbaa !18
  %70 = load ptr, ptr %5, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.graphdef, ptr %70, i32 0, i32 0
  %72 = load ptr, ptr %71, align 8, !tbaa !16
  %73 = load ptr, ptr %5, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.graphdef, ptr %73, i32 0, i32 2
  %75 = load i32, ptr %74, align 8, !tbaa !17
  %76 = sext i32 %75 to i64
  %77 = getelementptr inbounds i32, ptr %72, i64 %76
  %78 = getelementptr inbounds i32, ptr %77, i64 1
  %79 = load ptr, ptr %5, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.graphdef, ptr %79, i32 0, i32 5
  store ptr %78, ptr %80, align 8, !tbaa !19
  %81 = load ptr, ptr %5, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.graphdef, ptr %81, i32 0, i32 0
  %83 = load ptr, ptr %82, align 8, !tbaa !16
  %84 = load ptr, ptr %5, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.graphdef, ptr %84, i32 0, i32 2
  %86 = load i32, ptr %85, align 8, !tbaa !17
  %87 = mul nsw i32 2, %86
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds i32, ptr %83, i64 %88
  %90 = getelementptr inbounds i32, ptr %89, i64 1
  %91 = load ptr, ptr %5, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.graphdef, ptr %91, i32 0, i32 6
  store ptr %90, ptr %92, align 8, !tbaa !20
  %93 = load ptr, ptr %5, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.graphdef, ptr %93, i32 0, i32 0
  %95 = load ptr, ptr %94, align 8, !tbaa !16
  %96 = load ptr, ptr %5, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.graphdef, ptr %96, i32 0, i32 2
  %98 = load i32, ptr %97, align 8, !tbaa !17
  %99 = mul nsw i32 3, %98
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds i32, ptr %95, i64 %100
  %102 = getelementptr inbounds i32, ptr %101, i64 1
  %103 = load ptr, ptr %5, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.graphdef, ptr %103, i32 0, i32 9
  store ptr %102, ptr %104, align 8, !tbaa !21
  %105 = load ptr, ptr %5, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.graphdef, ptr %105, i32 0, i32 0
  %107 = load ptr, ptr %106, align 8, !tbaa !16
  %108 = load ptr, ptr %5, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.graphdef, ptr %108, i32 0, i32 2
  %110 = load i32, ptr %109, align 8, !tbaa !17
  %111 = mul nsw i32 4, %110
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds i32, ptr %107, i64 %112
  %114 = getelementptr inbounds i32, ptr %113, i64 1
  %115 = load ptr, ptr %5, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.graphdef, ptr %115, i32 0, i32 11
  store ptr %114, ptr %116, align 8, !tbaa !22
  %117 = load ptr, ptr %5, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.graphdef, ptr %117, i32 0, i32 0
  %119 = load ptr, ptr %118, align 8, !tbaa !16
  %120 = load ptr, ptr %5, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.graphdef, ptr %120, i32 0, i32 2
  %122 = load i32, ptr %121, align 8, !tbaa !17
  %123 = mul nsw i32 5, %122
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds i32, ptr %119, i64 %124
  %126 = getelementptr inbounds i32, ptr %125, i64 1
  %127 = load ptr, ptr %5, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.graphdef, ptr %127, i32 0, i32 7
  store ptr %126, ptr %128, align 8, !tbaa !13
  %129 = load ptr, ptr %5, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.graphdef, ptr %129, i32 0, i32 0
  %131 = load ptr, ptr %130, align 8, !tbaa !16
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.graphdef, ptr %132, i32 0, i32 2
  %134 = load i32, ptr %133, align 8, !tbaa !17
  %135 = mul nsw i32 5, %134
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds i32, ptr %131, i64 %136
  %138 = getelementptr inbounds i32, ptr %137, i64 1
  %139 = load ptr, ptr %5, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.graphdef, ptr %139, i32 0, i32 3
  %141 = load i32, ptr %140, align 4, !tbaa !11
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds i32, ptr %138, i64 %142
  %144 = load ptr, ptr %5, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.graphdef, ptr %144, i32 0, i32 8
  store ptr %143, ptr %145, align 8, !tbaa !14
  br label %234

146:                                              ; preds = %43
  %147 = load ptr, ptr %5, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.graphdef, ptr %147, i32 0, i32 0
  %149 = load ptr, ptr %148, align 8, !tbaa !16
  %150 = load ptr, ptr %5, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.graphdef, ptr %150, i32 0, i32 2
  %152 = load i32, ptr %151, align 8, !tbaa !17
  %153 = mul nsw i32 4, %152
  %154 = add nsw i32 %153, 1
  %155 = load ptr, ptr %5, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.graphdef, ptr %155, i32 0, i32 3
  %157 = load i32, ptr %156, align 4, !tbaa !11
  %158 = mul nsw i32 2, %157
  %159 = add nsw i32 %154, %158
  %160 = sext i32 %159 to i64
  %161 = mul i64 %160, 4
  %162 = call ptr @realloc(ptr noundef %149, i64 noundef %161) #3
  %163 = load ptr, ptr %5, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.graphdef, ptr %163, i32 0, i32 0
  store ptr %162, ptr %164, align 8, !tbaa !16
  %165 = load ptr, ptr %5, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.graphdef, ptr %165, i32 0, i32 0
  %167 = load ptr, ptr %166, align 8, !tbaa !16
  %168 = load ptr, ptr %5, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.graphdef, ptr %168, i32 0, i32 4
  store ptr %167, ptr %169, align 8, !tbaa !18
  %170 = load ptr, ptr %5, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.graphdef, ptr %170, i32 0, i32 0
  %172 = load ptr, ptr %171, align 8, !tbaa !16
  %173 = load ptr, ptr %5, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.graphdef, ptr %173, i32 0, i32 2
  %175 = load i32, ptr %174, align 8, !tbaa !17
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds i32, ptr %172, i64 %176
  %178 = getelementptr inbounds i32, ptr %177, i64 1
  %179 = load ptr, ptr %5, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.graphdef, ptr %179, i32 0, i32 5
  store ptr %178, ptr %180, align 8, !tbaa !19
  %181 = load ptr, ptr %5, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.graphdef, ptr %181, i32 0, i32 0
  %183 = load ptr, ptr %182, align 8, !tbaa !16
  %184 = load ptr, ptr %5, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.graphdef, ptr %184, i32 0, i32 2
  %186 = load i32, ptr %185, align 8, !tbaa !17
  %187 = mul nsw i32 2, %186
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds i32, ptr %183, i64 %188
  %190 = getelementptr inbounds i32, ptr %189, i64 1
  %191 = load ptr, ptr %5, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.graphdef, ptr %191, i32 0, i32 9
  store ptr %190, ptr %192, align 8, !tbaa !21
  %193 = load ptr, ptr %5, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.graphdef, ptr %193, i32 0, i32 0
  %195 = load ptr, ptr %194, align 8, !tbaa !16
  %196 = load ptr, ptr %5, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.graphdef, ptr %196, i32 0, i32 2
  %198 = load i32, ptr %197, align 8, !tbaa !17
  %199 = mul nsw i32 3, %198
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds i32, ptr %195, i64 %200
  %202 = getelementptr inbounds i32, ptr %201, i64 1
  %203 = load ptr, ptr %5, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.graphdef, ptr %203, i32 0, i32 11
  store ptr %202, ptr %204, align 8, !tbaa !22
  %205 = load ptr, ptr %5, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.graphdef, ptr %205, i32 0, i32 0
  %207 = load ptr, ptr %206, align 8, !tbaa !16
  %208 = load ptr, ptr %5, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.graphdef, ptr %208, i32 0, i32 2
  %210 = load i32, ptr %209, align 8, !tbaa !17
  %211 = mul nsw i32 4, %210
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds i32, ptr %207, i64 %212
  %214 = getelementptr inbounds i32, ptr %213, i64 1
  %215 = load ptr, ptr %5, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.graphdef, ptr %215, i32 0, i32 7
  store ptr %214, ptr %216, align 8, !tbaa !13
  %217 = load ptr, ptr %5, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.graphdef, ptr %217, i32 0, i32 0
  %219 = load ptr, ptr %218, align 8, !tbaa !16
  %220 = load ptr, ptr %5, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.graphdef, ptr %220, i32 0, i32 2
  %222 = load i32, ptr %221, align 8, !tbaa !17
  %223 = mul nsw i32 4, %222
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds i32, ptr %219, i64 %224
  %226 = getelementptr inbounds i32, ptr %225, i64 1
  %227 = load ptr, ptr %5, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.graphdef, ptr %227, i32 0, i32 3
  %229 = load i32, ptr %228, align 4, !tbaa !11
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds i32, ptr %226, i64 %230
  %232 = load ptr, ptr %5, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.graphdef, ptr %232, i32 0, i32 8
  store ptr %231, ptr %233, align 8, !tbaa !14
  br label %234

234:                                              ; preds = %146, %46
  br label %403

235:                                              ; preds = %22
  %236 = load i32, ptr %6, align 4, !tbaa !9
  %237 = icmp ne i32 %236, 0
  br i1 %237, label %238, label %326

238:                                              ; preds = %235
  %239 = load ptr, ptr %5, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.graphdef, ptr %239, i32 0, i32 0
  %241 = load ptr, ptr %240, align 8, !tbaa !16
  %242 = load ptr, ptr %5, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.graphdef, ptr %242, i32 0, i32 2
  %244 = load i32, ptr %243, align 8, !tbaa !17
  %245 = mul nsw i32 4, %244
  %246 = add nsw i32 %245, 1
  %247 = load ptr, ptr %5, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.graphdef, ptr %247, i32 0, i32 3
  %249 = load i32, ptr %248, align 4, !tbaa !11
  %250 = mul nsw i32 2, %249
  %251 = add nsw i32 %246, %250
  %252 = sext i32 %251 to i64
  %253 = mul i64 %252, 4
  %254 = call ptr @realloc(ptr noundef %241, i64 noundef %253) #3
  %255 = load ptr, ptr %5, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.graphdef, ptr %255, i32 0, i32 0
  store ptr %254, ptr %256, align 8, !tbaa !16
  %257 = load ptr, ptr %5, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.graphdef, ptr %257, i32 0, i32 0
  %259 = load ptr, ptr %258, align 8, !tbaa !16
  %260 = load ptr, ptr %5, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.graphdef, ptr %260, i32 0, i32 4
  store ptr %259, ptr %261, align 8, !tbaa !18
  %262 = load ptr, ptr %5, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.graphdef, ptr %262, i32 0, i32 0
  %264 = load ptr, ptr %263, align 8, !tbaa !16
  %265 = load ptr, ptr %5, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.graphdef, ptr %265, i32 0, i32 2
  %267 = load i32, ptr %266, align 8, !tbaa !17
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds i32, ptr %264, i64 %268
  %270 = getelementptr inbounds i32, ptr %269, i64 1
  %271 = load ptr, ptr %5, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.graphdef, ptr %271, i32 0, i32 6
  store ptr %270, ptr %272, align 8, !tbaa !20
  %273 = load ptr, ptr %5, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.graphdef, ptr %273, i32 0, i32 0
  %275 = load ptr, ptr %274, align 8, !tbaa !16
  %276 = load ptr, ptr %5, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.graphdef, ptr %276, i32 0, i32 2
  %278 = load i32, ptr %277, align 8, !tbaa !17
  %279 = mul nsw i32 2, %278
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds i32, ptr %275, i64 %280
  %282 = getelementptr inbounds i32, ptr %281, i64 1
  %283 = load ptr, ptr %5, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.graphdef, ptr %283, i32 0, i32 9
  store ptr %282, ptr %284, align 8, !tbaa !21
  %285 = load ptr, ptr %5, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.graphdef, ptr %285, i32 0, i32 0
  %287 = load ptr, ptr %286, align 8, !tbaa !16
  %288 = load ptr, ptr %5, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.graphdef, ptr %288, i32 0, i32 2
  %290 = load i32, ptr %289, align 8, !tbaa !17
  %291 = mul nsw i32 3, %290
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds i32, ptr %287, i64 %292
  %294 = getelementptr inbounds i32, ptr %293, i64 1
  %295 = load ptr, ptr %5, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.graphdef, ptr %295, i32 0, i32 11
  store ptr %294, ptr %296, align 8, !tbaa !22
  %297 = load ptr, ptr %5, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.graphdef, ptr %297, i32 0, i32 0
  %299 = load ptr, ptr %298, align 8, !tbaa !16
  %300 = load ptr, ptr %5, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.graphdef, ptr %300, i32 0, i32 2
  %302 = load i32, ptr %301, align 8, !tbaa !17
  %303 = mul nsw i32 4, %302
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds i32, ptr %299, i64 %304
  %306 = getelementptr inbounds i32, ptr %305, i64 1
  %307 = load ptr, ptr %5, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.graphdef, ptr %307, i32 0, i32 7
  store ptr %306, ptr %308, align 8, !tbaa !13
  %309 = load ptr, ptr %5, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.graphdef, ptr %309, i32 0, i32 0
  %311 = load ptr, ptr %310, align 8, !tbaa !16
  %312 = load ptr, ptr %5, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.graphdef, ptr %312, i32 0, i32 2
  %314 = load i32, ptr %313, align 8, !tbaa !17
  %315 = mul nsw i32 4, %314
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds i32, ptr %311, i64 %316
  %318 = getelementptr inbounds i32, ptr %317, i64 1
  %319 = load ptr, ptr %5, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.graphdef, ptr %319, i32 0, i32 3
  %321 = load i32, ptr %320, align 4, !tbaa !11
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds i32, ptr %318, i64 %322
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.graphdef, ptr %324, i32 0, i32 8
  store ptr %323, ptr %325, align 8, !tbaa !14
  br label %402

326:                                              ; preds = %235
  %327 = load ptr, ptr %5, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.graphdef, ptr %327, i32 0, i32 0
  %329 = load ptr, ptr %328, align 8, !tbaa !16
  %330 = load ptr, ptr %5, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.graphdef, ptr %330, i32 0, i32 2
  %332 = load i32, ptr %331, align 8, !tbaa !17
  %333 = mul nsw i32 3, %332
  %334 = add nsw i32 %333, 1
  %335 = load ptr, ptr %5, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.graphdef, ptr %335, i32 0, i32 3
  %337 = load i32, ptr %336, align 4, !tbaa !11
  %338 = mul nsw i32 2, %337
  %339 = add nsw i32 %334, %338
  %340 = sext i32 %339 to i64
  %341 = mul i64 %340, 4
  %342 = call ptr @realloc(ptr noundef %329, i64 noundef %341) #3
  %343 = load ptr, ptr %5, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.graphdef, ptr %343, i32 0, i32 0
  store ptr %342, ptr %344, align 8, !tbaa !16
  %345 = load ptr, ptr %5, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.graphdef, ptr %345, i32 0, i32 0
  %347 = load ptr, ptr %346, align 8, !tbaa !16
  %348 = load ptr, ptr %5, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.graphdef, ptr %348, i32 0, i32 4
  store ptr %347, ptr %349, align 8, !tbaa !18
  %350 = load ptr, ptr %5, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.graphdef, ptr %350, i32 0, i32 0
  %352 = load ptr, ptr %351, align 8, !tbaa !16
  %353 = load ptr, ptr %5, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.graphdef, ptr %353, i32 0, i32 2
  %355 = load i32, ptr %354, align 8, !tbaa !17
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds i32, ptr %352, i64 %356
  %358 = getelementptr inbounds i32, ptr %357, i64 1
  %359 = load ptr, ptr %5, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.graphdef, ptr %359, i32 0, i32 9
  store ptr %358, ptr %360, align 8, !tbaa !21
  %361 = load ptr, ptr %5, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.graphdef, ptr %361, i32 0, i32 0
  %363 = load ptr, ptr %362, align 8, !tbaa !16
  %364 = load ptr, ptr %5, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.graphdef, ptr %364, i32 0, i32 2
  %366 = load i32, ptr %365, align 8, !tbaa !17
  %367 = mul nsw i32 2, %366
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds i32, ptr %363, i64 %368
  %370 = getelementptr inbounds i32, ptr %369, i64 1
  %371 = load ptr, ptr %5, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.graphdef, ptr %371, i32 0, i32 11
  store ptr %370, ptr %372, align 8, !tbaa !22
  %373 = load ptr, ptr %5, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.graphdef, ptr %373, i32 0, i32 0
  %375 = load ptr, ptr %374, align 8, !tbaa !16
  %376 = load ptr, ptr %5, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.graphdef, ptr %376, i32 0, i32 2
  %378 = load i32, ptr %377, align 8, !tbaa !17
  %379 = mul nsw i32 3, %378
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds i32, ptr %375, i64 %380
  %382 = getelementptr inbounds i32, ptr %381, i64 1
  %383 = load ptr, ptr %5, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.graphdef, ptr %383, i32 0, i32 7
  store ptr %382, ptr %384, align 8, !tbaa !13
  %385 = load ptr, ptr %5, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.graphdef, ptr %385, i32 0, i32 0
  %387 = load ptr, ptr %386, align 8, !tbaa !16
  %388 = load ptr, ptr %5, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.graphdef, ptr %388, i32 0, i32 2
  %390 = load i32, ptr %389, align 8, !tbaa !17
  %391 = mul nsw i32 3, %390
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds i32, ptr %387, i64 %392
  %394 = getelementptr inbounds i32, ptr %393, i64 1
  %395 = load ptr, ptr %5, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.graphdef, ptr %395, i32 0, i32 3
  %397 = load i32, ptr %396, align 4, !tbaa !11
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds i32, ptr %394, i64 %398
  %400 = load ptr, ptr %5, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.graphdef, ptr %400, i32 0, i32 8
  store ptr %399, ptr %401, align 8, !tbaa !14
  br label %402

402:                                              ; preds = %326, %238
  br label %403

403:                                              ; preds = %402, %234
  br label %404

404:                                              ; preds = %403, %11, %3
  ret void
}

; Function Attrs: nounwind allocsize(1)
declare ptr @realloc(ptr noundef, i64 noundef) #2

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nounwind allocsize(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 #3 = { nounwind allocsize(1) }

!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 = !{!12, !10, i64 20}
!12 = !{!"graphdef", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !10, i64 92, !6, i64 96, !6, i64 104, !10, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !10, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208}
!13 = !{!12, !6, i64 48}
!14 = !{!12, !6, i64 56}
!15 = !{!12, !10, i64 176}
!16 = !{!12, !6, i64 0}
!17 = !{!12, !10, i64 16}
!18 = !{!12, !6, i64 24}
!19 = !{!12, !6, i64 32}
!20 = !{!12, !6, i64 40}
!21 = !{!12, !6, i64 64}
!22 = !{!12, !6, i64 80}


; 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"

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #0

; Function Attrs: mustprogress nounwind willreturn uwtable
define dso_local void @__ReAdjustMemory(ptr nocapture noundef readonly %0, ptr nocapture noundef %1, i32 noundef %2) local_unnamed_addr #1 {
  %4 = getelementptr inbounds i8, ptr %1, i64 20
  %5 = load i32, ptr %4, align 4, !tbaa !5
  %6 = icmp sgt i32 %5, 100000
  br i1 %6, label %7, label %129

7:                                                ; preds = %3
  %8 = getelementptr inbounds i8, ptr %0, i64 20
  %9 = load i32, ptr %8, align 4, !tbaa !5
  %10 = sitofp i32 %9 to double
  %11 = fmul double %10, 0x3FE6666666666666
  %12 = fcmp ogt double %11, %10
  br i1 %12, label %13, label %129

13:                                               ; preds = %7
  %14 = getelementptr inbounds i8, ptr %1, i64 48
  %15 = load ptr, ptr %14, align 8, !tbaa !11
  %16 = zext nneg i32 %5 to i64
  %17 = getelementptr inbounds i32, ptr %15, i64 %16
  %18 = getelementptr inbounds i8, ptr %1, i64 56
  %19 = load ptr, ptr %18, align 8, !tbaa !12
  %20 = shl nuw nsw i64 %16, 2
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %17, ptr align 1 %19, i64 %20, i1 false)
  %21 = getelementptr inbounds i8, ptr %0, i64 176
  %22 = load i32, ptr %21, align 8, !tbaa !13
  %23 = icmp eq i32 %22, 1
  %.not97 = icmp eq i32 %2, 0
  %24 = load ptr, ptr %1, align 8, !tbaa !14
  %25 = getelementptr inbounds i8, ptr %1, i64 16
  %26 = load i32, ptr %25, align 8, !tbaa !15
  %27 = load i32, ptr %4, align 4, !tbaa !5
  %28 = shl nsw i32 %27, 1
  %29 = getelementptr inbounds i8, ptr %1, i64 24
  br i1 %23, label %30, label %81

30:                                               ; preds = %13
  %31 = getelementptr inbounds i8, ptr %1, i64 32
  br i1 %.not97, label %59, label %32

32:                                               ; preds = %30
  %33 = mul nsw i32 %26, 5
  %34 = add nsw i32 %33, 1
  %35 = add nsw i32 %34, %28
  %36 = sext i32 %35 to i64
  %37 = shl nsw i64 %36, 2
  %38 = tail call ptr @realloc(ptr noundef %24, i64 noundef %37) #3
  store ptr %38, ptr %1, align 8, !tbaa !14
  store ptr %38, ptr %29, align 8, !tbaa !16
  %39 = load i32, ptr %25, align 8, !tbaa !15
  %40 = sext i32 %39 to i64
  %41 = getelementptr inbounds i32, ptr %38, i64 %40
  %42 = getelementptr inbounds i8, ptr %41, i64 4
  store ptr %42, ptr %31, align 8, !tbaa !17
  %43 = shl nsw i32 %39, 1
  %44 = sext i32 %43 to i64
  %45 = getelementptr inbounds i32, ptr %38, i64 %44
  %46 = getelementptr inbounds i8, ptr %45, i64 4
  %47 = getelementptr inbounds i8, ptr %1, i64 40
  store ptr %46, ptr %47, align 8, !tbaa !18
  %48 = mul nsw i32 %39, 3
  %49 = sext i32 %48 to i64
  %50 = getelementptr inbounds i32, ptr %38, i64 %49
  %51 = getelementptr inbounds i8, ptr %50, i64 4
  %52 = getelementptr inbounds i8, ptr %1, i64 64
  store ptr %51, ptr %52, align 8, !tbaa !19
  %53 = shl nsw i32 %39, 2
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds i32, ptr %38, i64 %54
  %56 = getelementptr inbounds i8, ptr %55, i64 4
  %57 = getelementptr inbounds i8, ptr %1, i64 80
  store ptr %56, ptr %57, align 8, !tbaa !20
  %58 = mul nsw i32 %39, 5
  br label %.sink.split

59:                                               ; preds = %30
  %60 = shl nsw i32 %26, 2
  %61 = or disjoint i32 %60, 1
  %62 = add nsw i32 %61, %28
  %63 = sext i32 %62 to i64
  %64 = shl nsw i64 %63, 2
  %65 = tail call ptr @realloc(ptr noundef %24, i64 noundef %64) #3
  store ptr %65, ptr %1, align 8, !tbaa !14
  store ptr %65, ptr %29, align 8, !tbaa !16
  %66 = load i32, ptr %25, align 8, !tbaa !15
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds i32, ptr %65, i64 %67
  %69 = getelementptr inbounds i8, ptr %68, i64 4
  store ptr %69, ptr %31, align 8, !tbaa !17
  %70 = shl nsw i32 %66, 1
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds i32, ptr %65, i64 %71
  %73 = getelementptr inbounds i8, ptr %72, i64 4
  %74 = getelementptr inbounds i8, ptr %1, i64 64
  store ptr %73, ptr %74, align 8, !tbaa !19
  %75 = mul nsw i32 %66, 3
  %76 = sext i32 %75 to i64
  %77 = getelementptr inbounds i32, ptr %65, i64 %76
  %78 = getelementptr inbounds i8, ptr %77, i64 4
  %79 = getelementptr inbounds i8, ptr %1, i64 80
  store ptr %78, ptr %79, align 8, !tbaa !20
  %80 = shl nsw i32 %66, 2
  br label %.sink.split

81:                                               ; preds = %13
  br i1 %.not97, label %105, label %82

82:                                               ; preds = %81
  %83 = shl nsw i32 %26, 2
  %84 = or disjoint i32 %83, 1
  %85 = add nsw i32 %84, %28
  %86 = sext i32 %85 to i64
  %87 = shl nsw i64 %86, 2
  %88 = tail call ptr @realloc(ptr noundef %24, i64 noundef %87) #3
  store ptr %88, ptr %1, align 8, !tbaa !14
  store ptr %88, ptr %29, align 8, !tbaa !16
  %89 = load i32, ptr %25, align 8, !tbaa !15
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds i32, ptr %88, i64 %90
  %92 = getelementptr inbounds i8, ptr %91, i64 4
  %93 = getelementptr inbounds i8, ptr %1, i64 40
  store ptr %92, ptr %93, align 8, !tbaa !18
  %94 = shl nsw i32 %89, 1
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds i32, ptr %88, i64 %95
  %97 = getelementptr inbounds i8, ptr %96, i64 4
  %98 = getelementptr inbounds i8, ptr %1, i64 64
  store ptr %97, ptr %98, align 8, !tbaa !19
  %99 = mul nsw i32 %89, 3
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds i32, ptr %88, i64 %100
  %102 = getelementptr inbounds i8, ptr %101, i64 4
  %103 = getelementptr inbounds i8, ptr %1, i64 80
  store ptr %102, ptr %103, align 8, !tbaa !20
  %104 = shl nsw i32 %89, 2
  br label %.sink.split

105:                                              ; preds = %81
  %106 = mul nsw i32 %26, 3
  %107 = add nsw i32 %106, 1
  %108 = add nsw i32 %107, %28
  %109 = sext i32 %108 to i64
  %110 = shl nsw i64 %109, 2
  %111 = tail call ptr @realloc(ptr noundef %24, i64 noundef %110) #3
  store ptr %111, ptr %1, align 8, !tbaa !14
  store ptr %111, ptr %29, align 8, !tbaa !16
  %112 = load i32, ptr %25, align 8, !tbaa !15
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds i32, ptr %111, i64 %113
  %115 = getelementptr inbounds i8, ptr %114, i64 4
  %116 = getelementptr inbounds i8, ptr %1, i64 64
  store ptr %115, ptr %116, align 8, !tbaa !19
  %117 = shl nsw i32 %112, 1
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds i32, ptr %111, i64 %118
  %120 = getelementptr inbounds i8, ptr %119, i64 4
  %121 = getelementptr inbounds i8, ptr %1, i64 80
  store ptr %120, ptr %121, align 8, !tbaa !20
  %122 = mul nsw i32 %112, 3
  br label %.sink.split

.sink.split:                                      ; preds = %82, %105, %32, %59
  %.sink102 = phi i32 [ %80, %59 ], [ %58, %32 ], [ %122, %105 ], [ %104, %82 ]
  %.sink = phi ptr [ %65, %59 ], [ %38, %32 ], [ %111, %105 ], [ %88, %82 ]
  %123 = sext i32 %.sink102 to i64
  %124 = getelementptr inbounds i32, ptr %.sink, i64 %123
  %125 = getelementptr inbounds i8, ptr %124, i64 4
  store ptr %125, ptr %14, align 8, !tbaa !11
  %126 = load i32, ptr %4, align 4, !tbaa !5
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds i32, ptr %125, i64 %127
  store ptr %128, ptr %18, align 8, !tbaa !12
  br label %129

129:                                              ; preds = %.sink.split, %7, %3
  ret void
}

; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias noundef ptr @realloc(ptr allocptr nocapture noundef, i64 noundef) local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind willreturn 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 #2 = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 allocsize(1) }

!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, !10, i64 20}
!6 = !{!"graphdef", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !10, i64 88, !10, i64 92, !7, i64 96, !7, i64 104, !10, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !10, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !7, i64 208}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!6, !7, i64 48}
!12 = !{!6, !7, i64 56}
!13 = !{!6, !10, i64 176}
!14 = !{!6, !7, i64 0}
!15 = !{!6, !10, i64 16}
!16 = !{!6, !7, i64 24}
!17 = !{!6, !7, i64 32}
!18 = !{!6, !7, i64 40}
!19 = !{!6, !7, i64 64}
!20 = !{!6, !7, i64 80}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass