; LLVM IR from Seeed-Studio/Seeed_Arduino_edgeimpulse :: src/edge-impulse-sdk/tensorflow/lite/micro/kernels (pad)

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

%"class.tflite::RuntimeShape" = type { i32, %union.anon }
%union.anon = type { ptr, [16 x i8] }
%"struct.tflite::ops::micro::pad::PadContext" = type <{ ptr, ptr, ptr, ptr, i32, i8, [3 x i8] }>
%"struct.tflite::PadParams" = type { i8, [4 x i32], i8, [4 x i32], i8 }
%struct.TfLiteContext = type { i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.TfLiteTensor = type { i32, %union.TfLitePtrUnion, ptr, %struct.TfLiteQuantizationParams, i32, i64, ptr, ptr, ptr, i32, i8, i8, %struct.TfLiteQuantization, ptr, ptr }
%union.TfLitePtrUnion = type { ptr }
%struct.TfLiteQuantizationParams = type { float, i32 }
%struct.TfLiteQuantization = type { i32, ptr }

@.str = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [131 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [40 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: mustprogress uwtable
declare dso_local void @_ZN6tflite3ops5micro3pad10PadContextC2EP13TfLiteContextP10TfLiteNode(ptr noundef nonnull align 8 dereferenceable(37), ptr noundef, ptr noundef) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind noalias writable sret(%"class.tflite::RuntimeShape") align 8, ptr noundef) #2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIiEEPKT_PK12TfLiteTensor(ptr noundef) #4

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN6tflite3ops5micro3pad4EvalEP13TfLiteContextP10TfLiteNode(ptr noundef %0, ptr noundef %1) #1 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca %"struct.tflite::ops::micro::pad::PadContext", align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca %"struct.tflite::PadParams", align 4
  %10 = alloca i32, align 4
  %11 = alloca float, align 4
  %12 = alloca float, align 4
  %13 = alloca %"class.tflite::RuntimeShape", align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.tflite::RuntimeShape", align 8
  %17 = alloca float, align 4
  %18 = alloca %"class.tflite::RuntimeShape", align 8
  %19 = alloca %"class.tflite::RuntimeShape", align 8
  %20 = alloca i8, align 1
  %21 = alloca i8, align 1
  %22 = alloca %"class.tflite::RuntimeShape", align 8
  %23 = alloca %"class.tflite::RuntimeShape", align 8
  %24 = alloca i8, align 1
  %25 = alloca %"class.tflite::RuntimeShape", align 8
  %26 = alloca %"class.tflite::RuntimeShape", align 8
  %27 = alloca i8, align 1
  %28 = alloca i8, align 1
  %29 = alloca %"class.tflite::RuntimeShape", align 8
  %30 = alloca %"class.tflite::RuntimeShape", align 8
  %31 = alloca i8, align 1
  %32 = alloca %"class.tflite::RuntimeShape", align 8
  %33 = alloca %"class.tflite::RuntimeShape", align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %"class.tflite::RuntimeShape", align 8
  %37 = alloca %"class.tflite::RuntimeShape", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %6) #7
  %38 = load ptr, ptr %4, align 8, !tbaa !5
  %39 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN6tflite3ops5micro3pad10PadContextC2EP13TfLiteContextP10TfLiteNode(ptr noundef nonnull align 8 dereferenceable(37) %6, ptr noundef %38, ptr noundef %39)
  %40 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %41 = load ptr, ptr %40, align 8, !tbaa !9
  %42 = icmp ne ptr %41, null
  br i1 %42, label %43, label %63

43:                                               ; preds = %2
  br label %44

44:                                               ; preds = %43
  %45 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %46 = load ptr, ptr %45, align 8, !tbaa !9
  %47 = call noundef i64 @_ZN6tflite11NumElementsEPK12TfLiteTensor(ptr noundef %46)
  %48 = icmp ne i64 %47, 1
  br i1 %48, label %49, label %60

49:                                               ; preds = %44
  br label %50

50:                                               ; preds = %49
  %51 = load ptr, ptr %4, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.TfLiteContext, ptr %51, i32 0, i32 5
  %53 = load ptr, ptr %52, align 8, !tbaa !13
  %54 = load ptr, ptr %4, align 8, !tbaa !5
  %55 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %56 = load ptr, ptr %55, align 8, !tbaa !9
  %57 = call noundef i64 @_ZN6tflite11NumElementsEPK12TfLiteTensor(ptr noundef %56)
  call void (ptr, ptr, ...) %53(ptr noundef %54, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 106, ptr noundef @.str.15, ptr noundef @.str.5, i64 noundef %57, i32 noundef 1)
  br label %58

58:                                               ; preds = %50
  br label %59

59:                                               ; preds = %58
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %622

60:                                               ; preds = %44
  br label %61

61:                                               ; preds = %60
  br label %62

62:                                               ; preds = %61
  br label %63

63:                                               ; preds = %62, %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %64 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 2
  %65 = load ptr, ptr %64, align 8, !tbaa !17
  %66 = call noundef ptr @_ZN6tflite13GetTensorDataIiEEPKT_PK12TfLiteTensor(ptr noundef %65)
  store ptr %66, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 44, ptr %9) #7
  call void @llvm.memset.p0.i64(ptr align 4 %9, i8 0, i64 44, i1 false)
  %67 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 4
  %68 = load i32, ptr %67, align 8, !tbaa !18
  %69 = trunc i32 %68 to i8
  %70 = getelementptr inbounds %"struct.tflite::PadParams", ptr %9, i32 0, i32 0
  store i8 %69, ptr %70, align 4, !tbaa !19
  %71 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 4
  %72 = load i32, ptr %71, align 8, !tbaa !18
  %73 = trunc i32 %72 to i8
  %74 = getelementptr inbounds %"struct.tflite::PadParams", ptr %9, i32 0, i32 2
  store i8 %73, ptr %74, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  %75 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 4
  %76 = load i32, ptr %75, align 8, !tbaa !18
  %77 = sub nsw i32 %76, 1
  store i32 %77, ptr %10, align 4, !tbaa !22
  br label %78

78:                                               ; preds = %104, %63
  %79 = load i32, ptr %10, align 4, !tbaa !22
  %80 = icmp sge i32 %79, 0
  br i1 %80, label %82, label %81

81:                                               ; preds = %78
  store i32 6, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br label %107

82:                                               ; preds = %78
  %83 = load ptr, ptr %8, align 8, !tbaa !5
  %84 = load i32, ptr %10, align 4, !tbaa !22
  %85 = mul nsw i32 %84, 2
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds i32, ptr %83, i64 %86
  %88 = load i32, ptr %87, align 4, !tbaa !22
  %89 = getelementptr inbounds %"struct.tflite::PadParams", ptr %9, i32 0, i32 1
  %90 = load i32, ptr %10, align 4, !tbaa !22
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds [4 x i32], ptr %89, i64 0, i64 %91
  store i32 %88, ptr %92, align 4, !tbaa !22
  %93 = load ptr, ptr %8, align 8, !tbaa !5
  %94 = load i32, ptr %10, align 4, !tbaa !22
  %95 = mul nsw i32 %94, 2
  %96 = add nsw i32 %95, 1
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds i32, ptr %93, i64 %97
  %99 = load i32, ptr %98, align 4, !tbaa !22
  %100 = getelementptr inbounds %"struct.tflite::PadParams", ptr %9, i32 0, i32 3
  %101 = load i32, ptr %10, align 4, !tbaa !22
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds [4 x i32], ptr %100, i64 0, i64 %102
  store i32 %99, ptr %103, align 4, !tbaa !22
  br label %104

104:                                              ; preds = %82
  %105 = load i32, ptr %10, align 4, !tbaa !22
  %106 = add nsw i32 %105, -1
  store i32 %106, ptr %10, align 4, !tbaa !22
  br label %78, !llvm.loop !23

107:                                              ; preds = %81
  %108 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %109 = load ptr, ptr %108, align 8, !tbaa !25
  %110 = getelementptr inbounds %struct.TfLiteTensor, ptr %109, i32 0, i32 0
  %111 = load i32, ptr %110, align 8, !tbaa !26
  switch i32 %111, label %606 [
    i32 1, label %112
    i32 3, label %189
    i32 9, label %384
    i32 2, label %565
  ]

112:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  %113 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %114 = load ptr, ptr %113, align 8, !tbaa !9
  %115 = icmp eq ptr %114, null
  br i1 %115, label %116, label %117

116:                                              ; preds = %112
  br label %122

117:                                              ; preds = %112
  %118 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %119 = load ptr, ptr %118, align 8, !tbaa !9
  %120 = call noundef ptr @_ZN6tflite13GetTensorDataIfEEPKT_PK12TfLiteTensor(ptr noundef %119)
  %121 = load float, ptr %120, align 4, !tbaa !34
  br label %122

122:                                              ; preds = %117, %116
  %123 = phi float [ 0.000000e+00, %116 ], [ %121, %117 ]
  store float %123, ptr %11, align 4, !tbaa !34
  %124 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 5
  %125 = load i8, ptr %124, align 4, !tbaa !35
  %126 = icmp eq i8 %125, 1
  br i1 %126, label %127, label %157

127:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  %128 = load float, ptr %11, align 4, !tbaa !34
  store float %128, ptr %12, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #7
  %129 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %130 = load ptr, ptr %129, align 8, !tbaa !25
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %13, ptr noundef %130)
  %131 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %132 = load ptr, ptr %131, align 8, !tbaa !25
  %133 = invoke noundef ptr @_ZN6tflite13GetTensorDataIfEEPKT_PK12TfLiteTensor(ptr noundef %132)
          to label %134 unwind label %143

134:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #7
  %135 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %136 = load ptr, ptr %135, align 8, !tbaa !36
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %16, ptr noundef %136)
          to label %137 unwind label %147

137:                                              ; preds = %134
  %138 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %139 = load ptr, ptr %138, align 8, !tbaa !36
  %140 = invoke noundef ptr @_ZN6tflite13GetTensorDataIfEEPT_P12TfLiteTensor(ptr noundef %139)
          to label %141 unwind label %151

141:                                              ; preds = %137
  invoke void @_ZN6tflite13reference_ops13PadImageStyleIfEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKfPKT_S7_Pf(ptr noundef nonnull align 4 dereferenceable(44) %9, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef %133, ptr noundef %12, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef %140)
          to label %142 unwind label %151

142:                                              ; preds = %141
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %187

143:                                              ; preds = %127
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %14, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %15, align 4
  br label %156

147:                                              ; preds = %134
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %14, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %15, align 4
  br label %155

151:                                              ; preds = %141, %137
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %14, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %15, align 4
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %155

155:                                              ; preds = %151, %147
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  br label %156

156:                                              ; preds = %155, %143
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %188

157:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  %158 = load float, ptr %11, align 4, !tbaa !34
  store float %158, ptr %17, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #7
  %159 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %160 = load ptr, ptr %159, align 8, !tbaa !25
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %18, ptr noundef %160)
  %161 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %162 = load ptr, ptr %161, align 8, !tbaa !25
  %163 = invoke noundef ptr @_ZN6tflite13GetTensorDataIfEEPKT_PK12TfLiteTensor(ptr noundef %162)
          to label %164 unwind label %173

164:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #7
  %165 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %166 = load ptr, ptr %165, align 8, !tbaa !36
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %19, ptr noundef %166)
          to label %167 unwind label %177

167:                                              ; preds = %164
  %168 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %169 = load ptr, ptr %168, align 8, !tbaa !36
  %170 = invoke noundef ptr @_ZN6tflite13GetTensorDataIfEEPT_P12TfLiteTensor(ptr noundef %169)
          to label %171 unwind label %181

171:                                              ; preds = %167
  invoke void @_ZN6tflite13reference_ops3PadIffEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKT0_S7_PS8_(ptr noundef nonnull align 4 dereferenceable(44) %9, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef %163, ptr noundef %17, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %170)
          to label %172 unwind label %181

172:                                              ; preds = %171
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %187

173:                                              ; preds = %157
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %14, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %15, align 4
  br label %186

177:                                              ; preds = %164
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %14, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %15, align 4
  br label %185

181:                                              ; preds = %171, %167
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %14, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %15, align 4
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %185

185:                                              ; preds = %181, %177
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  br label %186

186:                                              ; preds = %185, %173
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %188

187:                                              ; preds = %172, %142
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  br label %619

188:                                              ; preds = %186, %156
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  br label %621

189:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #7
  %190 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %191 = load ptr, ptr %190, align 8, !tbaa !9
  %192 = icmp eq ptr %191, null
  br i1 %192, label %193, label %240

193:                                              ; preds = %189
  br label %194

194:                                              ; preds = %193
  %195 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %196 = load ptr, ptr %195, align 8, !tbaa !36
  %197 = getelementptr inbounds %struct.TfLiteTensor, ptr %196, i32 0, i32 3
  %198 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %197, i32 0, i32 1
  %199 = load i32, ptr %198, align 4, !tbaa !37
  %200 = call noundef zeroext i8 @_ZNSt14numeric_limitsIhE3minEv() #7
  %201 = zext i8 %200 to i32
  %202 = icmp sge i32 %199, %201
  br i1 %202, label %211, label %203

203:                                              ; preds = %194
  br label %204

204:                                              ; preds = %203
  %205 = load ptr, ptr %4, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.TfLiteContext, ptr %205, i32 0, i32 5
  %207 = load ptr, ptr %206, align 8, !tbaa !13
  %208 = load ptr, ptr %4, align 8, !tbaa !5
  call void (ptr, ptr, ...) %207(ptr noundef %208, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 146, ptr noundef @.str.16)
  br label %209

209:                                              ; preds = %204
  br label %210

210:                                              ; preds = %209
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %380

211:                                              ; preds = %194
  br label %212

212:                                              ; preds = %211
  br label %213

213:                                              ; preds = %212
  br label %214

214:                                              ; preds = %213
  %215 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %216 = load ptr, ptr %215, align 8, !tbaa !36
  %217 = getelementptr inbounds %struct.TfLiteTensor, ptr %216, i32 0, i32 3
  %218 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %217, i32 0, i32 1
  %219 = load i32, ptr %218, align 4, !tbaa !37
  %220 = call noundef zeroext i8 @_ZNSt14numeric_limitsIhE3maxEv() #7
  %221 = zext i8 %220 to i32
  %222 = icmp sle i32 %219, %221
  br i1 %222, label %231, label %223

223:                                              ; preds = %214
  br label %224

224:                                              ; preds = %223
  %225 = load ptr, ptr %4, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.TfLiteContext, ptr %225, i32 0, i32 5
  %227 = load ptr, ptr %226, align 8, !tbaa !13
  %228 = load ptr, ptr %4, align 8, !tbaa !5
  call void (ptr, ptr, ...) %227(ptr noundef %228, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 148, ptr noundef @.str.17)
  br label %229

229:                                              ; preds = %224
  br label %230

230:                                              ; preds = %229
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %380

231:                                              ; preds = %214
  br label %232

232:                                              ; preds = %231
  br label %233

233:                                              ; preds = %232
  %234 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %235 = load ptr, ptr %234, align 8, !tbaa !36
  %236 = getelementptr inbounds %struct.TfLiteTensor, ptr %235, i32 0, i32 3
  %237 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %236, i32 0, i32 1
  %238 = load i32, ptr %237, align 4, !tbaa !37
  %239 = trunc i32 %238 to i8
  store i8 %239, ptr %20, align 1, !tbaa !38
  br label %315

240:                                              ; preds = %189
  br label %241

241:                                              ; preds = %240
  %242 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %243 = load ptr, ptr %242, align 8, !tbaa !36
  %244 = getelementptr inbounds %struct.TfLiteTensor, ptr %243, i32 0, i32 3
  %245 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %244, i32 0, i32 1
  %246 = load i32, ptr %245, align 4, !tbaa !37
  %247 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %248 = load ptr, ptr %247, align 8, !tbaa !9
  %249 = getelementptr inbounds %struct.TfLiteTensor, ptr %248, i32 0, i32 3
  %250 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %249, i32 0, i32 1
  %251 = load i32, ptr %250, align 4, !tbaa !37
  %252 = icmp ne i32 %246, %251
  br i1 %252, label %253, label %271

253:                                              ; preds = %241
  br label %254

254:                                              ; preds = %253
  %255 = load ptr, ptr %4, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.TfLiteContext, ptr %255, i32 0, i32 5
  %257 = load ptr, ptr %256, align 8, !tbaa !13
  %258 = load ptr, ptr %4, align 8, !tbaa !5
  %259 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %260 = load ptr, ptr %259, align 8, !tbaa !36
  %261 = getelementptr inbounds %struct.TfLiteTensor, ptr %260, i32 0, i32 3
  %262 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %261, i32 0, i32 1
  %263 = load i32, ptr %262, align 4, !tbaa !37
  %264 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %265 = load ptr, ptr %264, align 8, !tbaa !9
  %266 = getelementptr inbounds %struct.TfLiteTensor, ptr %265, i32 0, i32 3
  %267 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %266, i32 0, i32 1
  %268 = load i32, ptr %267, align 4, !tbaa !37
  call void (ptr, ptr, ...) %257(ptr noundef %258, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 154, ptr noundef @.str.18, ptr noundef @.str.19, i32 noundef %263, i32 noundef %268)
  br label %269

269:                                              ; preds = %254
  br label %270

270:                                              ; preds = %269
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %380

271:                                              ; preds = %241
  br label %272

272:                                              ; preds = %271
  br label %273

273:                                              ; preds = %272
  br label %274

274:                                              ; preds = %273
  %275 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %276 = load ptr, ptr %275, align 8, !tbaa !36
  %277 = getelementptr inbounds %struct.TfLiteTensor, ptr %276, i32 0, i32 3
  %278 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %277, i32 0, i32 0
  %279 = load float, ptr %278, align 8, !tbaa !39
  %280 = fpext float %279 to double
  %281 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %282 = load ptr, ptr %281, align 8, !tbaa !9
  %283 = getelementptr inbounds %struct.TfLiteTensor, ptr %282, i32 0, i32 3
  %284 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %283, i32 0, i32 0
  %285 = load float, ptr %284, align 8, !tbaa !39
  %286 = fpext float %285 to double
  %287 = fcmp une double %280, %286
  br i1 %287, label %288, label %308

288:                                              ; preds = %274
  br label %289

289:                                              ; preds = %288
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.TfLiteContext, ptr %290, i32 0, i32 5
  %292 = load ptr, ptr %291, align 8, !tbaa !13
  %293 = load ptr, ptr %4, align 8, !tbaa !5
  %294 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %295 = load ptr, ptr %294, align 8, !tbaa !36
  %296 = getelementptr inbounds %struct.TfLiteTensor, ptr %295, i32 0, i32 3
  %297 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %296, i32 0, i32 0
  %298 = load float, ptr %297, align 8, !tbaa !39
  %299 = fpext float %298 to double
  %300 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %301 = load ptr, ptr %300, align 8, !tbaa !9
  %302 = getelementptr inbounds %struct.TfLiteTensor, ptr %301, i32 0, i32 3
  %303 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %302, i32 0, i32 0
  %304 = load float, ptr %303, align 8, !tbaa !39
  %305 = fpext float %304 to double
  call void (ptr, ptr, ...) %292(ptr noundef %293, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 157, ptr noundef @.str.20, ptr noundef @.str.21, double noundef %299, double noundef %305)
  br label %306

