; LLVM IR from tezc/sc :: map (map_test)

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

%struct.sc_map_str = type { ptr, i32, i32, i32, i32, i8, i8, i8 }
%struct.sc_map_item_str = type { ptr, ptr, i32 }

@.str.14 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [26 x i8], align 1
@__PRETTY_FUNCTION__.test1 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [6 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

declare zeroext i1 @sc_map_init_str(ptr noundef, i32 noundef, i32 noundef) #1

declare ptr @sc_map_put_str(ptr noundef, ptr noundef, ptr noundef) #1

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

declare void @sc_map_term_str(ptr noundef) #1

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

; Function Attrs: nounwind
declare i32 @rand() #3

declare ptr @sc_map_del_str(ptr noundef, ptr noundef) #1

declare void @sc_map_clear_str(ptr noundef) #1

declare ptr @sc_map_get_str(ptr noundef, ptr noundef) #1

declare i32 @sc_map_size_str(ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @test1() #4 {
  %1 = alloca %struct.sc_map_str, align 8
  %2 = alloca [128 x ptr], align 16
  %3 = alloca [128 x ptr], align 16
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i8, align 1
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i32, align 4
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 32, ptr %1) #6
  call void @llvm.lifetime.start.p0(i64 1024, ptr %2) #6
  call void @llvm.lifetime.start.p0(i64 1024, ptr %3) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %30

30:                                               ; preds = %51, %0
  %31 = load i32, ptr %6, align 4, !tbaa !5
  %32 = icmp slt i32 %31, 128
  br i1 %32, label %34, label %33

33:                                               ; preds = %30
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  br label %54

34:                                               ; preds = %30
  %35 = call i32 @rand() #6
  %36 = srem i32 %35, 64
  %37 = add nsw i32 %36, 32
  %38 = sext i32 %37 to i64
  %39 = call ptr @str_random(i64 noundef %38)
  %40 = load i32, ptr %6, align 4, !tbaa !5
  %41 = sext i32 %40 to i64
  %42 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %41
  store ptr %39, ptr %42, align 8, !tbaa !9
  %43 = call i32 @rand() #6
  %44 = srem i32 %43, 64
  %45 = add nsw i32 %44, 32
  %46 = sext i32 %45 to i64
  %47 = call ptr @str_random(i64 noundef %46)
  %48 = load i32, ptr %6, align 4, !tbaa !5
  %49 = sext i32 %48 to i64
  %50 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %49
  store ptr %47, ptr %50, align 8, !tbaa !9
  br label %51

51:                                               ; preds = %34
  %52 = load i32, ptr %6, align 4, !tbaa !5
  %53 = add nsw i32 %52, 1
  store i32 %53, ptr %6, align 4, !tbaa !5
  br label %30, !llvm.loop !11

54:                                               ; preds = %33
  %55 = call zeroext i1 @sc_map_init_str(ptr noundef %1, i32 noundef 0, i32 noundef 0)
  %56 = call ptr @sc_map_put_str(ptr noundef %1, ptr noundef @.str.108, ptr noundef @.str.109)
  %57 = call ptr @sc_map_get_str(ptr noundef %1, ptr noundef @.str.108)
  store ptr %57, ptr %5, align 8, !tbaa !9
  %58 = load ptr, ptr %5, align 8, !tbaa !9
  %59 = call i32 @strcmp(ptr noundef %58, ptr noundef @.str.109) #7
  %60 = icmp eq i32 %59, 0
  br i1 %60, label %61, label %62

61:                                               ; preds = %54
  br label %63

62:                                               ; preds = %54
  call void @__assert_fail(ptr noundef @.str.110, ptr noundef @.str.14, i32 noundef 1678, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

63:                                               ; preds = %61
  call void @sc_map_term_str(ptr noundef %1)
  %64 = call ptr @sc_map_put_str(ptr noundef %1, ptr noundef @.str.108, ptr noundef @.str.109)
  %65 = call ptr @sc_map_get_str(ptr noundef %1, ptr noundef @.str.108)
  store ptr %65, ptr %5, align 8, !tbaa !9
  %66 = load ptr, ptr %5, align 8, !tbaa !9
  %67 = call i32 @strcmp(ptr noundef %66, ptr noundef @.str.109) #7
  %68 = icmp eq i32 %67, 0
  br i1 %68, label %69, label %70

69:                                               ; preds = %63
  br label %71

70:                                               ; preds = %63
  call void @__assert_fail(ptr noundef @.str.110, ptr noundef @.str.14, i32 noundef 1682, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

71:                                               ; preds = %69
  call void @sc_map_term_str(ptr noundef %1)
  %72 = call zeroext i1 @sc_map_init_str(ptr noundef %1, i32 noundef 0, i32 noundef -1)
  br i1 %72, label %74, label %73

73:                                               ; preds = %71
  br label %75

74:                                               ; preds = %71
  call void @__assert_fail(ptr noundef @.str.111, ptr noundef @.str.14, i32 noundef 1685, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

75:                                               ; preds = %73
  %76 = call zeroext i1 @sc_map_init_str(ptr noundef %1, i32 noundef 0, i32 noundef 24)
  br i1 %76, label %78, label %77

77:                                               ; preds = %75
  br label %79

78:                                               ; preds = %75
  call void @__assert_fail(ptr noundef @.str.112, ptr noundef @.str.14, i32 noundef 1686, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

79:                                               ; preds = %77
  %80 = call zeroext i1 @sc_map_init_str(ptr noundef %1, i32 noundef 0, i32 noundef 96)
  br i1 %80, label %82, label %81

81:                                               ; preds = %79
  br label %83

82:                                               ; preds = %79
  call void @__assert_fail(ptr noundef @.str.113, ptr noundef @.str.14, i32 noundef 1687, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

83:                                               ; preds = %81
  %84 = call zeroext i1 @sc_map_init_str(ptr noundef %1, i32 noundef 0, i32 noundef 0)
  br i1 %84, label %85, label %86

85:                                               ; preds = %83
  br label %87

86:                                               ; preds = %83
  call void @__assert_fail(ptr noundef @.str.79, ptr noundef @.str.14, i32 noundef 1688, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

87:                                               ; preds = %85
  %88 = call i32 @sc_map_size_str(ptr noundef %1)
  %89 = icmp eq i32 %88, 0
  br i1 %89, label %90, label %91

90:                                               ; preds = %87
  br label %92

91:                                               ; preds = %87
  call void @__assert_fail(ptr noundef @.str.88, ptr noundef @.str.14, i32 noundef 1689, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

92:                                               ; preds = %90
  call void @sc_map_clear_str(ptr noundef %1)
  %93 = call i32 @sc_map_size_str(ptr noundef %1)
  %94 = icmp eq i32 %93, 0
  br i1 %94, label %95, label %96

95:                                               ; preds = %92
  br label %97

96:                                               ; preds = %92
  call void @__assert_fail(ptr noundef @.str.88, ptr noundef @.str.14, i32 noundef 1691, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

97:                                               ; preds = %95
  call void @sc_map_term_str(ptr noundef %1)
  %98 = call zeroext i1 @sc_map_init_str(ptr noundef %1, i32 noundef 0, i32 noundef 0)
  br i1 %98, label %99, label %100

99:                                               ; preds = %97
  br label %101

100:                                              ; preds = %97
  call void @__assert_fail(ptr noundef @.str.79, ptr noundef @.str.14, i32 noundef 1693, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

101:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #6
  store i64 -1, ptr %7, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #6
  store i64 0, ptr %8, align 8, !tbaa !13
  br label %102

102:                                              ; preds = %148, %101
  %103 = load i64, ptr %8, align 8, !tbaa !13
  %104 = icmp ne i64 %103, 0
  br i1 %104, label %111, label %105

105:                                              ; preds = %102
  %106 = load i64, ptr %7, align 8, !tbaa !13
  %107 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 1
  %108 = load i32, ptr %107, align 8, !tbaa !15
  %109 = zext i32 %108 to i64
  %110 = icmp slt i64 %106, %109
  br label %111

111:                                              ; preds = %105, %102
  %112 = phi i1 [ false, %102 ], [ %110, %105 ]
  br i1 %112, label %114, label %113

113:                                              ; preds = %111
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #6
  br label %151

114:                                              ; preds = %111
  %115 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 0
  %116 = load ptr, ptr %115, align 8, !tbaa !18
  %117 = load i64, ptr %7, align 8, !tbaa !13
  %118 = getelementptr inbounds %struct.sc_map_item_str, ptr %116, i64 %117
  %119 = getelementptr inbounds %struct.sc_map_item_str, ptr %118, i32 0, i32 1
  %120 = load ptr, ptr %119, align 8, !tbaa !19
  store ptr %120, ptr %5, align 8, !tbaa !9
  %121 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 0
  %122 = load ptr, ptr %121, align 8, !tbaa !18
  %123 = load i64, ptr %7, align 8, !tbaa !13
  %124 = getelementptr inbounds %struct.sc_map_item_str, ptr %122, i64 %123
  %125 = getelementptr inbounds %struct.sc_map_item_str, ptr %124, i32 0, i32 0
  %126 = load ptr, ptr %125, align 8, !tbaa !21
  store ptr %126, ptr %4, align 8, !tbaa !9
  store i64 1, ptr %8, align 8, !tbaa !13
  br label %127

127:                                              ; preds = %146, %114
  %128 = load i64, ptr %8, align 8, !tbaa !13
  %129 = icmp ne i64 %128, 0
  br i1 %129, label %130, label %141

130:                                              ; preds = %127
  %131 = load i64, ptr %7, align 8, !tbaa !13
  %132 = icmp eq i64 %131, -1
  br i1 %132, label %133, label %137

133:                                              ; preds = %130
  %134 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 5
  %135 = load i8, ptr %134, align 8, !tbaa !22, !range !23, !noundef !24
  %136 = trunc i8 %135 to i1
  br i1 %136, label %140, label %137

137:                                              ; preds = %133, %130
  %138 = load ptr, ptr %4, align 8, !tbaa !9
  %139 = icmp ne ptr %138, null
  br i1 %139, label %140, label %141

140:                                              ; preds = %137, %133
  br label %142

141:                                              ; preds = %137, %127
  store i64 0, ptr %8, align 8, !tbaa !13
  br label %142

142:                                              ; preds = %141, %140
  %143 = phi i64 [ 1, %140 ], [ 0, %141 ]
  %144 = icmp ne i64 %143, 0
  br i1 %144, label %145, label %147

145:                                              ; preds = %142
  call void @__assert_fail(ptr noundef @.str.114, ptr noundef @.str.14, i32 noundef 1696, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

146:                                              ; No predecessors!
  store i64 0, ptr %8, align 8, !tbaa !13
  br label %127, !llvm.loop !25

147:                                              ; preds = %142
  br label %148

148:                                              ; preds = %147
  %149 = load i64, ptr %7, align 8, !tbaa !13
  %150 = add nsw i64 %149, 1
  store i64 %150, ptr %7, align 8, !tbaa !13
  br label %102, !llvm.loop !26

151:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  store i64 -1, ptr %9, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  store i64 0, ptr %10, align 8, !tbaa !13
  br label %152

152:                                              ; preds = %192, %151
  %153 = load i64, ptr %10, align 8, !tbaa !13
  %154 = icmp ne i64 %153, 0
  br i1 %154, label %161, label %155

155:                                              ; preds = %152
  %156 = load i64, ptr %9, align 8, !tbaa !13
  %157 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 1
  %158 = load i32, ptr %157, align 8, !tbaa !15
  %159 = zext i32 %158 to i64
  %160 = icmp slt i64 %156, %159
  br label %161

161:                                              ; preds = %155, %152
  %162 = phi i1 [ false, %152 ], [ %160, %155 ]
  br i1 %162, label %164, label %163

163:                                              ; preds = %161
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  br label %195

164:                                              ; preds = %161
  %165 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 0
  %166 = load ptr, ptr %165, align 8, !tbaa !18
  %167 = load i64, ptr %9, align 8, !tbaa !13
  %168 = getelementptr inbounds %struct.sc_map_item_str, ptr %166, i64 %167
  %169 = getelementptr inbounds %struct.sc_map_item_str, ptr %168, i32 0, i32 0
  %170 = load ptr, ptr %169, align 8, !tbaa !21
  store ptr %170, ptr %4, align 8, !tbaa !9
  store i64 1, ptr %10, align 8, !tbaa !13
  br label %171

171:                                              ; preds = %190, %164
  %172 = load i64, ptr %10, align 8, !tbaa !13
  %173 = icmp ne i64 %172, 0
  br i1 %173, label %174, label %185

174:                                              ; preds = %171
  %175 = load i64, ptr %9, align 8, !tbaa !13
  %176 = icmp eq i64 %175, -1
  br i1 %176, label %177, label %181

177:                                              ; preds = %174
  %178 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 5
  %179 = load i8, ptr %178, align 8, !tbaa !22, !range !23, !noundef !24
  %180 = trunc i8 %179 to i1
  br i1 %180, label %184, label %181

181:                                              ; preds = %177, %174
  %182 = load ptr, ptr %4, align 8, !tbaa !9
  %183 = icmp ne ptr %182, null
  br i1 %183, label %184, label %185

184:                                              ; preds = %181, %177
  br label %186

185:                                              ; preds = %181, %171
  store i64 0, ptr %10, align 8, !tbaa !13
  br label %186

186:                                              ; preds = %185, %184
  %187 = phi i64 [ 1, %184 ], [ 0, %185 ]
  %188 = icmp ne i64 %187, 0
  br i1 %188, label %189, label %191

189:                                              ; preds = %186
  call void @__assert_fail(ptr noundef @.str.114, ptr noundef @.str.14, i32 noundef 1700, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

190:                                              ; No predecessors!
  store i64 0, ptr %10, align 8, !tbaa !13
  br label %171, !llvm.loop !27

191:                                              ; preds = %186
  br label %192

192:                                              ; preds = %191
  %193 = load i64, ptr %9, align 8, !tbaa !13
  %194 = add nsw i64 %193, 1
  store i64 %194, ptr %9, align 8, !tbaa !13
  br label %152, !llvm.loop !28

195:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  store i64 -1, ptr %11, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  store i64 0, ptr %12, align 8, !tbaa !13
  br label %196

196:                                              ; preds = %241, %195
  %197 = load i64, ptr %12, align 8, !tbaa !13
  %198 = icmp ne i64 %197, 0
  br i1 %198, label %205, label %199

199:                                              ; preds = %196
  %200 = load i64, ptr %11, align 8, !tbaa !13
  %201 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 1
  %202 = load i32, ptr %201, align 8, !tbaa !15
  %203 = zext i32 %202 to i64
  %204 = icmp slt i64 %200, %203
  br label %205

205:                                              ; preds = %199, %196
  %206 = phi i1 [ false, %196 ], [ %204, %199 ]
  br i1 %206, label %208, label %207

207:                                              ; preds = %205
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  br label %244

208:                                              ; preds = %205
  %209 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 0
  %210 = load ptr, ptr %209, align 8, !tbaa !18
  %211 = load i64, ptr %11, align 8, !tbaa !13
  %212 = getelementptr inbounds %struct.sc_map_item_str, ptr %210, i64 %211
  %213 = getelementptr inbounds %struct.sc_map_item_str, ptr %212, i32 0, i32 1
  %214 = load ptr, ptr %213, align 8, !tbaa !19
  store ptr %214, ptr %5, align 8, !tbaa !9
  store i64 1, ptr %12, align 8, !tbaa !13
  br label %215

215:                                              ; preds = %239, %208
  %216 = load i64, ptr %12, align 8, !tbaa !13
  %217 = icmp ne i64 %216, 0
  br i1 %217, label %218, label %234

218:                                              ; preds = %215
  %219 = load i64, ptr %11, align 8, !tbaa !13
  %220 = icmp eq i64 %219, -1
  br i1 %220, label %221, label %225

221:                                              ; preds = %218
  %222 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 5
  %223 = load i8, ptr %222, align 8, !tbaa !22, !range !23, !noundef !24
  %224 = trunc i8 %223 to i1
  br i1 %224, label %233, label %225

225:                                              ; preds = %221, %218
  %226 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 0
  %227 = load ptr, ptr %226, align 8, !tbaa !18
  %228 = load i64, ptr %11, align 8, !tbaa !13
  %229 = getelementptr inbounds %struct.sc_map_item_str, ptr %227, i64 %228
  %230 = getelementptr inbounds %struct.sc_map_item_str, ptr %229, i32 0, i32 0
  %231 = load ptr, ptr %230, align 8, !tbaa !21
  %232 = icmp ne ptr %231, null
  br i1 %232, label %233, label %234

233:                                              ; preds = %225, %221
  br label %235

234:                                              ; preds = %225, %215
  store i64 0, ptr %12, align 8, !tbaa !13
  br label %235

235:                                              ; preds = %234, %233
  %236 = phi i64 [ 1, %233 ], [ 0, %234 ]
  %237 = icmp ne i64 %236, 0
  br i1 %237, label %238, label %240

238:                                              ; preds = %235
  call void @__assert_fail(ptr noundef @.str.114, ptr noundef @.str.14, i32 noundef 1704, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

239:                                              ; No predecessors!
  store i64 0, ptr %12, align 8, !tbaa !13
  br label %215, !llvm.loop !29

240:                                              ; preds = %235
  br label %241

241:                                              ; preds = %240
  %242 = load i64, ptr %11, align 8, !tbaa !13
  %243 = add nsw i64 %242, 1
  store i64 %243, ptr %11, align 8, !tbaa !13
  br label %196, !llvm.loop !30

244:                                              ; preds = %207
  %245 = call ptr @sc_map_put_str(ptr noundef %1, ptr noundef @.str.115, ptr noundef @.str.116)
  %246 = call ptr @sc_map_put_str(ptr noundef %1, ptr noundef @.str.115, ptr noundef @.str.117)
  %247 = call ptr @sc_map_get_str(ptr noundef %1, ptr noundef @.str.115)
  store ptr %247, ptr %5, align 8, !tbaa !9
  %248 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 7
  %249 = load i8, ptr %248, align 2, !tbaa !31, !range !23, !noundef !24
  %250 = trunc i8 %249 to i1
  br i1 %250, label %251, label %252

251:                                              ; preds = %244
  br label %253

252:                                              ; preds = %244
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.14, i32 noundef 1711, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

253:                                              ; preds = %251
  %254 = load ptr, ptr %5, align 8, !tbaa !9
  %255 = call i32 @strcmp(ptr noundef %254, ptr noundef @.str.117) #7
  %256 = icmp eq i32 %255, 0
  br i1 %256, label %257, label %258

257:                                              ; preds = %253
  br label %259

258:                                              ; preds = %253
  call void @__assert_fail(ptr noundef @.str.118, ptr noundef @.str.14, i32 noundef 1712, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

259:                                              ; preds = %257
  %260 = call ptr @sc_map_del_str(ptr noundef %1, ptr noundef @.str.115)
  store ptr %260, ptr %5, align 8, !tbaa !9
  %261 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 7
  %262 = load i8, ptr %261, align 2, !tbaa !31, !range !23, !noundef !24
  %263 = trunc i8 %262 to i1
  br i1 %263, label %264, label %265

264:                                              ; preds = %259
  br label %266

265:                                              ; preds = %259
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.14, i32 noundef 1715, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

266:                                              ; preds = %264
  %267 = call ptr @sc_map_get_str(ptr noundef %1, ptr noundef @.str.115)
  store ptr %267, ptr %5, align 8, !tbaa !9
  %268 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 7
  %269 = load i8, ptr %268, align 2, !tbaa !31, !range !23, !noundef !24
  %270 = trunc i8 %269 to i1
  br i1 %270, label %272, label %271

271:                                              ; preds = %266
  br label %273

272:                                              ; preds = %266
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.14, i32 noundef 1717, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

273:                                              ; preds = %271
  %274 = call ptr @sc_map_put_str(ptr noundef %1, ptr noundef @.str.115, ptr noundef @.str.119)
  %275 = call ptr @sc_map_del_str(ptr noundef %1, ptr noundef @.str.115)
  store ptr %275, ptr %5, align 8, !tbaa !9
  %276 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 7
  %277 = load i8, ptr %276, align 2, !tbaa !31, !range !23, !noundef !24
  %278 = trunc i8 %277 to i1
  br i1 %278, label %279, label %280

279:                                              ; preds = %273
  br label %281

280:                                              ; preds = %273
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.14, i32 noundef 1720, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

281:                                              ; preds = %279
  %282 = load ptr, ptr %5, align 8, !tbaa !9
  %283 = call i32 @strcmp(ptr noundef %282, ptr noundef @.str.119) #7
  %284 = icmp eq i32 %283, 0
  br i1 %284, label %285, label %286

285:                                              ; preds = %281
  br label %287

286:                                              ; preds = %281
  call void @__assert_fail(ptr noundef @.str.120, ptr noundef @.str.14, i32 noundef 1721, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

287:                                              ; preds = %285
  %288 = call ptr @sc_map_del_str(ptr noundef %1, ptr noundef @.str.115)
  store ptr %288, ptr %4, align 8, !tbaa !9
  %289 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 7
  %290 = load i8, ptr %289, align 2, !tbaa !31, !range !23, !noundef !24
  %291 = trunc i8 %290 to i1
  br i1 %291, label %293, label %292

292:                                              ; preds = %287
  br label %294

293:                                              ; preds = %287
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.14, i32 noundef 1723, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

294:                                              ; preds = %292
  %295 = call ptr @sc_map_put_str(ptr noundef %1, ptr noundef @.str.115, ptr noundef @.str.116)
  %296 = call i32 @sc_map_size_str(ptr noundef %1)
  %297 = icmp eq i32 %296, 1
  br i1 %297, label %298, label %299

298:                                              ; preds = %294
  br label %300

299:                                              ; preds = %294
  call void @__assert_fail(ptr noundef @.str.121, ptr noundef @.str.14, i32 noundef 1726, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

300:                                              ; preds = %298
  %301 = call ptr @sc_map_put_str(ptr noundef %1, ptr noundef null, ptr noundef @.str.122)
  %302 = call i32 @sc_map_size_str(ptr noundef %1)
  %303 = icmp eq i32 %302, 2
  br i1 %303, label %304, label %305

304:                                              ; preds = %300
  br label %306

305:                                              ; preds = %300
  call void @__assert_fail(ptr noundef @.str.123, ptr noundef @.str.14, i32 noundef 1728, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

306:                                              ; preds = %304
  %307 = call ptr @sc_map_get_str(ptr noundef %1, ptr noundef null)
  store ptr %307, ptr %5, align 8, !tbaa !9
  %308 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 7
  %309 = load i8, ptr %308, align 2, !tbaa !31, !range !23, !noundef !24
  %310 = trunc i8 %309 to i1
  br i1 %310, label %311, label %312

311:                                              ; preds = %306
  br label %313

312:                                              ; preds = %306
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.14, i32 noundef 1730, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

313:                                              ; preds = %311
  %314 = load ptr, ptr %5, align 8, !tbaa !9
  %315 = call i32 @strcmp(ptr noundef %314, ptr noundef @.str.122) #7
  %316 = icmp eq i32 %315, 0
  br i1 %316, label %317, label %318

317:                                              ; preds = %313
  br label %319

318:                                              ; preds = %313
  call void @__assert_fail(ptr noundef @.str.124, ptr noundef @.str.14, i32 noundef 1731, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

319:                                              ; preds = %317
  %320 = call ptr @sc_map_del_str(ptr noundef %1, ptr noundef null)
  %321 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 7
  %322 = load i8, ptr %321, align 2, !tbaa !31, !range !23, !noundef !24
  %323 = trunc i8 %322 to i1
  br i1 %323, label %324, label %325

324:                                              ; preds = %319
  br label %326

325:                                              ; preds = %319
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.14, i32 noundef 1733, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

326:                                              ; preds = %324
  %327 = call i32 @sc_map_size_str(ptr noundef %1)
  %328 = icmp eq i32 %327, 1
  br i1 %328, label %329, label %330

329:                                              ; preds = %326
  br label %331

330:                                              ; preds = %326
  call void @__assert_fail(ptr noundef @.str.121, ptr noundef @.str.14, i32 noundef 1734, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

331:                                              ; preds = %329
  call void @sc_map_clear_str(ptr noundef %1)
  %332 = call i32 @sc_map_size_str(ptr noundef %1)
  %333 = icmp eq i32 %332, 0
  br i1 %333, label %334, label %335

334:                                              ; preds = %331
  br label %336

335:                                              ; preds = %331
  call void @__assert_fail(ptr noundef @.str.88, ptr noundef @.str.14, i32 noundef 1737, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

336:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  store i32 0, ptr %13, align 4, !tbaa !5
  br label %337

337:                                              ; preds = %351, %336
  %338 = load i32, ptr %13, align 4, !tbaa !5
  %339 = icmp slt i32 %338, 100
  br i1 %339, label %341, label %340

340:                                              ; preds = %337
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  br label %354

341:                                              ; preds = %337
  %342 = load i32, ptr %13, align 4, !tbaa !5
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %343
  %345 = load ptr, ptr %344, align 8, !tbaa !9
  %346 = load i32, ptr %13, align 4, !tbaa !5
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %347
  %349 = load ptr, ptr %348, align 8, !tbaa !9
  %350 = call ptr @sc_map_put_str(ptr noundef %1, ptr noundef %345, ptr noundef %349)
  br label %351

351:                                              ; preds = %341
  %352 = load i32, ptr %13, align 4, !tbaa !5
  %353 = add nsw i32 %352, 1
  store i32 %353, ptr %13, align 4, !tbaa !5
  br label %337, !llvm.loop !32

354:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %355

355:                                              ; preds = %381, %354
  %356 = load i32, ptr %14, align 4, !tbaa !5
  %357 = icmp slt i32 %356, 100
  br i1 %357, label %359, label %358

358:                                              ; preds = %355
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %384

359:                                              ; preds = %355
  %360 = load i32, ptr %14, align 4, !tbaa !5
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %361
  %363 = load ptr, ptr %362, align 8, !tbaa !9
  %364 = call ptr @sc_map_get_str(ptr noundef %1, ptr noundef %363)
  store ptr %364, ptr %5, align 8, !tbaa !9
  %365 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 7
  %366 = load i8, ptr %365, align 2, !tbaa !31, !range !23, !noundef !24
  %367 = trunc i8 %366 to i1
  br i1 %367, label %368, label %369

368:                                              ; preds = %359
  br label %370

369:                                              ; preds = %359
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.14, i32 noundef 1745, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

370:                                              ; preds = %368
  %371 = load ptr, ptr %5, align 8, !tbaa !9
  %372 = load i32, ptr %14, align 4, !tbaa !5
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %373
  %375 = load ptr, ptr %374, align 8, !tbaa !9
  %376 = call i32 @strcmp(ptr noundef %371, ptr noundef %375) #7
  %377 = icmp eq i32 %376, 0
  br i1 %377, label %378, label %379

378:                                              ; preds = %370
  br label %380

379:                                              ; preds = %370
  call void @__assert_fail(ptr noundef @.str.125, ptr noundef @.str.14, i32 noundef 1746, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

380:                                              ; preds = %378
  br label %381

381:                                              ; preds = %380
  %382 = load i32, ptr %14, align 4, !tbaa !5
  %383 = add nsw i32 %382, 1
  store i32 %383, ptr %14, align 4, !tbaa !5
  br label %355, !llvm.loop !33

384:                                              ; preds = %358
  %385 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 0
  %386 = load ptr, ptr %385, align 16, !tbaa !9
  %387 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 101
  %388 = load ptr, ptr %387, align 8, !tbaa !9
  %389 = call ptr @sc_map_put_str(ptr noundef %1, ptr noundef %386, ptr noundef %388)
  %390 = call i32 @sc_map_size_str(ptr noundef %1)
  %391 = icmp eq i32 %390, 100
  br i1 %391, label %392, label %393

392:                                              ; preds = %384
  br label %394

393:                                              ; preds = %384
  call void @__assert_fail(ptr noundef @.str.126, ptr noundef @.str.14, i32 noundef 1750, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

394:                                              ; preds = %392
  %395 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 101
  %396 = load ptr, ptr %395, align 8, !tbaa !9
  %397 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 102
  %398 = load ptr, ptr %397, align 16, !tbaa !9
  %399 = call ptr @sc_map_put_str(ptr noundef %1, ptr noundef %396, ptr noundef %398)
  %400 = call i32 @sc_map_size_str(ptr noundef %1)
  %401 = icmp eq i32 %400, 101
  br i1 %401, label %402, label %403

402:                                              ; preds = %394
  br label %404

403:                                              ; preds = %394
  call void @__assert_fail(ptr noundef @.str.127, ptr noundef @.str.14, i32 noundef 1752, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

404:                                              ; preds = %402
  call void @sc_map_clear_str(ptr noundef %1)
  %405 = call i32 @sc_map_size_str(ptr noundef %1)
  %406 = icmp eq i32 %405, 0
  br i1 %406, label %407, label %408

407:                                              ; preds = %404
  br label %409

408:                                              ; preds = %404
  call void @__assert_fail(ptr noundef @.str.88, ptr noundef @.str.14, i32 noundef 1754, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

409:                                              ; preds = %407
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %410

410:                                              ; preds = %424, %409
  %411 = load i32, ptr %15, align 4, !tbaa !5
  %412 = icmp slt i32 %411, 100
  br i1 %412, label %414, label %413

413:                                              ; preds = %410
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br label %427

414:                                              ; preds = %410
  %415 = load i32, ptr %15, align 4, !tbaa !5
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %416
  %418 = load ptr, ptr %417, align 8, !tbaa !9
  %419 = load i32, ptr %15, align 4, !tbaa !5
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %420
  %422 = load ptr, ptr %421, align 8, !tbaa !9
  %423 = call ptr @sc_map_put_str(ptr noundef %1, ptr noundef %418, ptr noundef %422)
  br label %424

424:                                              ; preds = %414
  %425 = load i32, ptr %15, align 4, !tbaa !5
  %426 = add nsw i32 %425, 1
  store i32 %426, ptr %15, align 4, !tbaa !5
  br label %410, !llvm.loop !34

427:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %428

428:                                              ; preds = %454, %427
  %429 = load i32, ptr %16, align 4, !tbaa !5
  %430 = icmp slt i32 %429, 100
  br i1 %430, label %432, label %431

431:                                              ; preds = %428
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %457

432:                                              ; preds = %428
  %433 = load i32, ptr %16, align 4, !tbaa !5
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %434
  %436 = load ptr, ptr %435, align 8, !tbaa !9
  %437 = call ptr @sc_map_get_str(ptr noundef %1, ptr noundef %436)
  store ptr %437, ptr %5, align 8, !tbaa !9
  %438 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 7
  %439 = load i8, ptr %438, align 2, !tbaa !31, !range !23, !noundef !24
  %440 = trunc i8 %439 to i1
  br i1 %440, label %441, label %442

441:                                              ; preds = %432
  br label %443

442:                                              ; preds = %432
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.14, i32 noundef 1762, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

443:                                              ; preds = %441
  %444 = load ptr, ptr %5, align 8, !tbaa !9
  %445 = load i32, ptr %16, align 4, !tbaa !5
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %446
  %448 = load ptr, ptr %447, align 8, !tbaa !9
  %449 = call i32 @strcmp(ptr noundef %444, ptr noundef %448) #7
  %450 = icmp eq i32 %449, 0
  br i1 %450, label %451, label %452

451:                                              ; preds = %443
  br label %453

452:                                              ; preds = %443
  call void @__assert_fail(ptr noundef @.str.125, ptr noundef @.str.14, i32 noundef 1763, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

453:                                              ; preds = %451
  br label %454

454:                                              ; preds = %453
  %455 = load i32, ptr %16, align 4, !tbaa !5
  %456 = add nsw i32 %455, 1
  store i32 %456, ptr %16, align 4, !tbaa !5
  br label %428, !llvm.loop !35

457:                                              ; preds = %431
  call void @sc_map_term_str(ptr noundef %1)
  %458 = call zeroext i1 @sc_map_init_str(ptr noundef %1, i32 noundef 0, i32 noundef 0)
  br i1 %458, label %459, label %460

459:                                              ; preds = %457
  br label %461

460:                                              ; preds = %457
  call void @__assert_fail(ptr noundef @.str.79, ptr noundef @.str.14, i32 noundef 1768, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

461:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  store i32 0, ptr %17, align 4, !tbaa !5
  br label %462

462:                                              ; preds = %476, %461
  %463 = load i32, ptr %17, align 4, !tbaa !5
  %464 = icmp slt i32 %463, 100
  br i1 %464, label %466, label %465

465:                                              ; preds = %462
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  br label %479

466:                                              ; preds = %462
  %467 = load i32, ptr %17, align 4, !tbaa !5
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %468
  %470 = load ptr, ptr %469, align 8, !tbaa !9
  %471 = load i32, ptr %17, align 4, !tbaa !5
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %472
  %474 = load ptr, ptr %473, align 8, !tbaa !9
  %475 = call ptr @sc_map_put_str(ptr noundef %1, ptr noundef %470, ptr noundef %474)
  br label %476

476:                                              ; preds = %466
  %477 = load i32, ptr %17, align 4, !tbaa !5
  %478 = add nsw i32 %477, 1
  store i32 %478, ptr %17, align 4, !tbaa !5
  br label %462, !llvm.loop !36

479:                                              ; preds = %465
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  store i64 -1, ptr %19, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  store i64 0, ptr %20, align 8, !tbaa !13
  br label %480

480:                                              ; preds = %558, %479
  %481 = load i64, ptr %20, align 8, !tbaa !13
  %482 = icmp ne i64 %481, 0
  br i1 %482, label %489, label %483

483:                                              ; preds = %480
  %484 = load i64, ptr %19, align 8, !tbaa !13
  %485 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 1
  %486 = load i32, ptr %485, align 8, !tbaa !15
  %487 = zext i32 %486 to i64
  %488 = icmp slt i64 %484, %487
  br label %489

489:                                              ; preds = %483, %480
  %490 = phi i1 [ false, %480 ], [ %488, %483 ]
  br i1 %490, label %492, label %491

491:                                              ; preds = %489
  store i32 38, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  br label %561

492:                                              ; preds = %489
  %493 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 0
  %494 = load ptr, ptr %493, align 8, !tbaa !18
  %495 = load i64, ptr %19, align 8, !tbaa !13
  %496 = getelementptr inbounds %struct.sc_map_item_str, ptr %494, i64 %495
  %497 = getelementptr inbounds %struct.sc_map_item_str, ptr %496, i32 0, i32 1
  %498 = load ptr, ptr %497, align 8, !tbaa !19
  store ptr %498, ptr %5, align 8, !tbaa !9
  %499 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 0
  %500 = load ptr, ptr %499, align 8, !tbaa !18
  %501 = load i64, ptr %19, align 8, !tbaa !13
  %502 = getelementptr inbounds %struct.sc_map_item_str, ptr %500, i64 %501
  %503 = getelementptr inbounds %struct.sc_map_item_str, ptr %502, i32 0, i32 0
  %504 = load ptr, ptr %503, align 8, !tbaa !21
  store ptr %504, ptr %4, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !13
  br label %505

505:                                              ; preds = %556, %492
  %506 = load i64, ptr %20, align 8, !tbaa !13
  %507 = icmp ne i64 %506, 0
  br i1 %507, label %508, label %519

508:                                              ; preds = %505
  %509 = load i64, ptr %19, align 8, !tbaa !13
  %510 = icmp eq i64 %509, -1
  br i1 %510, label %511, label %515

511:                                              ; preds = %508
  %512 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 5
  %513 = load i8, ptr %512, align 8, !tbaa !22, !range !23, !noundef !24
  %514 = trunc i8 %513 to i1
  br i1 %514, label %518, label %515

515:                                              ; preds = %511, %508
  %516 = load ptr, ptr %4, align 8, !tbaa !9
  %517 = icmp ne ptr %516, null
  br i1 %517, label %518, label %519

518:                                              ; preds = %515, %511
  br label %520

519:                                              ; preds = %515, %505
  store i64 0, ptr %20, align 8, !tbaa !13
  br label %520

520:                                              ; preds = %519, %518
  %521 = phi i64 [ 1, %518 ], [ 0, %519 ]
  %522 = icmp ne i64 %521, 0
  br i1 %522, label %523, label %557

523:                                              ; preds = %520
  store i8 0, ptr %18, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %524

524:                                              ; preds = %546, %523
  %525 = load i32, ptr %22, align 4, !tbaa !5
  %526 = icmp slt i32 %525, 100
  br i1 %526, label %528, label %527

527:                                              ; preds = %524
  store i32 44, ptr %21, align 4
  br label %549

528:                                              ; preds = %524
  %529 = load ptr, ptr %4, align 8, !tbaa !9
  %530 = load i32, ptr %22, align 4, !tbaa !5
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %531
  %533 = load ptr, ptr %532, align 8, !tbaa !9
  %534 = call i32 @strcmp(ptr noundef %529, ptr noundef %533) #7
  %535 = icmp eq i32 %534, 0
  br i1 %535, label %536, label %545

536:                                              ; preds = %528
  %537 = load ptr, ptr %5, align 8, !tbaa !9
  %538 = load i32, ptr %22, align 4, !tbaa !5
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %539
  %541 = load ptr, ptr %540, align 8, !tbaa !9
  %542 = call i32 @strcmp(ptr noundef %537, ptr noundef %541) #7
  %543 = icmp eq i32 %542, 0
  br i1 %543, label %544, label %545

544:                                              ; preds = %536
  store i8 1, ptr %18, align 1, !tbaa !37
  store i32 44, ptr %21, align 4
  br label %549

545:                                              ; preds = %536, %528
  br label %546

546:                                              ; preds = %545
  %547 = load i32, ptr %22, align 4, !tbaa !5
  %548 = add nsw i32 %547, 1
  store i32 %548, ptr %22, align 4, !tbaa !5
  br label %524, !llvm.loop !38

549:                                              ; preds = %544, %527
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %550

550:                                              ; preds = %549
  %551 = load i8, ptr %18, align 1, !tbaa !37, !range !23, !noundef !24
  %552 = trunc i8 %551 to i1
  br i1 %552, label %553, label %554

553:                                              ; preds = %550
  br label %555

554:                                              ; preds = %550
  call void @__assert_fail(ptr noundef @.str.128, ptr noundef @.str.14, i32 noundef 1783, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

555:                                              ; preds = %553
  br label %556

556:                                              ; preds = %555
  store i64 0, ptr %20, align 8, !tbaa !13
  br label %505, !llvm.loop !39

557:                                              ; preds = %520
  br label %558

558:                                              ; preds = %557
  %559 = load i64, ptr %19, align 8, !tbaa !13
  %560 = add nsw i64 %559, 1
  store i64 %560, ptr %19, align 8, !tbaa !13
  br label %480, !llvm.loop !40

561:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  store i64 -1, ptr %23, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  store i64 0, ptr %24, align 8, !tbaa !13
  br label %562

562:                                              ; preds = %626, %561
  %563 = load i64, ptr %24, align 8, !tbaa !13
  %564 = icmp ne i64 %563, 0
  br i1 %564, label %571, label %565

565:                                              ; preds = %562
  %566 = load i64, ptr %23, align 8, !tbaa !13
  %567 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 1
  %568 = load i32, ptr %567, align 8, !tbaa !15
  %569 = zext i32 %568 to i64
  %570 = icmp slt i64 %566, %569
  br label %571

571:                                              ; preds = %565, %562
  %572 = phi i1 [ false, %562 ], [ %570, %565 ]
  br i1 %572, label %574, label %573

573:                                              ; preds = %571
  store i32 47, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  br label %629

574:                                              ; preds = %571
  %575 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 0
  %576 = load ptr, ptr %575, align 8, !tbaa !18
  %577 = load i64, ptr %23, align 8, !tbaa !13
  %578 = getelementptr inbounds %struct.sc_map_item_str, ptr %576, i64 %577
  %579 = getelementptr inbounds %struct.sc_map_item_str, ptr %578, i32 0, i32 0
  %580 = load ptr, ptr %579, align 8, !tbaa !21
  store ptr %580, ptr %4, align 8, !tbaa !9
  store i64 1, ptr %24, align 8, !tbaa !13
  br label %581

581:                                              ; preds = %624, %574
  %582 = load i64, ptr %24, align 8, !tbaa !13
  %583 = icmp ne i64 %582, 0
  br i1 %583, label %584, label %595

584:                                              ; preds = %581
  %585 = load i64, ptr %23, align 8, !tbaa !13
  %586 = icmp eq i64 %585, -1
  br i1 %586, label %587, label %591

587:                                              ; preds = %584
  %588 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 5
  %589 = load i8, ptr %588, align 8, !tbaa !22, !range !23, !noundef !24
  %590 = trunc i8 %589 to i1
  br i1 %590, label %594, label %591

591:                                              ; preds = %587, %584
  %592 = load ptr, ptr %4, align 8, !tbaa !9
  %593 = icmp ne ptr %592, null
  br i1 %593, label %594, label %595

594:                                              ; preds = %591, %587
  br label %596

595:                                              ; preds = %591, %581
  store i64 0, ptr %24, align 8, !tbaa !13
  br label %596

596:                                              ; preds = %595, %594
  %597 = phi i64 [ 1, %594 ], [ 0, %595 ]
  %598 = icmp ne i64 %597, 0
  br i1 %598, label %599, label %625

599:                                              ; preds = %596
  store i8 0, ptr %18, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  store i32 0, ptr %25, align 4, !tbaa !5
  br label %600

600:                                              ; preds = %614, %599
  %601 = load i32, ptr %25, align 4, !tbaa !5
  %602 = icmp slt i32 %601, 100
  br i1 %602, label %604, label %603

603:                                              ; preds = %600
  store i32 53, ptr %21, align 4
  br label %617

604:                                              ; preds = %600
  %605 = load ptr, ptr %4, align 8, !tbaa !9
  %606 = load i32, ptr %25, align 4, !tbaa !5
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %607
  %609 = load ptr, ptr %608, align 8, !tbaa !9
  %610 = call i32 @strcmp(ptr noundef %605, ptr noundef %609) #7
  %611 = icmp eq i32 %610, 0
  br i1 %611, label %612, label %613

612:                                              ; preds = %604
  store i8 1, ptr %18, align 1, !tbaa !37
  store i32 53, ptr %21, align 4
  br label %617

613:                                              ; preds = %604
  br label %614

614:                                              ; preds = %613
  %615 = load i32, ptr %25, align 4, !tbaa !5
  %616 = add nsw i32 %615, 1
  store i32 %616, ptr %25, align 4, !tbaa !5
  br label %600, !llvm.loop !41

617:                                              ; preds = %612, %603
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %618

618:                                              ; preds = %617
  %619 = load i8, ptr %18, align 1, !tbaa !37, !range !23, !noundef !24
  %620 = trunc i8 %619 to i1
  br i1 %620, label %621, label %622

621:                                              ; preds = %618
  br label %623

622:                                              ; preds = %618
  call void @__assert_fail(ptr noundef @.str.128, ptr noundef @.str.14, i32 noundef 1794, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

623:                                              ; preds = %621
  br label %624

624:                                              ; preds = %623
  store i64 0, ptr %24, align 8, !tbaa !13
  br label %581, !llvm.loop !42

625:                                              ; preds = %596
  br label %626

626:                                              ; preds = %625
  %627 = load i64, ptr %23, align 8, !tbaa !13
  %628 = add nsw i64 %627, 1
  store i64 %628, ptr %23, align 8, !tbaa !13
  br label %562, !llvm.loop !43

629:                                              ; preds = %573
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  store i64 -1, ptr %26, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  store i64 0, ptr %27, align 8, !tbaa !13
  br label %630

630:                                              ; preds = %699, %629
  %631 = load i64, ptr %27, align 8, !tbaa !13
  %632 = icmp ne i64 %631, 0
  br i1 %632, label %639, label %633

633:                                              ; preds = %630
  %634 = load i64, ptr %26, align 8, !tbaa !13
  %635 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 1
  %636 = load i32, ptr %635, align 8, !tbaa !15
  %637 = zext i32 %636 to i64
  %638 = icmp slt i64 %634, %637
  br label %639

639:                                              ; preds = %633, %630
  %640 = phi i1 [ false, %630 ], [ %638, %633 ]
  br i1 %640, label %642, label %641

641:                                              ; preds = %639
  store i32 56, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br label %702

642:                                              ; preds = %639
  %643 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 0
  %644 = load ptr, ptr %643, align 8, !tbaa !18
  %645 = load i64, ptr %26, align 8, !tbaa !13
  %646 = getelementptr inbounds %struct.sc_map_item_str, ptr %644, i64 %645
  %647 = getelementptr inbounds %struct.sc_map_item_str, ptr %646, i32 0, i32 1
  %648 = load ptr, ptr %647, align 8, !tbaa !19
  store ptr %648, ptr %5, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !13
  br label %649

649:                                              ; preds = %697, %642
  %650 = load i64, ptr %27, align 8, !tbaa !13
  %651 = icmp ne i64 %650, 0
  br i1 %651, label %652, label %668

652:                                              ; preds = %649
  %653 = load i64, ptr %26, align 8, !tbaa !13
  %654 = icmp eq i64 %653, -1
  br i1 %654, label %655, label %659

655:                                              ; preds = %652
  %656 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 5
  %657 = load i8, ptr %656, align 8, !tbaa !22, !range !23, !noundef !24
  %658 = trunc i8 %657 to i1
  br i1 %658, label %667, label %659

659:                                              ; preds = %655, %652
  %660 = getelementptr inbounds %struct.sc_map_str, ptr %1, i32 0, i32 0
  %661 = load ptr, ptr %660, align 8, !tbaa !18
  %662 = load i64, ptr %26, align 8, !tbaa !13
  %663 = getelementptr inbounds %struct.sc_map_item_str, ptr %661, i64 %662
  %664 = getelementptr inbounds %struct.sc_map_item_str, ptr %663, i32 0, i32 0
  %665 = load ptr, ptr %664, align 8, !tbaa !21
  %666 = icmp ne ptr %665, null
  br i1 %666, label %667, label %668

667:                                              ; preds = %659, %655
  br label %669

668:                                              ; preds = %659, %649
  store i64 0, ptr %27, align 8, !tbaa !13
  br label %669

669:                                              ; preds = %668, %667
  %670 = phi i64 [ 1, %667 ], [ 0, %668 ]
  %671 = icmp ne i64 %670, 0
  br i1 %671, label %672, label %698

672:                                              ; preds = %669
  store i8 0, ptr %18, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  store i32 0, ptr %28, align 4, !tbaa !5
  br label %673

673:                                              ; preds = %687, %672
  %674 = load i32, ptr %28, align 4, !tbaa !5
  %675 = icmp slt i32 %674, 100
  br i1 %675, label %677, label %676

676:                                              ; preds = %673
  store i32 62, ptr %21, align 4
  br label %690

677:                                              ; preds = %673
  %678 = load ptr, ptr %5, align 8, !tbaa !9
  %679 = load i32, ptr %28, align 4, !tbaa !5
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %680
  %682 = load ptr, ptr %681, align 8, !tbaa !9
  %683 = call i32 @strcmp(ptr noundef %678, ptr noundef %682) #7
  %684 = icmp eq i32 %683, 0
  br i1 %684, label %685, label %686

685:                                              ; preds = %677
  store i8 1, ptr %18, align 1, !tbaa !37
  store i32 62, ptr %21, align 4
  br label %690

686:                                              ; preds = %677
  br label %687

687:                                              ; preds = %686
  %688 = load i32, ptr %28, align 4, !tbaa !5
  %689 = add nsw i32 %688, 1
  store i32 %689, ptr %28, align 4, !tbaa !5
  br label %673, !llvm.loop !44

690:                                              ; preds = %685, %676
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %691

691:                                              ; preds = %690
  %692 = load i8, ptr %18, align 1, !tbaa !37, !range !23, !noundef !24
  %693 = trunc i8 %692 to i1
  br i1 %693, label %694, label %695

694:                                              ; preds = %691
  br label %696

695:                                              ; preds = %691
  call void @__assert_fail(ptr noundef @.str.128, ptr noundef @.str.14, i32 noundef 1805, ptr noundef @__PRETTY_FUNCTION__.test1) #8
  unreachable

696:                                              ; preds = %694
  br label %697

697:                                              ; preds = %696
  store i64 0, ptr %27, align 8, !tbaa !13
  br label %649, !llvm.loop !45

698:                                              ; preds = %669
  br label %699

699:                                              ; preds = %698
  %700 = load i64, ptr %26, align 8, !tbaa !13
  %701 = add nsw i64 %700, 1
  store i64 %701, ptr %26, align 8, !tbaa !13
  br label %630, !llvm.loop !46

702:                                              ; preds = %641
  call void @sc_map_term_str(ptr noundef %1)
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 0, ptr %29, align 4, !tbaa !5
  br label %703

703:                                              ; preds = %716, %702
  %704 = load i32, ptr %29, align 4, !tbaa !5
  %705 = icmp slt i32 %704, 128
  br i1 %705, label %707, label %706

706:                                              ; preds = %703
  store i32 65, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %719

707:                                              ; preds = %703
  %708 = load i32, ptr %29, align 4, !tbaa !5
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %709
  %711 = load ptr, ptr %710, align 8, !tbaa !9
  call void @free(ptr noundef %711) #6
  %712 = load i32, ptr %29, align 4, !tbaa !5
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %713
  %715 = load ptr, ptr %714, align 8, !tbaa !9
  call void @free(ptr noundef %715) #6
  br label %716

716:                                              ; preds = %707
  %717 = load i32, ptr %29, align 4, !tbaa !5
  %718 = add nsw i32 %717, 1
  store i32 %718, ptr %29, align 4, !tbaa !5
  br label %703, !llvm.loop !47

719:                                              ; preds = %706
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #6
  call void @llvm.lifetime.end.p0(i64 1024, ptr %3) #6
  call void @llvm.lifetime.end.p0(i64 1024, ptr %2) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %1) #6
  ret void
}

; Function Attrs: nounwind uwtable
declare hidden ptr @str_random(i64 noundef) #4

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #5

; Function Attrs: nounwind
declare void @free(ptr noundef) #3

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind 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 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }
attributes #7 = { nounwind willreturn memory(read) }
attributes #8 = { noreturn 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!16, !6, i64 8}
!16 = !{!"sc_map_str", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !17, i64 24, !17, i64 25, !17, i64 26}
!17 = !{!"_Bool", !7, i64 0}
!18 = !{!16, !10, i64 0}
!19 = !{!20, !10, i64 8}
!20 = !{!"sc_map_item_str", !10, i64 0, !10, i64 8, !6, i64 16}
!21 = !{!20, !10, i64 0}
!22 = !{!16, !17, i64 24}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = !{!16, !17, i64 26}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = !{!17, !17, i64 0}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12}
!43 = distinct !{!43, !12}
!44 = distinct !{!44, !12}
!45 = distinct !{!45, !12}
!46 = distinct !{!46, !12}
!47 = distinct !{!47, !12}


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

%struct.sc_map_str = type { ptr, i32, i32, i32, i32, i8, i8, i8 }
%struct.sc_map_item_str = type { ptr, ptr, i32 }

@.str.14 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [26 x i8], align 1
@__PRETTY_FUNCTION__.test1 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [6 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

declare zeroext i1 @sc_map_init_str(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare ptr @sc_map_put_str(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

declare void @sc_map_term_str(ptr noundef) local_unnamed_addr #1

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind
declare i32 @rand() local_unnamed_addr #3

declare ptr @sc_map_del_str(ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @sc_map_clear_str(ptr noundef) local_unnamed_addr #1

declare ptr @sc_map_get_str(ptr noundef, ptr noundef) local_unnamed_addr #1

declare i32 @sc_map_size_str(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local void @test1() local_unnamed_addr #4 {
  %1 = alloca %struct.sc_map_str, align 8
  %2 = alloca [128 x ptr], align 16
  %3 = alloca [128 x ptr], align 16
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %1) #7
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %3) #7
  br label %10

4:                                                ; preds = %10
  %5 = call zeroext i1 @sc_map_init_str(ptr noundef nonnull %1, i32 noundef 0, i32 noundef 0) #7
  %6 = call ptr @sc_map_put_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.109) #7
  %7 = call ptr @sc_map_get_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.108) #7
  %8 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %7, ptr noundef nonnull dereferenceable(1) @.str.109) #8
  %9 = icmp eq i32 %8, 0
  br i1 %9, label %24, label %23

10:                                               ; preds = %0, %10
  %indvars.iv = phi i64 [ 0, %0 ], [ %indvars.iv.next, %10 ]
  %11 = tail call i32 @rand() #7
  %12 = srem i32 %11, 64
  %13 = add nsw i32 %12, 32
  %14 = sext i32 %13 to i64
  %15 = tail call ptr @str_random(i64 noundef %14)
  %16 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %indvars.iv
  store ptr %15, ptr %16, align 8, !tbaa !5
  %17 = tail call i32 @rand() #7
  %18 = srem i32 %17, 64
  %19 = add nsw i32 %18, 32
  %20 = sext i32 %19 to i64
  %21 = tail call ptr @str_random(i64 noundef %20)
  %22 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %indvars.iv
  store ptr %21, ptr %22, align 8, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 128
  br i1 %exitcond.not, label %4, label %10, !llvm.loop !9

23:                                               ; preds = %4
  call void @__assert_fail(ptr noundef nonnull @.str.110, ptr noundef nonnull @.str.14, i32 noundef 1678, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

24:                                               ; preds = %4
  call void @sc_map_term_str(ptr noundef nonnull %1) #7
  %25 = call ptr @sc_map_put_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.109) #7
  %26 = call ptr @sc_map_get_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.108) #7
  %27 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %26, ptr noundef nonnull dereferenceable(1) @.str.109) #8
  %28 = icmp eq i32 %27, 0
  br i1 %28, label %30, label %29

29:                                               ; preds = %24
  call void @__assert_fail(ptr noundef nonnull @.str.110, ptr noundef nonnull @.str.14, i32 noundef 1682, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

30:                                               ; preds = %24
  call void @sc_map_term_str(ptr noundef nonnull %1) #7
  %31 = call zeroext i1 @sc_map_init_str(ptr noundef nonnull %1, i32 noundef 0, i32 noundef -1) #7
  br i1 %31, label %32, label %33

32:                                               ; preds = %30
  call void @__assert_fail(ptr noundef nonnull @.str.111, ptr noundef nonnull @.str.14, i32 noundef 1685, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

33:                                               ; preds = %30
  %34 = call zeroext i1 @sc_map_init_str(ptr noundef nonnull %1, i32 noundef 0, i32 noundef 24) #7
  br i1 %34, label %35, label %36

35:                                               ; preds = %33
  call void @__assert_fail(ptr noundef nonnull @.str.112, ptr noundef nonnull @.str.14, i32 noundef 1686, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

36:                                               ; preds = %33
  %37 = call zeroext i1 @sc_map_init_str(ptr noundef nonnull %1, i32 noundef 0, i32 noundef 96) #7
  br i1 %37, label %38, label %39

38:                                               ; preds = %36
  call void @__assert_fail(ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.14, i32 noundef 1687, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

39:                                               ; preds = %36
  %40 = call zeroext i1 @sc_map_init_str(ptr noundef nonnull %1, i32 noundef 0, i32 noundef 0) #7
  br i1 %40, label %42, label %41

41:                                               ; preds = %39
  call void @__assert_fail(ptr noundef nonnull @.str.79, ptr noundef nonnull @.str.14, i32 noundef 1688, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

42:                                               ; preds = %39
  %43 = call i32 @sc_map_size_str(ptr noundef nonnull %1) #7
  %44 = icmp eq i32 %43, 0
  br i1 %44, label %46, label %45

45:                                               ; preds = %42
  call void @__assert_fail(ptr noundef nonnull @.str.88, ptr noundef nonnull @.str.14, i32 noundef 1689, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

46:                                               ; preds = %42
  call void @sc_map_clear_str(ptr noundef nonnull %1) #7
  %47 = call i32 @sc_map_size_str(ptr noundef nonnull %1) #7
  %48 = icmp eq i32 %47, 0
  br i1 %48, label %50, label %49

49:                                               ; preds = %46
  call void @__assert_fail(ptr noundef nonnull @.str.88, ptr noundef nonnull @.str.14, i32 noundef 1691, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

50:                                               ; preds = %46
  call void @sc_map_term_str(ptr noundef nonnull %1) #7
  %51 = call zeroext i1 @sc_map_init_str(ptr noundef nonnull %1, i32 noundef 0, i32 noundef 0) #7
  br i1 %51, label %52, label %64

52:                                               ; preds = %50
  %53 = getelementptr inbounds i8, ptr %1, i64 8
  %54 = load i32, ptr %53, align 8
  %55 = zext i32 %54 to i64
  %56 = load ptr, ptr %1, align 8
  %57 = getelementptr inbounds i8, ptr %1, i64 24
  %58 = load i8, ptr %57, align 8, !range !11
  %59 = trunc nuw i8 %58 to i1
  %60 = getelementptr inbounds i8, ptr %56, i64 -24
  %61 = load ptr, ptr %60, align 8, !tbaa !12
  %62 = icmp ne ptr %61, null
  %or.cond.peel = select i1 %59, i1 true, i1 %62
  br i1 %or.cond.peel, label %.loopexit217, label %63

63:                                               ; preds = %52
  %exitcond215.peel.not = icmp eq i32 %54, 0
  br i1 %exitcond215.peel.not, label %.preheader185.thread, label %.peel.next

64:                                               ; preds = %50
  call void @__assert_fail(ptr noundef nonnull @.str.79, ptr noundef nonnull @.str.14, i32 noundef 1693, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

.preheader185:                                    ; preds = %69
  %65 = icmp ne ptr %61, null
  %or.cond4.peel = select i1 %59, i1 true, i1 %65
  br i1 %or.cond4.peel, label %.loopexit222, label %66

.preheader185.thread:                             ; preds = %63
  br i1 %59, label %.loopexit222, label %.preheader184

66:                                               ; preds = %.preheader185
  br i1 %exitcond215.peel.not, label %.preheader184, label %.peel.next220

.peel.next:                                       ; preds = %63, %69
  %.0134193 = phi i64 [ %70, %69 ], [ 0, %63 ]
  %67 = getelementptr inbounds %struct.sc_map_item_str, ptr %56, i64 %.0134193
  %68 = load ptr, ptr %67, align 8, !tbaa !12
  %.old1.not = icmp eq ptr %68, null
  br i1 %.old1.not, label %69, label %.loopexit217

.loopexit217:                                     ; preds = %.peel.next, %52
  call void @__assert_fail(ptr noundef nonnull @.str.114, ptr noundef nonnull @.str.14, i32 noundef 1696, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

69:                                               ; preds = %.peel.next
  %70 = add nuw nsw i64 %.0134193, 1
  %exitcond215.not = icmp eq i64 %70, %55
  br i1 %exitcond215.not, label %.preheader185, label %.peel.next, !llvm.loop !15

.preheader184:                                    ; preds = %74, %.preheader185.thread, %66
  %.not148.peel = icmp ne ptr %61, null
  %or.cond.not = select i1 %59, i1 true, i1 %.not148.peel
  br i1 %or.cond.not, label %.thread169, label %71

71:                                               ; preds = %.preheader184
  br i1 %exitcond215.peel.not, label %.loopexit227, label %.peel.next225

.peel.next220:                                    ; preds = %66, %74
  %.0131194 = phi i64 [ %75, %74 ], [ 0, %66 ]
  %72 = getelementptr inbounds %struct.sc_map_item_str, ptr %56, i64 %.0131194
  %73 = load ptr, ptr %72, align 8, !tbaa !12
  %.old3.not = icmp eq ptr %73, null
  br i1 %.old3.not, label %74, label %.loopexit222

.loopexit222:                                     ; preds = %.peel.next220, %.preheader185.thread, %.preheader185
  call void @__assert_fail(ptr noundef nonnull @.str.114, ptr noundef nonnull @.str.14, i32 noundef 1700, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

74:                                               ; preds = %.peel.next220
  %75 = add nuw nsw i64 %.0131194, 1
  %exitcond218.not = icmp eq i64 %75, %55
  br i1 %exitcond218.not, label %.preheader184, label %.peel.next220, !llvm.loop !17

76:                                               ; preds = %.peel.next225
  %77 = add nuw nsw i64 %.0128195, 1
  %exitcond223.not = icmp eq i64 %77, %55
  br i1 %exitcond223.not, label %.loopexit227, label %.peel.next225, !llvm.loop !18

.loopexit227:                                     ; preds = %76, %71
  %78 = call ptr @sc_map_put_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.115, ptr noundef nonnull @.str.116) #7
  %79 = call ptr @sc_map_put_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.115, ptr noundef nonnull @.str.117) #7
  %80 = call ptr @sc_map_get_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.115) #7
  %81 = getelementptr inbounds i8, ptr %1, i64 26
  %82 = load i8, ptr %81, align 2, !tbaa !19, !range !11, !noundef !22
  %83 = trunc nuw i8 %82 to i1
  br i1 %83, label %87, label %86

.peel.next225:                                    ; preds = %71, %76
  %.0128195 = phi i64 [ %77, %76 ], [ 0, %71 ]
  %84 = getelementptr inbounds %struct.sc_map_item_str, ptr %56, i64 %.0128195
  %85 = load ptr, ptr %84, align 8, !tbaa !12
  %.not148 = icmp eq ptr %85, null
  br i1 %.not148, label %76, label %.thread169

.thread169:                                       ; preds = %.peel.next225, %.preheader184
  call void @__assert_fail(ptr noundef nonnull @.str.114, ptr noundef nonnull @.str.14, i32 noundef 1704, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

86:                                               ; preds = %.loopexit227
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.14, i32 noundef 1711, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

87:                                               ; preds = %.loopexit227
  %88 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %80, ptr noundef nonnull dereferenceable(1) @.str.117) #8
  %89 = icmp eq i32 %88, 0
  br i1 %89, label %91, label %90

90:                                               ; preds = %87
  call void @__assert_fail(ptr noundef nonnull @.str.118, ptr noundef nonnull @.str.14, i32 noundef 1712, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

91:                                               ; preds = %87
  %92 = call ptr @sc_map_del_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.115) #7
  %93 = load i8, ptr %81, align 2, !tbaa !19, !range !11, !noundef !22
  %94 = trunc nuw i8 %93 to i1
  br i1 %94, label %96, label %95

95:                                               ; preds = %91
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.14, i32 noundef 1715, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

96:                                               ; preds = %91
  %97 = call ptr @sc_map_get_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.115) #7
  %98 = load i8, ptr %81, align 2, !tbaa !19, !range !11, !noundef !22
  %99 = trunc nuw i8 %98 to i1
  br i1 %99, label %100, label %101

100:                                              ; preds = %96
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.14, i32 noundef 1717, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

101:                                              ; preds = %96
  %102 = call ptr @sc_map_put_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.115, ptr noundef nonnull @.str.119) #7
  %103 = call ptr @sc_map_del_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.115) #7
  %104 = load i8, ptr %81, align 2, !tbaa !19, !range !11, !noundef !22
  %105 = trunc nuw i8 %104 to i1
  br i1 %105, label %107, label %106

106:                                              ; preds = %101
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.14, i32 noundef 1720, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

107:                                              ; preds = %101
  %108 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %103, ptr noundef nonnull dereferenceable(1) @.str.119) #8
  %109 = icmp eq i32 %108, 0
  br i1 %109, label %111, label %110

110:                                              ; preds = %107
  call void @__assert_fail(ptr noundef nonnull @.str.120, ptr noundef nonnull @.str.14, i32 noundef 1721, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

111:                                              ; preds = %107
  %112 = call ptr @sc_map_del_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.115) #7
  %113 = load i8, ptr %81, align 2, !tbaa !19, !range !11, !noundef !22
  %114 = trunc nuw i8 %113 to i1
  br i1 %114, label %115, label %116

115:                                              ; preds = %111
  call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.14, i32 noundef 1723, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

116:                                              ; preds = %111
  %117 = call ptr @sc_map_put_str(ptr noundef nonnull %1, ptr noundef nonnull @.str.115, ptr noundef nonnull @.str.116) #7
  %118 = call i32 @sc_map_size_str(ptr noundef nonnull %1) #7
  %119 = icmp eq i32 %118, 1
  br i1 %119, label %121, label %120

120:                                              ; preds = %116
  call void @__assert_fail(ptr noundef nonnull @.str.121, ptr noundef nonnull @.str.14, i32 noundef 1726, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

121:                                              ; preds = %116
  %122 = call ptr @sc_map_put_str(ptr noundef nonnull %1, ptr noundef null, ptr noundef nonnull @.str.122) #7
  %123 = call i32 @sc_map_size_str(ptr noundef nonnull %1) #7
  %124 = icmp eq i32 %123, 2
  br i1 %124, label %126, label %125

125:                                              ; preds = %121
  call void @__assert_fail(ptr noundef nonnull @.str.123, ptr noundef nonnull @.str.14, i32 noundef 1728, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

126:                                              ; preds = %121
  %127 = call ptr @sc_map_get_str(ptr noundef nonnull %1, ptr noundef null) #7
  %128 = load i8, ptr %81, align 2, !tbaa !19, !range !11, !noundef !22
  %129 = trunc nuw i8 %128 to i1
  br i1 %129, label %131, label %130

130:                                              ; preds = %126
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.14, i32 noundef 1730, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

131:                                              ; preds = %126
  %132 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %127, ptr noundef nonnull dereferenceable(1) @.str.122) #8
  %133 = icmp eq i32 %132, 0
  br i1 %133, label %135, label %134

134:                                              ; preds = %131
  call void @__assert_fail(ptr noundef nonnull @.str.124, ptr noundef nonnull @.str.14, i32 noundef 1731, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

135:                                              ; preds = %131
  %136 = call ptr @sc_map_del_str(ptr noundef nonnull %1, ptr noundef null) #7
  %137 = load i8, ptr %81, align 2, !tbaa !19, !range !11, !noundef !22
  %138 = trunc nuw i8 %137 to i1
  br i1 %138, label %140, label %139

139:                                              ; preds = %135
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.14, i32 noundef 1733, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

140:                                              ; preds = %135
  %141 = call i32 @sc_map_size_str(ptr noundef nonnull %1) #7
  %142 = icmp eq i32 %141, 1
  br i1 %142, label %144, label %143

143:                                              ; preds = %140
  call void @__assert_fail(ptr noundef nonnull @.str.121, ptr noundef nonnull @.str.14, i32 noundef 1734, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

144:                                              ; preds = %140
  call void @sc_map_clear_str(ptr noundef nonnull %1) #7
  %145 = call i32 @sc_map_size_str(ptr noundef nonnull %1) #7
  %146 = icmp eq i32 %145, 0
  br i1 %146, label %.preheader183, label %147

147:                                              ; preds = %144
  call void @__assert_fail(ptr noundef nonnull @.str.88, ptr noundef nonnull @.str.14, i32 noundef 1737, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

.preheader183:                                    ; preds = %144, %.preheader183
  %indvars.iv228 = phi i64 [ %indvars.iv.next229, %.preheader183 ], [ 0, %144 ]
  %148 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %indvars.iv228
  %149 = load ptr, ptr %148, align 8, !tbaa !5
  %150 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %indvars.iv228
  %151 = load ptr, ptr %150, align 8, !tbaa !5
  %152 = call ptr @sc_map_put_str(ptr noundef nonnull %1, ptr noundef %149, ptr noundef %151) #7
  %indvars.iv.next229 = add nuw nsw i64 %indvars.iv228, 1
  %exitcond231.not = icmp eq i64 %indvars.iv.next229, 100
  br i1 %exitcond231.not, label %.preheader182, label %.preheader183, !llvm.loop !23

153:                                              ; preds = %167
  %indvars.iv.next233 = add nuw nsw i64 %indvars.iv232, 1
  %exitcond235.not = icmp eq i64 %indvars.iv.next233, 100
  br i1 %exitcond235.not, label %154, label %.preheader182, !llvm.loop !24

154:                                              ; preds = %153
  %155 = load ptr, ptr %2, align 16, !tbaa !5
  %156 = getelementptr inbounds i8, ptr %3, i64 808
  %157 = load ptr, ptr %156, align 8, !tbaa !5
  %158 = call ptr @sc_map_put_str(ptr noundef nonnull %1, ptr noundef %155, ptr noundef %157) #7
  %159 = call i32 @sc_map_size_str(ptr noundef nonnull %1) #7
  %160 = icmp eq i32 %159, 100
  br i1 %160, label %174, label %173

.preheader182:                                    ; preds = %.preheader183, %153
  %indvars.iv232 = phi i64 [ %indvars.iv.next233, %153 ], [ 0, %.preheader183 ]
  %161 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %indvars.iv232
  %162 = load ptr, ptr %161, align 8, !tbaa !5
  %163 = call ptr @sc_map_get_str(ptr noundef nonnull %1, ptr noundef %162) #7
  %164 = load i8, ptr %81, align 2, !tbaa !19, !range !11, !noundef !22
  %165 = trunc nuw i8 %164 to i1
  br i1 %165, label %167, label %166

166:                                              ; preds = %.preheader182
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.14, i32 noundef 1745, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

167:                                              ; preds = %.preheader182
  %168 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %indvars.iv232
  %169 = load ptr, ptr %168, align 8, !tbaa !5
  %170 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %163, ptr noundef nonnull dereferenceable(1) %169) #8
  %171 = icmp eq i32 %170, 0
  br i1 %171, label %153, label %172

172:                                              ; preds = %167
  call void @__assert_fail(ptr noundef nonnull @.str.125, ptr noundef nonnull @.str.14, i32 noundef 1746, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

173:                                              ; preds = %154
  call void @__assert_fail(ptr noundef nonnull @.str.126, ptr noundef nonnull @.str.14, i32 noundef 1750, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

174:                                              ; preds = %154
  %175 = getelementptr inbounds i8, ptr %2, i64 808
  %176 = load ptr, ptr %175, align 8, !tbaa !5
  %177 = getelementptr inbounds i8, ptr %3, i64 816
  %178 = load ptr, ptr %177, align 16, !tbaa !5
  %179 = call ptr @sc_map_put_str(ptr noundef nonnull %1, ptr noundef %176, ptr noundef %178) #7
  %180 = call i32 @sc_map_size_str(ptr noundef nonnull %1) #7
  %181 = icmp eq i32 %180, 101
  br i1 %181, label %183, label %182

182:                                              ; preds = %174
  call void @__assert_fail(ptr noundef nonnull @.str.127, ptr noundef nonnull @.str.14, i32 noundef 1752, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

183:                                              ; preds = %174
  call void @sc_map_clear_str(ptr noundef nonnull %1) #7
  %184 = call i32 @sc_map_size_str(ptr noundef nonnull %1) #7
  %185 = icmp eq i32 %184, 0
  br i1 %185, label %.preheader181, label %186

186:                                              ; preds = %183
  call void @__assert_fail(ptr noundef nonnull @.str.88, ptr noundef nonnull @.str.14, i32 noundef 1754, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

.preheader181:                                    ; preds = %183, %.preheader181
  %indvars.iv236 = phi i64 [ %indvars.iv.next237, %.preheader181 ], [ 0, %183 ]
  %187 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %indvars.iv236
  %188 = load ptr, ptr %187, align 8, !tbaa !5
  %189 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %indvars.iv236
  %190 = load ptr, ptr %189, align 8, !tbaa !5
  %191 = call ptr @sc_map_put_str(ptr noundef nonnull %1, ptr noundef %188, ptr noundef %190) #7
  %indvars.iv.next237 = add nuw nsw i64 %indvars.iv236, 1
  %exitcond239.not = icmp eq i64 %indvars.iv.next237, 100
  br i1 %exitcond239.not, label %.preheader180, label %.preheader181, !llvm.loop !25

192:                                              ; preds = %201
  %indvars.iv.next241 = add nuw nsw i64 %indvars.iv240, 1
  %exitcond243.not = icmp eq i64 %indvars.iv.next241, 100
  br i1 %exitcond243.not, label %193, label %.preheader180, !llvm.loop !26

193:                                              ; preds = %192
  call void @sc_map_term_str(ptr noundef nonnull %1) #7
  %194 = call zeroext i1 @sc_map_init_str(ptr noundef nonnull %1, i32 noundef 0, i32 noundef 0) #7
  br i1 %194, label %.preheader179, label %207

.preheader180:                                    ; preds = %.preheader181, %192
  %indvars.iv240 = phi i64 [ %indvars.iv.next241, %192 ], [ 0, %.preheader181 ]
  %195 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %indvars.iv240
  %196 = load ptr, ptr %195, align 8, !tbaa !5
  %197 = call ptr @sc_map_get_str(ptr noundef nonnull %1, ptr noundef %196) #7
  %198 = load i8, ptr %81, align 2, !tbaa !19, !range !11, !noundef !22
  %199 = trunc nuw i8 %198 to i1
  br i1 %199, label %201, label %200

200:                                              ; preds = %.preheader180
  call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.14, i32 noundef 1762, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

201:                                              ; preds = %.preheader180
  %202 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %indvars.iv240
  %203 = load ptr, ptr %202, align 8, !tbaa !5
  %204 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %197, ptr noundef nonnull dereferenceable(1) %203) #8
  %205 = icmp eq i32 %204, 0
  br i1 %205, label %192, label %206

206:                                              ; preds = %201
  call void @__assert_fail(ptr noundef nonnull @.str.125, ptr noundef nonnull @.str.14, i32 noundef 1763, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

207:                                              ; preds = %193
  call void @__assert_fail(ptr noundef nonnull @.str.79, ptr noundef nonnull @.str.14, i32 noundef 1768, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

.preheader178:                                    ; preds = %.preheader179
  %208 = load i32, ptr %53, align 8
  %209 = zext i32 %208 to i64
  %210 = load ptr, ptr %1, align 8, !tbaa !27
  %211 = load i8, ptr %57, align 8, !range !11
  %212 = trunc nuw i8 %211 to i1
  br label %.critedge

.preheader179:                                    ; preds = %193, %.preheader179
  %indvars.iv244 = phi i64 [ %indvars.iv.next245, %.preheader179 ], [ 0, %193 ]
  %213 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %indvars.iv244
  %214 = load ptr, ptr %213, align 8, !tbaa !5
  %215 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %indvars.iv244
  %216 = load ptr, ptr %215, align 8, !tbaa !5
  %217 = call ptr @sc_map_put_str(ptr noundef nonnull %1, ptr noundef %214, ptr noundef %216) #7
  %indvars.iv.next245 = add nuw nsw i64 %indvars.iv244, 1
  %exitcond247.not = icmp eq i64 %indvars.iv.next245, 100
  br i1 %exitcond247.not, label %.preheader178, label %.preheader179, !llvm.loop !28

.critedge:                                        ; preds = %.preheader178, %.loopexit177
  %.0117202 = phi i64 [ -1, %.preheader178 ], [ %226, %.loopexit177 ]
  %218 = getelementptr inbounds %struct.sc_map_item_str, ptr %210, i64 %.0117202
  %219 = getelementptr inbounds i8, ptr %218, i64 8
  %220 = load ptr, ptr %219, align 8, !tbaa !29
  %221 = load ptr, ptr %218, align 8, !tbaa !12
  %222 = icmp eq i64 %.0117202, -1
  br i1 %222, label %223, label %225

223:                                              ; preds = %.critedge
  %224 = icmp ne ptr %221, null
  %or.cond7 = select i1 %212, i1 true, i1 %224
  br i1 %or.cond7, label %.preheader176.preheader, label %.loopexit177

.preheader176.preheader:                          ; preds = %225, %223
  br label %.preheader176

225:                                              ; preds = %.critedge
  %.old6.not = icmp eq ptr %221, null
  br i1 %.old6.not, label %.loopexit177, label %.preheader176.preheader

.loopexit177:                                     ; preds = %231, %223, %225
  %226 = add nsw i64 %.0117202, 1
  %exitcond252.not = icmp eq i64 %226, %209
  br i1 %exitcond252.not, label %.critedge156, label %.critedge, !llvm.loop !30

.preheader176:                                    ; preds = %.preheader176.preheader, %236
  %indvars.iv248 = phi i64 [ %indvars.iv.next249, %236 ], [ 0, %.preheader176.preheader ]
  %227 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %indvars.iv248
  %228 = load ptr, ptr %227, align 8, !tbaa !5
  %229 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %221, ptr noundef nonnull dereferenceable(1) %228) #8
  %230 = icmp eq i32 %229, 0
  br i1 %230, label %231, label %236

231:                                              ; preds = %.preheader176
  %232 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %indvars.iv248
  %233 = load ptr, ptr %232, align 8, !tbaa !5
  %234 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %220, ptr noundef nonnull dereferenceable(1) %233) #8
  %235 = icmp eq i32 %234, 0
  br i1 %235, label %.loopexit177, label %236

236:                                              ; preds = %.preheader176, %231
  %indvars.iv.next249 = add nuw nsw i64 %indvars.iv248, 1
  %exitcond251.not = icmp eq i64 %indvars.iv.next249, 100
  br i1 %exitcond251.not, label %.critedge154, label %.preheader176, !llvm.loop !31

.critedge154:                                     ; preds = %236
  call void @__assert_fail(ptr noundef nonnull @.str.128, ptr noundef nonnull @.str.14, i32 noundef 1783, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

.critedge156:                                     ; preds = %.loopexit177, %.loopexit174
  %.0112204 = phi i64 [ %243, %.loopexit174 ], [ -1, %.loopexit177 ]
  %237 = getelementptr inbounds %struct.sc_map_item_str, ptr %210, i64 %.0112204
  %238 = load ptr, ptr %237, align 8, !tbaa !12
  %239 = icmp eq i64 %.0112204, -1
  br i1 %239, label %240, label %242

240:                                              ; preds = %.critedge156
  %241 = icmp ne ptr %238, null
  %or.cond10 = select i1 %212, i1 true, i1 %241
  br i1 %or.cond10, label %.preheader173.preheader, label %.loopexit174

.preheader173.preheader:                          ; preds = %242, %240
  br label %.preheader173

242:                                              ; preds = %.critedge156
  %.old9.not = icmp eq ptr %238, null
  br i1 %.old9.not, label %.loopexit174, label %.preheader173.preheader

.loopexit174:                                     ; preds = %.preheader173, %240, %242
  %243 = add nsw i64 %.0112204, 1
  %exitcond257.not = icmp eq i64 %243, %209
  br i1 %exitcond257.not, label %.critedge160, label %.critedge156, !llvm.loop !32

244:                                              ; preds = %.preheader173
  %indvars.iv.next254 = add nuw nsw i64 %indvars.iv253, 1
  %exitcond256.not = icmp eq i64 %indvars.iv.next254, 100
  br i1 %exitcond256.not, label %.critedge158, label %.preheader173, !llvm.loop !33

.preheader173:                                    ; preds = %.preheader173.preheader, %244
  %indvars.iv253 = phi i64 [ %indvars.iv.next254, %244 ], [ 0, %.preheader173.preheader ]
  %245 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %indvars.iv253
  %246 = load ptr, ptr %245, align 8, !tbaa !5
  %247 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %238, ptr noundef nonnull dereferenceable(1) %246) #8
  %248 = icmp eq i32 %247, 0
  br i1 %248, label %.loopexit174, label %244

.critedge158:                                     ; preds = %244
  call void @__assert_fail(ptr noundef nonnull @.str.128, ptr noundef nonnull @.str.14, i32 noundef 1794, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

249:                                              ; preds = %.loopexit
  call void @sc_map_term_str(ptr noundef nonnull %1) #7
  br label %263

.critedge160:                                     ; preds = %.loopexit174, %.loopexit
  %.0107206 = phi i64 [ %256, %.loopexit ], [ -1, %.loopexit174 ]
  %250 = getelementptr inbounds %struct.sc_map_item_str, ptr %210, i64 %.0107206, i32 1
  %251 = load ptr, ptr %250, align 8, !tbaa !29
  %252 = icmp eq i64 %.0107206, -1
  %brmerge213.not = select i1 %252, i1 %212, i1 false
  br i1 %brmerge213.not, label %.preheader.preheader, label %253

253:                                              ; preds = %.critedge160
  %254 = getelementptr inbounds %struct.sc_map_item_str, ptr %210, i64 %.0107206
  %255 = load ptr, ptr %254, align 8, !tbaa !12
  %.not142 = icmp eq ptr %255, null
  br i1 %.not142, label %.loopexit, label %.preheader.preheader

.preheader.preheader:                             ; preds = %.critedge160, %253
  br label %.preheader

.loopexit:                                        ; preds = %.preheader, %253
  %256 = add nsw i64 %.0107206, 1
  %exitcond262.not = icmp eq i64 %256, %209
  br i1 %exitcond262.not, label %249, label %.critedge160, !llvm.loop !34

257:                                              ; preds = %.preheader
  %indvars.iv.next259 = add nuw nsw i64 %indvars.iv258, 1
  %exitcond261.not = icmp eq i64 %indvars.iv.next259, 100
  br i1 %exitcond261.not, label %.critedge162, label %.preheader, !llvm.loop !35

.preheader:                                       ; preds = %.preheader.preheader, %257
  %indvars.iv258 = phi i64 [ %indvars.iv.next259, %257 ], [ 0, %.preheader.preheader ]
  %258 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %indvars.iv258
  %259 = load ptr, ptr %258, align 8, !tbaa !5
  %260 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %251, ptr noundef nonnull dereferenceable(1) %259) #8
  %261 = icmp eq i32 %260, 0
  br i1 %261, label %.loopexit, label %257

.critedge162:                                     ; preds = %257
  call void @__assert_fail(ptr noundef nonnull @.str.128, ptr noundef nonnull @.str.14, i32 noundef 1805, ptr noundef nonnull @__PRETTY_FUNCTION__.test1) #9
  unreachable

262:                                              ; preds = %263
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %2) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %1) #7
  ret void

263:                                              ; preds = %249, %263
  %indvars.iv263 = phi i64 [ 0, %249 ], [ %indvars.iv.next264, %263 ]
  %264 = getelementptr inbounds [128 x ptr], ptr %2, i64 0, i64 %indvars.iv263
  %265 = load ptr, ptr %264, align 8, !tbaa !5
  call void @free(ptr noundef %265) #7
  %266 = getelementptr inbounds [128 x ptr], ptr %3, i64 0, i64 %indvars.iv263
  %267 = load ptr, ptr %266, align 8, !tbaa !5
  call void @free(ptr noundef %267) #7
  %indvars.iv.next264 = add nuw nsw i64 %indvars.iv263, 1
  %exitcond266.not = icmp eq i64 %indvars.iv.next264, 128
  br i1 %exitcond266.not, label %262, label %263, !llvm.loop !36
}

; Function Attrs: nounwind uwtable
declare hidden ptr @str_random(i64 noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #6

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind 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 nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(read) }
attributes #9 = { noreturn 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/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{i8 0, i8 2}
!12 = !{!13, !6, i64 0}
!13 = !{!"sc_map_item_str", !6, i64 0, !6, i64 8, !14, i64 16}
!14 = !{!"int", !7, i64 0}
!15 = distinct !{!15, !10, !16}
!16 = !{!"llvm.loop.peeled.count", i32 1}
!17 = distinct !{!17, !10, !16}
!18 = distinct !{!18, !10, !16}
!19 = !{!20, !21, i64 26}
!20 = !{!"sc_map_str", !6, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !21, i64 24, !21, i64 25, !21, i64 26}
!21 = !{!"_Bool", !7, i64 0}
!22 = !{}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = !{!20, !6, i64 0}
!28 = distinct !{!28, !10}
!29 = !{!13, !6, i64 8}
!30 = distinct !{!30, !10}
!31 = distinct !{!31, !10}
!32 = distinct !{!32, !10}
!33 = distinct !{!33, !10}
!34 = distinct !{!34, !10}
!35 = distinct !{!35, !10}
!36 = distinct !{!36, !10}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass