; LLVM IR from erwincoumans/tiny-differentiable-simulator :: third_party/zeromq/src/options.ll (ZN3zmq9options_t10setsockoptEiPKvm)

; 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.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.zmq::tcp_address_mask_t" = type { %"union.zmq::ip_addr_t", i32 }
%"union.zmq::ip_addr_t" = type { %struct.sockaddr_in6 }
%struct.sockaddr_in6 = type { i16, i16, i32, %struct.in6_addr, i32 }
%struct.in6_addr = type { %union.anon.6 }
%union.anon.6 = type { [4 x i32] }
%"class.std::allocator" = type { i8 }
%"struct.std::pair.7" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"struct.zmq::options_t" = type <{ i32, i32, i64, i8, [256 x i8], [3 x i8], i32, i32, i32, i32, i32, i32, i32, i8, [3 x i8], %"struct.zmq::atomic_value_t", i32, i32, i32, i32, i32, [4 x i8], i64, i32, i32, i8, [3 x i8], i32, i8, i8, i8, i8, i8, [3 x i8], %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, i32, i32, %"class.std::vector", i32, i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", [32 x i8], [32 x i8], [32 x i8], %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, i8, [3 x i8], i32, i8, [3 x i8], i32, i8, i8, i16, i32, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i8, i32, i32, i8, [3 x i8], i32, [4 x i8], %"class.std::map", i32, [4 x i8] }>
%"struct.zmq::atomic_value_t" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<zmq::tcp_address_mask_t, std::allocator<zmq::tcp_address_mask_t>>::_Vector_impl" }
%"struct.std::_Vector_base<zmq::tcp_address_mask_t, std::allocator<zmq::tcp_address_mask_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<zmq::tcp_address_mask_t, std::allocator<zmq::tcp_address_mask_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<zmq::tcp_address_mask_t, std::allocator<zmq::tcp_address_mask_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3zmq32do_setsockopt_int_as_bool_strictEPKvmPb(ptr noundef, i64 noundef, ptr noundef) #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3zmq33do_setsockopt_int_as_bool_relaxedEPKvmPb(ptr noundef, i64 noundef, ptr noundef) #2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN3zmq9options_t10setsockoptEiPKvm(ptr noundef nonnull align 8 dereferenceable(916) %0, i32 noundef %1, ptr noundef %2, i64 noundef %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i64, align 8
  %10 = alloca i8, align 1
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i8, align 1
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca %"class.zmq::tcp_address_mask_t", align 4
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator", align 1
  %22 = alloca i64, align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"struct.std::pair.7", align 8
  %26 = alloca %"struct.std::pair", align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store i32 %1, ptr %7, align 4, !tbaa !9
  store ptr %2, ptr %8, align 8, !tbaa !5
  store i64 %3, ptr %9, align 8, !tbaa !11
  %27 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #8
  %28 = load i64, ptr %9, align 8, !tbaa !11
  %29 = icmp eq i64 %28, 4
  %30 = zext i1 %29 to i8
  store i8 %30, ptr %10, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #8
  store i32 0, ptr %11, align 4, !tbaa !9
  %31 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %32 = trunc i8 %31 to i1
  br i1 %32, label %33, label %35

33:                                               ; preds = %4
  %34 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %11, ptr align 1 %34, i64 4, i1 false)
  br label %35

35:                                               ; preds = %33, %4
  %36 = load i32, ptr %7, align 4, !tbaa !9
  switch i32 %36, label %631 [
    i32 23, label %37
    i32 24, label %47
    i32 4, label %57
    i32 5, label %62
    i32 8, label %79
    i32 9, label %89
    i32 11, label %99
    i32 12, label %109
    i32 57, label %119
    i32 17, label %129
    i32 79, label %139
    i32 80, label %149
    i32 18, label %159
    i32 21, label %169
    i32 19, label %179
    i32 22, label %189
    i32 25, label %194
    i32 84, label %204
    i32 27, label %214
    i32 28, label %224
    i32 31, label %234
    i32 42, label %248
    i32 68, label %253
    i32 99, label %258
    i32 100, label %271
    i32 34, label %284
    i32 35, label %300
    i32 36, label %313
    i32 37, label %326
    i32 39, label %339
    i32 38, label %352
    i32 44, label %389
    i32 45, label %407
    i32 46, label %433
    i32 55, label %459
    i32 54, label %464
    i32 66, label %469
    i32 74, label %479
    i32 75, label %484
    i32 76, label %494
    i32 77, label %510
    i32 89, label %520
    i32 92, label %530
    i32 93, label %535
    i32 94, label %540
    i32 95, label %545
    i32 96, label %626
  ]

37:                                               ; preds = %35
  %38 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %39 = trunc i8 %38 to i1
  br i1 %39, label %40, label %46

40:                                               ; preds = %37
  %41 = load i32, ptr %11, align 4, !tbaa !9
  %42 = icmp sge i32 %41, 0
  br i1 %42, label %43, label %46

43:                                               ; preds = %40
  %44 = load i32, ptr %11, align 4, !tbaa !9
  %45 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 0
  store i32 %44, ptr %45, align 8, !tbaa !17
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

46:                                               ; preds = %40, %37
  br label %632

47:                                               ; preds = %35
  %48 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %49 = trunc i8 %48 to i1
  br i1 %49, label %50, label %56

50:                                               ; preds = %47
  %51 = load i32, ptr %11, align 4, !tbaa !9
  %52 = icmp sge i32 %51, 0
  br i1 %52, label %53, label %56

53:                                               ; preds = %50
  %54 = load i32, ptr %11, align 4, !tbaa !9
  %55 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 1
  store i32 %54, ptr %55, align 4, !tbaa !37
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

56:                                               ; preds = %50, %47
  br label %632

57:                                               ; preds = %35
  %58 = load ptr, ptr %8, align 8, !tbaa !5
  %59 = load i64, ptr %9, align 8, !tbaa !11
  %60 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 2
  %61 = call noundef i32 @_Z13do_setsockoptImEiPKvmPT_(ptr noundef %58, i64 noundef %59, ptr noundef %60)
  store i32 %61, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

62:                                               ; preds = %35
  %63 = load i64, ptr %9, align 8, !tbaa !11
  %64 = icmp ugt i64 %63, 0
  br i1 %64, label %65, label %78

65:                                               ; preds = %62
  %66 = load i64, ptr %9, align 8, !tbaa !11
  %67 = icmp ule i64 %66, 255
  br i1 %67, label %68, label %78

68:                                               ; preds = %65
  %69 = load i64, ptr %9, align 8, !tbaa !11
  %70 = trunc i64 %69 to i8
  %71 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 3
  store i8 %70, ptr %71, align 8, !tbaa !38
  %72 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 4
  %73 = getelementptr inbounds [256 x i8], ptr %72, i64 0, i64 0
  %74 = load ptr, ptr %8, align 8, !tbaa !5
  %75 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 3
  %76 = load i8, ptr %75, align 8, !tbaa !38
  %77 = zext i8 %76 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %73, ptr align 1 %74, i64 %77, i1 false)
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

78:                                               ; preds = %65, %62
  br label %632

79:                                               ; preds = %35
  %80 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %81 = trunc i8 %80 to i1
  br i1 %81, label %82, label %88

82:                                               ; preds = %79
  %83 = load i32, ptr %11, align 4, !tbaa !9
  %84 = icmp sgt i32 %83, 0
  br i1 %84, label %85, label %88

85:                                               ; preds = %82
  %86 = load i32, ptr %11, align 4, !tbaa !9
  %87 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 6
  store i32 %86, ptr %87, align 4, !tbaa !39
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

88:                                               ; preds = %82, %79
  br label %632

89:                                               ; preds = %35
  %90 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %91 = trunc i8 %90 to i1
  br i1 %91, label %92, label %98

92:                                               ; preds = %89
  %93 = load i32, ptr %11, align 4, !tbaa !9
  %94 = icmp sge i32 %93, 0
  br i1 %94, label %95, label %98

95:                                               ; preds = %92
  %96 = load i32, ptr %11, align 4, !tbaa !9
  %97 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 7
  store i32 %96, ptr %97, align 8, !tbaa !40
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

98:                                               ; preds = %92, %89
  br label %632

99:                                               ; preds = %35
  %100 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %101 = trunc i8 %100 to i1
  br i1 %101, label %102, label %108

102:                                              ; preds = %99
  %103 = load i32, ptr %11, align 4, !tbaa !9
  %104 = icmp sge i32 %103, -1
  br i1 %104, label %105, label %108

105:                                              ; preds = %102
  %106 = load i32, ptr %11, align 4, !tbaa !9
  %107 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 10
  store i32 %106, ptr %107, align 4, !tbaa !41
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

108:                                              ; preds = %102, %99
  br label %632

109:                                              ; preds = %35
  %110 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %111 = trunc i8 %110 to i1
  br i1 %111, label %112, label %118

112:                                              ; preds = %109
  %113 = load i32, ptr %11, align 4, !tbaa !9
  %114 = icmp sge i32 %113, -1
  br i1 %114, label %115, label %118

115:                                              ; preds = %112
  %116 = load i32, ptr %11, align 4, !tbaa !9
  %117 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 11
  store i32 %116, ptr %117, align 8, !tbaa !42
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

118:                                              ; preds = %112, %109
  br label %632

119:                                              ; preds = %35
  %120 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %121 = trunc i8 %120 to i1
  br i1 %121, label %122, label %128

122:                                              ; preds = %119
  %123 = load i32, ptr %11, align 4, !tbaa !9
  %124 = icmp sge i32 %123, 0
  br i1 %124, label %125, label %128

125:                                              ; preds = %122
  %126 = load i32, ptr %11, align 4, !tbaa !9
  %127 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 12
  store i32 %126, ptr %127, align 4, !tbaa !43
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

128:                                              ; preds = %122, %119
  br label %632

129:                                              ; preds = %35
  %130 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %131 = trunc i8 %130 to i1
  br i1 %131, label %132, label %138

132:                                              ; preds = %129
  %133 = load i32, ptr %11, align 4, !tbaa !9
  %134 = icmp sge i32 %133, -1
  br i1 %134, label %135, label %138