306:                                              ; preds = %289
  br label %307

307:                                              ; preds = %306
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %380

308:                                              ; preds = %274
  br label %309

309:                                              ; preds = %308
  br label %310

310:                                              ; preds = %309
  %311 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %312 = load ptr, ptr %311, align 8, !tbaa !9
  %313 = call noundef ptr @_ZN6tflite13GetTensorDataIhEEPKT_PK12TfLiteTensor(ptr noundef %312)
  %314 = load i8, ptr %313, align 1, !tbaa !38
  store i8 %314, ptr %20, align 1, !tbaa !38
  br label %315

315:                                              ; preds = %310, %233
  %316 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 5
  %317 = load i8, ptr %316, align 4, !tbaa !35
  %318 = icmp eq i8 %317, 1
  br i1 %318, label %319, label %349

319:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #7
  %320 = load i8, ptr %20, align 1, !tbaa !38
  store i8 %320, ptr %21, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #7
  %321 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %322 = load ptr, ptr %321, align 8, !tbaa !25
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %22, ptr noundef %322)
  %323 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %324 = load ptr, ptr %323, align 8, !tbaa !25
  %325 = invoke noundef ptr @_ZN6tflite13GetTensorDataIhEEPKT_PK12TfLiteTensor(ptr noundef %324)
          to label %326 unwind label %335

326:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #7
  %327 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %328 = load ptr, ptr %327, align 8, !tbaa !36
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %23, ptr noundef %328)
          to label %329 unwind label %339

329:                                              ; preds = %326
  %330 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %331 = load ptr, ptr %330, align 8, !tbaa !36
  %332 = invoke noundef ptr @_ZN6tflite13GetTensorDataIhEEPT_P12TfLiteTensor(ptr noundef %331)
          to label %333 unwind label %343

333:                                              ; preds = %329
  invoke void @_ZN6tflite13reference_ops13PadImageStyleIhEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKhPKT_S7_Ph(ptr noundef nonnull align 4 dereferenceable(44) %9, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef %325, ptr noundef %21, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %332)
          to label %334 unwind label %343

334:                                              ; preds = %333
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #7
  br label %379

335:                                              ; preds = %319
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %14, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %15, align 4
  br label %348

339:                                              ; preds = %326
  %340 = landingpad { ptr, i32 }
          cleanup
  %341 = extractvalue { ptr, i32 } %340, 0
  store ptr %341, ptr %14, align 8
  %342 = extractvalue { ptr, i32 } %340, 1
  store i32 %342, ptr %15, align 4
  br label %347

343:                                              ; preds = %333, %329
  %344 = landingpad { ptr, i32 }
          cleanup
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %14, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %15, align 4
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %347

347:                                              ; preds = %343, %339
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  br label %348

348:                                              ; preds = %347, %335
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #7
  br label %383

349:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #7
  %350 = load i8, ptr %20, align 1, !tbaa !38
  store i8 %350, ptr %24, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  %351 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %352 = load ptr, ptr %351, align 8, !tbaa !25
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %25, ptr noundef %352)
  %353 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %354 = load ptr, ptr %353, align 8, !tbaa !25
  %355 = invoke noundef ptr @_ZN6tflite13GetTensorDataIhEEPKT_PK12TfLiteTensor(ptr noundef %354)
          to label %356 unwind label %365

356:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #7
  %357 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %358 = load ptr, ptr %357, align 8, !tbaa !36
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %26, ptr noundef %358)
          to label %359 unwind label %369

359:                                              ; preds = %356
  %360 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %361 = load ptr, ptr %360, align 8, !tbaa !36
  %362 = invoke noundef ptr @_ZN6tflite13GetTensorDataIhEEPT_P12TfLiteTensor(ptr noundef %361)
          to label %363 unwind label %373

363:                                              ; preds = %359
  invoke void @_ZN6tflite13reference_ops3PadIhhEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKT0_S7_PS8_(ptr noundef nonnull align 4 dereferenceable(44) %9, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef %355, ptr noundef %24, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef %362)
          to label %364 unwind label %373

364:                                              ; preds = %363
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  br label %379

365:                                              ; preds = %349
  %366 = landingpad { ptr, i32 }
          cleanup
  %367 = extractvalue { ptr, i32 } %366, 0
  store ptr %367, ptr %14, align 8
  %368 = extractvalue { ptr, i32 } %366, 1
  store i32 %368, ptr %15, align 4
  br label %378

369:                                              ; preds = %356
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %14, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %15, align 4
  br label %377

373:                                              ; preds = %363, %359
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %14, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %15, align 4
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  br label %377

377:                                              ; preds = %373, %369
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #7
  br label %378

378:                                              ; preds = %377, %365
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  br label %383

379:                                              ; preds = %364, %334
  store i32 0, ptr %7, align 4
  br label %380

380:                                              ; preds = %379, %307, %270, %230, %210
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  %381 = load i32, ptr %7, align 4
  switch i32 %381, label %620 [
    i32 0, label %382
  ]

382:                                              ; preds = %380
  br label %619

383:                                              ; preds = %378, %348
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  br label %621

384:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #7
  %385 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %386 = load ptr, ptr %385, align 8, !tbaa !9
  %387 = icmp eq ptr %386, null
  br i1 %387, label %388, label %435

388:                                              ; preds = %384
  br label %389

389:                                              ; preds = %388
  %390 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %391 = load ptr, ptr %390, align 8, !tbaa !36
  %392 = getelementptr inbounds %struct.TfLiteTensor, ptr %391, i32 0, i32 3
  %393 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %392, i32 0, i32 1
  %394 = load i32, ptr %393, align 4, !tbaa !37
  %395 = call noundef signext i8 @_ZNSt14numeric_limitsIaE3minEv() #7
  %396 = sext i8 %395 to i32
  %397 = icmp sge i32 %394, %396
  br i1 %397, label %406, label %398

398:                                              ; preds = %389
  br label %399

399:                                              ; preds = %398
  %400 = load ptr, ptr %4, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.TfLiteContext, ptr %400, i32 0, i32 5
  %402 = load ptr, ptr %401, align 8, !tbaa !13
  %403 = load ptr, ptr %4, align 8, !tbaa !5
  call void (ptr, ptr, ...) %402(ptr noundef %403, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 172, ptr noundef @.str.22)
  br label %404

404:                                              ; preds = %399
  br label %405

405:                                              ; preds = %404
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %561

406:                                              ; preds = %389
  br label %407

407:                                              ; preds = %406
  br label %408

408:                                              ; preds = %407
  br label %409

409:                                              ; preds = %408
  %410 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %411 = load ptr, ptr %410, align 8, !tbaa !36
  %412 = getelementptr inbounds %struct.TfLiteTensor, ptr %411, i32 0, i32 3
  %413 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %412, i32 0, i32 1
  %414 = load i32, ptr %413, align 4, !tbaa !37
  %415 = call noundef signext i8 @_ZNSt14numeric_limitsIaE3maxEv() #7
  %416 = sext i8 %415 to i32
  %417 = icmp sle i32 %414, %416
  br i1 %417, label %426, label %418

418:                                              ; preds = %409
  br label %419

419:                                              ; preds = %418
  %420 = load ptr, ptr %4, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.TfLiteContext, ptr %420, i32 0, i32 5
  %422 = load ptr, ptr %421, align 8, !tbaa !13
  %423 = load ptr, ptr %4, align 8, !tbaa !5
  call void (ptr, ptr, ...) %422(ptr noundef %423, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 174, ptr noundef @.str.23)
  br label %424

424:                                              ; preds = %419
  br label %425

425:                                              ; preds = %424
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %561

426:                                              ; preds = %409
  br label %427

427:                                              ; preds = %426
  br label %428

428:                                              ; preds = %427
  %429 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %430 = load ptr, ptr %429, align 8, !tbaa !36
  %431 = getelementptr inbounds %struct.TfLiteTensor, ptr %430, i32 0, i32 3
  %432 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %431, i32 0, i32 1
  %433 = load i32, ptr %432, align 4, !tbaa !37
  %434 = trunc i32 %433 to i8
  store i8 %434, ptr %27, align 1, !tbaa !38
  br label %496

435:                                              ; preds = %384
  br label %436

436:                                              ; preds = %435
  %437 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %438 = load ptr, ptr %437, align 8, !tbaa !36
  %439 = getelementptr inbounds %struct.TfLiteTensor, ptr %438, i32 0, i32 3
  %440 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %439, i32 0, i32 1
  %441 = load i32, ptr %440, align 4, !tbaa !37
  %442 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %443 = load ptr, ptr %442, align 8, !tbaa !9
  %444 = getelementptr inbounds %struct.TfLiteTensor, ptr %443, i32 0, i32 3
  %445 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %444, i32 0, i32 1
  %446 = load i32, ptr %445, align 4, !tbaa !37
  %447 = icmp ne i32 %441, %446
  br i1 %447, label %448, label %466

448:                                              ; preds = %436
  br label %449

449:                                              ; preds = %448
  %450 = load ptr, ptr %4, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.TfLiteContext, ptr %450, i32 0, i32 5
  %452 = load ptr, ptr %451, align 8, !tbaa !13
  %453 = load ptr, ptr %4, align 8, !tbaa !5
  %454 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %455 = load ptr, ptr %454, align 8, !tbaa !36
  %456 = getelementptr inbounds %struct.TfLiteTensor, ptr %455, i32 0, i32 3
  %457 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %456, i32 0, i32 1
  %458 = load i32, ptr %457, align 4, !tbaa !37
  %459 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %460 = load ptr, ptr %459, align 8, !tbaa !9
  %461 = getelementptr inbounds %struct.TfLiteTensor, ptr %460, i32 0, i32 3
  %462 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %461, i32 0, i32 1
  %463 = load i32, ptr %462, align 4, !tbaa !37
  call void (ptr, ptr, ...) %452(ptr noundef %453, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 180, ptr noundef @.str.18, ptr noundef @.str.19, i32 noundef %458, i32 noundef %463)
  br label %464

464:                                              ; preds = %449
  br label %465

465:                                              ; preds = %464
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %561

466:                                              ; preds = %436
  br label %467

467:                                              ; preds = %466
  br label %468

468:                                              ; preds = %467
  br label %469

469:                                              ; preds = %468
  %470 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %471 = load ptr, ptr %470, align 8, !tbaa !36
  %472 = getelementptr inbounds %struct.TfLiteTensor, ptr %471, i32 0, i32 3
  %473 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %472, i32 0, i32 0
  %474 = load float, ptr %473, align 8, !tbaa !39
  %475 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %476 = load ptr, ptr %475, align 8, !tbaa !9
  %477 = getelementptr inbounds %struct.TfLiteTensor, ptr %476, i32 0, i32 3
  %478 = getelementptr inbounds %struct.TfLiteQuantizationParams, ptr %477, i32 0, i32 0
  %479 = load float, ptr %478, align 8, !tbaa !39
  %480 = fcmp oeq float %474, %479
  br i1 %480, label %489, label %481

481:                                              ; preds = %469
  br label %482

482:                                              ; preds = %481
  %483 = load ptr, ptr %4, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.TfLiteContext, ptr %483, i32 0, i32 5
  %485 = load ptr, ptr %484, align 8, !tbaa !13
  %486 = load ptr, ptr %4, align 8, !tbaa !5
  call void (ptr, ptr, ...) %485(ptr noundef %486, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 182, ptr noundef @.str.24)
  br label %487

487:                                              ; preds = %482
  br label %488

488:                                              ; preds = %487
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %561

489:                                              ; preds = %469
  br label %490

490:                                              ; preds = %489
  br label %491

491:                                              ; preds = %490
  %492 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %493 = load ptr, ptr %492, align 8, !tbaa !9
  %494 = call noundef ptr @_ZN6tflite13GetTensorDataIaEEPKT_PK12TfLiteTensor(ptr noundef %493)
  %495 = load i8, ptr %494, align 1, !tbaa !38
  store i8 %495, ptr %27, align 1, !tbaa !38
  br label %496

496:                                              ; preds = %491, %428
  %497 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 5
  %498 = load i8, ptr %497, align 4, !tbaa !35
  %499 = icmp eq i8 %498, 1
  br i1 %499, label %500, label %530

500:                                              ; preds = %496
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #7
  %501 = load i8, ptr %27, align 1, !tbaa !38
  store i8 %501, ptr %28, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #7
  %502 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %503 = load ptr, ptr %502, align 8, !tbaa !25
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %29, ptr noundef %503)
  %504 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %505 = load ptr, ptr %504, align 8, !tbaa !25
  %506 = invoke noundef ptr @_ZN6tflite13GetTensorDataIaEEPKT_PK12TfLiteTensor(ptr noundef %505)
          to label %507 unwind label %516

507:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  %508 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %509 = load ptr, ptr %508, align 8, !tbaa !36
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %30, ptr noundef %509)
          to label %510 unwind label %520

510:                                              ; preds = %507
  %511 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %512 = load ptr, ptr %511, align 8, !tbaa !36
  %513 = invoke noundef ptr @_ZN6tflite13GetTensorDataIaEEPT_P12TfLiteTensor(ptr noundef %512)
          to label %514 unwind label %524

514:                                              ; preds = %510
  invoke void @_ZN6tflite13reference_ops13PadImageStyleIaEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKaPKT_S7_Pa(ptr noundef nonnull align 4 dereferenceable(44) %9, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef %506, ptr noundef %28, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef %513)
          to label %515 unwind label %524

515:                                              ; preds = %514
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  br label %560

516:                                              ; preds = %500
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %14, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %15, align 4
  br label %529

520:                                              ; preds = %507
  %521 = landingpad { ptr, i32 }
          cleanup
  %522 = extractvalue { ptr, i32 } %521, 0
  store ptr %522, ptr %14, align 8
  %523 = extractvalue { ptr, i32 } %521, 1
  store i32 %523, ptr %15, align 4
  br label %528

524:                                              ; preds = %514, %510
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %14, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %15, align 4
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %528

528:                                              ; preds = %524, %520
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  br label %529

529:                                              ; preds = %528, %516
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  br label %564

530:                                              ; preds = %496
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #7
  %531 = load i8, ptr %27, align 1, !tbaa !38
  store i8 %531, ptr %31, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #7
  %532 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %533 = load ptr, ptr %532, align 8, !tbaa !25
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %32, ptr noundef %533)
  %534 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %535 = load ptr, ptr %534, align 8, !tbaa !25
  %536 = invoke noundef ptr @_ZN6tflite13GetTensorDataIaEEPKT_PK12TfLiteTensor(ptr noundef %535)
          to label %537 unwind label %546

537:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #7
  %538 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %539 = load ptr, ptr %538, align 8, !tbaa !36
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %33, ptr noundef %539)
          to label %540 unwind label %550

540:                                              ; preds = %537
  %541 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %542 = load ptr, ptr %541, align 8, !tbaa !36
  %543 = invoke noundef ptr @_ZN6tflite13GetTensorDataIaEEPT_P12TfLiteTensor(ptr noundef %542)
          to label %544 unwind label %554

544:                                              ; preds = %540
  invoke void @_ZN6tflite13reference_ops3PadIaaEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKT0_S7_PS8_(ptr noundef nonnull align 4 dereferenceable(44) %9, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef %536, ptr noundef %31, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef %543)
          to label %545 unwind label %554

545:                                              ; preds = %544
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  br label %560

546:                                              ; preds = %530
  %547 = landingpad { ptr, i32 }
          cleanup
  %548 = extractvalue { ptr, i32 } %547, 0
  store ptr %548, ptr %14, align 8
  %549 = extractvalue { ptr, i32 } %547, 1
  store i32 %549, ptr %15, align 4
  br label %559

550:                                              ; preds = %537
  %551 = landingpad { ptr, i32 }
          cleanup
  %552 = extractvalue { ptr, i32 } %551, 0
  store ptr %552, ptr %14, align 8
  %553 = extractvalue { ptr, i32 } %551, 1
  store i32 %553, ptr %15, align 4
  br label %558

554:                                              ; preds = %544, %540
  %555 = landingpad { ptr, i32 }
          cleanup
  %556 = extractvalue { ptr, i32 } %555, 0
  store ptr %556, ptr %14, align 8
  %557 = extractvalue { ptr, i32 } %555, 1
  store i32 %557, ptr %15, align 4
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %558

558:                                              ; preds = %554, %550
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  br label %559

559:                                              ; preds = %558, %546
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  br label %564

560:                                              ; preds = %545, %515
  store i32 0, ptr %7, align 4
  br label %561

561:                                              ; preds = %560, %488, %465, %425, %405
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  %562 = load i32, ptr %7, align 4
  switch i32 %562, label %620 [
    i32 0, label %563
  ]

563:                                              ; preds = %561
  br label %619

564:                                              ; preds = %559, %529
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  br label %621

565:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  %566 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %567 = load ptr, ptr %566, align 8, !tbaa !9
  %568 = icmp eq ptr %567, null
  br i1 %568, label %569, label %570

569:                                              ; preds = %565
  br label %575

570:                                              ; preds = %565
  %571 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 0
  %572 = load ptr, ptr %571, align 8, !tbaa !9
  %573 = call noundef ptr @_ZN6tflite13GetTensorDataIiEEPKT_PK12TfLiteTensor(ptr noundef %572)
  %574 = load i32, ptr %573, align 4, !tbaa !22
  br label %575

575:                                              ; preds = %570, %569
  %576 = phi i32 [ 0, %569 ], [ %574, %570 ]
  store i32 %576, ptr %34, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  %577 = load i32, ptr %34, align 4, !tbaa !22
  store i32 %577, ptr %35, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #7
  %578 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %579 = load ptr, ptr %578, align 8, !tbaa !25
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %36, ptr noundef %579)
  %580 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %581 = load ptr, ptr %580, align 8, !tbaa !25
  %582 = invoke noundef ptr @_ZN6tflite13GetTensorDataIiEEPKT_PK12TfLiteTensor(ptr noundef %581)
          to label %583 unwind label %592

583:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #7
  %584 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %585 = load ptr, ptr %584, align 8, !tbaa !36
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind writable sret(%"class.tflite::RuntimeShape") align 8 %37, ptr noundef %585)
          to label %586 unwind label %596

586:                                              ; preds = %583
  %587 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 3
  %588 = load ptr, ptr %587, align 8, !tbaa !36
  %589 = invoke noundef ptr @_ZN6tflite13GetTensorDataIiEEPT_P12TfLiteTensor(ptr noundef %588)
          to label %590 unwind label %600

590:                                              ; preds = %586
  invoke void @_ZN6tflite13reference_ops3PadIiEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKiS7_PS8_(ptr noundef nonnull align 4 dereferenceable(44) %9, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef %582, ptr noundef %35, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef %589)
          to label %591 unwind label %600

591:                                              ; preds = %590
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %619

592:                                              ; preds = %575
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %14, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %15, align 4
  br label %605

596:                                              ; preds = %583
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %14, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %15, align 4
  br label %604

600:                                              ; preds = %590, %586
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %14, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %15, align 4
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %604

