; LLVM IR from yinqiwen/ardb :: src/common/channel/socket (socket_channel)

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

%"class.ardb::Channel" = type { %"class.ardb::Runnable", %"struct.ardb::ChannelOptions", i8, i8, i32, %"class.ardb::ChannelPipeline", ptr, i32, i32, %"class.ardb::Buffer", %"class.ardb::Buffer", i32, ptr, ptr, ptr, ptr, i8, i8, i8, ptr, ptr, ptr }
%"class.ardb::Runnable" = type { ptr }
%"struct.ardb::ChannelOptions" = type <{ i32, i32, i8, [3 x i8], i32, i8, [3 x i8], i32, i32, i32, i8, i8, [2 x i8] }>
%"class.ardb::ChannelPipeline" = type { ptr, ptr, ptr, %"class.btree::btree_map" }
%"class.btree::btree_map" = type { %"class.btree::btree_map_container" }
%"class.btree::btree_map_container" = type { %"class.btree::btree_unique_container" }
%"class.btree::btree_unique_container" = type { %"class.btree::btree_container" }
%"class.btree::btree_container" = type { %"class.btree::btree" }
%"class.btree::btree" = type { %"struct.btree::btree<btree::btree_map_params<std::__cxx11::basic_string<char>, ardb::ChannelHandlerContext *, std::less<std::__cxx11::basic_string<char>>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, ardb::ChannelHandlerContext *>>, 256>>::empty_base_handle" }
%"struct.btree::btree<btree::btree_map_params<std::__cxx11::basic_string<char>, ardb::ChannelHandlerContext *, std::less<std::__cxx11::basic_string<char>>, std::allocator<std::pair<const std::__cxx11::basic_string<char>, ardb::ChannelHandlerContext *>>, 256>>::empty_base_handle" = type { ptr }
%"class.ardb::Buffer" = type <{ ptr, i64, i64, i64, i8, [7 x i8] }>

