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

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

%"struct.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::__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.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 }

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3zmq9options_tC2Ev(ptr noundef nonnull align 8 dereferenceable(916) %0) unnamed_addr #1 align 2 {
  %2 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %3 = load ptr, ptr %2, align 8
  %4 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 0
  store i32 1000, ptr %4, align 8, !tbaa !9
  %5 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 1
  store i32 1000, ptr %5, align 4, !tbaa !32
  %6 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 2
  store i64 0, ptr %6, align 8, !tbaa !33
  %7 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 3
  store i8 0, ptr %7, align 8, !tbaa !34
  %8 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 6
  store i32 100, ptr %8, align 4, !tbaa !35
  %9 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 7
  store i32 10000, ptr %9, align 8, !tbaa !36
  %10 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 8
  store i32 1, ptr %10, align 4, !tbaa !37
  %11 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 9
  store i32 1500, ptr %11, align 8, !tbaa !38
  %12 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 10
  store i32 -1, ptr %12, align 4, !tbaa !39
  %13 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 11
  store i32 -1, ptr %13, align 8, !tbaa !40
  %14 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 12
  store i32 0, ptr %14, align 4, !tbaa !41
  %15 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 13
  store i8 -1, ptr %15, align 8, !tbaa !42
  %16 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 15
  call void @_ZN3zmq14atomic_value_tC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %16, i32 noundef -1)
  %17 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 16
  store i32 0, ptr %17, align 8, !tbaa !43
  %18 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 17
  store i32 0, ptr %18, align 4, !tbaa !44
  %19 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 18
  store i32 100, ptr %19, align 8, !tbaa !45
  %20 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 19
  store i32 0, ptr %20, align 4, !tbaa !46
  %21 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 20
  store i32 100, ptr %21, align 8, !tbaa !47
  %22 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 22
  store i64 -1, ptr %22, align 8, !tbaa !48
  %23 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 23
  store i32 -1, ptr %23, align 8, !tbaa !49
  %24 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 24
  store i32 -1, ptr %24, align 4, !tbaa !50
  %25 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 25
  store i8 0, ptr %25, align 8, !tbaa !51
  %26 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 27
  store i32 0, ptr %26, align 4, !tbaa !52
  %27 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 28
  store i8 0, ptr %27, align 8, !tbaa !53
  %28 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 29
  store i8 0, ptr %28, align 1, !tbaa !54
  %29 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 30
  store i8 0, ptr %29, align 2, !tbaa !55
  %30 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 31
  store i8 0, ptr %30, align 1, !tbaa !56
  %31 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 32
  store i8 1, ptr %31, align 4, !tbaa !57
  %32 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 34
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #3
  %33 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 35
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #3
  %34 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 36
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #3
  %35 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 37
  store i32 -1, ptr %35, align 8, !tbaa !58
  %36 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 38
  store i32 -1, ptr %36, align 4, !tbaa !59
  %37 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 39
  store i32 -1, ptr %37, align 8, !tbaa !60
  %38 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 40
  store i32 -1, ptr %38, align 4, !tbaa !61
  %39 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 41
  call void @_ZNSt6vectorIN3zmq18tcp_address_mask_tESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #3
  %40 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 42
  store i32 0, ptr %40, align 8, !tbaa !62
  %41 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 43
  store i32 0, ptr %41, align 4, !tbaa !63
  %42 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 44
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #3
  %43 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 45
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #3
  %44 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 46
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #3
  %45 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 50
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #3
  %46 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 51
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #3
  %47 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 52
  store i32 0, ptr %47, align 8, !tbaa !64
  %48 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 53
  store i32 0, ptr %48, align 4, !tbaa !65
  %49 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 54
  store i8 0, ptr %49, align 8, !tbaa !66
  %50 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 56
  store i32 0, ptr %50, align 4, !tbaa !67
  %51 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 57
  store i8 0, ptr %51, align 8, !tbaa !68
  %52 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 59
  store i32 30000, ptr %52, align 4, !tbaa !69
  %53 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 60
  store i8 0, ptr %53, align 8, !tbaa !70
  %54 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 62
  store i16 0, ptr %54, align 2, !tbaa !71
  %55 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 63
  store i32 0, ptr %55, align 4, !tbaa !72
  %56 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 64
  store i32 -1, ptr %56, align 8, !tbaa !73
  %57 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 65
  store i32 -1, ptr %57, align 4, !tbaa !74
  %58 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 66
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #3
  %59 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 67
  store i8 0, ptr %59, align 8, !tbaa !75
  %60 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 68
  store i8 0, ptr %60, align 1, !tbaa !76
  %61 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 69
  store i8 1, ptr %61, align 2, !tbaa !77
  %62 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 71
  store i32 8192, ptr %62, align 4, !tbaa !78
  %63 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 72
  store i32 8192, ptr %63, align 8, !tbaa !79
  %64 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 73
  store i8 1, ptr %64, align 4, !tbaa !80
  %65 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 75
  store i32 0, ptr %65, align 8, !tbaa !81
  %66 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 77
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %66) #3
  %67 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 78
  store i32 1, ptr %67, align 8, !tbaa !82
  %68 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 47
  %69 = getelementptr inbounds [32 x i8], ptr %68, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %69, i8 0, i64 32, i1 false)
  %70 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 48
  %71 = getelementptr inbounds [32 x i8], ptr %70, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %71, i8 0, i64 32, i1 false)
  %72 = getelementptr inbounds %"struct.zmq::options_t", ptr %3, i32 0, i32 49
  %73 = getelementptr inbounds [32 x i8], ptr %72, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %73, i8 0, i64 32, i1 false)
  ret void
}

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTSN3zmq9options_tE", !11, i64 0, !11, i64 4, !12, i64 8, !7, i64 16, !7, i64 17, !11, i64 276, !11, i64 280, !11, i64 284, !11, i64 288, !11, i64 292, !11, i64 296, !11, i64 300, !7, i64 304, !13, i64 308, !11, i64 312, !11, i64 316, !11, i64 320, !11, i64 324, !11, i64 328, !12, i64 336, !11, i64 344, !11, i64 348, !16, i64 352, !11, i64 356, !16, i64 360, !16, i64 361, !16, i64 362, !16, i64 363, !16, i64 364, !17, i64 368, !17, i64 400, !17, i64 432, !11, i64 464, !11, i64 468, !11, i64 472, !11, i64 476, !19, i64 480, !11, i64 504, !11, i64 508, !17, i64 512, !17, i64 544, !17, i64 576, !7, i64 608, !7, i64 640, !7, i64 672, !17, i64 704, !17, i64 736, !11, i64 768, !11, i64 772, !16, i64 776, !11, i64 780, !16, i64 784, !11, i64 788, !16, i64 792, !23, i64 794, !11, i64 796, !11, i64 800, !11, i64 804, !17, i64 808, !16, i64 840, !16, i64 841, !16, i64 842, !11, i64 844, !11, i64 848, !16, i64 852, !11, i64 856, !24, i64 864, !11, i64 912}
!11 = !{!"int", !7, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!"_ZTSN3zmq14atomic_value_tE", !14, i64 0}
!14 = !{!"_ZTSSt6atomicIiE", !15, i64 0}
!15 = !{!"_ZTSSt13__atomic_baseIiE", !11, i64 0}
!16 = !{!"bool", !7, i64 0}
!17 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !18, i64 0, !12, i64 8, !7, i64 16}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!19 = !{!"_ZTSSt6vectorIN3zmq18tcp_address_mask_tESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIN3zmq18tcp_address_mask_tESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN3zmq18tcp_address_mask_tESaIS1_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN3zmq18tcp_address_mask_tESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"short", !7, i64 0}
!24 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE", !25, i64 0}
!25 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !26, i64 0}
!26 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !27, i64 0, !29, i64 8}
!27 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !28, i64 0}
!28 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!29 = !{!"_ZTSSt15_Rb_tree_header", !30, i64 0, !12, i64 32}
!30 = !{!"_ZTSSt18_Rb_tree_node_base", !31, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!31 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!32 = !{!10, !11, i64 4}
!33 = !{!10, !12, i64 8}
!34 = !{!10, !7, i64 16}
!35 = !{!10, !11, i64 276}
!36 = !{!10, !11, i64 280}
!37 = !{!10, !11, i64 284}
!38 = !{!10, !11, i64 288}
!39 = !{!10, !11, i64 292}
!40 = !{!10, !11, i64 296}
!41 = !{!10, !11, i64 300}
!42 = !{!10, !7, i64 304}
!43 = !{!10, !11, i64 312}
!44 = !{!10, !11, i64 316}
!45 = !{!10, !11, i64 320}
!46 = !{!10, !11, i64 324}
!47 = !{!10, !11, i64 328}
!48 = !{!10, !12, i64 336}
!49 = !{!10, !11, i64 344}
!50 = !{!10, !11, i64 348}
!51 = !{!10, !16, i64 352}
!52 = !{!10, !11, i64 356}
!53 = !{!10, !16, i64 360}
!54 = !{!10, !16, i64 361}
!55 = !{!10, !16, i64 362}
!56 = !{!10, !16, i64 363}
!57 = !{!10, !16, i64 364}
!58 = !{!10, !11, i64 464}
!59 = !{!10, !11, i64 468}
!60 = !{!10, !11, i64 472}
!61 = !{!10, !11, i64 476}
!62 = !{!10, !11, i64 504}
!63 = !{!10, !11, i64 508}
!64 = !{!10, !11, i64 768}
!65 = !{!10, !11, i64 772}
!66 = !{!10, !16, i64 776}
!67 = !{!10, !11, i64 780}
!68 = !{!10, !16, i64 784}
!69 = !{!10, !11, i64 788}
!70 = !{!10, !16, i64 792}
!71 = !{!10, !23, i64 794}
!72 = !{!10, !11, i64 796}
!73 = !{!10, !11, i64 800}
!74 = !{!10, !11, i64 804}
!75 = !{!10, !16, i64 840}
!76 = !{!10, !16, i64 841}
!77 = !{!10, !16, i64 842}
!78 = !{!10, !11, i64 844}
!79 = !{!10, !11, i64 848}
!80 = !{!10, !16, i64 852}
!81 = !{!10, !11, i64 856}
!82 = !{!10, !11, i64 912}


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

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

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_ZN3zmq9options_tC2Ev(ptr noundef nonnull align 8 dereferenceable(916) %0) unnamed_addr #1 align 2 {
  store i32 1000, ptr %0, align 8, !tbaa !5
  %2 = getelementptr inbounds i8, ptr %0, i64 4
  store i32 1000, ptr %2, align 4, !tbaa !31
  %3 = getelementptr inbounds i8, ptr %0, i64 8
  store i64 0, ptr %3, align 8, !tbaa !32
  %4 = getelementptr inbounds i8, ptr %0, i64 16
  store i8 0, ptr %4, align 8, !tbaa !33
  %5 = getelementptr inbounds i8, ptr %0, i64 276
  store <4 x i32> <i32 100, i32 10000, i32 1, i32 1500>, ptr %5, align 4, !tbaa !34
  %6 = getelementptr inbounds i8, ptr %0, i64 292
  store i32 -1, ptr %6, align 4, !tbaa !35
  %7 = getelementptr inbounds i8, ptr %0, i64 296
  store i32 -1, ptr %7, align 8, !tbaa !36
  %8 = getelementptr inbounds i8, ptr %0, i64 300
  store i32 0, ptr %8, align 4, !tbaa !37
  %9 = getelementptr inbounds i8, ptr %0, i64 304
  store i8 -1, ptr %9, align 8, !tbaa !38
  %10 = getelementptr inbounds i8, ptr %0, i64 308
  tail call void @_ZN3zmq14atomic_value_tC2Ei(ptr noundef nonnull align 4 dereferenceable(4) %10, i32 noundef -1)
  %11 = getelementptr inbounds i8, ptr %0, i64 312
  store <4 x i32> <i32 0, i32 0, i32 100, i32 0>, ptr %11, align 8, !tbaa !34
  %12 = getelementptr inbounds i8, ptr %0, i64 328
  store i32 100, ptr %12, align 8, !tbaa !39
  %13 = getelementptr inbounds i8, ptr %0, i64 336
  %14 = getelementptr inbounds i8, ptr %0, i64 352
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %13, i8 -1, i64 16, i1 false)
  store i8 0, ptr %14, align 8, !tbaa !40
  %15 = getelementptr inbounds i8, ptr %0, i64 356
  %16 = getelementptr inbounds i8, ptr %0, i64 364
  store i64 0, ptr %15, align 4
  store i8 1, ptr %16, align 4, !tbaa !41
  %17 = getelementptr inbounds i8, ptr %0, i64 368
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #2
  %18 = getelementptr inbounds i8, ptr %0, i64 400
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #2
  %19 = getelementptr inbounds i8, ptr %0, i64 432
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #2
  %20 = getelementptr inbounds i8, ptr %0, i64 464
  %21 = getelementptr inbounds i8, ptr %0, i64 480
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %20, i8 -1, i64 16, i1 false)
  tail call void @_ZNSt6vectorIN3zmq18tcp_address_mask_tESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #2
  %22 = getelementptr inbounds i8, ptr %0, i64 504
  store i32 0, ptr %22, align 8, !tbaa !42
  %23 = getelementptr inbounds i8, ptr %0, i64 508
  store i32 0, ptr %23, align 4, !tbaa !43
  %24 = getelementptr inbounds i8, ptr %0, i64 512
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #2
  %25 = getelementptr inbounds i8, ptr %0, i64 544
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #2
  %26 = getelementptr inbounds i8, ptr %0, i64 576
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #2
  %27 = getelementptr inbounds i8, ptr %0, i64 704
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #2
  %28 = getelementptr inbounds i8, ptr %0, i64 736
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #2
  %29 = getelementptr inbounds i8, ptr %0, i64 768
  %30 = getelementptr inbounds i8, ptr %0, i64 780
  store i32 0, ptr %30, align 4, !tbaa !44
  %31 = getelementptr inbounds i8, ptr %0, i64 784
  store i8 0, ptr %31, align 8, !tbaa !45
  %32 = getelementptr inbounds i8, ptr %0, i64 788
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(9) %29, i8 0, i64 9, i1 false)
  store i32 30000, ptr %32, align 4, !tbaa !46
  %33 = getelementptr inbounds i8, ptr %0, i64 792
  store i8 0, ptr %33, align 8, !tbaa !47
  %34 = getelementptr inbounds i8, ptr %0, i64 794
  store i16 0, ptr %34, align 2, !tbaa !48
  %35 = getelementptr inbounds i8, ptr %0, i64 796
  store i32 0, ptr %35, align 4, !tbaa !49
  %36 = getelementptr inbounds i8, ptr %0, i64 800
  store i32 -1, ptr %36, align 8, !tbaa !50
  %37 = getelementptr inbounds i8, ptr %0, i64 804
  store i32 -1, ptr %37, align 4, !tbaa !51
  %38 = getelementptr inbounds i8, ptr %0, i64 808
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #2
  %39 = getelementptr inbounds i8, ptr %0, i64 840
  store i8 0, ptr %39, align 8, !tbaa !52
  %40 = getelementptr inbounds i8, ptr %0, i64 841
  store i8 0, ptr %40, align 1, !tbaa !53
  %41 = getelementptr inbounds i8, ptr %0, i64 842
  store i8 1, ptr %41, align 2, !tbaa !54
  %42 = getelementptr inbounds i8, ptr %0, i64 844
  store i32 8192, ptr %42, align 4, !tbaa !55
  %43 = getelementptr inbounds i8, ptr %0, i64 848
  store i32 8192, ptr %43, align 8, !tbaa !56
  %44 = getelementptr inbounds i8, ptr %0, i64 852
  store i8 1, ptr %44, align 4, !tbaa !57
  %45 = getelementptr inbounds i8, ptr %0, i64 856
  store i32 0, ptr %45, align 8, !tbaa !58
  %46 = getelementptr inbounds i8, ptr %0, i64 864
  tail call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %46) #2
  %47 = getelementptr inbounds i8, ptr %0, i64 912
  store i32 1, ptr %47, align 8, !tbaa !59
  %48 = getelementptr inbounds i8, ptr %0, i64 608
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %48, i8 0, i64 96, i1 false)
  ret void
}

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_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, !10, i64 8}
!33 = !{!6, !8, i64 16}
!34 = !{!7, !7, i64 0}
!35 = !{!6, !7, i64 292}
!36 = !{!6, !7, i64 296}
!37 = !{!6, !7, i64 300}
!38 = !{!6, !8, i64 304}
!39 = !{!6, !7, i64 328}
!40 = !{!6, !14, i64 352}
!41 = !{!6, !14, i64 364}
!42 = !{!6, !7, i64 504}
!43 = !{!6, !7, i64 508}
!44 = !{!6, !7, i64 780}
!45 = !{!6, !14, i64 784}
!46 = !{!6, !7, i64 788}
!47 = !{!6, !14, i64 792}
!48 = !{!6, !22, i64 794}
!49 = !{!6, !7, i64 796}
!50 = !{!6, !7, i64 800}
!51 = !{!6, !7, i64 804}
!52 = !{!6, !14, i64 840}
!53 = !{!6, !14, i64 841}
!54 = !{!6, !14, i64 842}
!55 = !{!6, !7, i64 844}
!56 = !{!6, !7, i64 848}
!57 = !{!6, !14, i64 852}
!58 = !{!6, !7, i64 856}
!59 = !{!6, !7, i64 912}


; Effective O3 passes: EarlyCSEPass,InferFunctionAttrsPass,InstCombinePass,MemCpyOptPass,PostOrderFunctionAttrsPass,SLPVectorizerPass,SROAPass,TailCallElimPass