604:                                              ; preds = %600, %596
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  br label %605

605:                                              ; preds = %604, %592
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %621

606:                                              ; preds = %107
  br label %607

607:                                              ; preds = %606
  %608 = load ptr, ptr %4, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.TfLiteContext, ptr %608, i32 0, i32 5
  %610 = load ptr, ptr %609, align 8, !tbaa !13
  %611 = load ptr, ptr %4, align 8, !tbaa !5
  %612 = getelementptr inbounds %"struct.tflite::ops::micro::pad::PadContext", ptr %6, i32 0, i32 1
  %613 = load ptr, ptr %612, align 8, !tbaa !25
  %614 = getelementptr inbounds %struct.TfLiteTensor, ptr %613, i32 0, i32 0
  %615 = load i32, ptr %614, align 8, !tbaa !26
  %616 = call ptr @TfLiteTypeGetName(i32 noundef %615)
  call void (ptr, ptr, ...) %610(ptr noundef %611, ptr noundef @.str.25, ptr noundef %616)
  br label %617

617:                                              ; preds = %607
  br label %618

618:                                              ; preds = %617
  store i32 1, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %620

619:                                              ; preds = %591, %563, %382, %187
  store i32 0, ptr %3, align 4
  store i32 1, ptr %7, align 4
  br label %620

620:                                              ; preds = %619, %618, %561, %380
  call void @llvm.lifetime.end.p0(i64 44, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  br label %622

621:                                              ; preds = %605, %564, %383, %188
  call void @llvm.lifetime.end.p0(i64 44, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %6) #7
  br label %624

622:                                              ; preds = %620, %59
  call void @llvm.lifetime.end.p0(i64 40, ptr %6) #7
  %623 = load i32, ptr %3, align 4
  ret i32 %623

624:                                              ; preds = %621
  %625 = load ptr, ptr %14, align 8
  %626 = load i32, ptr %15, align 4
  %627 = insertvalue { ptr, i32 } poison, ptr %625, 0
  %628 = insertvalue { ptr, i32 } %627, i32 %626, 1
  resume { ptr, i32 } %628
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN6tflite11NumElementsEPK12TfLiteTensor(ptr noundef) #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIfEEPKT_PK12TfLiteTensor(ptr noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops13PadImageStyleIfEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKfPKT_S7_Pf(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIfEEPT_P12TfLiteTensor(ptr noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops3PadIffEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKT0_S7_PS8_(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZNSt14numeric_limitsIhE3minEv() #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZNSt14numeric_limitsIhE3maxEv() #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIhEEPKT_PK12TfLiteTensor(ptr noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops13PadImageStyleIhEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKhPKT_S7_Ph(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIhEEPT_P12TfLiteTensor(ptr noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops3PadIhhEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKT0_S7_PS8_(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef signext i8 @_ZNSt14numeric_limitsIaE3minEv() #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef signext i8 @_ZNSt14numeric_limitsIaE3maxEv() #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIaEEPKT_PK12TfLiteTensor(ptr noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops13PadImageStyleIaEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKaPKT_S7_Pa(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIaEEPT_P12TfLiteTensor(ptr noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops3PadIaaEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKT0_S7_PS8_(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops3PadIiEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKiS7_PS8_(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIiEEPT_P12TfLiteTensor(ptr noundef) #4

declare ptr @TfLiteTypeGetName(i32 noundef) #6

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress 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 = { inlinehint mustprogress 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 #3 = { mustprogress 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 = { inlinehint mustprogress 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 #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { "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 #7 = { 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTSN6tflite3ops5micro3pad10PadContextE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !11, i64 32, !12, i64 36}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTSN6tflite16ResizingCategoryE", !7, i64 0}
!13 = !{!14, !6, i64 40}
!14 = !{!"_ZTS13TfLiteContext", !15, 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, !11, i64 72, !6, i64 80, !6, i64 88, !16, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152}
!15 = !{!"long", !7, i64 0}
!16 = !{!"bool", !7, i64 0}
!17 = !{!10, !6, i64 16}
!18 = !{!10, !11, i64 32}
!19 = !{!20, !7, i64 0}
!20 = !{!"_ZTSN6tflite9PadParamsE", !7, i64 0, !7, i64 4, !7, i64 20, !7, i64 24, !12, i64 40}
!21 = !{!20, !7, i64 20}
!22 = !{!11, !11, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!10, !6, i64 8}
!26 = !{!27, !28, i64 0}
!27 = !{!"_ZTS12TfLiteTensor", !28, i64 0, !7, i64 8, !6, i64 16, !29, i64 24, !31, i64 32, !15, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !11, i64 72, !16, i64 76, !16, i64 77, !32, i64 80, !6, i64 96, !6, i64 104}
!28 = !{!"_ZTS10TfLiteType", !7, i64 0}
!29 = !{!"_ZTS24TfLiteQuantizationParams", !30, i64 0, !11, i64 4}
!30 = !{!"float", !7, i64 0}
!31 = !{!"_ZTS20TfLiteAllocationType", !7, i64 0}
!32 = !{!"_ZTS18TfLiteQuantization", !33, i64 0, !6, i64 8}
!33 = !{!"_ZTS22TfLiteQuantizationType", !7, i64 0}
!34 = !{!30, !30, i64 0}
!35 = !{!10, !12, i64 36}
!36 = !{!10, !6, i64 24}
!37 = !{!27, !11, i64 28}
!38 = !{!7, !7, i64 0}
!39 = !{!27, !30, i64 24}


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

%"class.tflite::RuntimeShape" = type { i32, %union.anon }
%union.anon = type { ptr, [16 x i8] }
%"struct.tflite::ops::micro::pad::PadContext" = type <{ ptr, ptr, ptr, ptr, i32, i8, [3 x i8] }>
%"struct.tflite::PadParams" = type { i8, [4 x i32], i8, [4 x i32], i8 }

@.str = external hidden unnamed_addr constant [23 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [131 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [40 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 uwtable
declare dso_local void @_ZN6tflite3ops5micro3pad10PadContextC2EP13TfLiteContextP10TfLiteNode(ptr noundef nonnull align 8 dereferenceable(37), ptr noundef, ptr noundef) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind noalias writable sret(%"class.tflite::RuntimeShape") align 8, ptr noundef) local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIiEEPKT_PK12TfLiteTensor(ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 2) i32 @_ZN6tflite3ops5micro3pad4EvalEP13TfLiteContextP10TfLiteNode(ptr noundef %0, ptr noundef %1) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"struct.tflite::ops::micro::pad::PadContext", align 8
  %4 = alloca %"struct.tflite::PadParams", align 4
  %5 = alloca float, align 4
  %6 = alloca %"class.tflite::RuntimeShape", align 8
  %7 = alloca %"class.tflite::RuntimeShape", align 8
  %8 = alloca float, align 4
  %9 = alloca %"class.tflite::RuntimeShape", align 8
  %10 = alloca %"class.tflite::RuntimeShape", align 8
  %11 = alloca i8, align 1
  %12 = alloca %"class.tflite::RuntimeShape", align 8
  %13 = alloca %"class.tflite::RuntimeShape", align 8
  %14 = alloca i8, align 1
  %15 = alloca %"class.tflite::RuntimeShape", align 8
  %16 = alloca %"class.tflite::RuntimeShape", align 8
  %17 = alloca i8, align 1
  %18 = alloca %"class.tflite::RuntimeShape", align 8
  %19 = alloca %"class.tflite::RuntimeShape", align 8
  %20 = alloca i8, align 1
  %21 = alloca %"class.tflite::RuntimeShape", align 8
  %22 = alloca %"class.tflite::RuntimeShape", align 8
  %23 = alloca i32, align 4
  %24 = alloca %"class.tflite::RuntimeShape", align 8
  %25 = alloca %"class.tflite::RuntimeShape", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3) #7
  call void @_ZN6tflite3ops5micro3pad10PadContextC2EP13TfLiteContextP10TfLiteNode(ptr noundef nonnull align 8 dereferenceable(37) %3, ptr noundef %0, ptr noundef %1)
  %26 = load ptr, ptr %3, align 8, !tbaa !5
  %.not = icmp eq ptr %26, null
  br i1 %.not, label %34, label %27

27:                                               ; preds = %2
  %28 = call noundef i64 @_ZN6tflite11NumElementsEPK12TfLiteTensor(ptr noundef nonnull %26)
  %.not72 = icmp eq i64 %28, 1
  br i1 %.not72, label %34, label %29

29:                                               ; preds = %27
  %30 = getelementptr inbounds i8, ptr %0, i64 40
  %31 = load ptr, ptr %30, align 8, !tbaa !12
  %32 = load ptr, ptr %3, align 8, !tbaa !5
  %33 = call noundef i64 @_ZN6tflite11NumElementsEPK12TfLiteTensor(ptr noundef %32)
  call void (ptr, ptr, ...) %31(ptr noundef %0, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 106, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.5, i64 noundef %33, i32 noundef 1)
  br label %289

34:                                               ; preds = %27, %2
  %35 = getelementptr inbounds i8, ptr %3, i64 16
  %36 = load ptr, ptr %35, align 8, !tbaa !16
  %37 = call noundef ptr @_ZN6tflite13GetTensorDataIiEEPKT_PK12TfLiteTensor(ptr noundef %36)
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %4) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(44) %4, i8 0, i64 44, i1 false)
  %38 = getelementptr inbounds i8, ptr %3, i64 32
  %39 = load i32, ptr %38, align 8, !tbaa !17
  %40 = trunc i32 %39 to i8
  store i8 %40, ptr %4, align 4, !tbaa !18
  %41 = getelementptr inbounds i8, ptr %4, i64 20
  store i8 %40, ptr %41, align 4, !tbaa !20
  %42 = icmp sgt i32 %39, 0
  br i1 %42, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %34
  %43 = getelementptr inbounds i8, ptr %4, i64 4
  %44 = getelementptr inbounds i8, ptr %4, i64 24
  %45 = zext nneg i32 %39 to i64
  %min.iters.check = icmp ult i32 %39, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %indvars.iv.ph = phi i64 [ %45, %vector.memcheck ], [ %45, %.lr.ph ], [ %ind.end, %middle.block ]
  br label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph
  %46 = shl nuw nsw i64 %45, 2
  %47 = getelementptr i8, ptr %4, i64 %46
  %scevgep = getelementptr i8, ptr %47, i64 24
  %48 = shl nuw nsw i64 %45, 3
  %scevgep100 = getelementptr i8, ptr %37, i64 %48
  %bound0 = icmp ult ptr %43, %scevgep100
  %bound1 = icmp ult ptr %37, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %45, 2147483644
  %ind.end = and i64 %45, 3
  %invariant.gep = getelementptr i8, ptr %37, i64 -24
  %invariant.gep105 = getelementptr i8, ptr %43, i64 -12
  %invariant.gep107 = getelementptr i8, ptr %44, i64 -12
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %49 = xor i64 %index, -1
  %50 = add i64 %49, %45
  %.idx = shl nsw i64 %50, 3
  %gep = getelementptr i8, ptr %invariant.gep, i64 %.idx
  %wide.vec = load <8 x i32>, ptr %gep, align 4, !tbaa !21
  %strided.vec = shufflevector <8 x i32> %wide.vec, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %reverse = shufflevector <4 x i32> %strided.vec, <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %strided.vec101 = shufflevector <8 x i32> %wide.vec, <8 x i32> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %reverse102 = shufflevector <4 x i32> %strided.vec101, <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %gep106 = getelementptr [4 x i32], ptr %invariant.gep105, i64 0, i64 %50
  %reverse103 = shufflevector <4 x i32> %reverse, <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x i32> %reverse103, ptr %gep106, align 4, !tbaa !21, !alias.scope !22, !noalias !25
  %gep108 = getelementptr [4 x i32], ptr %invariant.gep107, i64 0, i64 %50
  %reverse104 = shufflevector <4 x i32> %reverse102, <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  store <4 x i32> %reverse104, ptr %gep108, align 4, !tbaa !21, !alias.scope !22, !noalias !25
  %index.next = add nuw i64 %index, 4
  %51 = icmp eq i64 %index.next, %n.vec
  br i1 %51, label %middle.block, label %vector.body, !llvm.loop !27

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %45
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

._crit_edge:                                      ; preds = %scalar.ph, %middle.block, %34
  %52 = getelementptr inbounds i8, ptr %3, i64 8
  %53 = load ptr, ptr %52, align 8, !tbaa !31
  %54 = load i32, ptr %53, align 8, !tbaa !32
  switch i32 %54, label %284 [
    i32 1, label %64
    i32 3, label %104
    i32 9, label %184
    i32 2, label %262
  ]

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %55 = shl nuw nsw i64 %indvars.iv.next, 1
  %56 = getelementptr inbounds i32, ptr %37, i64 %55
  %57 = load i32, ptr %56, align 4, !tbaa !21
  %58 = getelementptr inbounds [4 x i32], ptr %43, i64 0, i64 %indvars.iv.next
  store i32 %57, ptr %58, align 4, !tbaa !21
  %59 = or disjoint i64 %55, 1
  %60 = getelementptr inbounds i32, ptr %37, i64 %59
  %61 = load i32, ptr %60, align 4, !tbaa !21
  %62 = getelementptr inbounds [4 x i32], ptr %44, i64 0, i64 %indvars.iv.next
  store i32 %61, ptr %62, align 4, !tbaa !21
  %63 = icmp ugt i64 %indvars.iv, 1
  br i1 %63, label %scalar.ph, label %._crit_edge, !llvm.loop !40

64:                                               ; preds = %._crit_edge
  %65 = load ptr, ptr %3, align 8, !tbaa !5
  %66 = icmp eq ptr %65, null
  br i1 %66, label %70, label %67

67:                                               ; preds = %64
  %68 = call noundef ptr @_ZN6tflite13GetTensorDataIfEEPKT_PK12TfLiteTensor(ptr noundef nonnull %65)
  %69 = load float, ptr %68, align 4, !tbaa !41
  br label %70

70:                                               ; preds = %64, %67
  %71 = phi float [ %69, %67 ], [ 0.000000e+00, %64 ]
  %72 = getelementptr inbounds i8, ptr %3, i64 36
  %73 = load i8, ptr %72, align 4, !tbaa !42
  %74 = icmp eq i8 %73, 1
  %75 = getelementptr inbounds i8, ptr %3, i64 24
  br i1 %74, label %76, label %90

76:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  store float %71, ptr %5, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  %77 = load ptr, ptr %52, align 8, !tbaa !31
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %6, ptr noundef %77)
  %78 = load ptr, ptr %52, align 8, !tbaa !31
  %79 = call noundef ptr @_ZN6tflite13GetTensorDataIfEEPKT_PK12TfLiteTensor(ptr noundef %78)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  %80 = load ptr, ptr %75, align 8, !tbaa !43
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %7, ptr noundef %80)
          to label %81 unwind label %85