135:                                              ; preds = %132
  %136 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 15
  %137 = load i32, ptr %11, align 4, !tbaa !9
  call void @_ZN3zmq14atomic_value_t5storeEi(ptr noundef nonnull align 4 dereferenceable(4) %136, i32 noundef %137)
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

138:                                              ; preds = %132, %129
  br label %632

139:                                              ; preds = %35
  %140 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %141 = trunc i8 %140 to i1
  br i1 %141, label %142, label %148

142:                                              ; preds = %139
  %143 = load i32, ptr %11, align 4, !tbaa !9
  %144 = icmp sge i32 %143, 0
  br i1 %144, label %145, label %148

145:                                              ; preds = %142
  %146 = load i32, ptr %11, align 4, !tbaa !9
  %147 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 16
  store i32 %146, ptr %147, align 8, !tbaa !44
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

148:                                              ; preds = %142, %139
  br label %632

149:                                              ; preds = %35
  %150 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %151 = trunc i8 %150 to i1
  br i1 %151, label %152, label %158

152:                                              ; preds = %149
  %153 = load i32, ptr %11, align 4, !tbaa !9
  %154 = icmp sge i32 %153, 0
  br i1 %154, label %155, label %158

155:                                              ; preds = %152
  %156 = load i32, ptr %11, align 4, !tbaa !9
  %157 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 17
  store i32 %156, ptr %157, align 4, !tbaa !45
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

158:                                              ; preds = %152, %149
  br label %632

159:                                              ; preds = %35
  %160 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %161 = trunc i8 %160 to i1
  br i1 %161, label %162, label %168

162:                                              ; preds = %159
  %163 = load i32, ptr %11, align 4, !tbaa !9
  %164 = icmp sge i32 %163, -1
  br i1 %164, label %165, label %168

165:                                              ; preds = %162
  %166 = load i32, ptr %11, align 4, !tbaa !9
  %167 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 18
  store i32 %166, ptr %167, align 8, !tbaa !46
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

168:                                              ; preds = %162, %159
  br label %632

169:                                              ; preds = %35
  %170 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %171 = trunc i8 %170 to i1
  br i1 %171, label %172, label %178

172:                                              ; preds = %169
  %173 = load i32, ptr %11, align 4, !tbaa !9
  %174 = icmp sge i32 %173, 0
  br i1 %174, label %175, label %178

175:                                              ; preds = %172
  %176 = load i32, ptr %11, align 4, !tbaa !9
  %177 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 19
  store i32 %176, ptr %177, align 4, !tbaa !47
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

178:                                              ; preds = %172, %169
  br label %632

179:                                              ; preds = %35
  %180 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %181 = trunc i8 %180 to i1
  br i1 %181, label %182, label %188

182:                                              ; preds = %179
  %183 = load i32, ptr %11, align 4, !tbaa !9
  %184 = icmp sge i32 %183, 0
  br i1 %184, label %185, label %188

185:                                              ; preds = %182
  %186 = load i32, ptr %11, align 4, !tbaa !9
  %187 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 20
  store i32 %186, ptr %187, align 8, !tbaa !48
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

188:                                              ; preds = %182, %179
  br label %632

189:                                              ; preds = %35
  %190 = load ptr, ptr %8, align 8, !tbaa !5
  %191 = load i64, ptr %9, align 8, !tbaa !11
  %192 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 22
  %193 = call noundef i32 @_Z13do_setsockoptIlEiPKvmPT_(ptr noundef %190, i64 noundef %191, ptr noundef %192)
  store i32 %193, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

194:                                              ; preds = %35
  %195 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %196 = trunc i8 %195 to i1
  br i1 %196, label %197, label %203

197:                                              ; preds = %194
  %198 = load i32, ptr %11, align 4, !tbaa !9
  %199 = icmp sgt i32 %198, 0
  br i1 %199, label %200, label %203

200:                                              ; preds = %197
  %201 = load i32, ptr %11, align 4, !tbaa !9
  %202 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 8
  store i32 %201, ptr %202, align 4, !tbaa !49
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

203:                                              ; preds = %197, %194
  br label %632

204:                                              ; preds = %35
  %205 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %206 = trunc i8 %205 to i1
  br i1 %206, label %207, label %213

207:                                              ; preds = %204
  %208 = load i32, ptr %11, align 4, !tbaa !9
  %209 = icmp sgt i32 %208, 0
  br i1 %209, label %210, label %213

210:                                              ; preds = %207
  %211 = load i32, ptr %11, align 4, !tbaa !9
  %212 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 9
  store i32 %211, ptr %212, align 8, !tbaa !50
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

213:                                              ; preds = %207, %204
  br label %632

214:                                              ; preds = %35
  %215 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %216 = trunc i8 %215 to i1
  br i1 %216, label %217, label %223

217:                                              ; preds = %214
  %218 = load i32, ptr %11, align 4, !tbaa !9
  %219 = icmp sge i32 %218, -1
  br i1 %219, label %220, label %223

220:                                              ; preds = %217
  %221 = load i32, ptr %11, align 4, !tbaa !9
  %222 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 23
  store i32 %221, ptr %222, align 8, !tbaa !51
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

223:                                              ; preds = %217, %214
  br label %632

224:                                              ; preds = %35
  %225 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %226 = trunc i8 %225 to i1
  br i1 %226, label %227, label %233

227:                                              ; preds = %224
  %228 = load i32, ptr %11, align 4, !tbaa !9
  %229 = icmp sge i32 %228, -1
  br i1 %229, label %230, label %233

230:                                              ; preds = %227
  %231 = load i32, ptr %11, align 4, !tbaa !9
  %232 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 24
  store i32 %231, ptr %232, align 4, !tbaa !52
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

233:                                              ; preds = %227, %224
  br label %632

234:                                              ; preds = %35
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  %235 = load ptr, ptr %8, align 8, !tbaa !5
  %236 = load i64, ptr %9, align 8, !tbaa !11
  %237 = call noundef i32 @_ZN3zmq32do_setsockopt_int_as_bool_strictEPKvmPb(ptr noundef %235, i64 noundef %236, ptr noundef %13)
  store i32 %237, ptr %14, align 4, !tbaa !9
  %238 = load i32, ptr %14, align 4, !tbaa !9
  %239 = icmp eq i32 %238, 0
  br i1 %239, label %240, label %246

240:                                              ; preds = %234
  %241 = load i8, ptr %13, align 1, !tbaa !13, !range !15, !noundef !16
  %242 = trunc i8 %241 to i1
  %243 = xor i1 %242, true
  %244 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 25
  %245 = zext i1 %243 to i8
  store i8 %245, ptr %244, align 8, !tbaa !53
  br label %246

246:                                              ; preds = %240, %234
  %247 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %247, ptr %5, align 4
  store i32 1, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #8
  br label %634

248:                                              ; preds = %35
  %249 = load ptr, ptr %8, align 8, !tbaa !5
  %250 = load i64, ptr %9, align 8, !tbaa !11
  %251 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 25
  %252 = call noundef i32 @_ZN3zmq32do_setsockopt_int_as_bool_strictEPKvmPb(ptr noundef %249, i64 noundef %250, ptr noundef %251)
  store i32 %252, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

253:                                              ; preds = %35
  %254 = load ptr, ptr %8, align 8, !tbaa !5
  %255 = load i64, ptr %9, align 8, !tbaa !11
  %256 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 34
  %257 = call noundef i32 @_ZL39do_setsockopt_string_allow_empty_strictPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef %254, i64 noundef %255, ptr noundef %256, i64 noundef -1)
  store i32 %257, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

258:                                              ; preds = %35
  %259 = load ptr, ptr %8, align 8, !tbaa !5
  %260 = icmp eq ptr %259, null
  br i1 %260, label %264, label %261

261:                                              ; preds = %258
  %262 = load i64, ptr %9, align 8, !tbaa !11
  %263 = icmp eq i64 %262, 0
  br i1 %263, label %264, label %266

264:                                              ; preds = %261, %258
  %265 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 35
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %265) #8
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

266:                                              ; preds = %261
  %267 = load ptr, ptr %8, align 8, !tbaa !5
  %268 = load i64, ptr %9, align 8, !tbaa !11
  %269 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 35
  %270 = call noundef i32 @_ZL39do_setsockopt_string_allow_empty_strictPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef %267, i64 noundef %268, ptr noundef %269, i64 noundef 255)
  store i32 %270, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

271:                                              ; preds = %35
  %272 = load ptr, ptr %8, align 8, !tbaa !5
  %273 = icmp eq ptr %272, null
  br i1 %273, label %277, label %274

274:                                              ; preds = %271
  %275 = load i64, ptr %9, align 8, !tbaa !11
  %276 = icmp eq i64 %275, 0
  br i1 %276, label %277, label %279

277:                                              ; preds = %274, %271
  %278 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 36
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %278) #8
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

279:                                              ; preds = %274
  %280 = load ptr, ptr %8, align 8, !tbaa !5
  %281 = load i64, ptr %9, align 8, !tbaa !11
  %282 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 36
  %283 = call noundef i32 @_ZL39do_setsockopt_string_allow_empty_strictPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef %280, i64 noundef %281, ptr noundef %282, i64 noundef 255)
  store i32 %283, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

284:                                              ; preds = %35
  %285 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %286 = trunc i8 %285 to i1
  br i1 %286, label %287, label %299

287:                                              ; preds = %284
  %288 = load i32, ptr %11, align 4, !tbaa !9
  %289 = icmp eq i32 %288, -1
  br i1 %289, label %296, label %290

290:                                              ; preds = %287
  %291 = load i32, ptr %11, align 4, !tbaa !9
  %292 = icmp eq i32 %291, 0
  br i1 %292, label %296, label %293

293:                                              ; preds = %290
  %294 = load i32, ptr %11, align 4, !tbaa !9
  %295 = icmp eq i32 %294, 1
  br i1 %295, label %296, label %299

296:                                              ; preds = %293, %290, %287
  %297 = load i32, ptr %11, align 4, !tbaa !9
  %298 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 37
  store i32 %297, ptr %298, align 8, !tbaa !54
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

299:                                              ; preds = %293, %284
  br label %632

300:                                              ; preds = %35
  %301 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %302 = trunc i8 %301 to i1
  br i1 %302, label %303, label %312