@.str = external hidden unnamed_addr constant [92 x i8], align 1
@__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [27 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE(ptr noundef nonnull align 8 dereferenceable(276) %0, ptr noundef nonnull align 4 dereferenceable(34) %1) unnamed_addr #0 align 2 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i8, align 1
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %12 = load ptr, ptr %4, align 8
  %13 = load ptr, ptr %5, align 8, !tbaa !5
  %14 = call noundef zeroext i1 @_ZN4ardb7Channel11DoConfigureERKNS_14ChannelOptionsE(ptr noundef nonnull align 8 dereferenceable(256) %12, ptr noundef nonnull align 4 dereferenceable(34) %13)
  br i1 %14, label %16, label %15

15:                                               ; preds = %2
  store i1 false, ptr %3, align 1
  br label %209

16:                                               ; preds = %2
  %17 = getelementptr inbounds %"class.ardb::Channel", ptr %12, i32 0, i32 8
  %18 = load i32, ptr %17, align 4, !tbaa !9
  %19 = icmp slt i32 %18, 0
  br i1 %19, label %20, label %28

20:                                               ; preds = %16
  br label %21

21:                                               ; preds = %20
  %22 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %23 = call noundef zeroext i1 %22(i32 noundef 2)
  br i1 %23, label %24, label %26

24:                                               ; preds = %21
  %25 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  call void (i32, ptr, ptr, i32, ptr, ...) %25(i32 noundef 2, ptr noundef @.str, ptr noundef @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 48, ptr noundef @.str.1)
  br label %26

26:                                               ; preds = %24, %21
  br label %27

27:                                               ; preds = %26
  store i1 false, ptr %3, align 1
  br label %209

28:                                               ; preds = %16
  %29 = load ptr, ptr %5, align 8, !tbaa !5
  %30 = getelementptr inbounds %"struct.ardb::ChannelOptions", ptr %29, i32 0, i32 0
  %31 = load i32, ptr %30, align 4, !tbaa !24
  %32 = icmp ugt i32 %31, 0
  br i1 %32, label %33, label %54

33:                                               ; preds = %28
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #5
  %34 = getelementptr inbounds %"class.ardb::Channel", ptr %12, i32 0, i32 8
  %35 = load i32, ptr %34, align 4, !tbaa !9
  %36 = load ptr, ptr %5, align 8, !tbaa !5
  %37 = getelementptr inbounds %"struct.ardb::ChannelOptions", ptr %36, i32 0, i32 0
  %38 = call i32 @setsockopt(i32 noundef %35, i32 noundef 1, i32 noundef 8, ptr noundef %37, i32 noundef 4) #5
  store i32 %38, ptr %6, align 4, !tbaa !25
  %39 = load i32, ptr %6, align 4, !tbaa !25
  %40 = icmp ne i32 %39, 0
  br i1 %40, label %41, label %53

41:                                               ; preds = %33
  br label %42

42:                                               ; preds = %41
  %43 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %44 = call noundef zeroext i1 %43(i32 noundef 3)
  br i1 %44, label %45, label %50

45:                                               ; preds = %42
  %46 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %47 = load ptr, ptr %5, align 8, !tbaa !5
  %48 = getelementptr inbounds %"struct.ardb::ChannelOptions", ptr %47, i32 0, i32 0
  %49 = load i32, ptr %48, align 4, !tbaa !24
  call void (i32, ptr, ptr, i32, ptr, ...) %46(i32 noundef 3, ptr noundef @.str, ptr noundef @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 56, ptr noundef @.str.2, i32 noundef %49)
  br label %50

50:                                               ; preds = %45, %42
  br label %51

51:                                               ; preds = %50
  br label %52

52:                                               ; preds = %51
  br label %53

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

54:                                               ; preds = %53, %28
  %55 = load ptr, ptr %5, align 8, !tbaa !5
  %56 = getelementptr inbounds %"struct.ardb::ChannelOptions", ptr %55, i32 0, i32 1
  %57 = load i32, ptr %56, align 4, !tbaa !26
  %58 = icmp ugt i32 %57, 0
  br i1 %58, label %59, label %80

59:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  %60 = getelementptr inbounds %"class.ardb::Channel", ptr %12, i32 0, i32 8
  %61 = load i32, ptr %60, align 4, !tbaa !9
  %62 = load ptr, ptr %5, align 8, !tbaa !5
  %63 = getelementptr inbounds %"struct.ardb::ChannelOptions", ptr %62, i32 0, i32 1
  %64 = call i32 @setsockopt(i32 noundef %61, i32 noundef 1, i32 noundef 7, ptr noundef %63, i32 noundef 4) #5
  store i32 %64, ptr %7, align 4, !tbaa !25
  %65 = load i32, ptr %7, align 4, !tbaa !25
  %66 = icmp ne i32 %65, 0
  br i1 %66, label %67, label %79

67:                                               ; preds = %59
  br label %68

68:                                               ; preds = %67
  %69 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %70 = call noundef zeroext i1 %69(i32 noundef 3)
  br i1 %70, label %71, label %76

71:                                               ; preds = %68
  %72 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %73 = load ptr, ptr %5, align 8, !tbaa !5
  %74 = getelementptr inbounds %"struct.ardb::ChannelOptions", ptr %73, i32 0, i32 1
  %75 = load i32, ptr %74, align 4, !tbaa !26
  call void (i32, ptr, ptr, i32, ptr, ...) %72(i32 noundef 3, ptr noundef @.str, ptr noundef @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 65, ptr noundef @.str.3, i32 noundef %75)
  br label %76

76:                                               ; preds = %71, %68
  br label %77

77:                                               ; preds = %76
  br label %78

78:                                               ; preds = %77
  br label %79

79:                                               ; preds = %78, %59
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  br label %80

80:                                               ; preds = %79, %54
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  store i32 1, ptr %8, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #5
  store i8 0, ptr %9, align 1, !tbaa !27
  %81 = getelementptr inbounds %"class.ardb::Channel", ptr %12, i32 0, i32 1
  %82 = getelementptr inbounds %"struct.ardb::ChannelOptions", ptr %81, i32 0, i32 2
  %83 = load i8, ptr %82, align 8, !tbaa !28, !range !29, !noundef !30
  %84 = trunc i8 %83 to i1
  %85 = zext i1 %84 to i32
  %86 = load ptr, ptr %5, align 8, !tbaa !5
  %87 = getelementptr inbounds %"struct.ardb::ChannelOptions", ptr %86, i32 0, i32 2
  %88 = load i8, ptr %87, align 4, !tbaa !31, !range !29, !noundef !30
  %89 = trunc i8 %88 to i1
  %90 = zext i1 %89 to i32
  %91 = icmp ne i32 %85, %90
  br i1 %91, label %92, label %99

92:                                               ; preds = %80
  store i8 1, ptr %9, align 1, !tbaa !27
  %93 = load ptr, ptr %5, align 8, !tbaa !5
  %94 = getelementptr inbounds %"struct.ardb::ChannelOptions", ptr %93, i32 0, i32 2
  %95 = load i8, ptr %94, align 4, !tbaa !31, !range !29, !noundef !30
  %96 = trunc i8 %95 to i1
  %97 = zext i1 %96 to i64
  %98 = select i1 %96, i32 1, i32 0
  store i32 %98, ptr %8, align 4, !tbaa !25
  br label %99

99:                                               ; preds = %92, %80
  %100 = load i8, ptr %9, align 1, !tbaa !27, !range !29, !noundef !30
  %101 = trunc i8 %100 to i1
  br i1 %101, label %102, label %119

102:                                              ; preds = %99
  %103 = getelementptr inbounds %"class.ardb::Channel", ptr %12, i32 0, i32 8
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = call i32 @setsockopt(i32 noundef %104, i32 noundef 6, i32 noundef 1, ptr noundef %8, i32 noundef 4) #5
  %106 = icmp slt i32 %105, 0
  br i1 %106, label %107, label %119

107:                                              ; preds = %102
  br label %108

108:                                              ; preds = %107
  %109 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %110 = call noundef zeroext i1 %109(i32 noundef 3)
  br i1 %110, label %111, label %116

111:                                              ; preds = %108
  %112 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %113 = call ptr @__errno_location() #6
  %114 = load i32, ptr %113, align 4, !tbaa !25
  %115 = call ptr @strerror(i32 noundef %114) #5
  call void (i32, ptr, ptr, i32, ptr, ...) %112(i32 noundef 3, ptr noundef @.str, ptr noundef @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 79, ptr noundef @.str.4, ptr noundef %115)
  br label %116

116:                                              ; preds = %111, %108
  br label %117

117:                                              ; preds = %116
  br label %118

118:                                              ; preds = %117
  br label %119

119:                                              ; preds = %118, %102, %99
  %120 = load ptr, ptr %5, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.ardb::ChannelOptions", ptr %120, i32 0, i32 4
  %122 = load i32, ptr %121, align 4, !tbaa !32
  %123 = icmp ugt i32 %122, 0
  br i1 %123, label %124, label %207

124:                                              ; preds = %119
  %125 = getelementptr inbounds %"class.ardb::Channel", ptr %12, i32 0, i32 8
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = call i32 @setsockopt(i32 noundef %126, i32 noundef 1, i32 noundef 9, ptr noundef %8, i32 noundef 4) #5
  %128 = icmp slt i32 %127, 0
  br i1 %128, label %129, label %141

129:                                              ; preds = %124
  br label %130

130:                                              ; preds = %129
  %131 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %132 = call noundef zeroext i1 %131(i32 noundef 3)
  br i1 %132, label %133, label %138

133:                                              ; preds = %130
  %134 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %135 = call ptr @__errno_location() #6
  %136 = load i32, ptr %135, align 4, !tbaa !25
  %137 = call ptr @strerror(i32 noundef %136) #5
  call void (i32, ptr, ptr, i32, ptr, ...) %134(i32 noundef 3, ptr noundef @.str, ptr noundef @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 87, ptr noundef @.str.5, ptr noundef %137)
  br label %138

138:                                              ; preds = %133, %130
  br label %139

139:                                              ; preds = %138
  br label %140

140:                                              ; preds = %139
  store i1 false, ptr %3, align 1
  store i32 1, ptr %10, align 4
  br label %208

141:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %142 = load ptr, ptr %5, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.ardb::ChannelOptions", ptr %142, i32 0, i32 4
  %144 = load i32, ptr %143, align 4, !tbaa !32
  store i32 %144, ptr %11, align 4, !tbaa !25
  %145 = getelementptr inbounds %"class.ardb::Channel", ptr %12, i32 0, i32 8
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = call i32 @setsockopt(i32 noundef %146, i32 noundef 6, i32 noundef 4, ptr noundef %11, i32 noundef 4) #5
  %148 = icmp slt i32 %147, 0
  br i1 %148, label %149, label %161

149:                                              ; preds = %141
  br label %150

150:                                              ; preds = %149
  %151 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %152 = call noundef zeroext i1 %151(i32 noundef 3)
  br i1 %152, label %153, label %158

153:                                              ; preds = %150
  %154 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %155 = call ptr @__errno_location() #6
  %156 = load i32, ptr %155, align 4, !tbaa !25
  %157 = call ptr @strerror(i32 noundef %156) #5
  call void (i32, ptr, ptr, i32, ptr, ...) %154(i32 noundef 3, ptr noundef @.str, ptr noundef @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 99, ptr noundef @.str.6, ptr noundef %157)
  br label %158

158:                                              ; preds = %153, %150
  br label %159

159:                                              ; preds = %158
  br label %160

160:                                              ; preds = %159
  store i1 false, ptr %3, align 1
  store i32 1, ptr %10, align 4
  br label %204

161:                                              ; preds = %141
  %162 = load ptr, ptr %5, align 8, !tbaa !5
  %163 = getelementptr inbounds %"struct.ardb::ChannelOptions", ptr %162, i32 0, i32 4
  %164 = load i32, ptr %163, align 4, !tbaa !32
  %165 = udiv i32 %164, 3
  store i32 %165, ptr %11, align 4, !tbaa !25
  %166 = load i32, ptr %11, align 4, !tbaa !25
  %167 = icmp eq i32 %166, 0
  br i1 %167, label %168, label %169

168:                                              ; preds = %161
  store i32 1, ptr %11, align 4, !tbaa !25
  br label %169

169:                                              ; preds = %168, %161
  %170 = getelementptr inbounds %"class.ardb::Channel", ptr %12, i32 0, i32 8
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = call i32 @setsockopt(i32 noundef %171, i32 noundef 6, i32 noundef 5, ptr noundef %11, i32 noundef 4) #5
  %173 = icmp slt i32 %172, 0
  br i1 %173, label %174, label %186

174:                                              ; preds = %169
  br label %175

175:                                              ; preds = %174
  %176 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %177 = call noundef zeroext i1 %176(i32 noundef 3)
  br i1 %177, label %178, label %183

178:                                              ; preds = %175
  %179 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %180 = call ptr @__errno_location() #6
  %181 = load i32, ptr %180, align 4, !tbaa !25
  %182 = call ptr @strerror(i32 noundef %181) #5
  call void (i32, ptr, ptr, i32, ptr, ...) %179(i32 noundef 3, ptr noundef @.str, ptr noundef @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 110, ptr noundef @.str.7, ptr noundef %182)
  br label %183

183:                                              ; preds = %178, %175
  br label %184

184:                                              ; preds = %183
  br label %185

185:                                              ; preds = %184
  store i1 false, ptr %3, align 1
  store i32 1, ptr %10, align 4
  br label %204

186:                                              ; preds = %169
  store i32 3, ptr %11, align 4, !tbaa !25
  %187 = getelementptr inbounds %"class.ardb::Channel", ptr %12, i32 0, i32 8
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = call i32 @setsockopt(i32 noundef %188, i32 noundef 6, i32 noundef 6, ptr noundef %11, i32 noundef 4) #5
  %190 = icmp slt i32 %189, 0
  br i1 %190, label %191, label %203

191:                                              ; preds = %186
  br label %192

192:                                              ; preds = %191
  %193 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %194 = call noundef zeroext i1 %193(i32 noundef 3)
  br i1 %194, label %195, label %200

195:                                              ; preds = %192
  %196 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %197 = call ptr @__errno_location() #6
  %198 = load i32, ptr %197, align 4, !tbaa !25
  %199 = call ptr @strerror(i32 noundef %198) #5
  call void (i32, ptr, ptr, i32, ptr, ...) %196(i32 noundef 3, ptr noundef @.str, ptr noundef @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 119, ptr noundef @.str.8, ptr noundef %199)
  br label %200

200:                                              ; preds = %195, %192
  br label %201

201:                                              ; preds = %200
  br label %202

202:                                              ; preds = %201
  store i1 false, ptr %3, align 1
  store i32 1, ptr %10, align 4
  br label %204

203:                                              ; preds = %186
  store i32 0, ptr %10, align 4
  br label %204

204:                                              ; preds = %203, %202, %185, %160
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  %205 = load i32, ptr %10, align 4
  switch i32 %205, label %208 [
    i32 0, label %206
  ]

206:                                              ; preds = %204
  br label %207

207:                                              ; preds = %206, %119
  store i1 true, ptr %3, align 1
  store i32 1, ptr %10, align 4
  br label %208

208:                                              ; preds = %207, %204, %140
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  br label %209

209:                                              ; preds = %208, %27, %15
  %210 = load i1, ptr %3, align 1
  ret i1 %210
}