81:                                               ; preds = %76
  %82 = load ptr, ptr %75, align 8, !tbaa !43
  %83 = call noundef ptr @_ZN6tflite13GetTensorDataIfEEPT_P12TfLiteTensor(ptr noundef %82)
  invoke void @_ZN6tflite13reference_ops13PadImageStyleIfEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKfPKT_S7_Pf(ptr noundef nonnull align 4 dereferenceable(44) %4, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef %79, ptr noundef nonnull %5, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %83)
          to label %84 unwind label %87

84:                                               ; preds = %81
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  br label %.critedge

85:                                               ; preds = %76
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %89

87:                                               ; preds = %81
  %88 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %89

89:                                               ; preds = %87, %85
  %.pn92 = phi { ptr, i32 } [ %88, %87 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  br label %288

90:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #7
  store float %71, ptr %8, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  %91 = load ptr, ptr %52, align 8, !tbaa !31
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %9, ptr noundef %91)
  %92 = load ptr, ptr %52, align 8, !tbaa !31
  %93 = call noundef ptr @_ZN6tflite13GetTensorDataIfEEPKT_PK12TfLiteTensor(ptr noundef %92)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  %94 = load ptr, ptr %75, align 8, !tbaa !43
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %10, ptr noundef %94)
          to label %95 unwind label %99

95:                                               ; preds = %90
  %96 = load ptr, ptr %75, align 8, !tbaa !43
  %97 = call noundef ptr @_ZN6tflite13GetTensorDataIfEEPT_P12TfLiteTensor(ptr noundef %96)
  invoke void @_ZN6tflite13reference_ops3PadIffEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKT0_S7_PS8_(ptr noundef nonnull align 4 dereferenceable(44) %4, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef %93, ptr noundef nonnull %8, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %97)
          to label %98 unwind label %101

98:                                               ; preds = %95
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  br label %.critedge

99:                                               ; preds = %90
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %103

101:                                              ; preds = %95
  %102 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %103