303:                                              ; preds = %300
  %304 = load i32, ptr %11, align 4, !tbaa !9
  %305 = icmp eq i32 %304, -1
  br i1 %305, label %309, label %306

306:                                              ; preds = %303
  %307 = load i32, ptr %11, align 4, !tbaa !9
  %308 = icmp sge i32 %307, 0
  br i1 %308, label %309, label %312

309:                                              ; preds = %306, %303
  %310 = load i32, ptr %11, align 4, !tbaa !9
  %311 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 38
  store i32 %310, ptr %311, align 4, !tbaa !55
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

312:                                              ; preds = %306, %300
  br label %632

313:                                              ; preds = %35
  %314 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %315 = trunc i8 %314 to i1
  br i1 %315, label %316, label %325

316:                                              ; preds = %313
  %317 = load i32, ptr %11, align 4, !tbaa !9
  %318 = icmp eq i32 %317, -1
  br i1 %318, label %322, label %319

319:                                              ; preds = %316
  %320 = load i32, ptr %11, align 4, !tbaa !9
  %321 = icmp sge i32 %320, 0
  br i1 %321, label %322, label %325

322:                                              ; preds = %319, %316
  %323 = load i32, ptr %11, align 4, !tbaa !9
  %324 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 39
  store i32 %323, ptr %324, align 8, !tbaa !56
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

325:                                              ; preds = %319, %313
  br label %632

326:                                              ; preds = %35
  %327 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %328 = trunc i8 %327 to i1
  br i1 %328, label %329, label %338

329:                                              ; preds = %326
  %330 = load i32, ptr %11, align 4, !tbaa !9
  %331 = icmp eq i32 %330, -1
  br i1 %331, label %335, label %332

332:                                              ; preds = %329
  %333 = load i32, ptr %11, align 4, !tbaa !9
  %334 = icmp sge i32 %333, 0
  br i1 %334, label %335, label %338

335:                                              ; preds = %332, %329
  %336 = load i32, ptr %11, align 4, !tbaa !9
  %337 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 40
  store i32 %336, ptr %337, align 4, !tbaa !57
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

338:                                              ; preds = %332, %326
  br label %632

339:                                              ; preds = %35
  %340 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %341 = trunc i8 %340 to i1
  br i1 %341, label %342, label %351

342:                                              ; preds = %339
  %343 = load i32, ptr %11, align 4, !tbaa !9
  %344 = icmp eq i32 %343, 0
  br i1 %344, label %348, label %345

345:                                              ; preds = %342
  %346 = load i32, ptr %11, align 4, !tbaa !9
  %347 = icmp eq i32 %346, 1
  br i1 %347, label %348, label %351

348:                                              ; preds = %345, %342
  %349 = load i32, ptr %11, align 4, !tbaa !9
  %350 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 27
  store i32 %349, ptr %350, align 4, !tbaa !58
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

351:                                              ; preds = %345, %339
  br label %632

352:                                              ; preds = %35
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  %353 = load ptr, ptr %8, align 8, !tbaa !5
  %354 = load i64, ptr %9, align 8, !tbaa !11
  %355 = invoke noundef i32 @_ZL39do_setsockopt_string_allow_empty_strictPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef %353, i64 noundef %354, ptr noundef %15, i64 noundef 255)
          to label %356 unwind label %363

356:                                              ; preds = %352
  store i32 %355, ptr %16, align 4, !tbaa !9
  %357 = load i32, ptr %16, align 4, !tbaa !9
  %358 = icmp eq i32 %357, 0
  br i1 %358, label %359, label %386

359:                                              ; preds = %356
  %360 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  br i1 %360, label %361, label %367

361:                                              ; preds = %359
  %362 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 41
  call void @_ZNSt6vectorIN3zmq18tcp_address_mask_tESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %362) #8
  br label %385

363:                                              ; preds = %352
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %17, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %18, align 4
  br label %388

367:                                              ; preds = %359
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  invoke void @_ZN3zmq18tcp_address_mask_tC1Ev(ptr noundef nonnull align 4 dereferenceable(32) %19)
          to label %368 unwind label %380

368:                                              ; preds = %367
  %369 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  %370 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 25
  %371 = load i8, ptr %370, align 8, !tbaa !53, !range !15, !noundef !16
  %372 = trunc i8 %371 to i1
  %373 = invoke noundef i32 @_ZN3zmq18tcp_address_mask_t7resolveEPKcb(ptr noundef nonnull align 4 dereferenceable(32) %19, ptr noundef %369, i1 noundef zeroext %372)
          to label %374 unwind label %380

374:                                              ; preds = %368
  store i32 %373, ptr %16, align 4, !tbaa !9
  %375 = load i32, ptr %16, align 4, !tbaa !9
  %376 = icmp eq i32 %375, 0
  br i1 %376, label %377, label %384

377:                                              ; preds = %374
  %378 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 41
  invoke void @_ZNSt6vectorIN3zmq18tcp_address_mask_tESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %378, ptr noundef nonnull align 4 dereferenceable(32) %19)
          to label %379 unwind label %380

379:                                              ; preds = %377
  br label %384

380:                                              ; preds = %377, %368, %367
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %17, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br label %388

384:                                              ; preds = %379, %374
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br label %385

385:                                              ; preds = %384, %361
  br label %386

386:                                              ; preds = %385, %356
  %387 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %387, ptr %5, align 4
  store i32 1, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #8
  br label %634

388:                                              ; preds = %380, %363
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #8
  br label %636

389:                                              ; preds = %35
  %390 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %391 = trunc i8 %390 to i1
  br i1 %391, label %392, label %406

392:                                              ; preds = %389
  %393 = load i32, ptr %11, align 4, !tbaa !9
  %394 = icmp eq i32 %393, 0
  br i1 %394, label %398, label %395

395:                                              ; preds = %392
  %396 = load i32, ptr %11, align 4, !tbaa !9
  %397 = icmp eq i32 %396, 1
  br i1 %397, label %398, label %406

398:                                              ; preds = %395, %392
  %399 = load i32, ptr %11, align 4, !tbaa !9
  %400 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 43
  store i32 %399, ptr %400, align 4, !tbaa !59
  %401 = load i32, ptr %11, align 4, !tbaa !9
  %402 = icmp ne i32 %401, 0
  %403 = zext i1 %402 to i64
  %404 = select i1 %402, i32 1, i32 0
  %405 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 42
  store i32 %404, ptr %405, align 8, !tbaa !60
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

406:                                              ; preds = %395, %389
  br label %632

407:                                              ; preds = %35
  %408 = load i64, ptr %9, align 8, !tbaa !11
  %409 = icmp eq i64 %408, 0
  br i1 %409, label %410, label %415

410:                                              ; preds = %407
  %411 = load ptr, ptr %8, align 8, !tbaa !5
  %412 = icmp eq ptr %411, null
  br i1 %412, label %413, label %415

413:                                              ; preds = %410
  %414 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 42
  store i32 0, ptr %414, align 8, !tbaa !60
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

415:                                              ; preds = %410, %407
  %416 = load i64, ptr %9, align 8, !tbaa !11
  %417 = icmp ugt i64 %416, 0
  br i1 %417, label %418, label %431

418:                                              ; preds = %415
  %419 = load i64, ptr %9, align 8, !tbaa !11
  %420 = icmp ule i64 %419, 255
  br i1 %420, label %421, label %431

421:                                              ; preds = %418
  %422 = load ptr, ptr %8, align 8, !tbaa !5
  %423 = icmp ne ptr %422, null
  br i1 %423, label %424, label %431

424:                                              ; preds = %421
  %425 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 45
  %426 = load ptr, ptr %8, align 8, !tbaa !5
  %427 = load i64, ptr %9, align 8, !tbaa !11
  %428 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %425, ptr noundef %426, i64 noundef %427)
  %429 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 43
  store i32 0, ptr %429, align 4, !tbaa !59
  %430 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 42
  store i32 1, ptr %430, align 8, !tbaa !60
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

431:                                              ; preds = %421, %418, %415
  br label %432

432:                                              ; preds = %431
  br label %632

433:                                              ; preds = %35
  %434 = load i64, ptr %9, align 8, !tbaa !11
  %435 = icmp eq i64 %434, 0
  br i1 %435, label %436, label %441

436:                                              ; preds = %433
  %437 = load ptr, ptr %8, align 8, !tbaa !5
  %438 = icmp eq ptr %437, null
  br i1 %438, label %439, label %441

439:                                              ; preds = %436
  %440 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 42
  store i32 0, ptr %440, align 8, !tbaa !60
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

441:                                              ; preds = %436, %433
  %442 = load i64, ptr %9, align 8, !tbaa !11
  %443 = icmp ugt i64 %442, 0
  br i1 %443, label %444, label %457

444:                                              ; preds = %441
  %445 = load i64, ptr %9, align 8, !tbaa !11
  %446 = icmp ule i64 %445, 255
  br i1 %446, label %447, label %457

447:                                              ; preds = %444
  %448 = load ptr, ptr %8, align 8, !tbaa !5
  %449 = icmp ne ptr %448, null
  br i1 %449, label %450, label %457

450:                                              ; preds = %447
  %451 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 46
  %452 = load ptr, ptr %8, align 8, !tbaa !5
  %453 = load i64, ptr %9, align 8, !tbaa !11
  %454 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %451, ptr noundef %452, i64 noundef %453)
  %455 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 43
  store i32 0, ptr %455, align 4, !tbaa !59
  %456 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 42
  store i32 1, ptr %456, align 8, !tbaa !60
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

457:                                              ; preds = %447, %444, %441
  br label %458

458:                                              ; preds = %457
  br label %632

459:                                              ; preds = %35
  %460 = load ptr, ptr %8, align 8, !tbaa !5
  %461 = load i64, ptr %9, align 8, !tbaa !11
  %462 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 44
  %463 = call noundef i32 @_ZL40do_setsockopt_string_allow_empty_relaxedPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef %460, i64 noundef %461, ptr noundef %462, i64 noundef 255)
  store i32 %463, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

464:                                              ; preds = %35
  %465 = load ptr, ptr %8, align 8, !tbaa !5
  %466 = load i64, ptr %9, align 8, !tbaa !11
  %467 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 57
  %468 = call noundef i32 @_ZN3zmq32do_setsockopt_int_as_bool_strictEPKvmPb(ptr noundef %465, i64 noundef %466, ptr noundef %467)
  store i32 %468, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