declare noundef zeroext i1 @_ZN4ardb7Channel11DoConfigureERKNS_14ChannelOptionsE(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef nonnull align 4 dereferenceable(34)) unnamed_addr #1

declare noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv() #1

declare noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv() #1

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

; Function Attrs: nounwind
declare i32 @setsockopt(i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) #3

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

; Function Attrs: nounwind
declare ptr @strerror(i32 noundef) #3

; Function Attrs: nounwind willreturn memory(none)
declare ptr @__errno_location() #4

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { nounwind willreturn memory(none) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !13, i64 100}
!10 = !{!"_ZTSN4ardb7ChannelE", !11, i64 0, !12, i64 8, !14, i64 44, !14, i64 45, !13, i64 48, !15, i64 56, !6, i64 88, !13, i64 96, !13, i64 100, !22, i64 104, !22, i64 144, !13, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !14, i64 224, !14, i64 225, !14, i64 226, !6, i64 232, !6, i64 240, !6, i64 248}
!11 = !{!"_ZTSN4ardb8RunnableE"}
!12 = !{!"_ZTSN4ardb14ChannelOptionsE", !13, i64 0, !13, i64 4, !14, i64 8, !13, i64 12, !14, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !14, i64 32, !14, i64 33}
!13 = !{!"int", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTSN4ardb15ChannelPipelineE", !6, i64 0, !6, i64 8, !6, i64 16, !16, i64 24}
!16 = !{!"_ZTSN5btree9btree_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN4ardb21ChannelHandlerContextESt4lessIS6_ESaISt4pairIKS6_S9_EELi256EEE", !17, i64 0}
!17 = !{!"_ZTSN5btree19btree_map_containerINS_5btreeINS_16btree_map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN4ardb21ChannelHandlerContextESt4lessIS8_ESaISt4pairIKS8_SB_EELi256EEEEEEE", !18, i64 0}
!18 = !{!"_ZTSN5btree22btree_unique_containerINS_5btreeINS_16btree_map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN4ardb21ChannelHandlerContextESt4lessIS8_ESaISt4pairIKS8_SB_EELi256EEEEEEE", !19, i64 0}
!19 = !{!"_ZTSN5btree15btree_containerINS_5btreeINS_16btree_map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN4ardb21ChannelHandlerContextESt4lessIS8_ESaISt4pairIKS8_SB_EELi256EEEEEEE", !20, i64 0}
!20 = !{!"_ZTSN5btree5btreeINS_16btree_map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN4ardb21ChannelHandlerContextESt4lessIS7_ESaISt4pairIKS7_SA_EELi256EEEEE", !21, i64 0}
!21 = !{!"_ZTSN5btree5btreeINS_16btree_map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN4ardb21ChannelHandlerContextESt4lessIS7_ESaISt4pairIKS7_SA_EELi256EEEE17empty_base_handleIS6_PNS_10btree_nodeISH_EEEE", !6, i64 0}
!22 = !{!"_ZTSN4ardb6BufferE", !6, i64 0, !23, i64 8, !23, i64 16, !23, i64 24, !14, i64 32}
!23 = !{!"long", !7, i64 0}
!24 = !{!12, !13, i64 0}
!25 = !{!13, !13, i64 0}
!26 = !{!12, !13, i64 4}
!27 = !{!14, !14, i64 0}
!28 = !{!10, !14, i64 16}
!29 = !{i8 0, i8 2}
!30 = !{}
!31 = !{!12, !14, i64 8}
!32 = !{!12, !13, i64 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"

@.str = external hidden unnamed_addr constant [92 x i8], align 1
@__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [27 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE(ptr noundef nonnull align 8 dereferenceable(276) %0, ptr noundef nonnull align 4 dereferenceable(34) %1) unnamed_addr #0 align 2 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = tail call noundef zeroext i1 @_ZN4ardb7Channel11DoConfigureERKNS_14ChannelOptionsE(ptr noundef nonnull align 8 dereferenceable(256) %0, ptr noundef nonnull align 4 dereferenceable(34) %1)
  br i1 %5, label %6, label %111

6:                                                ; preds = %2
  %7 = getelementptr inbounds i8, ptr %0, i64 100
  %8 = load i32, ptr %7, align 4, !tbaa !5
  %9 = icmp slt i32 %8, 0
  br i1 %9, label %10, label %15

10:                                               ; preds = %6
  %11 = tail call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %12 = tail call noundef zeroext i1 %11(i32 noundef 2)
  br i1 %12, label %13, label %111

13:                                               ; preds = %10
  %14 = tail call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  tail call void (i32, ptr, ptr, i32, ptr, ...) %14(i32 noundef 2, ptr noundef nonnull @.str, ptr noundef nonnull @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 48, ptr noundef nonnull @.str.1)
  br label %111

15:                                               ; preds = %6
  %16 = load i32, ptr %1, align 4, !tbaa !23
  %.not = icmp eq i32 %16, 0
  br i1 %.not, label %25, label %17

17:                                               ; preds = %15
  %18 = tail call i32 @setsockopt(i32 noundef %8, i32 noundef 1, i32 noundef 8, ptr noundef nonnull %1, i32 noundef 4) #5
  %.not20 = icmp eq i32 %18, 0
  br i1 %.not20, label %25, label %19

19:                                               ; preds = %17
  %20 = tail call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %21 = tail call noundef zeroext i1 %20(i32 noundef 3)
  br i1 %21, label %22, label %25

22:                                               ; preds = %19
  %23 = tail call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %24 = load i32, ptr %1, align 4, !tbaa !23
  tail call void (i32, ptr, ptr, i32, ptr, ...) %23(i32 noundef 3, ptr noundef nonnull @.str, ptr noundef nonnull @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 56, ptr noundef nonnull @.str.2, i32 noundef %24)
  br label %25

25:                                               ; preds = %17, %22, %19, %15
  %26 = getelementptr inbounds i8, ptr %1, i64 4
  %27 = load i32, ptr %26, align 4, !tbaa !24
  %.not21 = icmp eq i32 %27, 0
  br i1 %.not21, label %37, label %28

28:                                               ; preds = %25
  %29 = load i32, ptr %7, align 4, !tbaa !5
  %30 = tail call i32 @setsockopt(i32 noundef %29, i32 noundef 1, i32 noundef 7, ptr noundef nonnull %26, i32 noundef 4) #5
  %.not22 = icmp eq i32 %30, 0
  br i1 %.not22, label %37, label %31

31:                                               ; preds = %28
  %32 = tail call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %33 = tail call noundef zeroext i1 %32(i32 noundef 3)
  br i1 %33, label %34, label %37

34:                                               ; preds = %31
  %35 = tail call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %36 = load i32, ptr %26, align 4, !tbaa !24
  tail call void (i32, ptr, ptr, i32, ptr, ...) %35(i32 noundef 3, ptr noundef nonnull @.str, ptr noundef nonnull @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 65, ptr noundef nonnull @.str.3, i32 noundef %36)
  br label %37

37:                                               ; preds = %28, %34, %31, %25
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #5
  store i32 1, ptr %3, align 4, !tbaa !25
  %38 = getelementptr inbounds i8, ptr %0, i64 16
  %39 = load i8, ptr %38, align 8, !tbaa !26, !range !27, !noundef !28
  %40 = getelementptr inbounds i8, ptr %1, i64 8
  %41 = load i8, ptr %40, align 4, !tbaa !29, !range !27, !noundef !28
  %.not23.not = icmp eq i8 %39, %41
  br i1 %.not23.not, label %.critedge, label %42

42:                                               ; preds = %37
  %43 = zext nneg i8 %41 to i32
  store i32 %43, ptr %3, align 4, !tbaa !25
  %44 = load i32, ptr %7, align 4, !tbaa !5
  %45 = call i32 @setsockopt(i32 noundef %44, i32 noundef 6, i32 noundef 1, ptr noundef nonnull %3, i32 noundef 4) #5
  %46 = icmp slt i32 %45, 0
  br i1 %46, label %47, label %.critedge

47:                                               ; preds = %42
  %48 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %49 = call noundef zeroext i1 %48(i32 noundef 3)
  br i1 %49, label %50, label %.critedge

50:                                               ; preds = %47
  %51 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %52 = tail call ptr @__errno_location() #6
  %53 = load i32, ptr %52, align 4, !tbaa !25
  %54 = call ptr @strerror(i32 noundef %53) #5
  call void (i32, ptr, ptr, i32, ptr, ...) %51(i32 noundef 3, ptr noundef nonnull @.str, ptr noundef nonnull @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 79, ptr noundef nonnull @.str.4, ptr noundef %54)
  br label %.critedge

.critedge:                                        ; preds = %37, %47, %50, %42
  %55 = getelementptr inbounds i8, ptr %1, i64 12
  %56 = load i32, ptr %55, align 4, !tbaa !30
  %.not24 = icmp eq i32 %56, 0
  br i1 %.not24, label %110, label %57

57:                                               ; preds = %.critedge
  %58 = load i32, ptr %7, align 4, !tbaa !5
  %59 = call i32 @setsockopt(i32 noundef %58, i32 noundef 1, i32 noundef 9, ptr noundef nonnull %3, i32 noundef 4) #5
  %60 = icmp slt i32 %59, 0
  br i1 %60, label %61, label %69

61:                                               ; preds = %57
  %62 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %63 = call noundef zeroext i1 %62(i32 noundef 3)
  br i1 %63, label %64, label %110

64:                                               ; preds = %61
  %65 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %66 = tail call ptr @__errno_location() #6
  %67 = load i32, ptr %66, align 4, !tbaa !25
  %68 = call ptr @strerror(i32 noundef %67) #5
  call void (i32, ptr, ptr, i32, ptr, ...) %65(i32 noundef 3, ptr noundef nonnull @.str, ptr noundef nonnull @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 87, ptr noundef nonnull @.str.5, ptr noundef %68)
  br label %110

69:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #5
  %70 = load i32, ptr %55, align 4, !tbaa !30
  store i32 %70, ptr %4, align 4, !tbaa !25
  %71 = load i32, ptr %7, align 4, !tbaa !5
  %72 = call i32 @setsockopt(i32 noundef %71, i32 noundef 6, i32 noundef 4, ptr noundef nonnull %4, i32 noundef 4) #5
  %73 = icmp slt i32 %72, 0
  br i1 %73, label %74, label %82

74:                                               ; preds = %69
  %75 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %76 = call noundef zeroext i1 %75(i32 noundef 3)
  br i1 %76, label %77, label %.critedge26

77:                                               ; preds = %74
  %78 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %79 = tail call ptr @__errno_location() #6
  %80 = load i32, ptr %79, align 4, !tbaa !25
  %81 = call ptr @strerror(i32 noundef %80) #5
  call void (i32, ptr, ptr, i32, ptr, ...) %78(i32 noundef 3, ptr noundef nonnull @.str, ptr noundef nonnull @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 99, ptr noundef nonnull @.str.6, ptr noundef %81)
  br label %.critedge26

82:                                               ; preds = %69
  %83 = load i32, ptr %55, align 4, !tbaa !30
  %84 = udiv i32 %83, 3
  %85 = icmp ult i32 %83, 3
  %spec.store.select = select i1 %85, i32 1, i32 %84
  store i32 %spec.store.select, ptr %4, align 4
  %86 = load i32, ptr %7, align 4, !tbaa !5
  %87 = call i32 @setsockopt(i32 noundef %86, i32 noundef 6, i32 noundef 5, ptr noundef nonnull %4, i32 noundef 4) #5
  %88 = icmp slt i32 %87, 0
  br i1 %88, label %89, label %97

89:                                               ; preds = %82
  %90 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %91 = call noundef zeroext i1 %90(i32 noundef 3)
  br i1 %91, label %92, label %.critedge26

92:                                               ; preds = %89
  %93 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %94 = tail call ptr @__errno_location() #6
  %95 = load i32, ptr %94, align 4, !tbaa !25
  %96 = call ptr @strerror(i32 noundef %95) #5
  call void (i32, ptr, ptr, i32, ptr, ...) %93(i32 noundef 3, ptr noundef nonnull @.str, ptr noundef nonnull @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 110, ptr noundef nonnull @.str.7, ptr noundef %96)
  br label %.critedge26

97:                                               ; preds = %82
  store i32 3, ptr %4, align 4, !tbaa !25
  %98 = load i32, ptr %7, align 4, !tbaa !5
  %99 = call i32 @setsockopt(i32 noundef %98, i32 noundef 6, i32 noundef 6, ptr noundef nonnull %4, i32 noundef 4) #5
  %100 = icmp slt i32 %99, 0
  br i1 %100, label %101, label %109

101:                                              ; preds = %97
  %102 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv()
  %103 = call noundef zeroext i1 %102(i32 noundef 3)
  br i1 %103, label %104, label %.critedge26

104:                                              ; preds = %101
  %105 = call noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv()
  %106 = tail call ptr @__errno_location() #6
  %107 = load i32, ptr %106, align 4, !tbaa !25
  %108 = call ptr @strerror(i32 noundef %107) #5
  call void (i32, ptr, ptr, i32, ptr, ...) %105(i32 noundef 3, ptr noundef nonnull @.str, ptr noundef nonnull @__FUNCTION__._ZN4ardb13SocketChannel11DoConfigureERKNS_14ChannelOptionsE, i32 noundef 119, ptr noundef nonnull @.str.8, ptr noundef %108)
  br label %.critedge26

109:                                              ; preds = %97
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #5
  br label %110

.critedge26:                                      ; preds = %101, %104, %89, %92, %74, %77
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #5
  br label %110

110:                                              ; preds = %.critedge, %109, %.critedge26, %61, %64
  %.1 = phi i1 [ false, %64 ], [ false, %61 ], [ false, %.critedge26 ], [ true, %109 ], [ true, %.critedge ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #5
  br label %111

111:                                              ; preds = %13, %10, %2, %110
  %.2 = phi i1 [ %.1, %110 ], [ false, %2 ], [ false, %10 ], [ false, %13 ]
  ret i1 %.2
}

declare noundef zeroext i1 @_ZN4ardb7Channel11DoConfigureERKNS_14ChannelOptionsE(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef nonnull align 4 dereferenceable(34)) unnamed_addr #1

declare noundef ptr @_ZN4ardb10ArdbLogger13GetLogCheckerEv() local_unnamed_addr #1

declare noundef ptr @_ZN4ardb10ArdbLogger13GetLogHandlerEv() local_unnamed_addr #1

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

; Function Attrs: nounwind
declare i32 @setsockopt(i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

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

; Function Attrs: nounwind
declare ptr @strerror(i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare ptr @__errno_location() local_unnamed_addr #4

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { nounwind willreturn memory(none) }

!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, !9, i64 100}
!6 = !{!"_ZTSN4ardb7ChannelE", !7, i64 0, !8, i64 8, !12, i64 44, !12, i64 45, !9, i64 48, !13, i64 56, !14, i64 88, !9, i64 96, !9, i64 100, !21, i64 104, !21, i64 144, !9, i64 184, !14, i64 192, !14, i64 200, !14, i64 208, !14, i64 216, !12, i64 224, !12, i64 225, !12, i64 226, !14, i64 232, !14, i64 240, !14, i64 248}
!7 = !{!"_ZTSN4ardb8RunnableE"}
!8 = !{!"_ZTSN4ardb14ChannelOptionsE", !9, i64 0, !9, i64 4, !12, i64 8, !9, i64 12, !12, i64 16, !9, i64 20, !9, i64 24, !9, i64 28, !12, i64 32, !12, i64 33}
!9 = !{!"int", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"bool", !10, i64 0}
!13 = !{!"_ZTSN4ardb15ChannelPipelineE", !14, i64 0, !14, i64 8, !14, i64 16, !15, i64 24}
!14 = !{!"any pointer", !10, i64 0}
!15 = !{!"_ZTSN5btree9btree_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN4ardb21ChannelHandlerContextESt4lessIS6_ESaISt4pairIKS6_S9_EELi256EEE", !16, i64 0}
!16 = !{!"_ZTSN5btree19btree_map_containerINS_5btreeINS_16btree_map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN4ardb21ChannelHandlerContextESt4lessIS8_ESaISt4pairIKS8_SB_EELi256EEEEEEE", !17, i64 0}
!17 = !{!"_ZTSN5btree22btree_unique_containerINS_5btreeINS_16btree_map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN4ardb21ChannelHandlerContextESt4lessIS8_ESaISt4pairIKS8_SB_EELi256EEEEEEE", !18, i64 0}
!18 = !{!"_ZTSN5btree15btree_containerINS_5btreeINS_16btree_map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN4ardb21ChannelHandlerContextESt4lessIS8_ESaISt4pairIKS8_SB_EELi256EEEEEEE", !19, i64 0}
!19 = !{!"_ZTSN5btree5btreeINS_16btree_map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN4ardb21ChannelHandlerContextESt4lessIS7_ESaISt4pairIKS7_SA_EELi256EEEEE", !20, i64 0}
!20 = !{!"_ZTSN5btree5btreeINS_16btree_map_paramsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN4ardb21ChannelHandlerContextESt4lessIS7_ESaISt4pairIKS7_SA_EELi256EEEE17empty_base_handleIS6_PNS_10btree_nodeISH_EEEE", !14, i64 0}
!21 = !{!"_ZTSN4ardb6BufferE", !14, i64 0, !22, i64 8, !22, i64 16, !22, i64 24, !12, i64 32}
!22 = !{!"long", !10, i64 0}
!23 = !{!8, !9, i64 0}
!24 = !{!8, !9, i64 4}
!25 = !{!9, !9, i64 0}
!26 = !{!6, !12, i64 16}
!27 = !{i8 0, i8 2}
!28 = !{}
!29 = !{!8, !12, i64 8}
!30 = !{!8, !9, i64 12}


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