103:                                              ; preds = %101, %99
  %.pn90 = phi { ptr, i32 } [ %102, %101 ], [ %100, %99 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  br label %288

104:                                              ; preds = %._crit_edge
  %105 = load ptr, ptr %3, align 8, !tbaa !5
  %106 = icmp eq ptr %105, null
  %107 = getelementptr inbounds i8, ptr %3, i64 24
  %108 = load ptr, ptr %107, align 8, !tbaa !43
  %109 = getelementptr inbounds i8, ptr %108, i64 28
  %110 = load i32, ptr %109, align 4, !tbaa !44
  br i1 %106, label %111, label %131

111:                                              ; preds = %104
  %112 = call noundef zeroext i8 @_ZNSt14numeric_limitsIhE3minEv() #7
  %113 = zext i8 %112 to i32
  %.not83 = icmp slt i32 %110, %113
  br i1 %.not83, label %114, label %117

114:                                              ; preds = %111
  %115 = getelementptr inbounds i8, ptr %0, i64 40
  %116 = load ptr, ptr %115, align 8, !tbaa !12
  call void (ptr, ptr, ...) %116(ptr noundef %0, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 146, ptr noundef nonnull @.str.16)
  br label %.critedge

117:                                              ; preds = %111
  %118 = load ptr, ptr %107, align 8, !tbaa !43
  %119 = getelementptr inbounds i8, ptr %118, i64 28
  %120 = load i32, ptr %119, align 4, !tbaa !44
  %121 = call noundef zeroext i8 @_ZNSt14numeric_limitsIhE3maxEv() #7
  %122 = zext i8 %121 to i32
  %.not84 = icmp sgt i32 %120, %122
  br i1 %.not84, label %123, label %126

123:                                              ; preds = %117
  %124 = getelementptr inbounds i8, ptr %0, i64 40
  %125 = load ptr, ptr %124, align 8, !tbaa !12
  call void (ptr, ptr, ...) %125(ptr noundef %0, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 148, ptr noundef nonnull @.str.17)
  br label %.critedge

126:                                              ; preds = %117
  %127 = load ptr, ptr %107, align 8, !tbaa !43
  %128 = getelementptr inbounds i8, ptr %127, i64 28
  %129 = load i32, ptr %128, align 4, !tbaa !44
  %130 = trunc i32 %129 to i8
  br label %151

131:                                              ; preds = %104
  %132 = getelementptr inbounds i8, ptr %105, i64 28
  %133 = load i32, ptr %132, align 4, !tbaa !44
  %.not82 = icmp eq i32 %110, %133
  br i1 %.not82, label %137, label %134

134:                                              ; preds = %131
  %135 = getelementptr inbounds i8, ptr %0, i64 40
  %136 = load ptr, ptr %135, align 8, !tbaa !12
  call void (ptr, ptr, ...) %136(ptr noundef %0, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 154, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.19, i32 noundef %110, i32 noundef %133)
  br label %.critedge

137:                                              ; preds = %131
  %138 = getelementptr inbounds i8, ptr %105, i64 24
  %139 = getelementptr inbounds i8, ptr %108, i64 24
  %140 = load float, ptr %139, align 8, !tbaa !45
  %141 = load float, ptr %138, align 8, !tbaa !45
  %142 = fcmp une float %140, %141
  br i1 %142, label %143, label %148

143:                                              ; preds = %137
  %144 = fpext float %141 to double
  %145 = fpext float %140 to double
  %146 = getelementptr inbounds i8, ptr %0, i64 40
  %147 = load ptr, ptr %146, align 8, !tbaa !12
  call void (ptr, ptr, ...) %147(ptr noundef %0, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 157, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.21, double noundef %145, double noundef %144)
  br label %.critedge

148:                                              ; preds = %137
  %149 = call noundef ptr @_ZN6tflite13GetTensorDataIhEEPKT_PK12TfLiteTensor(ptr noundef nonnull %105)
  %150 = load i8, ptr %149, align 1, !tbaa !46
  br label %151

151:                                              ; preds = %148, %126
  %.043 = phi i8 [ %130, %126 ], [ %150, %148 ]
  %152 = getelementptr inbounds i8, ptr %3, i64 36
  %153 = load i8, ptr %152, align 4, !tbaa !42
  %154 = icmp eq i8 %153, 1
  %155 = getelementptr inbounds i8, ptr %3, i64 24
  br i1 %154, label %156, label %170

156:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #7
  store i8 %.043, ptr %11, align 1, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  %157 = load ptr, ptr %52, align 8, !tbaa !31
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %12, ptr noundef %157)
  %158 = load ptr, ptr %52, align 8, !tbaa !31
  %159 = call noundef ptr @_ZN6tflite13GetTensorDataIhEEPKT_PK12TfLiteTensor(ptr noundef %158)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  %160 = load ptr, ptr %155, align 8, !tbaa !43
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %13, ptr noundef %160)
          to label %161 unwind label %165

161:                                              ; preds = %156
  %162 = load ptr, ptr %155, align 8, !tbaa !43
  %163 = call noundef ptr @_ZN6tflite13GetTensorDataIhEEPT_P12TfLiteTensor(ptr noundef %162)
  invoke void @_ZN6tflite13reference_ops13PadImageStyleIhEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKhPKT_S7_Ph(ptr noundef nonnull align 4 dereferenceable(44) %4, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef %159, ptr noundef nonnull %11, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef %163)
          to label %164 unwind label %167

164:                                              ; preds = %161
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  br label %.critedge

165:                                              ; preds = %156
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %169

167:                                              ; preds = %161
  %168 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %169

169:                                              ; preds = %167, %165
  %.pn87 = phi { ptr, i32 } [ %168, %167 ], [ %166, %165 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #7
  br label %288

170:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #7
  store i8 %.043, ptr %14, align 1, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  %171 = load ptr, ptr %52, align 8, !tbaa !31
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %15, ptr noundef %171)
  %172 = load ptr, ptr %52, align 8, !tbaa !31
  %173 = call noundef ptr @_ZN6tflite13GetTensorDataIhEEPKT_PK12TfLiteTensor(ptr noundef %172)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  %174 = load ptr, ptr %155, align 8, !tbaa !43
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %16, ptr noundef %174)
          to label %175 unwind label %179

175:                                              ; preds = %170
  %176 = load ptr, ptr %155, align 8, !tbaa !43
  %177 = call noundef ptr @_ZN6tflite13GetTensorDataIhEEPT_P12TfLiteTensor(ptr noundef %176)
  invoke void @_ZN6tflite13reference_ops3PadIhhEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKT0_S7_PS8_(ptr noundef nonnull align 4 dereferenceable(44) %4, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %173, ptr noundef nonnull %14, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef %177)
          to label %178 unwind label %181

178:                                              ; preds = %175
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  br label %.critedge

179:                                              ; preds = %170
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %183

181:                                              ; preds = %175
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %183

183:                                              ; preds = %181, %179
  %.pn85 = phi { ptr, i32 } [ %182, %181 ], [ %180, %179 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #7
  br label %288

184:                                              ; preds = %._crit_edge
  %185 = load ptr, ptr %3, align 8, !tbaa !5
  %186 = icmp eq ptr %185, null
  %187 = getelementptr inbounds i8, ptr %3, i64 24
  %188 = load ptr, ptr %187, align 8, !tbaa !43
  %189 = getelementptr inbounds i8, ptr %188, i64 28
  %190 = load i32, ptr %189, align 4, !tbaa !44
  br i1 %186, label %191, label %211

191:                                              ; preds = %184
  %192 = call noundef signext i8 @_ZNSt14numeric_limitsIaE3minEv() #7
  %193 = sext i8 %192 to i32
  %.not75 = icmp slt i32 %190, %193
  br i1 %.not75, label %194, label %197

194:                                              ; preds = %191
  %195 = getelementptr inbounds i8, ptr %0, i64 40
  %196 = load ptr, ptr %195, align 8, !tbaa !12
  call void (ptr, ptr, ...) %196(ptr noundef %0, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 172, ptr noundef nonnull @.str.22)
  br label %.critedge

197:                                              ; preds = %191
  %198 = load ptr, ptr %187, align 8, !tbaa !43
  %199 = getelementptr inbounds i8, ptr %198, i64 28
  %200 = load i32, ptr %199, align 4, !tbaa !44
  %201 = call noundef signext i8 @_ZNSt14numeric_limitsIaE3maxEv() #7
  %202 = sext i8 %201 to i32
  %.not76 = icmp sgt i32 %200, %202
  br i1 %.not76, label %203, label %206

203:                                              ; preds = %197
  %204 = getelementptr inbounds i8, ptr %0, i64 40
  %205 = load ptr, ptr %204, align 8, !tbaa !12
  call void (ptr, ptr, ...) %205(ptr noundef %0, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 174, ptr noundef nonnull @.str.23)
  br label %.critedge

206:                                              ; preds = %197
  %207 = load ptr, ptr %187, align 8, !tbaa !43
  %208 = getelementptr inbounds i8, ptr %207, i64 28
  %209 = load i32, ptr %208, align 4, !tbaa !44
  %210 = trunc i32 %209 to i8
  br label %229

211:                                              ; preds = %184
  %212 = getelementptr inbounds i8, ptr %185, i64 28
  %213 = load i32, ptr %212, align 4, !tbaa !44
  %.not74 = icmp eq i32 %190, %213
  br i1 %.not74, label %217, label %214

214:                                              ; preds = %211
  %215 = getelementptr inbounds i8, ptr %0, i64 40
  %216 = load ptr, ptr %215, align 8, !tbaa !12
  call void (ptr, ptr, ...) %216(ptr noundef %0, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 180, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.19, i32 noundef %190, i32 noundef %213)
  br label %.critedge

217:                                              ; preds = %211
  %218 = getelementptr inbounds i8, ptr %185, i64 24
  %219 = getelementptr inbounds i8, ptr %188, i64 24
  %220 = load float, ptr %219, align 8, !tbaa !45
  %221 = load float, ptr %218, align 8, !tbaa !45
  %222 = fcmp oeq float %220, %221
  br i1 %222, label %226, label %223

223:                                              ; preds = %217
  %224 = getelementptr inbounds i8, ptr %0, i64 40
  %225 = load ptr, ptr %224, align 8, !tbaa !12
  call void (ptr, ptr, ...) %225(ptr noundef %0, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 182, ptr noundef nonnull @.str.24)
  br label %.critedge

226:                                              ; preds = %217
  %227 = call noundef ptr @_ZN6tflite13GetTensorDataIaEEPKT_PK12TfLiteTensor(ptr noundef nonnull %185)
  %228 = load i8, ptr %227, align 1, !tbaa !46
  br label %229

229:                                              ; preds = %226, %206
  %.042 = phi i8 [ %210, %206 ], [ %228, %226 ]
  %230 = getelementptr inbounds i8, ptr %3, i64 36
  %231 = load i8, ptr %230, align 4, !tbaa !42
  %232 = icmp eq i8 %231, 1
  %233 = getelementptr inbounds i8, ptr %3, i64 24
  br i1 %232, label %234, label %248

234:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #7
  store i8 %.042, ptr %17, align 1, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  %235 = load ptr, ptr %52, align 8, !tbaa !31
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %18, ptr noundef %235)
  %236 = load ptr, ptr %52, align 8, !tbaa !31
  %237 = call noundef ptr @_ZN6tflite13GetTensorDataIaEEPKT_PK12TfLiteTensor(ptr noundef %236)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  %238 = load ptr, ptr %233, align 8, !tbaa !43
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %19, ptr noundef %238)
          to label %239 unwind label %243

239:                                              ; preds = %234
  %240 = load ptr, ptr %233, align 8, !tbaa !43
  %241 = call noundef ptr @_ZN6tflite13GetTensorDataIaEEPT_P12TfLiteTensor(ptr noundef %240)
  invoke void @_ZN6tflite13reference_ops13PadImageStyleIaEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKaPKT_S7_Pa(ptr noundef nonnull align 4 dereferenceable(44) %4, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef %237, ptr noundef nonnull %17, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %241)
          to label %242 unwind label %245