469:                                              ; preds = %35
  %470 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %471 = trunc i8 %470 to i1
  br i1 %471, label %472, label %478

472:                                              ; preds = %469
  %473 = load i32, ptr %11, align 4, !tbaa !9
  %474 = icmp sge i32 %473, 0
  br i1 %474, label %475, label %478

475:                                              ; preds = %472
  %476 = load i32, ptr %11, align 4, !tbaa !9
  %477 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 59
  store i32 %476, ptr %477, align 4, !tbaa !61
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

478:                                              ; preds = %472, %469
  br label %632

479:                                              ; preds = %35
  %480 = load ptr, ptr %8, align 8, !tbaa !5
  %481 = load i64, ptr %9, align 8, !tbaa !11
  %482 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 29
  %483 = call noundef i32 @_ZN3zmq33do_setsockopt_int_as_bool_relaxedEPKvmPb(ptr noundef %480, i64 noundef %481, ptr noundef %482)
  store i32 %483, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

484:                                              ; preds = %35
  %485 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %486 = trunc i8 %485 to i1
  br i1 %486, label %487, label %493

487:                                              ; preds = %484
  %488 = load i32, ptr %11, align 4, !tbaa !9
  %489 = icmp sge i32 %488, 0
  br i1 %489, label %490, label %493

490:                                              ; preds = %487
  %491 = load i32, ptr %11, align 4, !tbaa !9
  %492 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 63
  store i32 %491, ptr %492, align 4, !tbaa !62
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

493:                                              ; preds = %487, %484
  br label %632

494:                                              ; preds = %35
  %495 = load i32, ptr %11, align 4, !tbaa !9
  %496 = sdiv i32 %495, 100
  store i32 %496, ptr %11, align 4, !tbaa !9
  %497 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %498 = trunc i8 %497 to i1
  br i1 %498, label %499, label %509

499:                                              ; preds = %494
  %500 = load i32, ptr %11, align 4, !tbaa !9
  %501 = icmp sge i32 %500, 0
  br i1 %501, label %502, label %509

502:                                              ; preds = %499
  %503 = load i32, ptr %11, align 4, !tbaa !9
  %504 = icmp sle i32 %503, 65535
  br i1 %504, label %505, label %509

505:                                              ; preds = %502
  %506 = load i32, ptr %11, align 4, !tbaa !9
  %507 = trunc i32 %506 to i16
  %508 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 62
  store i16 %507, ptr %508, align 2, !tbaa !63
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

509:                                              ; preds = %502, %499, %494
  br label %632

510:                                              ; preds = %35
  %511 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %512 = trunc i8 %511 to i1
  br i1 %512, label %513, label %519

513:                                              ; preds = %510
  %514 = load i32, ptr %11, align 4, !tbaa !9
  %515 = icmp sge i32 %514, 0
  br i1 %515, label %516, label %519

516:                                              ; preds = %513
  %517 = load i32, ptr %11, align 4, !tbaa !9
  %518 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 64
  store i32 %517, ptr %518, align 8, !tbaa !64
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

519:                                              ; preds = %513, %510
  br label %632

520:                                              ; preds = %35
  %521 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %522 = trunc i8 %521 to i1
  br i1 %522, label %523, label %529

523:                                              ; preds = %520
  %524 = load i32, ptr %11, align 4, !tbaa !9
  %525 = icmp sge i32 %524, -1
  br i1 %525, label %526, label %529

526:                                              ; preds = %523
  %527 = load i32, ptr %11, align 4, !tbaa !9
  %528 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 65
  store i32 %527, ptr %528, align 4, !tbaa !65
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

529:                                              ; preds = %523, %520
  br label %632

530:                                              ; preds = %35
  %531 = load ptr, ptr %8, align 8, !tbaa !5
  %532 = load i64, ptr %9, align 8, !tbaa !11
  %533 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 66
  %534 = call noundef i32 @_ZL39do_setsockopt_string_allow_empty_strictPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef %531, i64 noundef %532, ptr noundef %533, i64 noundef 16)
  store i32 %534, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

535:                                              ; preds = %35
  %536 = load ptr, ptr %8, align 8, !tbaa !5
  %537 = load i64, ptr %9, align 8, !tbaa !11
  %538 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 67
  %539 = call noundef i32 @_ZN3zmq33do_setsockopt_int_as_bool_relaxedEPKvmPb(ptr noundef %536, i64 noundef %537, ptr noundef %538)
  store i32 %539, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

540:                                              ; preds = %35
  %541 = load ptr, ptr %8, align 8, !tbaa !5
  %542 = load i64, ptr %9, align 8, !tbaa !11
  %543 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 68
  %544 = call noundef i32 @_ZN3zmq33do_setsockopt_int_as_bool_relaxedEPKvmPb(ptr noundef %541, i64 noundef %542, ptr noundef %543)
  store i32 %544, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

545:                                              ; preds = %35
  %546 = load i64, ptr %9, align 8, !tbaa !11
  %547 = icmp ugt i64 %546, 0
  br i1 %547, label %548, label %624

548:                                              ; preds = %545
  %549 = load i8, ptr %10, align 1, !tbaa !13, !range !15, !noundef !16
  %550 = trunc i8 %549 to i1
  br i1 %550, label %624, label %551

551:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #8
  %552 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef %552, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %553 unwind label %587

553:                                              ; preds = %551
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %554 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32) %20, i8 noundef signext 58, i64 noundef 0) #8
  store i64 %554, ptr %22, align 8, !tbaa !11
  %555 = load i64, ptr %22, align 8, !tbaa !11
  %556 = icmp ne i64 %555, -1
  br i1 %556, label %557, label %619

557:                                              ; preds = %553
  %558 = load i64, ptr %22, align 8, !tbaa !11
  %559 = icmp ne i64 %558, 0
  br i1 %559, label %560, label %619

560:                                              ; preds = %557
  %561 = load i64, ptr %22, align 8, !tbaa !11
  %562 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  %563 = sub i64 %562, 1
  %564 = icmp ne i64 %561, %563
  br i1 %564, label %565, label %619

565:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #8
  %566 = load i64, ptr %22, align 8, !tbaa !11
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %20, i64 noundef 0, i64 noundef %566)
          to label %567 unwind label %591

567:                                              ; preds = %565
  %568 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmPKc(ptr noundef nonnull align 8 dereferenceable(32) %23, i64 noundef 0, i64 noundef 2, ptr noundef @.str)
          to label %569 unwind label %595

569:                                              ; preds = %567
  %570 = icmp eq i32 %568, 0
  br i1 %570, label %571, label %613

571:                                              ; preds = %569
  %572 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  %573 = icmp ule i64 %572, 255
  br i1 %573, label %574, label %613

574:                                              ; preds = %571
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  %575 = load i64, ptr %22, align 8, !tbaa !11
  %576 = add i64 %575, 1
  %577 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %20, i64 noundef %576, i64 noundef %577)
          to label %578 unwind label %599

578:                                              ; preds = %574
  %579 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 77
  call void @llvm.lifetime.start.p0(i64 64, ptr %25) #8
  invoke void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EC2IRKS5_RS5_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISC_SD_EEEbE4typeELb1EEEOSC_OSD_(ptr noundef nonnull align 8 dereferenceable(64) %25, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %580 unwind label %603

580:                                              ; preds = %578
  %581 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE6insertIS8_IS5_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %579, ptr noundef nonnull align 8 dereferenceable(64) %25)
          to label %582 unwind label %607

582:                                              ; preds = %580
  %583 = getelementptr inbounds { ptr, i8 }, ptr %26, i32 0, i32 0
  %584 = extractvalue { ptr, i8 } %581, 0
  store ptr %584, ptr %583, align 8
  %585 = getelementptr inbounds { ptr, i8 }, ptr %26, i32 0, i32 1
  %586 = extractvalue { ptr, i8 } %581, 1
  store i8 %586, ptr %585, align 8
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_ED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %25) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %25) #8
  store i32 0, ptr %5, align 4
  store i32 1, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  br label %614

587:                                              ; preds = %551
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %17, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  br label %623

591:                                              ; preds = %565
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %17, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %18, align 4
  br label %618

595:                                              ; preds = %567
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %17, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %18, align 4
  br label %617

599:                                              ; preds = %574
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %17, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %18, align 4
  br label %612

603:                                              ; preds = %578
  %604 = landingpad { ptr, i32 }
          cleanup
  %605 = extractvalue { ptr, i32 } %604, 0
  store ptr %605, ptr %17, align 8
  %606 = extractvalue { ptr, i32 } %604, 1
  store i32 %606, ptr %18, align 4
  br label %611

607:                                              ; preds = %580
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %17, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %18, align 4
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_ED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %25) #8
  br label %611

611:                                              ; preds = %607, %603
  call void @llvm.lifetime.end.p0(i64 64, ptr %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %612

612:                                              ; preds = %611, %599
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  br label %617

613:                                              ; preds = %571, %569
  store i32 0, ptr %12, align 4
  br label %614

614:                                              ; preds = %613, %582
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  %615 = load i32, ptr %12, align 4
  switch i32 %615, label %620 [
    i32 0, label %616
  ]

616:                                              ; preds = %614
  br label %619

617:                                              ; preds = %612, %595
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %618

618:                                              ; preds = %617, %591
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  br label %623

619:                                              ; preds = %616, %560, %557, %553
  store i32 0, ptr %12, align 4
  br label %620

620:                                              ; preds = %619, %614
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  %621 = load i32, ptr %12, align 4
  switch i32 %621, label %634 [
    i32 0, label %622
  ]

622:                                              ; preds = %620
  br label %624

623:                                              ; preds = %618, %587
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  br label %636

624:                                              ; preds = %622, %548, %545
  %625 = call ptr @__errno_location() #9
  store i32 22, ptr %625, align 4, !tbaa !9
  store i32 -1, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

626:                                              ; preds = %35
  %627 = load ptr, ptr %8, align 8, !tbaa !5
  %628 = load i64, ptr %9, align 8, !tbaa !11
  %629 = getelementptr inbounds %"struct.zmq::options_t", ptr %27, i32 0, i32 69
  %630 = call noundef i32 @_ZN3zmq33do_setsockopt_int_as_bool_relaxedEPKvmPb(ptr noundef %627, i64 noundef %628, ptr noundef %629)
  store i32 %630, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

631:                                              ; preds = %35
  br label %632

632:                                              ; preds = %631, %529, %519, %509, %493, %478, %458, %432, %406, %351, %338, %325, %312, %299, %233, %223, %213, %203, %188, %178, %168, %158, %148, %138, %128, %118, %108, %98, %88, %78, %56, %46
  %633 = call ptr @__errno_location() #9
  store i32 22, ptr %633, align 4, !tbaa !9
  store i32 -1, ptr %5, align 4
  store i32 1, ptr %12, align 4
  br label %634

634:                                              ; preds = %632, %626, %624, %620, %540, %535, %530, %526, %516, %505, %490, %479, %475, %464, %459, %450, %439, %424, %413, %398, %386, %348, %335, %322, %309, %296, %279, %277, %266, %264, %253, %248, %246, %230, %220, %210, %200, %189, %185, %175, %165, %155, %145, %135, %125, %115, %105, %95, %85, %68, %57, %53, %43
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #8
  %635 = load i32, ptr %5, align 4
  ret i32 %635

636:                                              ; preds = %623, %388
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #8
  br label %637

637:                                              ; preds = %636
  %638 = load ptr, ptr %17, align 8
  %639 = load i32, ptr %18, align 4
  %640 = insertvalue { ptr, i32 } poison, ptr %638, 0
  %641 = insertvalue { ptr, i32 } %640, i32 %639, 1
  resume { ptr, i32 } %641
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z13do_setsockoptImEiPKvmPT_(ptr noundef, i64 noundef, ptr noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3zmq14atomic_value_t5storeEi(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z13do_setsockoptIlEiPKvmPT_(ptr noundef, i64 noundef, ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL39do_setsockopt_string_allow_empty_strictPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef, i64 noundef, ptr noundef, i64 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3zmq18tcp_address_mask_tESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

declare void @_ZN3zmq18tcp_address_mask_tC1Ev(ptr noundef nonnull align 4 dereferenceable(32)) unnamed_addr #4

declare noundef i32 @_ZN3zmq18tcp_address_mask_t7resolveEPKcb(ptr noundef nonnull align 4 dereferenceable(32), ptr noundef, i1 noundef zeroext) #4

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcm(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL40do_setsockopt_string_allow_empty_relaxedPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef, i64 noundef, ptr noundef, i64 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: nounwind
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext, i64 noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef) #2 align 2

declare noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmPKc(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE6insertIS8_IS5_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(64)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EC2IRKS5_RS5_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISC_SD_EEEbE4typeELb1EEEOSC_OSD_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_ED2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #6 align 2

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

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { "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 "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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { nounwind }
attributes #9 = { 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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = !{!18, !10, i64 0}
!18 = !{!"_ZTSN3zmq9options_tE", !10, i64 0, !10, i64 4, !12, i64 8, !7, i64 16, !7, i64 17, !10, i64 276, !10, i64 280, !10, i64 284, !10, i64 288, !10, i64 292, !10, i64 296, !10, i64 300, !7, i64 304, !19, i64 308, !10, i64 312, !10, i64 316, !10, i64 320, !10, i64 324, !10, i64 328, !12, i64 336, !10, i64 344, !10, i64 348, !14, i64 352, !10, i64 356, !14, i64 360, !14, i64 361, !14, i64 362, !14, i64 363, !14, i64 364, !22, i64 368, !22, i64 400, !22, i64 432, !10, i64 464, !10, i64 468, !10, i64 472, !10, i64 476, !24, i64 480, !10, i64 504, !10, i64 508, !22, i64 512, !22, i64 544, !22, i64 576, !7, i64 608, !7, i64 640, !7, i64 672, !22, i64 704, !22, i64 736, !10, i64 768, !10, i64 772, !14, i64 776, !10, i64 780, !14, i64 784, !10, i64 788, !14, i64 792, !28, i64 794, !10, i64 796, !10, i64 800, !10, i64 804, !22, i64 808, !14, i64 840, !14, i64 841, !14, i64 842, !10, i64 844, !10, i64 848, !14, i64 852, !10, i64 856, !29, i64 864, !10, i64 912}
!19 = !{!"_ZTSN3zmq14atomic_value_tE", !20, i64 0}
!20 = !{!"_ZTSSt6atomicIiE", !21, i64 0}
!21 = !{!"_ZTSSt13__atomic_baseIiE", !10, i64 0}
!22 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !23, i64 0, !12, i64 8, !7, i64 16}
!23 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!24 = !{!"_ZTSSt6vectorIN3zmq18tcp_address_mask_tESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN3zmq18tcp_address_mask_tESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN3zmq18tcp_address_mask_tESaIS1_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN3zmq18tcp_address_mask_tESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"short", !7, i64 0}
!29 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE", !30, i64 0}
!30 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !31, i64 0}
!31 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !32, i64 0, !34, i64 8}
!32 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !33, i64 0}
!33 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!34 = !{!"_ZTSSt15_Rb_tree_header", !35, i64 0, !12, i64 32}
!35 = !{!"_ZTSSt18_Rb_tree_node_base", !36, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!36 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!37 = !{!18, !10, i64 4}
!38 = !{!18, !7, i64 16}
!39 = !{!18, !10, i64 276}
!40 = !{!18, !10, i64 280}
!41 = !{!18, !10, i64 292}
!42 = !{!18, !10, i64 296}
!43 = !{!18, !10, i64 300}
!44 = !{!18, !10, i64 312}
!45 = !{!18, !10, i64 316}
!46 = !{!18, !10, i64 320}
!47 = !{!18, !10, i64 324}
!48 = !{!18, !10, i64 328}
!49 = !{!18, !10, i64 284}
!50 = !{!18, !10, i64 288}
!51 = !{!18, !10, i64 344}
!52 = !{!18, !10, i64 348}
!53 = !{!18, !14, i64 352}
!54 = !{!18, !10, i64 464}
!55 = !{!18, !10, i64 468}
!56 = !{!18, !10, i64 472}
!57 = !{!18, !10, i64 476}
!58 = !{!18, !10, i64 356}
!59 = !{!18, !10, i64 508}
!60 = !{!18, !10, i64 504}
!61 = !{!18, !10, i64 788}
!62 = !{!18, !10, i64 796}
!63 = !{!18, !28, i64 794}
!64 = !{!18, !10, i64 800}
!65 = !{!18, !10, i64 804}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.zmq::tcp_address_mask_t" = type { %"union.zmq::ip_addr_t", i32 }
%"union.zmq::ip_addr_t" = type { %struct.sockaddr_in6 }
%struct.sockaddr_in6 = type { i16, i16, i32, %struct.in6_addr, i32 }
%struct.in6_addr = type { %union.anon.6 }
%union.anon.6 = type { [4 x i32] }
%"class.std::allocator" = type { i8 }
%"struct.std::pair.7" = type { %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }

@.str = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3zmq32do_setsockopt_int_as_bool_strictEPKvmPb(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3zmq33do_setsockopt_int_as_bool_relaxedEPKvmPb(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN3zmq9options_t10setsockoptEiPKvm(ptr noundef nonnull align 8 dereferenceable(916) %0, i32 noundef %1, ptr noundef %2, i64 noundef %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i8, align 1
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.zmq::tcp_address_mask_t", align 4
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"struct.std::pair.7", align 8
  %13 = icmp eq i64 %3, 4
  br i1 %13, label %14, label %15

14:                                               ; preds = %4
  %.0.copyload = load i32, ptr %2, align 1
  br label %15

15:                                               ; preds = %14, %4
  %.0248 = phi i32 [ %.0.copyload, %14 ], [ 0, %4 ]
  switch i32 %1, label %283 [
    i32 23, label %16
    i32 24, label %19
    i32 4, label %23
    i32 5, label %26
    i32 8, label %32
    i32 9, label %36
    i32 11, label %40
    i32 12, label %44
    i32 57, label %48
    i32 17, label %52
    i32 79, label %56
    i32 80, label %60
    i32 18, label %64
    i32 21, label %68
    i32 19, label %72
    i32 22, label %76
    i32 25, label %79
    i32 84, label %83
    i32 27, label %87
    i32 28, label %91
    i32 31, label %95
    i32 42, label %103
    i32 68, label %106
    i32 99, label %109
    i32 100, label %116
    i32 34, label %123
    i32 35, label %127
    i32 36, label %130
    i32 37, label %133
    i32 39, label %136
    i32 38, label %139
    i32 44, label %165
    i32 45, label %169
    i32 46, label %182
    i32 55, label %195
    i32 54, label %198
    i32 66, label %201
    i32 74, label %205
    i32 75, label %208
    i32 76, label %212
    i32 77, label %219
    i32 89, label %223
    i32 92, label %227
    i32 93, label %230
    i32 94, label %233
    i32 95, label %236
    i32 96, label %280
  ]

16:                                               ; preds = %15
  %17 = icmp sgt i32 %.0248, -1
  %or.cond = select i1 %13, i1 %17, i1 false
  br i1 %or.cond, label %18, label %283

18:                                               ; preds = %16
  store i32 %.0248, ptr %0, align 8, !tbaa !5
  br label %285

19:                                               ; preds = %15
  %20 = icmp sgt i32 %.0248, -1
  %or.cond4 = select i1 %13, i1 %20, i1 false
  br i1 %or.cond4, label %21, label %283

21:                                               ; preds = %19
  %22 = getelementptr inbounds i8, ptr %0, i64 4
  store i32 %.0248, ptr %22, align 4, !tbaa !31
  br label %285

23:                                               ; preds = %15
  %24 = getelementptr inbounds i8, ptr %0, i64 8
  %25 = tail call noundef i32 @_Z13do_setsockoptImEiPKvmPT_(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %24)
  br label %285

26:                                               ; preds = %15
  %27 = add i64 %3, -1
  %or.cond6 = icmp ult i64 %27, 255
  br i1 %or.cond6, label %28, label %283

28:                                               ; preds = %26
  %29 = trunc nuw i64 %3 to i8
  %30 = getelementptr inbounds i8, ptr %0, i64 16
  store i8 %29, ptr %30, align 8, !tbaa !32
  %31 = getelementptr inbounds i8, ptr %0, i64 17
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %31, ptr align 1 %2, i64 %3, i1 false)
  br label %285

32:                                               ; preds = %15
  %33 = icmp sgt i32 %.0248, 0
  %or.cond8 = select i1 %13, i1 %33, i1 false
  br i1 %or.cond8, label %34, label %283

34:                                               ; preds = %32
  %35 = getelementptr inbounds i8, ptr %0, i64 276
  store i32 %.0248, ptr %35, align 4, !tbaa !33
  br label %285

36:                                               ; preds = %15
  %37 = icmp sgt i32 %.0248, -1
  %or.cond10 = select i1 %13, i1 %37, i1 false
  br i1 %or.cond10, label %38, label %283

38:                                               ; preds = %36
  %39 = getelementptr inbounds i8, ptr %0, i64 280
  store i32 %.0248, ptr %39, align 8, !tbaa !34
  br label %285

40:                                               ; preds = %15
  %41 = icmp sgt i32 %.0248, -2
  %or.cond12 = select i1 %13, i1 %41, i1 false
  br i1 %or.cond12, label %42, label %283

42:                                               ; preds = %40
  %43 = getelementptr inbounds i8, ptr %0, i64 292
  store i32 %.0248, ptr %43, align 4, !tbaa !35
  br label %285

44:                                               ; preds = %15
  %45 = icmp sgt i32 %.0248, -2
  %or.cond14 = select i1 %13, i1 %45, i1 false
  br i1 %or.cond14, label %46, label %283

46:                                               ; preds = %44
  %47 = getelementptr inbounds i8, ptr %0, i64 296
  store i32 %.0248, ptr %47, align 8, !tbaa !36
  br label %285

48:                                               ; preds = %15
  %49 = icmp sgt i32 %.0248, -1
  %or.cond16 = select i1 %13, i1 %49, i1 false
  br i1 %or.cond16, label %50, label %283

50:                                               ; preds = %48
  %51 = getelementptr inbounds i8, ptr %0, i64 300
  store i32 %.0248, ptr %51, align 4, !tbaa !37
  br label %285

52:                                               ; preds = %15
  %53 = icmp sgt i32 %.0248, -2
  %or.cond18 = select i1 %13, i1 %53, i1 false
  br i1 %or.cond18, label %54, label %283

54:                                               ; preds = %52
  %55 = getelementptr inbounds i8, ptr %0, i64 308
  tail call void @_ZN3zmq14atomic_value_t5storeEi(ptr noundef nonnull align 4 dereferenceable(4) %55, i32 noundef %.0248)
  br label %285

56:                                               ; preds = %15
  %57 = icmp sgt i32 %.0248, -1
  %or.cond20 = select i1 %13, i1 %57, i1 false
  br i1 %or.cond20, label %58, label %283

58:                                               ; preds = %56
  %59 = getelementptr inbounds i8, ptr %0, i64 312
  store i32 %.0248, ptr %59, align 8, !tbaa !38
  br label %285

60:                                               ; preds = %15
  %61 = icmp sgt i32 %.0248, -1
  %or.cond22 = select i1 %13, i1 %61, i1 false
  br i1 %or.cond22, label %62, label %283

62:                                               ; preds = %60
  %63 = getelementptr inbounds i8, ptr %0, i64 316
  store i32 %.0248, ptr %63, align 4, !tbaa !39
  br label %285

64:                                               ; preds = %15
  %65 = icmp sgt i32 %.0248, -2
  %or.cond24 = select i1 %13, i1 %65, i1 false
  br i1 %or.cond24, label %66, label %283

66:                                               ; preds = %64
  %67 = getelementptr inbounds i8, ptr %0, i64 320
  store i32 %.0248, ptr %67, align 8, !tbaa !40
  br label %285

68:                                               ; preds = %15
  %69 = icmp sgt i32 %.0248, -1
  %or.cond26 = select i1 %13, i1 %69, i1 false
  br i1 %or.cond26, label %70, label %283

70:                                               ; preds = %68
  %71 = getelementptr inbounds i8, ptr %0, i64 324
  store i32 %.0248, ptr %71, align 4, !tbaa !41
  br label %285

72:                                               ; preds = %15
  %73 = icmp sgt i32 %.0248, -1
  %or.cond28 = select i1 %13, i1 %73, i1 false
  br i1 %or.cond28, label %74, label %283

74:                                               ; preds = %72
  %75 = getelementptr inbounds i8, ptr %0, i64 328
  store i32 %.0248, ptr %75, align 8, !tbaa !42
  br label %285

76:                                               ; preds = %15
  %77 = getelementptr inbounds i8, ptr %0, i64 336
  %78 = tail call noundef i32 @_Z13do_setsockoptIlEiPKvmPT_(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %77)
  br label %285

79:                                               ; preds = %15
  %80 = icmp sgt i32 %.0248, 0
  %or.cond30 = select i1 %13, i1 %80, i1 false
  br i1 %or.cond30, label %81, label %283

81:                                               ; preds = %79
  %82 = getelementptr inbounds i8, ptr %0, i64 284
  store i32 %.0248, ptr %82, align 4, !tbaa !43
  br label %285

83:                                               ; preds = %15
  %84 = icmp sgt i32 %.0248, 0
  %or.cond32 = select i1 %13, i1 %84, i1 false
  br i1 %or.cond32, label %85, label %283

85:                                               ; preds = %83
  %86 = getelementptr inbounds i8, ptr %0, i64 288
  store i32 %.0248, ptr %86, align 8, !tbaa !44
  br label %285

87:                                               ; preds = %15
  %88 = icmp sgt i32 %.0248, -2
  %or.cond34 = select i1 %13, i1 %88, i1 false
  br i1 %or.cond34, label %89, label %283

89:                                               ; preds = %87
  %90 = getelementptr inbounds i8, ptr %0, i64 344
  store i32 %.0248, ptr %90, align 8, !tbaa !45
  br label %285

91:                                               ; preds = %15
  %92 = icmp sgt i32 %.0248, -2
  %or.cond36 = select i1 %13, i1 %92, i1 false
  br i1 %or.cond36, label %93, label %283

93:                                               ; preds = %91
  %94 = getelementptr inbounds i8, ptr %0, i64 348
  store i32 %.0248, ptr %94, align 4, !tbaa !46
  br label %285

95:                                               ; preds = %15
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #8
  %96 = call noundef i32 @_ZN3zmq32do_setsockopt_int_as_bool_strictEPKvmPb(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %5)
  %97 = icmp eq i32 %96, 0
  br i1 %97, label %98, label %102

98:                                               ; preds = %95
  %99 = load i8, ptr %5, align 1, !tbaa !47, !range !48, !noundef !49
  %100 = xor i8 %99, 1
  %101 = getelementptr inbounds i8, ptr %0, i64 352
  store i8 %100, ptr %101, align 8, !tbaa !50
  br label %102

102:                                              ; preds = %98, %95
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #8
  br label %285

103:                                              ; preds = %15
  %104 = getelementptr inbounds i8, ptr %0, i64 352
  %105 = tail call noundef i32 @_ZN3zmq32do_setsockopt_int_as_bool_strictEPKvmPb(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %104)
  br label %285

106:                                              ; preds = %15
  %107 = getelementptr inbounds i8, ptr %0, i64 368
  %108 = tail call noundef i32 @_ZL39do_setsockopt_string_allow_empty_strictPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %107, i64 noundef -1)
  br label %285

109:                                              ; preds = %15
  %110 = icmp eq ptr %2, null
  %111 = icmp eq i64 %3, 0
  %or.cond38 = or i1 %110, %111
  %112 = getelementptr inbounds i8, ptr %0, i64 400
  br i1 %or.cond38, label %113, label %114

113:                                              ; preds = %109
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %112) #8
  br label %285

114:                                              ; preds = %109
  %115 = tail call noundef i32 @_ZL39do_setsockopt_string_allow_empty_strictPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef nonnull %2, i64 noundef %3, ptr noundef nonnull %112, i64 noundef 255)
  br label %285

116:                                              ; preds = %15
  %117 = icmp eq ptr %2, null
  %118 = icmp eq i64 %3, 0
  %or.cond40 = or i1 %117, %118
  %119 = getelementptr inbounds i8, ptr %0, i64 432
  br i1 %or.cond40, label %120, label %121

120:                                              ; preds = %116
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %119) #8
  br label %285

121:                                              ; preds = %116
  %122 = tail call noundef i32 @_ZL39do_setsockopt_string_allow_empty_strictPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef nonnull %2, i64 noundef %3, ptr noundef nonnull %119, i64 noundef 255)
  br label %285

123:                                              ; preds = %15
  %124 = add i32 %.0248, 1
  %or.cond44 = icmp ult i32 %124, 3
  %or.cond283 = select i1 %13, i1 %or.cond44, i1 false
  br i1 %or.cond283, label %125, label %283

125:                                              ; preds = %123
  %126 = getelementptr inbounds i8, ptr %0, i64 464
  store i32 %.0248, ptr %126, align 8, !tbaa !51
  br label %285

127:                                              ; preds = %15
  %or.cond46 = icmp sgt i32 %.0248, -2
  %or.cond284 = select i1 %13, i1 %or.cond46, i1 false
  br i1 %or.cond284, label %128, label %283

128:                                              ; preds = %127
  %129 = getelementptr inbounds i8, ptr %0, i64 468
  store i32 %.0248, ptr %129, align 4, !tbaa !52
  br label %285

130:                                              ; preds = %15
  %or.cond48 = icmp sgt i32 %.0248, -2
  %or.cond285 = select i1 %13, i1 %or.cond48, i1 false
  br i1 %or.cond285, label %131, label %283

131:                                              ; preds = %130
  %132 = getelementptr inbounds i8, ptr %0, i64 472
  store i32 %.0248, ptr %132, align 8, !tbaa !53
  br label %285

133:                                              ; preds = %15
  %or.cond50 = icmp sgt i32 %.0248, -2
  %or.cond286 = select i1 %13, i1 %or.cond50, i1 false
  br i1 %or.cond286, label %134, label %283

134:                                              ; preds = %133
  %135 = getelementptr inbounds i8, ptr %0, i64 476
  store i32 %.0248, ptr %135, align 4, !tbaa !54
  br label %285

136:                                              ; preds = %15
  %or.cond52 = icmp ult i32 %.0248, 2
  %or.cond287 = select i1 %13, i1 %or.cond52, i1 false
  br i1 %or.cond287, label %137, label %283

137:                                              ; preds = %136
  %138 = getelementptr inbounds i8, ptr %0, i64 356
  store i32 %.0248, ptr %138, align 4, !tbaa !55
  br label %285

139:                                              ; preds = %15
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  %140 = invoke noundef i32 @_ZL39do_setsockopt_string_allow_empty_strictPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %6, i64 noundef 255)
          to label %141 unwind label %147