242:                                              ; preds = %239
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  br label %.critedge

243:                                              ; preds = %234
  %244 = landingpad { ptr, i32 }
          cleanup
  br label %247

245:                                              ; preds = %239
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %247

247:                                              ; preds = %245, %243
  %.pn79 = phi { ptr, i32 } [ %246, %245 ], [ %244, %243 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  br label %288

248:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #7
  store i8 %.042, ptr %20, align 1, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  %249 = load ptr, ptr %52, align 8, !tbaa !31
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %21, ptr noundef %249)
  %250 = load ptr, ptr %52, align 8, !tbaa !31
  %251 = call noundef ptr @_ZN6tflite13GetTensorDataIaEEPKT_PK12TfLiteTensor(ptr noundef %250)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  %252 = load ptr, ptr %233, align 8, !tbaa !43
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %22, ptr noundef %252)
          to label %253 unwind label %257

253:                                              ; preds = %248
  %254 = load ptr, ptr %233, align 8, !tbaa !43
  %255 = call noundef ptr @_ZN6tflite13GetTensorDataIaEEPT_P12TfLiteTensor(ptr noundef %254)
  invoke void @_ZN6tflite13reference_ops3PadIaaEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKT0_S7_PS8_(ptr noundef nonnull align 4 dereferenceable(44) %4, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef %251, ptr noundef nonnull %20, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef %255)
          to label %256 unwind label %259

256:                                              ; preds = %253
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  br label %.critedge

257:                                              ; preds = %248
  %258 = landingpad { ptr, i32 }
          cleanup
  br label %261

259:                                              ; preds = %253
  %260 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %261

261:                                              ; preds = %259, %257
  %.pn77 = phi { ptr, i32 } [ %260, %259 ], [ %258, %257 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #7
  br label %288

262:                                              ; preds = %._crit_edge
  %263 = load ptr, ptr %3, align 8, !tbaa !5
  %264 = icmp eq ptr %263, null
  br i1 %264, label %268, label %265

265:                                              ; preds = %262
  %266 = call noundef ptr @_ZN6tflite13GetTensorDataIiEEPKT_PK12TfLiteTensor(ptr noundef nonnull %263)
  %267 = load i32, ptr %266, align 4, !tbaa !21
  %.pre = load ptr, ptr %52, align 8, !tbaa !31
  br label %268

268:                                              ; preds = %262, %265
  %269 = phi ptr [ %.pre, %265 ], [ %53, %262 ]
  %270 = phi i32 [ %267, %265 ], [ 0, %262 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  store i32 %270, ptr %23, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  call void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %24, ptr noundef %269)
  %271 = load ptr, ptr %52, align 8, !tbaa !31
  %272 = call noundef ptr @_ZN6tflite13GetTensorDataIiEEPKT_PK12TfLiteTensor(ptr noundef %271)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  %273 = getelementptr inbounds i8, ptr %3, i64 24
  %274 = load ptr, ptr %273, align 8, !tbaa !43
  invoke void @_ZN6tflite14GetTensorShapeEPK12TfLiteTensor(ptr dead_on_unwind nonnull writable sret(%"class.tflite::RuntimeShape") align 8 %25, ptr noundef %274)
          to label %275 unwind label %279

275:                                              ; preds = %268
  %276 = load ptr, ptr %273, align 8, !tbaa !43
  %277 = call noundef ptr @_ZN6tflite13GetTensorDataIiEEPT_P12TfLiteTensor(ptr noundef %276)
  invoke void @_ZN6tflite13reference_ops3PadIiEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKiS7_PS8_(ptr noundef nonnull align 4 dereferenceable(44) %4, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef %272, ptr noundef nonnull %23, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef %277)
          to label %278 unwind label %281

278:                                              ; preds = %275
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  br label %.critedge

279:                                              ; preds = %268
  %280 = landingpad { ptr, i32 }
          cleanup
  br label %283

281:                                              ; preds = %275
  %282 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %283

283:                                              ; preds = %281, %279
  %.pn = phi { ptr, i32 } [ %282, %281 ], [ %280, %279 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  call void @_ZN6tflite12RuntimeShapeD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  br label %288

284:                                              ; preds = %._crit_edge
  %285 = getelementptr inbounds i8, ptr %0, i64 40
  %286 = load ptr, ptr %285, align 8, !tbaa !12
  %287 = call ptr @TfLiteTypeGetName(i32 noundef %54)
  call void (ptr, ptr, ...) %286(ptr noundef %0, ptr noundef nonnull @.str.25, ptr noundef %287)
  br label %.critedge

.critedge:                                        ; preds = %203, %194, %214, %223, %123, %114, %134, %143, %278, %98, %84, %164, %178, %242, %256, %284
  %.2 = phi i32 [ 1, %284 ], [ 0, %256 ], [ 0, %242 ], [ 0, %178 ], [ 0, %164 ], [ 0, %84 ], [ 0, %98 ], [ 0, %278 ], [ 1, %143 ], [ 1, %134 ], [ 1, %114 ], [ 1, %123 ], [ 1, %223 ], [ 1, %214 ], [ 1, %194 ], [ 1, %203 ]
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %4) #7
  br label %289

288:                                              ; preds = %247, %261, %169, %183, %89, %103, %283
  %.pn.pn = phi { ptr, i32 } [ %.pn, %283 ], [ %.pn92, %89 ], [ %.pn90, %103 ], [ %.pn87, %169 ], [ %.pn85, %183 ], [ %.pn79, %247 ], [ %.pn77, %261 ]
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #7
  resume { ptr, i32 } %.pn.pn

289:                                              ; preds = %.critedge, %29
  %.3 = phi i32 [ 1, %29 ], [ %.2, %.critedge ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #7
  ret i32 %.3
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN6tflite11NumElementsEPK12TfLiteTensor(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIfEEPKT_PK12TfLiteTensor(ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops13PadImageStyleIfEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKfPKT_S7_Pf(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIfEEPT_P12TfLiteTensor(ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops3PadIffEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKT0_S7_PS8_(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZNSt14numeric_limitsIhE3minEv() local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_ZNSt14numeric_limitsIhE3maxEv() local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIhEEPKT_PK12TfLiteTensor(ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops13PadImageStyleIhEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKhPKT_S7_Ph(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIhEEPT_P12TfLiteTensor(ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops3PadIhhEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKT0_S7_PS8_(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef signext i8 @_ZNSt14numeric_limitsIaE3minEv() local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef signext i8 @_ZNSt14numeric_limitsIaE3maxEv() local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIaEEPKT_PK12TfLiteTensor(ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops13PadImageStyleIaEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKaPKT_S7_Pa(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIaEEPT_P12TfLiteTensor(ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops3PadIaaEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKT0_S7_PS8_(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6tflite13reference_ops3PadIiEEvRKNS_9PadParamsERKNS_12RuntimeShapeEPKT_PKiS7_PS8_(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN6tflite13GetTensorDataIiEEPT_P12TfLiteTensor(ptr noundef) local_unnamed_addr #4

declare ptr @TfLiteTypeGetName(i32 noundef) local_unnamed_addr #6

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress 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 = { inlinehint mustprogress 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 #3 = { mustprogress 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 = { inlinehint mustprogress 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 #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { "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 #7 = { 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, !7, i64 0}
!6 = !{!"_ZTSN6tflite3ops5micro3pad10PadContextE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !11, i64 36}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTSN6tflite16ResizingCategoryE", !8, i64 0}
!12 = !{!13, !7, i64 40}
!13 = !{!"_ZTS13TfLiteContext", !14, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !10, i64 72, !7, i64 80, !7, i64 88, !15, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152}
!14 = !{!"long", !8, i64 0}
!15 = !{!"bool", !8, i64 0}
!16 = !{!6, !7, i64 16}
!17 = !{!6, !10, i64 32}
!18 = !{!19, !8, i64 0}
!19 = !{!"_ZTSN6tflite9PadParamsE", !8, i64 0, !8, i64 4, !8, i64 20, !8, i64 24, !11, i64 40}
!20 = !{!19, !8, i64 20}
!21 = !{!10, !10, i64 0}
!22 = !{!23}
!23 = distinct !{!23, !24}
!24 = distinct !{!24, !"LVerDomain"}
!25 = !{!26}
!26 = distinct !{!26, !24}
!27 = distinct !{!27, !28, !29, !30}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!"llvm.loop.isvectorized", i32 1}
!30 = !{!"llvm.loop.unroll.runtime.disable"}
!31 = !{!6, !7, i64 8}
!32 = !{!33, !34, i64 0}
!33 = !{!"_ZTS12TfLiteTensor", !34, i64 0, !8, i64 8, !7, i64 16, !35, i64 24, !37, i64 32, !14, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !10, i64 72, !15, i64 76, !15, i64 77, !38, i64 80, !7, i64 96, !7, i64 104}
!34 = !{!"_ZTS10TfLiteType", !8, i64 0}
!35 = !{!"_ZTS24TfLiteQuantizationParams", !36, i64 0, !10, i64 4}
!36 = !{!"float", !8, i64 0}
!37 = !{!"_ZTS20TfLiteAllocationType", !8, i64 0}
!38 = !{!"_ZTS18TfLiteQuantization", !39, i64 0, !7, i64 8}
!39 = !{!"_ZTS22TfLiteQuantizationType", !8, i64 0}
!40 = distinct !{!40, !28, !29}
!41 = !{!36, !36, i64 0}
!42 = !{!6, !11, i64 36}
!43 = !{!6, !7, i64 24}
!44 = !{!33, !10, i64 28}
!45 = !{!33, !36, i64 24}
!46 = !{!8, !8, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,SROAPass,SimplifyCFGPass