141:                                              ; preds = %139
  %142 = icmp eq i32 %140, 0
  br i1 %142, label %143, label %163

143:                                              ; preds = %141
  %144 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br i1 %144, label %145, label %149

145:                                              ; preds = %143
  %146 = getelementptr inbounds i8, ptr %0, i64 480
  call void @_ZNSt6vectorIN3zmq18tcp_address_mask_tESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %146) #8
  br label %163

147:                                              ; preds = %139
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %164

149:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #8
  invoke void @_ZN3zmq18tcp_address_mask_tC1Ev(ptr noundef nonnull align 4 dereferenceable(32) %7)
          to label %150 unwind label %160

150:                                              ; preds = %149
  %151 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  %152 = getelementptr inbounds i8, ptr %0, i64 352
  %153 = load i8, ptr %152, align 8, !tbaa !50, !range !48, !noundef !49
  %154 = trunc nuw i8 %153 to i1
  %155 = invoke noundef i32 @_ZN3zmq18tcp_address_mask_t7resolveEPKcb(ptr noundef nonnull align 4 dereferenceable(32) %7, ptr noundef %151, i1 noundef zeroext %154)
          to label %156 unwind label %160

156:                                              ; preds = %150
  %157 = icmp eq i32 %155, 0
  br i1 %157, label %158, label %162

158:                                              ; preds = %156
  %159 = getelementptr inbounds i8, ptr %0, i64 480
  invoke void @_ZNSt6vectorIN3zmq18tcp_address_mask_tESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %159, ptr noundef nonnull align 4 dereferenceable(32) %7)
          to label %162 unwind label %160

160:                                              ; preds = %158, %150, %149
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  br label %164

162:                                              ; preds = %158, %156
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  br label %163

163:                                              ; preds = %145, %162, %141
  %.0262 = phi i32 [ 0, %145 ], [ %155, %162 ], [ %140, %141 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  br label %285

164:                                              ; preds = %160, %147
  %.pn280 = phi { ptr, i32 } [ %161, %160 ], [ %148, %147 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  br label %286

165:                                              ; preds = %15
  %or.cond54 = icmp ult i32 %.0248, 2
  %or.cond288 = select i1 %13, i1 %or.cond54, i1 false
  br i1 %or.cond288, label %166, label %283

166:                                              ; preds = %165
  %167 = getelementptr inbounds i8, ptr %0, i64 508
  store i32 %.0248, ptr %167, align 4, !tbaa !56
  %168 = getelementptr inbounds i8, ptr %0, i64 504
  store i32 %.0248, ptr %168, align 8, !tbaa !57
  br label %285

169:                                              ; preds = %15
  %170 = icmp eq i64 %3, 0
  %171 = icmp eq ptr %2, null
  %or.cond56 = and i1 %171, %170
  br i1 %or.cond56, label %172, label %174

172:                                              ; preds = %169
  %173 = getelementptr inbounds i8, ptr %0, i64 504
  store i32 0, ptr %173, align 8, !tbaa !57
  br label %285

174:                                              ; preds = %169
  %175 = add i64 %3, -1
  %or.cond58 = icmp ult i64 %175, 255
  %176 = icmp ne ptr %2, null
  %or.cond60 = and i1 %176, %or.cond58
  br i1 %or.cond60, label %177, label %283

177:                                              ; preds = %174
  %178 = getelementptr inbounds i8, ptr %0, i64 544
  %179 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %178, ptr noundef nonnull %2, i64 noundef %3)
  %180 = getelementptr inbounds i8, ptr %0, i64 508
  store i32 0, ptr %180, align 4, !tbaa !56
  %181 = getelementptr inbounds i8, ptr %0, i64 504
  store i32 1, ptr %181, align 8, !tbaa !57
  br label %285

182:                                              ; preds = %15
  %183 = icmp eq i64 %3, 0
  %184 = icmp eq ptr %2, null
  %or.cond62 = and i1 %184, %183
  br i1 %or.cond62, label %185, label %187

185:                                              ; preds = %182
  %186 = getelementptr inbounds i8, ptr %0, i64 504
  store i32 0, ptr %186, align 8, !tbaa !57
  br label %285

187:                                              ; preds = %182
  %188 = add i64 %3, -1
  %or.cond64 = icmp ult i64 %188, 255
  %189 = icmp ne ptr %2, null
  %or.cond66 = and i1 %189, %or.cond64
  br i1 %or.cond66, label %190, label %283

190:                                              ; preds = %187
  %191 = getelementptr inbounds i8, ptr %0, i64 576
  %192 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %191, ptr noundef nonnull %2, i64 noundef %3)
  %193 = getelementptr inbounds i8, ptr %0, i64 508
  store i32 0, ptr %193, align 4, !tbaa !56
  %194 = getelementptr inbounds i8, ptr %0, i64 504
  store i32 1, ptr %194, align 8, !tbaa !57
  br label %285

195:                                              ; preds = %15
  %196 = getelementptr inbounds i8, ptr %0, i64 512
  %197 = tail call noundef i32 @_ZL40do_setsockopt_string_allow_empty_relaxedPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %196, i64 noundef 255)
  br label %285

198:                                              ; preds = %15
  %199 = getelementptr inbounds i8, ptr %0, i64 784
  %200 = tail call noundef i32 @_ZN3zmq32do_setsockopt_int_as_bool_strictEPKvmPb(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %199)
  br label %285

201:                                              ; preds = %15
  %202 = icmp sgt i32 %.0248, -1
  %or.cond68 = select i1 %13, i1 %202, i1 false
  br i1 %or.cond68, label %203, label %283

203:                                              ; preds = %201
  %204 = getelementptr inbounds i8, ptr %0, i64 788
  store i32 %.0248, ptr %204, align 4, !tbaa !58
  br label %285

205:                                              ; preds = %15
  %206 = getelementptr inbounds i8, ptr %0, i64 361
  %207 = tail call noundef i32 @_ZN3zmq33do_setsockopt_int_as_bool_relaxedEPKvmPb(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %206)
  br label %285

208:                                              ; preds = %15
  %209 = icmp sgt i32 %.0248, -1
  %or.cond70 = select i1 %13, i1 %209, i1 false
  br i1 %or.cond70, label %210, label %283

210:                                              ; preds = %208
  %211 = getelementptr inbounds i8, ptr %0, i64 796
  store i32 %.0248, ptr %211, align 4, !tbaa !59
  br label %285

212:                                              ; preds = %15
  %213 = add i32 %.0248, 99
  %214 = icmp ult i32 %213, 6553699
  %or.cond74 = select i1 %13, i1 %214, i1 false
  br i1 %or.cond74, label %215, label %283

215:                                              ; preds = %212
  %216 = sdiv i32 %.0248, 100
  %217 = trunc nuw i32 %216 to i16
  %218 = getelementptr inbounds i8, ptr %0, i64 794
  store i16 %217, ptr %218, align 2, !tbaa !60
  br label %285

219:                                              ; preds = %15
  %220 = icmp sgt i32 %.0248, -1
  %or.cond76 = select i1 %13, i1 %220, i1 false
  br i1 %or.cond76, label %221, label %283

221:                                              ; preds = %219
  %222 = getelementptr inbounds i8, ptr %0, i64 800
  store i32 %.0248, ptr %222, align 8, !tbaa !61
  br label %285

223:                                              ; preds = %15
  %224 = icmp sgt i32 %.0248, -2
  %or.cond78 = select i1 %13, i1 %224, i1 false
  br i1 %or.cond78, label %225, label %283

225:                                              ; preds = %223
  %226 = getelementptr inbounds i8, ptr %0, i64 804
  store i32 %.0248, ptr %226, align 4, !tbaa !62
  br label %285

227:                                              ; preds = %15
  %228 = getelementptr inbounds i8, ptr %0, i64 808
  %229 = tail call noundef i32 @_ZL39do_setsockopt_string_allow_empty_strictPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %228, i64 noundef 16)
  br label %285

230:                                              ; preds = %15
  %231 = getelementptr inbounds i8, ptr %0, i64 840
  %232 = tail call noundef i32 @_ZN3zmq33do_setsockopt_int_as_bool_relaxedEPKvmPb(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %231)
  br label %285

233:                                              ; preds = %15
  %234 = getelementptr inbounds i8, ptr %0, i64 841
  %235 = tail call noundef i32 @_ZN3zmq33do_setsockopt_int_as_bool_relaxedEPKvmPb(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %234)
  br label %285

236:                                              ; preds = %15
  switch i64 %3, label %237 [
    i64 4, label %278
    i64 0, label %278
  ]

237:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef %2, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %238 unwind label %259

238:                                              ; preds = %237
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  %239 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32) %8, i8 noundef signext 58, i64 noundef 0) #8
  %240 = add i64 %239, -1
  %or.cond80 = icmp ult i64 %240, -2
  br i1 %or.cond80, label %241, label %276

241:                                              ; preds = %238
  %242 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  %243 = add i64 %242, -1
  %.not273 = icmp eq i64 %239, %243
  br i1 %.not273, label %276, label %244

244:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #8
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef 0, i64 noundef %239)
          to label %245 unwind label %261

245:                                              ; preds = %244
  %246 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmPKc(ptr noundef nonnull align 8 dereferenceable(32) %10, i64 noundef 0, i64 noundef 2, ptr noundef nonnull @.str)
          to label %247 unwind label %263

247:                                              ; preds = %245
  %248 = icmp eq i32 %246, 0
  br i1 %248, label %249, label %273

249:                                              ; preds = %247
  %250 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  %251 = icmp ult i64 %250, 256
  br i1 %251, label %252, label %273

252:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #8
  %253 = add nuw i64 %239, 1
  %254 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  invoke void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %8, i64 noundef %253, i64 noundef %254)
          to label %255 unwind label %265

255:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #8
  invoke void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EC2IRKS5_RS5_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISC_SD_EEEbE4typeELb1EEEOSC_OSD_(ptr noundef nonnull align 8 dereferenceable(64) %12, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %256 unwind label %267

256:                                              ; preds = %255
  %257 = getelementptr inbounds i8, ptr %0, i64 864
  %258 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE6insertIS8_IS5_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %257, ptr noundef nonnull align 8 dereferenceable(64) %12)
          to label %.critedge unwind label %269

.critedge:                                        ; preds = %256
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_ED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %12) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  br label %285

259:                                              ; preds = %237
  %260 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  br label %277

261:                                              ; preds = %244
  %262 = landingpad { ptr, i32 }
          cleanup
  br label %275

263:                                              ; preds = %245
  %264 = landingpad { ptr, i32 }
          cleanup
  br label %274

265:                                              ; preds = %252
  %266 = landingpad { ptr, i32 }
          cleanup
  br label %272

267:                                              ; preds = %255
  %268 = landingpad { ptr, i32 }
          cleanup
  br label %271

269:                                              ; preds = %256
  %270 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_ED2Ev(ptr noundef nonnull align 8 dereferenceable(64) %12) #8
  br label %271

271:                                              ; preds = %269, %267
  %.pn = phi { ptr, i32 } [ %270, %269 ], [ %268, %267 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  br label %272

272:                                              ; preds = %271, %265
  %.pn.pn = phi { ptr, i32 } [ %.pn, %271 ], [ %266, %265 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  br label %274

273:                                              ; preds = %247, %249
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  br label %276

274:                                              ; preds = %272, %263
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %272 ], [ %264, %263 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  br label %275

275:                                              ; preds = %274, %261
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %274 ], [ %262, %261 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  br label %277

276:                                              ; preds = %238, %241, %273
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  br label %278

277:                                              ; preds = %275, %259
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %275 ], [ %260, %259 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  br label %286

278:                                              ; preds = %236, %236, %276
  %279 = tail call ptr @__errno_location() #9
  store i32 22, ptr %279, align 4, !tbaa !63
  br label %285

280:                                              ; preds = %15
  %281 = getelementptr inbounds i8, ptr %0, i64 842
  %282 = tail call noundef i32 @_ZN3zmq33do_setsockopt_int_as_bool_relaxedEPKvmPb(ptr noundef %2, i64 noundef %3, ptr noundef nonnull %281)
  br label %285

283:                                              ; preds = %15, %223, %219, %212, %208, %201, %187, %174, %165, %136, %133, %130, %127, %123, %91, %87, %83, %79, %72, %68, %64, %60, %56, %52, %48, %44, %40, %36, %32, %26, %19, %16
  %284 = tail call ptr @__errno_location() #9
  store i32 22, ptr %284, align 4, !tbaa !63
  br label %285

285:                                              ; preds = %.critedge, %283, %280, %278, %233, %230, %227, %225, %221, %215, %210, %205, %203, %198, %195, %190, %185, %177, %172, %166, %163, %137, %134, %131, %128, %125, %121, %120, %114, %113, %106, %103, %102, %93, %89, %85, %81, %76, %74, %70, %66, %62, %58, %54, %50, %46, %42, %38, %34, %28, %23, %21, %18
  %.3 = phi i32 [ -1, %283 ], [ %282, %280 ], [ -1, %278 ], [ %235, %233 ], [ %232, %230 ], [ %229, %227 ], [ 0, %225 ], [ 0, %221 ], [ 0, %215 ], [ 0, %210 ], [ %207, %205 ], [ 0, %203 ], [ %200, %198 ], [ %197, %195 ], [ 0, %185 ], [ 0, %190 ], [ 0, %172 ], [ 0, %177 ], [ 0, %166 ], [ %.0262, %163 ], [ 0, %137 ], [ 0, %134 ], [ 0, %131 ], [ 0, %128 ], [ 0, %125 ], [ 0, %120 ], [ %122, %121 ], [ 0, %113 ], [ %115, %114 ], [ %108, %106 ], [ %105, %103 ], [ %96, %102 ], [ 0, %93 ], [ 0, %89 ], [ 0, %85 ], [ 0, %81 ], [ %78, %76 ], [ 0, %74 ], [ 0, %70 ], [ 0, %66 ], [ 0, %62 ], [ 0, %58 ], [ 0, %54 ], [ 0, %50 ], [ 0, %46 ], [ 0, %42 ], [ 0, %38 ], [ 0, %34 ], [ 0, %28 ], [ %25, %23 ], [ 0, %21 ], [ 0, %18 ], [ 0, %.critedge ]
  ret i32 %.3

286:                                              ; preds = %277, %164
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %277 ], [ %.pn280, %164 ]
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z13do_setsockoptImEiPKvmPT_(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3zmq14atomic_value_t5storeEi(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z13do_setsockoptIlEiPKvmPT_(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL39do_setsockopt_string_allow_empty_strictPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef, i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3zmq18tcp_address_mask_tESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

declare void @_ZN3zmq18tcp_address_mask_tC1Ev(ptr noundef nonnull align 4 dereferenceable(32)) unnamed_addr #4

declare noundef i32 @_ZN3zmq18tcp_address_mask_t7resolveEPKcb(ptr noundef nonnull align 4 dereferenceable(32), ptr noundef, i1 noundef zeroext) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcm(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL40do_setsockopt_string_allow_empty_relaxedPKvmPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm(ptr noundef, i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: nounwind
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext, i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef) local_unnamed_addr #2 align 2

declare noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmPKc(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE6insertIS8_IS5_S5_EEENSt9enable_ifIXsr16is_constructibleISA_T_EE5valueES8_ISt17_Rb_tree_iteratorISA_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EC2IRKS5_RS5_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairISC_SD_EEEbE4typeELb1EEEOSC_OSD_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_ED2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #6 align 2

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

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { "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 "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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { nounwind }
attributes #9 = { 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, !7, i64 0}
!6 = !{!"_ZTSN3zmq9options_tE", !7, i64 0, !7, i64 4, !10, i64 8, !8, i64 16, !8, i64 17, !7, i64 276, !7, i64 280, !7, i64 284, !7, i64 288, !7, i64 292, !7, i64 296, !7, i64 300, !8, i64 304, !11, i64 308, !7, i64 312, !7, i64 316, !7, i64 320, !7, i64 324, !7, i64 328, !10, i64 336, !7, i64 344, !7, i64 348, !14, i64 352, !7, i64 356, !14, i64 360, !14, i64 361, !14, i64 362, !14, i64 363, !14, i64 364, !15, i64 368, !15, i64 400, !15, i64 432, !7, i64 464, !7, i64 468, !7, i64 472, !7, i64 476, !18, i64 480, !7, i64 504, !7, i64 508, !15, i64 512, !15, i64 544, !15, i64 576, !8, i64 608, !8, i64 640, !8, i64 672, !15, i64 704, !15, i64 736, !7, i64 768, !7, i64 772, !14, i64 776, !7, i64 780, !14, i64 784, !7, i64 788, !14, i64 792, !22, i64 794, !7, i64 796, !7, i64 800, !7, i64 804, !15, i64 808, !14, i64 840, !14, i64 841, !14, i64 842, !7, i64 844, !7, i64 848, !14, i64 852, !7, i64 856, !23, i64 864, !7, i64 912}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!"_ZTSN3zmq14atomic_value_tE", !12, i64 0}
!12 = !{!"_ZTSSt6atomicIiE", !13, i64 0}
!13 = !{!"_ZTSSt13__atomic_baseIiE", !7, i64 0}
!14 = !{!"bool", !8, i64 0}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !16, i64 0, !10, i64 8, !8, i64 16}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !17, i64 0}
!17 = !{!"any pointer", !8, i64 0}
!18 = !{!"_ZTSSt6vectorIN3zmq18tcp_address_mask_tESaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIN3zmq18tcp_address_mask_tESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN3zmq18tcp_address_mask_tESaIS1_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN3zmq18tcp_address_mask_tESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!22 = !{!"short", !8, i64 0}
!23 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE", !24, i64 0}
!24 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !25, i64 0}
!25 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !26, i64 0, !28, i64 8}
!26 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !27, i64 0}
!27 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!28 = !{!"_ZTSSt15_Rb_tree_header", !29, i64 0, !10, i64 32}
!29 = !{!"_ZTSSt18_Rb_tree_node_base", !30, i64 0, !17, i64 8, !17, i64 16, !17, i64 24}
!30 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!31 = !{!6, !7, i64 4}
!32 = !{!6, !8, i64 16}
!33 = !{!6, !7, i64 276}
!34 = !{!6, !7, i64 280}
!35 = !{!6, !7, i64 292}
!36 = !{!6, !7, i64 296}
!37 = !{!6, !7, i64 300}
!38 = !{!6, !7, i64 312}
!39 = !{!6, !7, i64 316}
!40 = !{!6, !7, i64 320}
!41 = !{!6, !7, i64 324}
!42 = !{!6, !7, i64 328}
!43 = !{!6, !7, i64 284}
!44 = !{!6, !7, i64 288}
!45 = !{!6, !7, i64 344}
!46 = !{!6, !7, i64 348}
!47 = !{!14, !14, i64 0}
!48 = !{i8 0, i8 2}
!49 = !{}
!50 = !{!6, !14, i64 352}
!51 = !{!6, !7, i64 464}
!52 = !{!6, !7, i64 468}
!53 = !{!6, !7, i64 472}
!54 = !{!6, !7, i64 476}
!55 = !{!6, !7, i64 356}
!56 = !{!6, !7, i64 508}
!57 = !{!6, !7, i64 504}
!58 = !{!6, !7, i64 788}
!59 = !{!6, !7, i64 796}
!60 = !{!6, !22, i64 794}
!61 = !{!6, !7, i64 800}
!62 = !{!6, !7, i64 804}
!63 = !{!7, !7, i64 0}


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