; ModuleID = 'main_test_cu-host-x86_64-unknown-linux-gnu.bc' source_filename = "main_test_cu.cu" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" %"class.std::ios_base::Init" = type { i8 } %struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] } %struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 } %struct.dim3 = type { i32, i32, i32 } %struct.CUstream_st = type opaque %class.INode = type <{ i32 (...)**, i32, [4 x i8] }> %"class.std::priority_queue" = type <{ %"class.std::vector", %struct.NodeCmp, [7 x i8] }> %"class.std::vector" = type { %"struct.std::_Vector_base" } %"struct.std::_Vector_base" = type { %"struct.std::_Vector_base >::_Vector_impl" } %"struct.std::_Vector_base >::_Vector_impl" = type { %class.INode**, %class.INode**, %class.INode** } %struct.NodeCmp = type { i8 } %class.LeafNode = type { %class.INode.base, i8, [3 x i8] } %class.INode.base = type <{ i32 (...)**, i32 }> %class.InternalNode = type { %class.INode.base, %class.INode*, %class.INode* } %"class.__gnu_cxx::__normal_iterator" = type { %class.INode** } %"class.std::allocator" = type { i8 } %"class.std::vector.0" = type { %"struct.std::_Bvector_base" } %"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base >::_Bvector_impl" } %"struct.std::_Bvector_base >::_Bvector_impl" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", i64* } %"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] } %"struct.std::_Bit_iterator_base.base" = type <{ i64*, i32 }> %"class.std::map" = type { %"class.std::_Rb_tree" } %"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl" } %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl" = type { %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_header" } %"struct.std::_Rb_tree_key_compare" = type { %"struct.std::less" } %"struct.std::less" = type { i8 } %"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 } %"struct.std::_Rb_tree_node_base" = type { i32, %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %"struct.std::_Rb_tree_iterator" = type { %"struct.std::_Rb_tree_node_base"* } %"struct.std::pair" = type { i8, %"class.std::vector.0" } %"struct.std::_Bit_const_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] } %"class.std::allocator.13" = type { i8 } %"class.std::allocator.1" = type { i8 } %"struct.std::_Bit_reference" = type { i64*, i64 } %"struct.std::_Bit_iterator_base" = type <{ i64*, i32, [4 x i8] }> %struct.timeval = type { i64, i64 } %struct.timezone = type { i32, i32 } %"struct.std::_Rb_tree_const_iterator" = type { %"struct.std::_Rb_tree_node_base"* } %"struct.std::random_access_iterator_tag" = type { i8 } %"struct.std::_Rb_tree_node" = type { %"struct.std::_Rb_tree_node_base", %"struct.std::pair" } %"class.std::allocator.4" = type { i8 } %"class.__gnu_cxx::new_allocator.5" = type { i8 } %"class.__gnu_cxx::new_allocator.2" = type { i8 } %"struct.std::iterator" = type { i8 } %"class.std::allocator.7" = type { i8 } %"class.__gnu_cxx::new_allocator.8" = type { i8 } %"class.__gnu_cxx::new_allocator" = type { i8 } %"class.__gnu_cxx::__normal_iterator.10" = type { %class.INode** } %"struct.__gnu_cxx::__ops::_Iter_comp_iter" = type { %struct.NodeCmp } %"struct.__gnu_cxx::__ops::_Iter_comp_val" = type { %struct.NodeCmp } %"class.std::__pair_base" = type { i8 } %"struct.std::_Select1st" = type { i8 } %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node" = type { %"class.std::_Rb_tree"* } %"struct.std::pair.11" = type { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %"class.std::__pair_base.12" = type { i8 } %"class.__gnu_cxx::new_allocator.14" = type { i8 } $_Z9gpuAssert9cudaErrorPKcib = comdat any $_ZN4dim3C2Ejjj = comdat any $_ZNSt6vectorIP5INodeSaIS1_EEC2Ev = comdat any $_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpEC2ERKS5_RKS4_ = comdat any $_ZNSt6vectorIP5INodeSaIS1_EED2Ev = comdat any $__clang_call_terminate = comdat any $_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE4pushERKS1_ = comdat any $_ZN8LeafNodeC2Eic = comdat any $_ZNKSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE4sizeEv = comdat any $_ZNKSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE3topEv = comdat any $_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE3popEv = comdat any $_ZN12InternalNodeC2EP5INodeS1_ = comdat any $_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpED2Ev = comdat any $_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEEixERS6_ = comdat any $_ZNSt6vectorIbSaIbEEaSERKS1_ = comdat any $_ZNSt6vectorIbSaIbEEC2ERKS1_ = comdat any $_ZNSt6vectorIbSaIbEE9push_backEb = comdat any $_ZNSt6vectorIbSaIbEED2Ev = comdat any $_Z10initParamsPcjRjS0_S0_j = comdat any $_Z8loadDataPcPjS0_S0_jjRd = comdat any $_Z15compare_vectorsIjEiPT_S1_j = comdat any $_ZN5INodeC2Ei = comdat any $_ZN8LeafNodeD2Ev = comdat any $_ZN8LeafNodeD0Ev = comdat any $_ZN5INodeD2Ev = comdat any $_ZN5INodeD0Ev = comdat any $_ZN12InternalNodeD2Ev = comdat any $_ZN12InternalNodeD0Ev = comdat any $_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEEC2Ev = comdat any $_ZNSt6vectorIbSaIbEEC2Ev = comdat any $_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE5beginEv = comdat any $_ZNSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2ERKSt17_Rb_tree_iteratorIS5_E = comdat any $_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEneERKS6_ = comdat any $_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE3endEv = comdat any $_ZSt8distanceISt19_Bit_const_iteratorENSt15iterator_traitsIT_E15difference_typeES2_S2_ = comdat any $_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEptEv = comdat any $_ZNKSt6vectorIbSaIbEE5beginEv = comdat any $_ZNKSt6vectorIbSaIbEE3endEv = comdat any $_ZNKSt6vectorIbSaIbEEixEm = comdat any $_ZSt3powfi = comdat any $_ZNSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEppEv = comdat any $_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEED2Ev = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EEC2Ev = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE13_Rb_tree_implIS9_Lb0EEC2Ev = comdat any $_ZNSaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEEC2Ev = comdat any $_ZNSt20_Rb_tree_key_compareISt4lessIhEEC2Ev = comdat any $_ZNSt15_Rb_tree_headerC2Ev = comdat any $_ZNSaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEEC2Ev = comdat any $_ZNSt15_Rb_tree_header8_M_resetEv = comdat any $_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEED2Ev = comdat any $_ZNSt13_Bvector_baseISaIbEEC2Ev = comdat any $_ZNSt13_Bvector_baseISaIbEE13_Bvector_implC2Ev = comdat any $_ZNSaImEC2Ev = comdat any $_ZNSt13_Bit_iteratorC2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorImEC2Ev = comdat any $_ZNSt18_Bit_iterator_baseC2EPmj = comdat any $_ZN9__gnu_cxx13new_allocatorImED2Ev = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE5beginEv = comdat any $_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2EPSt18_Rb_tree_node_base = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE3endEv = comdat any $_ZSt10__distanceISt19_Bit_const_iteratorENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag = comdat any $_ZSt19__iterator_categoryISt19_Bit_const_iteratorENSt15iterator_traitsIT_E17iterator_categoryERKS2_ = comdat any $_ZStmiRKSt18_Bit_iterator_baseS1_ = comdat any $_ZNKSt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEE9_M_valptrEv = comdat any $_ZSt11__addressofIKSt4pairIKhSt6vectorIbSaIbEEEEPT_RS7_ = comdat any $_ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator = comdat any $_ZNSt19_Bit_const_iteratorC2EPmj = comdat any $_ZNKSt19_Bit_const_iteratordeEv = comdat any $_ZNSt14_Bit_referenceC2EPmm = comdat any $_ZNKSt14_Bit_referencecvbEv = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EED2Ev = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_M_beginEv = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE13_Rb_tree_implIS9_Lb0EED2Ev = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE7_S_leftEPSt18_Rb_tree_node_base = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS5_E = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS5_E = comdat any $_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE13get_allocatorEv = comdat any $_ZN9__gnu_cxx13new_allocatorISt4pairIKhSt6vectorIbSaIbEEEE7destroyEPS6_ = comdat any $_ZNSt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEE9_M_valptrEv = comdat any $_ZNSaISt4pairIKhSt6vectorIbSaIbEEEED2Ev = comdat any $_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE21_M_get_Node_allocatorEv = comdat any $_ZNSaISt4pairIKhSt6vectorIbSaIbEEEEC2ISt13_Rb_tree_nodeIS4_EEERKSaIT_E = comdat any $_ZN9__gnu_cxx13new_allocatorISt4pairIKhSt6vectorIbSaIbEEEEC2Ev = comdat any $_ZNSt4pairIKhSt6vectorIbSaIbEEED2Ev = comdat any $_ZSt11__addressofISt4pairIKhSt6vectorIbSaIbEEEEPT_RS6_ = comdat any $_ZN9__gnu_cxx13new_allocatorISt4pairIKhSt6vectorIbSaIbEEEED2Ev = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEEE10deallocateERS9_PS8_m = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE21_M_get_Node_allocatorEv = comdat any $_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEE10deallocateEPS8_m = comdat any $_ZSt4ceilf = comdat any $_Z12isPowerOfTwoi = comdat any $_Z9floorPow2i = comdat any $_ZSt5frexpfPi = comdat any $_ZNSt12_Vector_baseIP5INodeSaIS1_EEC2Ev = comdat any $_ZNSt12_Vector_baseIP5INodeSaIS1_EE12_Vector_implC2Ev = comdat any $_ZNSaIP5INodeEC2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorIP5INodeEC2Ev = comdat any $_ZSt8_DestroyIPP5INodeS1_EvT_S3_RSaIT0_E = comdat any $_ZNSt12_Vector_baseIP5INodeSaIS1_EE19_M_get_Tp_allocatorEv = comdat any $_ZNSt12_Vector_baseIP5INodeSaIS1_EED2Ev = comdat any $_ZSt8_DestroyIPP5INodeEvT_S3_ = comdat any $_ZNSt12_Destroy_auxILb1EE9__destroyIPP5INodeEEvT_S5_ = comdat any $_ZNSt12_Vector_baseIP5INodeSaIS1_EE13_M_deallocateEPS1_m = comdat any $_ZNSt12_Vector_baseIP5INodeSaIS1_EE12_Vector_implD2Ev = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE10deallocateERS3_PS2_m = comdat any $_ZN9__gnu_cxx13new_allocatorIP5INodeE10deallocateEPS2_m = comdat any $_ZNSaIP5INodeED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorIP5INodeED2Ev = comdat any $_ZNSt6vectorIP5INodeSaIS1_EEC2ERKS3_ = comdat any $_ZSt9make_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEE7NodeCmpEvT_SA_T0_ = comdat any $_ZNSt6vectorIP5INodeSaIS1_EE5beginEv = comdat any $_ZNSt6vectorIP5INodeSaIS1_EE3endEv = comdat any $_ZNKSt6vectorIP5INodeSaIS1_EE4sizeEv = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE17_S_select_on_copyERKS3_ = comdat any $_ZNKSt12_Vector_baseIP5INodeSaIS1_EE19_M_get_Tp_allocatorEv = comdat any $_ZNSt12_Vector_baseIP5INodeSaIS1_EEC2EmRKS2_ = comdat any $_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEPS3_S3_ET0_T_SC_SB_RSaIT1_E = comdat any $_ZNKSt6vectorIP5INodeSaIS1_EE5beginEv = comdat any $_ZNKSt6vectorIP5INodeSaIS1_EE3endEv = comdat any $_ZNSt12_Vector_baseIP5INodeSaIS1_EE12_Vector_implC2ERKS2_ = comdat any $_ZNSt12_Vector_baseIP5INodeSaIS1_EE17_M_create_storageEm = comdat any $_ZNSaIP5INodeEC2ERKS1_ = comdat any $_ZN9__gnu_cxx13new_allocatorIP5INodeEC2ERKS3_ = comdat any $_ZNSt12_Vector_baseIP5INodeSaIS1_EE11_M_allocateEm = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE8allocateERS3_m = comdat any $_ZN9__gnu_cxx13new_allocatorIP5INodeE8allocateEmPKv = comdat any $_ZNK9__gnu_cxx13new_allocatorIP5INodeE8max_sizeEv = comdat any $_ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_ = comdat any $_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS5_SaIS5_EEEEPS5_EET0_T_SE_SD_ = comdat any $_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_ = comdat any $_ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEPS3_ET1_T0_SC_SB_ = comdat any $_ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEET_SA_ = comdat any $_ZSt13__copy_move_aILb0EPKP5INodePS1_ET1_T0_S6_S5_ = comdat any $_ZSt12__niter_baseIPKP5INodeSt6vectorIS1_SaIS1_EEET_N9__gnu_cxx17__normal_iteratorIS7_T0_EE = comdat any $_ZSt12__niter_baseIPP5INodeET_S3_ = comdat any $_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP5INodeEEPT_PKS5_S8_S6_ = comdat any $_ZNK9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS2_SaIS2_EEE4baseEv = comdat any $_ZN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS2_SaIS2_EEEC2ERKS4_ = comdat any $_ZN9__gnu_cxx5__ops15_Iter_comp_iterI7NodeCmpEC2ES2_ = comdat any $_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterI7NodeCmpEEEvT_SD_RT0_ = comdat any $_ZN9__gnu_cxxmiIPP5INodeSt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_ = comdat any $_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl = comdat any $_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv = comdat any $_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterI7NodeCmpEEEvT_T0_SE_T1_T2_ = comdat any $_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEE4baseEv = comdat any $_ZN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEC2ERKS3_ = comdat any $_ZN9__gnu_cxx5__ops15_Iter_comp_iterI7NodeCmpEclINS_17__normal_iteratorIPP5INodeSt6vectorIS7_SaIS7_EEEESC_EEbT_T0_ = comdat any $_ZN9__gnu_cxx5__ops14_Iter_comp_valI7NodeCmpEC2ERKNS0_15_Iter_comp_iterIS2_EE = comdat any $_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops14_Iter_comp_valI7NodeCmpEEEvT_T0_SE_T1_RT2_ = comdat any $_ZNK7NodeCmpclEPK5INodeS2_ = comdat any $_ZN9__gnu_cxx5__ops14_Iter_comp_valI7NodeCmpEclINS_17__normal_iteratorIPP5INodeSt6vectorIS7_SaIS7_EEEES7_EEbT_RT0_ = comdat any $_ZNSt6vectorIP5INodeSaIS1_EE9push_backERKS1_ = comdat any $_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEE7NodeCmpEvT_SA_T0_ = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE9constructIS2_EEvRS3_PS2_RKT_ = comdat any $_ZNSt6vectorIP5INodeSaIS1_EE17_M_realloc_insertEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_ = comdat any $_ZN9__gnu_cxx13new_allocatorIP5INodeE9constructEPS2_RKS2_ = comdat any $_ZNKSt6vectorIP5INodeSaIS1_EE12_M_check_lenEmPKc = comdat any $_ZSt34__uninitialized_move_if_noexcept_aIPP5INodeS2_SaIS1_EET0_T_S5_S4_RT1_ = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE7destroyERS3_PS2_ = comdat any $_ZNKSt6vectorIP5INodeSaIS1_EE8max_sizeEv = comdat any $_ZSt3maxImERKT_S2_S2_ = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE8max_sizeERKS3_ = comdat any $_ZSt22__uninitialized_copy_aIPP5INodeS2_S1_ET0_T_S4_S3_RSaIT1_E = comdat any $_ZSt18uninitialized_copyIPP5INodeS2_ET0_T_S4_S3_ = comdat any $_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPP5INodeS4_EET0_T_S6_S5_ = comdat any $_ZSt4copyIPP5INodeS2_ET0_T_S4_S3_ = comdat any $_ZSt14__copy_move_a2ILb0EPP5INodeS2_ET1_T0_S4_S3_ = comdat any $_ZSt12__miter_baseIPP5INodeET_S3_ = comdat any $_ZSt13__copy_move_aILb0EPP5INodeS2_ET1_T0_S4_S3_ = comdat any $_ZN9__gnu_cxx13new_allocatorIP5INodeE7destroyEPS2_ = comdat any $_ZN9__gnu_cxx5__ops14_Iter_comp_valI7NodeCmpEC2ES2_ = comdat any $_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEmiEl = comdat any $_ZNKSt6vectorIP5INodeSaIS1_EE5frontEv = comdat any $_ZNK9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS2_SaIS2_EEEdeEv = comdat any $_ZSt8pop_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEE7NodeCmpEvT_SA_T0_ = comdat any $_ZNSt6vectorIP5INodeSaIS1_EE8pop_backEv = comdat any $_ZN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEmmEv = comdat any $_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterI7NodeCmpEEEvT_SD_SD_RT0_ = comdat any $_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE11lower_boundERS6_ = comdat any $_ZNKSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEeqERKS6_ = comdat any $_ZNKSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE8key_compEv = comdat any $_ZNKSt4lessIhEclERKhS2_ = comdat any $_ZNKSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEdeEv = comdat any $_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE6insertESt17_Rb_tree_iteratorIS7_ERKS7_ = comdat any $_ZNSt4pairIKhSt6vectorIbSaIbEEEC2ERS0_RKS3_ = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11lower_boundERS1_ = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_ = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_M_endEv = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E = comdat any $_ZNKSt10_Select1stISt4pairIKhSt6vectorIbSaIbEEEEclERKS5_ = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_valueEPKSt13_Rb_tree_nodeIS5_E = comdat any $_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8key_compEv = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE17_M_insert_unique_ESt23_Rb_tree_const_iteratorIS5_ERKS5_ = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_Alloc_nodeC2ERSB_ = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE17_M_insert_unique_INSB_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_ERKS5_RT_ = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS1_ = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE10_M_insert_INSB_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS5_EPSt18_Rb_tree_node_baseSH_RKS5_RT_ = comdat any $_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEE13_M_const_castEv = comdat any $_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE4sizeEv = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE12_M_rightmostEv = comdat any $_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_ = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE24_M_get_insert_unique_posERS1_ = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_M_leftmostEv = comdat any $_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEmmEv = comdat any $_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEppEv = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_valueEPKSt18_Rb_tree_node_base = comdat any $_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_Alloc_nodeclIS5_EEPSt13_Rb_tree_nodeIS5_ERKT_ = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE14_M_create_nodeERKS5_ = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_M_get_nodeEv = comdat any $_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE17_M_construct_nodeEPSt13_Rb_tree_nodeIS5_ERKS5_ = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEEE8allocateERS9_m = comdat any $_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEE8allocateEmPKv = comdat any $_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEE8max_sizeEv = comdat any $_ZN9__gnu_cxx13new_allocatorISt4pairIKhSt6vectorIbSaIbEEEE9constructEPS6_RKS6_ = comdat any $_ZNSt4pairIKhSt6vectorIbSaIbEEEC2ERKS4_ = comdat any $_ZNKSt6vectorIbSaIbEE4sizeEv = comdat any $_ZNKSt6vectorIbSaIbEE8capacityEv = comdat any $_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv = comdat any $_ZNSt6vectorIbSaIbEE13_M_initializeEm = comdat any $_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator = comdat any $_ZNSt6vectorIbSaIbEE5beginEv = comdat any $_ZNKSt13_Bvector_baseISaIbEE13_Bvector_impl11_M_end_addrEv = comdat any $_ZSt11__addressofImEPT_RS0_ = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaImEE10deallocateERS1_Pmm = comdat any $_ZN9__gnu_cxx13new_allocatorImE10deallocateEPmm = comdat any $_ZNSt13_Bvector_baseISaIbEE11_M_allocateEm = comdat any $_ZNSt13_Bvector_baseISaIbEE8_S_nwordEm = comdat any $_ZNSt13_Bit_iteratorC2EPmj = comdat any $_ZNKSt13_Bit_iteratorplEl = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaImEE8allocateERS1_m = comdat any $_ZN9__gnu_cxx13new_allocatorImE8allocateEmPKv = comdat any $_ZNK9__gnu_cxx13new_allocatorImE8max_sizeEv = comdat any $_ZNSt13_Bit_iteratorpLEl = comdat any $_ZNSt18_Bit_iterator_base7_M_incrEl = comdat any $_ZSt4copyIPmS0_ET0_T_S2_S1_ = comdat any $_ZSt4copyISt19_Bit_const_iteratorSt13_Bit_iteratorET0_T_S3_S2_ = comdat any $_ZSt14__copy_move_a2ILb0EPmS0_ET1_T0_S2_S1_ = comdat any $_ZSt12__miter_baseIPmET_S1_ = comdat any $_ZSt13__copy_move_aILb0EPmS0_ET1_T0_S2_S1_ = comdat any $_ZSt12__niter_baseIPmET_S1_ = comdat any $_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mImEEPT_PKS3_S6_S4_ = comdat any $_ZSt14__copy_move_a2ILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_ = comdat any $_ZSt12__miter_baseISt19_Bit_const_iteratorET_S1_ = comdat any $_ZSt13__copy_move_aILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_ = comdat any $_ZSt12__niter_baseISt19_Bit_const_iteratorET_S1_ = comdat any $_ZSt12__niter_baseISt13_Bit_iteratorET_S1_ = comdat any $_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt19_Bit_const_iteratorSt13_Bit_iteratorEET0_T_S6_S5_ = comdat any $_ZNKSt13_Bit_iteratordeEv = comdat any $_ZNSt14_Bit_referenceaSEb = comdat any $_ZNSt19_Bit_const_iteratorppEv = comdat any $_ZNSt13_Bit_iteratorppEv = comdat any $_ZNSt18_Bit_iterator_base10_M_bump_upEv = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaImEE17_S_select_on_copyERKS1_ = comdat any $_ZNKSt13_Bvector_baseISaIbEE20_M_get_Bit_allocatorEv = comdat any $_ZNSaIbEC2ImEERKSaIT_E = comdat any $_ZNSt13_Bvector_baseISaIbEEC2ERKS0_ = comdat any $_ZNSaIbED2Ev = comdat any $_ZNSt13_Bvector_baseISaIbEED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorIbEC2Ev = comdat any $_ZNSaImEC2IbEERKSaIT_E = comdat any $_ZNSt13_Bvector_baseISaIbEE13_Bvector_implC2ERKSaImE = comdat any $_ZNSaImED2Ev = comdat any $_ZNSaImEC2ERKS_ = comdat any $_ZN9__gnu_cxx13new_allocatorImEC2ERKS1_ = comdat any $_ZN9__gnu_cxx13new_allocatorIbED2Ev = comdat any $_ZNSt13_Bvector_baseISaIbEE13_Bvector_implD2Ev = comdat any $_ZNSt13_Bit_iteratorppEi = comdat any $_ZNSt6vectorIbSaIbEE13_M_insert_auxESt13_Bit_iteratorb = comdat any $_ZNSt6vectorIbSaIbEE3endEv = comdat any $_ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_ = comdat any $_ZNKSt6vectorIbSaIbEE12_M_check_lenEmPKc = comdat any $_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_ = comdat any $_ZSt23__copy_move_backward_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ = comdat any $_ZSt12__miter_baseISt13_Bit_iteratorET_S1_ = comdat any $_ZSt22__copy_move_backward_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ = comdat any $_ZNSt20__copy_move_backwardILb0ELb0ESt26random_access_iterator_tagE13__copy_move_bISt13_Bit_iteratorS3_EET0_T_S5_S4_ = comdat any $_ZNSt13_Bit_iteratormmEv = comdat any $_ZNSt14_Bit_referenceaSERKS_ = comdat any $_ZNSt18_Bit_iterator_base12_M_bump_downEv = comdat any $_ZNKSt6vectorIbSaIbEE8max_sizeEv = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaImEE8max_sizeERKS1_ = comdat any $_ZSt14__copy_move_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ = comdat any $_ZSt13__copy_move_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_ = comdat any $_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt13_Bit_iteratorS3_EET0_T_S5_S4_ = comdat any $_ZTS5INode = comdat any $_ZTI5INode = comdat any $_ZTS8LeafNode = comdat any $_ZTI8LeafNode = comdat any $_ZTS12InternalNode = comdat any $_ZTI12InternalNode = comdat any $_ZTV8LeafNode = comdat any $_ZTV5INode = comdat any $_ZTV12InternalNode = comdat any @.str = private unnamed_addr constant [19 x i8] c"CUDA initialized.\0A\00", align 1 @_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 @__dso_handle = external hidden global i8 @.str.1 = private unnamed_addr constant [3 x i8] c"rb\00", align 1 @.str.2 = private unnamed_addr constant [23 x i8] c"Cannot read input file\00", align 1 @stderr = external dso_local global %struct._IO_FILE*, align 8 @.str.3 = private unnamed_addr constant [10 x i8] c"./hist.cu\00", align 1 @_ZTVN10__cxxabiv117__class_type_infoE = external dso_local global i8* @_ZTS5INode = linkonce_odr dso_local constant [7 x i8] c"5INode\00", comdat, align 1 @_ZTI5INode = linkonce_odr dso_local constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @_ZTS5INode, i32 0, i32 0) }, comdat, align 8 @_ZTVN10__cxxabiv120__si_class_type_infoE = external dso_local global i8* @_ZTS8LeafNode = linkonce_odr dso_local constant [10 x i8] c"8LeafNode\00", comdat, align 1 @_ZTI8LeafNode = linkonce_odr dso_local constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @_ZTS8LeafNode, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTI5INode to i8*) }, comdat, align 8 @_ZTS12InternalNode = linkonce_odr dso_local constant [15 x i8] c"12InternalNode\00", comdat, align 1 @_ZTI12InternalNode = linkonce_odr dso_local constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @_ZTS12InternalNode, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTI5INode to i8*) }, comdat, align 8 @.str.4 = private unnamed_addr constant [27 x i8] c"CUDA! Starting VLC Tests!\0A\00", align 1 @.str.5 = private unnamed_addr constant [98 x i8] c"Parameters: num_elements: %d, num_blocks: %d, num_block_threads: %d\0A----------------------------\0A\00", align 1 @.str.6 = private unnamed_addr constant [42 x i8] c"Cuda error in file '%s' in line %i : %s.\0A\00", align 1 @.str.7 = private unnamed_addr constant [16 x i8] c"main_test_cu.cu\00", align 1 @.str.8 = private unnamed_addr constant [34 x i8] c"CPU Encoding time (CPU): %f (ms)\0A\00", align 1 @.str.9 = private unnamed_addr constant [23 x i8] c"CPU Encoded to %d [B]\0A\00", align 1 @.str.10 = private unnamed_addr constant [40 x i8] c"Num_blocks to be passed to scan is %d.\0A\00", align 1 @.str.11 = private unnamed_addr constant [46 x i8] c"Cuda error: %s in file '%s' in line %i : %s.\0A\00", align 1 @.str.12 = private unnamed_addr constant [31 x i8] c"Pack2 Kernel execution failed\0A\00", align 1 @.str.13 = private unnamed_addr constant [21 x i8] c"GPUassert: %s %s %d\0A\00", align 1 @_ZTV8LeafNode = linkonce_odr dso_local unnamed_addr constant { [4 x i8*] } { [4 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTI8LeafNode to i8*), i8* bitcast (void (%class.LeafNode*)* @_ZN8LeafNodeD2Ev to i8*), i8* bitcast (void (%class.LeafNode*)* @_ZN8LeafNodeD0Ev to i8*)] }, comdat, align 8 @_ZTV5INode = linkonce_odr dso_local unnamed_addr constant { [4 x i8*] } { [4 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTI5INode to i8*), i8* bitcast (void (%class.INode*)* @_ZN5INodeD2Ev to i8*), i8* bitcast (void (%class.INode*)* @_ZN5INodeD0Ev to i8*)] }, comdat, align 8 @_ZTV12InternalNode = linkonce_odr dso_local unnamed_addr constant { [4 x i8*] } { [4 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12InternalNode to i8*), i8* bitcast (void (%class.InternalNode*)* @_ZN12InternalNodeD2Ev to i8*), i8* bitcast (void (%class.InternalNode*)* @_ZN12InternalNodeD0Ev to i8*)] }, comdat, align 8 @.str.14 = private unnamed_addr constant [15 x i8] c"No input file\0A\00", align 1 @.str.15 = private unnamed_addr constant [28 x i8] c"\0A%s, %u bytes, entropy %f\0A\0A\00", align 1 @_ZL18g_numEltsAllocated = internal global i32 0, align 4 @.str.16 = private unnamed_addr constant [24 x i8] c"g_numEltsAllocated == 0\00", align 1 @.str.17 = private unnamed_addr constant [10 x i8] c"./scan.cu\00", align 1 @__PRETTY_FUNCTION__._ZL17preallocBlockSumsj = private unnamed_addr constant [37 x i8] c"void preallocBlockSums(unsigned int)\00", align 1 @_ZL15g_scanBlockSums = internal global i32** null, align 8 @_ZL20g_numLevelsAllocated = internal global i32 0, align 4 @.str.18 = private unnamed_addr constant [18 x i8] c"preallocBlockSums\00", align 1 @.str.19 = private unnamed_addr constant [37 x i8] c"prescanArrayRecursive before kernels\00", align 1 @.str.20 = private unnamed_addr constant [21 x i8] c"prescanWithBlockSums\00", align 1 @.str.21 = private unnamed_addr constant [24 x i8] c"prescanNP2WithBlockSums\00", align 1 @.str.22 = private unnamed_addr constant [11 x i8] c"uniformAdd\00", align 1 @.str.23 = private unnamed_addr constant [8 x i8] c"prescan\00", align 1 @.str.24 = private unnamed_addr constant [11 x i8] c"prescanNP2\00", align 1 @.str.25 = private unnamed_addr constant [17 x i8] c"deallocBlockSums\00", align 1 @.str.26 = private unnamed_addr constant [26 x i8] c"vector::_M_realloc_insert\00", align 1 @.str.27 = private unnamed_addr constant [28 x i8] c"vector::_M_insert_aux\00", align 1 @.str.28 = private unnamed_addr constant [21 x i8] c"Comparing vectors: \0A\00", align 1 @.str.29 = private unnamed_addr constant [36 x i8] c"Diff: data1[%d]=%d, data1[%d]=%d.\0A\00", align 1 @.str.30 = private unnamed_addr constant [29 x i8] c"PASS! vectors are matching!\0A\00", align 1 @.str.31 = private unnamed_addr constant [33 x i8] c"FAIL! vectors are NOT matching!\0A\00", align 1 @0 = private unnamed_addr constant [22 x i8] c"_Z12histo_kernelPhlPj\00", align 1 @1 = private unnamed_addr constant [50 x i8] c"_ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_\00", align 1 @2 = private unnamed_addr constant [34 x i8] c"_ZL7prescanILb1ELb0EEvPjPKjS0_iii\00", align 1 @3 = private unnamed_addr constant [34 x i8] c"_ZL7prescanILb1ELb1EEvPjPKjS0_iii\00", align 1 @4 = private unnamed_addr constant [23 x i8] c"_ZL10uniformAddPjS_iii\00", align 1 @5 = private unnamed_addr constant [34 x i8] c"_ZL7prescanILb0ELb0EEvPjPKjS0_iii\00", align 1 @6 = private unnamed_addr constant [34 x i8] c"_ZL7prescanILb0ELb1EEvPjPKjS0_iii\00", align 1 @7 = private unnamed_addr constant [19 x i8] c"_ZL5pack2PjS_S_S_j\00", align 1 @8 = private constant [176489 x i8] c"P\EDU\BA\01\00\10\00X\B1\02\00\00\00\00\00\02\00\01\01@\00\00\00h\82\02\00\00\00\00\00\00\00\00\00\00\00\00\00\07\00\01\00=\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7FELF\02\01\013\07\00\00\00\00\00\00\00\02\00\BE\00e\00\00\00\00\00\00\00\00\00\00\00\C0\81\02\00\00\00\00\00\80x\02\00\00\00\00\00=\05=\00@\008\00\03\00@\00%\00\01\00\00.shstrtab\00.strtab\00.symtab\00.symtab_shndx\00.nv.info\00.text._ZL7prescanILb0ELb1EEvPjPKjS0_iii\00.nv.info._ZL7prescanILb0ELb1EEvPjPKjS0_iii\00.nv.shared._ZL7prescanILb0ELb1EEvPjPKjS0_iii\00.nv.global\00.nv.constant0._ZL7prescanILb0ELb1EEvPjPKjS0_iii\00.text._ZL7prescanILb0ELb0EEvPjPKjS0_iii\00.nv.info._ZL7prescanILb0ELb0EEvPjPKjS0_iii\00.nv.shared._ZL7prescanILb0ELb0EEvPjPKjS0_iii\00.nv.constant0._ZL7prescanILb0ELb0EEvPjPKjS0_iii\00.text._ZL7prescanILb1ELb1EEvPjPKjS0_iii\00.nv.info._ZL7prescanILb1ELb1EEvPjPKjS0_iii\00.nv.shared._ZL7prescanILb1ELb1EEvPjPKjS0_iii\00.nv.constant0._ZL7prescanILb1ELb1EEvPjPKjS0_iii\00.text._ZL7prescanILb1ELb0EEvPjPKjS0_iii\00.nv.info._ZL7prescanILb1ELb0EEvPjPKjS0_iii\00.nv.shared._ZL7prescanILb1ELb0EEvPjPKjS0_iii\00.nv.constant0._ZL7prescanILb1ELb0EEvPjPKjS0_iii\00.text._ZL10uniformAddPjS_iii\00.nv.info._ZL10uniformAddPjS_iii\00.nv.shared._ZL10uniformAddPjS_iii\00.nv.constant0._ZL10uniformAddPjS_iii\00.text._ZL5pack2PjS_S_S_j\00.nv.info._ZL5pack2PjS_S_S_j\00.nv.shared._ZL5pack2PjS_S_S_j\00.nv.constant0._ZL5pack2PjS_S_S_j\00.text._ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_\00.nv.info._ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_\00.nv.shared._ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_\00.nv.constant0._ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_\00.text._Z12histo_kernelPhlPj\00.nv.info._Z12histo_kernelPhlPj\00.nv.shared._Z12histo_kernelPhlPj\00.nv.constant0._Z12histo_kernelPhlPj\00\00.shstrtab\00.strtab\00.symtab\00.symtab_shndx\00.nv.info\00_ZL7prescanILb0ELb1EEvPjPKjS0_iii\00.text._ZL7prescanILb0ELb1EEvPjPKjS0_iii\00.nv.info._ZL7prescanILb0ELb1EEvPjPKjS0_iii\00.nv.shared._ZL7prescanILb0ELb1EEvPjPKjS0_iii\00.nv.global\00threadIdx\00blockIdx\00blockDim\00gridDim\00$_ZL7prescanILb0ELb1EEvPjPKjS0_iii$_ZL12prescanBlockILb0EEvPjiS0_\00$_ZL7prescanILb0ELb1EEvPjPKjS0_iii$_ZL16clearLastElementILb0EEvPjS0_i\00$_ZL7prescanILb0ELb1EEvPjPKjS0_iii$_ZL16scanRootToLeavesPjj\00$_ZL7prescanILb0ELb1EEvPjPKjS0_iii$_ZL21storeSharedChunkToMemILb1EEvPjPKjiiiiiii\00$_ZL7prescanILb0ELb1EEvPjPKjS0_iii$_ZL22loadSharedChunkFromMemILb1EEvPjPKjiiRiS3_S3_S3_S3_S3_\00$_ZL7prescanILb0ELb1EEvPjPKjS0_iii$_ZL8buildSumPj\00$___ZZL7prescanILb0ELb1EEvPjPKjS0_iiiE6s_data__2725\00.nv.constant0._ZL7prescanILb0ELb1EEvPjPKjS0_iii\00_param\00_ZL7prescanILb0ELb0EEvPjPKjS0_iii\00.text._ZL7prescanILb0ELb0EEvPjPKjS0_iii\00.nv.info._ZL7prescanILb0ELb0EEvPjPKjS0_iii\00.nv.shared._ZL7prescanILb0ELb0EEvPjPKjS0_iii\00$_ZL7prescanILb0ELb0EEvPjPKjS0_iii$_ZL12prescanBlockILb0EEvPjiS0_\00$_ZL7prescanILb0ELb0EEvPjPKjS0_iii$_ZL16clearLastElementILb0EEvPjS0_i\00$_ZL7prescanILb0ELb0EEvPjPKjS0_iii$_ZL16scanRootToLeavesPjj\00$_ZL7prescanILb0ELb0EEvPjPKjS0_iii$_ZL21storeSharedChunkToMemILb0EEvPjPKjiiiiiii\00$_ZL7prescanILb0ELb0EEvPjPKjS0_iii$_ZL22loadSharedChunkFromMemILb0EEvPjPKjiiRiS3_S3_S3_S3_S3_\00$_ZL7prescanILb0ELb0EEvPjPKjS0_iii$_ZL8buildSumPj\00$___ZZL7prescanILb0ELb0EEvPjPKjS0_iiiE6s_data__2426\00.nv.constant0._ZL7prescanILb0ELb0EEvPjPKjS0_iii\00_ZL7prescanILb1ELb1EEvPjPKjS0_iii\00.text._ZL7prescanILb1ELb1EEvPjPKjS0_iii\00.nv.info._ZL7prescanILb1ELb1EEvPjPKjS0_iii\00.nv.shared._ZL7prescanILb1ELb1EEvPjPKjS0_iii\00$_ZL7prescanILb1ELb1EEvPjPKjS0_iii$_ZL12prescanBlockILb1EEvPjiS0_\00$_ZL7prescanILb1ELb1EEvPjPKjS0_iii$_ZL16clearLastElementILb1EEvPjS0_i\00$_ZL7prescanILb1ELb1EEvPjPKjS0_iii$_ZL16scanRootToLeavesPjj\00$_ZL7prescanILb1ELb1EEvPjPKjS0_iii$_ZL21storeSharedChunkToMemILb1EEvPjPKjiiiiiii\00$_ZL7prescanILb1ELb1EEvPjPKjS0_iii$_ZL22loadSharedChunkFromMemILb1EEvPjPKjiiRiS3_S3_S3_S3_S3_\00$_ZL7prescanILb1ELb1EEvPjPKjS0_iii$_ZL8buildSumPj\00$___ZZL7prescanILb1ELb1EEvPjPKjS0_iiiE6s_data__2059\00.nv.constant0._ZL7prescanILb1ELb1EEvPjPKjS0_iii\00_ZL7prescanILb1ELb0EEvPjPKjS0_iii\00.text._ZL7prescanILb1ELb0EEvPjPKjS0_iii\00.nv.info._ZL7prescanILb1ELb0EEvPjPKjS0_iii\00.nv.shared._ZL7prescanILb1ELb0EEvPjPKjS0_iii\00$_ZL7prescanILb1ELb0EEvPjPKjS0_iii$_ZL12prescanBlockILb1EEvPjiS0_\00$_ZL7prescanILb1ELb0EEvPjPKjS0_iii$_ZL16clearLastElementILb1EEvPjS0_i\00$_ZL7prescanILb1ELb0EEvPjPKjS0_iii$_ZL16scanRootToLeavesPjj\00$_ZL7prescanILb1ELb0EEvPjPKjS0_iii$_ZL21storeSharedChunkToMemILb0EEvPjPKjiiiiiii\00$_ZL7prescanILb1ELb0EEvPjPKjS0_iii$_ZL22loadSharedChunkFromMemILb0EEvPjPKjiiRiS3_S3_S3_S3_S3_\00$_ZL7prescanILb1ELb0EEvPjPKjS0_iii$_ZL8buildSumPj\00$___ZZL7prescanILb1ELb0EEvPjPKjS0_iiiE6s_data__1377\00.nv.constant0._ZL7prescanILb1ELb0EEvPjPKjS0_iii\00_ZL10uniformAddPjS_iii\00.text._ZL10uniformAddPjS_iii\00.nv.info._ZL10uniformAddPjS_iii\00.nv.shared._ZL10uniformAddPjS_iii\00$___ZZL10uniformAddPjS_iiiE3uni__1283\00.nv.constant0._ZL10uniformAddPjS_iii\00_ZL5pack2PjS_S_S_j\00.text._ZL5pack2PjS_S_S_j\00.nv.info._ZL5pack2PjS_S_S_j\00.nv.shared._ZL5pack2PjS_S_S_j\00$_ZL5pack2PjS_S_S_j$_ZL8atomicOrPjj\00.nv.constant0._ZL5pack2PjS_S_S_j\00_ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_\00.text._ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_\00.nv.info._ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_\00.nv.shared._ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_\00$_ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_$_ZL8atomicOrPjj\00$___ZZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_E2sm__437\00$___ZZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_E5kcmax__439\00.nv.constant0._ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_\00_Z12histo_kernelPhlPj\00.text._Z12histo_kernelPhlPj\00.nv.info._Z12histo_kernelPhlPj\00.nv.shared._Z12histo_kernelPhlPj\00$_Z12histo_kernelPhlPj$_ZL9atomicAddPjj\00$___ZZ12histo_kernelPhlPjE4temp__294\00.nv.constant0._Z12histo_kernelPhlPj\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00T\00\00\00\03\00\15\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\A7\00\00\00\03\00\1D\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\D4\00\00\00\03\00\1E\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\DF\00\00\00\01\00\1E\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\E9\00\00\00\01\00\1E\00\03\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\F2\00\00\00\01\00\1E\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\FB\00\00\00\01\00\1E\00\02\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\03\01\00\00\02\00\15\00\80\0F\00\00\00\00\00\00\A0\06\00\00\00\00\00\00E\01\00\00\02\00\15\00 \16\00\00\00\00\00\00\10\05\00\00\00\00\00\00\8B\01\00\00\02\00\15\000\1B\00\00\00\00\00\00\A0\14\00\00\00\00\00\00\C7\01\00\00\02\00\15\00\D0/\00\00\00\00\00\00p\0C\00\00\00\00\00\00\18\02\00\00\02\00\15\00@<\00\00\00\00\00\00\F0\18\00\00\00\00\00\00v\02\00\00\02\00\15\000U\00\00\00\00\00\00\90\11\00\00\00\00\00\00\DC\02\00\00\03\00\0D\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\005\03\00\00\03\00\16\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\88\03\00\00\03\00\1F\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\B5\03\00\00\02\00\16\00\80\0F\00\00\00\00\00\00\A0\06\00\00\00\00\00\00\F7\03\00\00\02\00\16\00 \16\00\00\00\00\00\00\10\05\00\00\00\00\00\00=\04\00\00\02\00\16\000\1B\00\00\00\00\00\00\A0\14\00\00\00\00\00\00y\04\00\00\02\00\16\00\D0/\00\00\00\00\00\00\88\0B\00\00\00\00\00\00\CA\04\00\00\02\00\16\00X;\00\00\00\00\00\00(\17\00\00\00\00\00\00(\05\00\00\02\00\16\00\80R\00\00\00\00\00\00\80\11\00\00\00\00\00\00\8E\05\00\00\03\00\0E\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\E0\05\00\00\03\00\17\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\003\06\00\00\03\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`\06\00\00\02\00\17\00\80\0F\00\00\00\00\00\00\A0\06\00\00\00\00\00\00\A2\06\00\00\02\00\17\00 \16\00\00\00\00\00\00\F8\07\00\00\00\00\00\00\E8\06\00\00\02\00\17\00\18\1E\00\00\00\00\00\00\A0\14\00\00\00\00\00\00$\07\00\00\02\00\17\00\B82\00\00\00\00\00\00x\0C\00\00\00\00\00\00u\07\00\00\02\00\17\000?\00\00\00\00\00\00\E8\18\00\00\00\00\00\00\D3\07\00\00\02\00\17\00\18X\00\00\00\00\00\00h\11\00\00\00\00\00\009\08\00\00\03\00\0F\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\8B\08\00\00\03\00\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\DE\08\00\00\03\00!\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0B\09\00\00\02\00\18\00\80\0F\00\00\00\00\00\00\A0\06\00\00\00\00\00\00M\09\00\00\02\00\18\00 \16\00\00\00\00\00\00\F8\07\00\00\00\00\00\00\93\09\00\00\02\00\18\00\18\1E\00\00\00\00\00\00\A0\14\00\00\00\00\00\00\CF\09\00\00\02\00\18\00\B82\00\00\00\00\00\00\88\0B\00\00\00\00\00\00 \0A\00\00\02\00\18\00@>\00\00\00\00\00\000\17\00\00\00\00\00\00~\0A\00\00\02\00\18\00pU\00\00\00\00\00\00\90\11\00\00\00\00\00\00\E4\0A\00\00\03\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00+\0B\00\00\03\00\19\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00h\0B\00\00\03\00\22\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\B0\0B\00\00\03\00\11\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\E8\0B\00\00\03\00\1A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00;\0C\00\00\02\00\1A\00\98)\00\00\00\00\00\00h\04\00\00\00\00\00\00_\0C\00\00\03\00\12\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\B2\0C\00\00\03\00\1B\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00%\0D\00\00\03\00#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00b\0D\00\00\02\00\1B\00\B0Z\00\00\00\00\00\00\90\04\00\00\00\00\00\00&\0E\00\00\03\00\13\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00|\0E\00\00\03\00\1C\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\B7\0E\00\00\03\00$\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\D8\0E\00\00\02\00\1C\00`\0C\00\00\00\00\00\00\A0\04\00\00\00\00\00\00%\0F\00\00\03\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\002\00\00\00\12\10\15\00\00\00\00\00\00\00\00\00\C0f\00\00\00\00\00\00\13\03\00\00\12\10\16\00\00\00\00\00\00\00\00\00\00d\00\00\00\00\00\00\BE\05\00\00\12\10\17\00\00\00\00\00\00\00\00\00\80i\00\00\00\00\00\00i\08\00\00\12\10\18\00\00\00\00\00\00\00\00\00\00g\00\00\00\00\00\00\14\0B\00\00\12\10\19\00\00\00\00\00\00\00\00\00\00\0F\00\00\00\00\00\00\D5\0B\00\00\12\10\1A\00\00\00\00\00\00\00\00\00\00.\00\00\00\00\00\00\80\0C\00\00\12\10\1B\00\00\00\00\00\00\00\00\00@_\00\00\00\00\00\00f\0E\00\00\12\10\1C\00\00\00\00\00\00\00\00\00\00\11\00\00\00\00\00\00\04/\08\00?\00\00\00\0C\00\00\00\04#\08\006\00\00\00\00\00\00\00\04\12\08\006\00\00\00\00\00\00\00\04\11\08\006\00\00\00\00\00\00\00\04#\08\00?\00\00\00\00\00\00\00\04\12\08\00?\00\00\00@\00\00\00\04\11\08\00?\00\00\00@\00\00\00\04/\08\00>\00\00\00\18\00\00\00\04#\08\002\00\00\00\00\00\00\00\04\12\08\002\00\00\00\00\00\00\00\04\11\08\002\00\00\00\00\00\00\00\04#\08\00>\00\00\00\00\00\00\00\04\12\08\00>\00\00\00\C8\00\00\00\04\11\08\00>\00\00\00\C8\00\00\00\04/\08\00=\00\00\00\0F\00\00\00\04#\08\00.\00\00\00\00\00\00\00\04\12\08\00.\00\00\00\00\00\00\00\04\11\08\00.\00\00\00\00\00\00\00\04#\08\00=\00\00\00\00\00\00\00\04\12\08\00=\00\00\00h\00\00\00\04\11\08\00=\00\00\00h\00\00\00\04/\08\00<\00\00\00\0E\00\00\00\04#\08\00<\00\00\00\00\00\00\00\04\12\08\00<\00\00\00(\00\00\00\04\11\08\00<\00\00\00(\00\00\00\04/\08\00;\00\00\00\1C\00\00\00\04#\08\00(\00\00\00\00\00\00\00\04\12\08\00(\00\00\00\00\00\00\00\04\11\08\00(\00\00\00\00\00\00\00\04#\08\00'\00\00\00\00\00\00\00\04\12\08\00'\00\00\00\00\00\00\00\04\11\08\00'\00\00\00\00\00\00\00\04#\08\00&\00\00\00\00\00\00\00\04\12\08\00&\00\00\00\00\00\00\00\04\11\08\00&\00\00\00\00\00\00\00\04#\08\00%\00\00\00\00\00\00\00\04\12\08\00%\00\00\00\00\00\00\00\04\11\08\00%\00\00\00\00\00\00\00\04#\08\00$\00\00\00\00\00\00\00\04\12\08\00$\00\00\00\00\00\00\00\04\11\08\00$\00\00\00\00\00\00\00\04#\08\00#\00\00\00\00\00\00\00\04\12\08\00#\00\00\00\00\00\00\00\04\11\08\00#\00\00\00\00\00\00\00\04#\08\00;\00\00\00\00\00\00\00\04\12\08\00;\00\00\00\A0\00\00\00\04\11\08\00;\00\00\00\A0\00\00\00\04/\08\00:\00\00\00\1C\00\00\00\04#\08\00\1F\00\00\00\00\00\00\00\04\12\08\00\1F\00\00\00\00\00\00\00\04\11\08\00\1F\00\00\00\00\00\00\00\04#\08\00\1E\00\00\00\00\00\00\00\04\12\08\00\1E\00\00\00\00\00\00\00\04\11\08\00\1E\00\00\00\00\00\00\00\04#\08\00\1D\00\00\00\00\00\00\00\04\12\08\00\1D\00\00\00\00\00\00\00\04\11\08\00\1D\00\00\00\00\00\00\00\04#\08\00\1C\00\00\00\00\00\00\00\04\12\08\00\1C\00\00\00\00\00\00\00\04\11\08\00\1C\00\00\00\00\00\00\00\04#\08\00\1B\00\00\00\00\00\00\00\04\12\08\00\1B\00\00\00\00\00\00\00\04\11\08\00\1B\00\00\00\00\00\00\00\04#\08\00\1A\00\00\00\00\00\00\00\04\12\08\00\1A\00\00\00\00\00\00\00\04\11\08\00\1A\00\00\00\00\00\00\00\04#\08\00:\00\00\00\00\00\00\00\04\12\08\00:\00\00\00\A0\00\00\00\04\11\08\00:\00\00\00\A0\00\00\00\04/\08\009\00\00\00\1C\00\00\00\04#\08\00\16\00\00\00\00\00\00\00\04\12\08\00\16\00\00\00\00\00\00\00\04\11\08\00\16\00\00\00\00\00\00\00\04#\08\00\15\00\00\00\00\00\00\00\04\12\08\00\15\00\00\00\00\00\00\00\04\11\08\00\15\00\00\00\00\00\00\00\04#\08\00\14\00\00\00\00\00\00\00\04\12\08\00\14\00\00\00\00\00\00\00\04\11\08\00\14\00\00\00\00\00\00\00\04#\08\00\13\00\00\00\00\00\00\00\04\12\08\00\13\00\00\00\00\00\00\00\04\11\08\00\13\00\00\00\00\00\00\00\04#\08\00\12\00\00\00\00\00\00\00\04\12\08\00\12\00\00\00\00\00\00\00\04\11\08\00\12\00\00\00\00\00\00\00\04#\08\00\11\00\00\00\00\00\00\00\04\12\08\00\11\00\00\00\00\00\00\00\04\11\08\00\11\00\00\00\00\00\00\00\04#\08\009\00\00\00\00\00\00\00\04\12\08\009\00\00\00\A0\00\00\00\04\11\08\009\00\00\00\A0\00\00\00\04/\08\008\00\00\00\1C\00\00\00\04#\08\00\0D\00\00\00\00\00\00\00\04\12\08\00\0D\00\00\00\00\00\00\00\04\11\08\00\0D\00\00\00\00\00\00\00\04#\08\00\0C\00\00\00\00\00\00\00\04\12\08\00\0C\00\00\00\00\00\00\00\04\11\08\00\0C\00\00\00\00\00\00\00\04#\08\00\0B\00\00\00\00\00\00\00\04\12\08\00\0B\00\00\00\00\00\00\00\04\11\08\00\0B\00\00\00\00\00\00\00\04#\08\00\0A\00\00\00\00\00\00\00\04\12\08\00\0A\00\00\00\00\00\00\00\04\11\08\00\0A\00\00\00\00\00\00\00\04#\08\00\09\00\00\00\00\00\00\00\04\12\08\00\09\00\00\00\00\00\00\00\04\11\08\00\09\00\00\00\00\00\00\00\04#\08\00\08\00\00\00\00\00\00\00\04\12\08\00\08\00\00\00\00\00\00\00\04\11\08\00\08\00\00\00\00\00\00\00\04#\08\008\00\00\00\00\00\00\00\04\12\08\008\00\00\00\A0\00\00\00\04\11\08\008\00\00\00\A0\00\00\00\010\00\00\01*\00\00\04\0A\08\00\0E\00\00\00@\01$\00\03\19$\00\04\17\0C\00\00\00\00\00\05\00 \00\00\F0\11\00\04\17\0C\00\00\00\00\00\04\00\1C\00\00\F0\11\00\04\17\0C\00\00\00\00\00\03\00\18\00\00\F0\11\00\04\17\0C\00\00\00\00\00\02\00\10\00\00\F0!\00\04\17\0C\00\00\00\00\00\01\00\08\00\00\F0!\00\04\17\0C\00\00\00\00\00\00\00\00\00\00\F0!\00\03\1B\FF\00\04\1D\08\00x\06\00\00\10\14\00\00\04\1C\04\00x\0F\00\00\04\1E\04\00`\00\00\00\010\00\00\01*\00\00\04\0A\08\00\17\00\00\00@\01$\00\03\19$\00\04\17\0C\00\00\00\00\00\05\00 \00\00\F0\11\00\04\17\0C\00\00\00\00\00\04\00\1C\00\00\F0\11\00\04\17\0C\00\00\00\00\00\03\00\18\00\00\F0\11\00\04\17\0C\00\00\00\00\00\02\00\10\00\00\F0!\00\04\17\0C\00\00\00\00\00\01\00\08\00\00\F0!\00\04\17\0C\00\00\00\00\00\00\00\00\00\00\F0!\00\03\1B\FF\00\04\1D\08\00x\06\00\00\10\14\00\00\04\1C\04\00x\0F\00\00\04\1E\04\00`\00\00\00\010\00\00\01*\00\00\04\0A\08\00 \00\00\00@\01$\00\03\19$\00\04\17\0C\00\00\00\00\00\05\00 \00\00\F0\11\00\04\17\0C\00\00\00\00\00\04\00\1C\00\00\F0\11\00\04\17\0C\00\00\00\00\00\03\00\18\00\00\F0\11\00\04\17\0C\00\00\00\00\00\02\00\10\00\00\F0!\00\04\17\0C\00\00\00\00\00\01\00\08\00\00\F0!\00\04\17\0C\00\00\00\00\00\00\00\00\00\00\F0!\00\03\1B\FF\00\04\1D\08\00x\06\00\00\10\14\00\00\04\1C\04\00x\0F\00\00\04\1E\04\00`\00\00\00\010\00\00\01*\00\00\04\0A\08\00)\00\00\00@\01$\00\03\19$\00\04\17\0C\00\00\00\00\00\05\00 \00\00\F0\11\00\04\17\0C\00\00\00\00\00\04\00\1C\00\00\F0\11\00\04\17\0C\00\00\00\00\00\03\00\18\00\00\F0\11\00\04\17\0C\00\00\00\00\00\02\00\10\00\00\F0!\00\04\17\0C\00\00\00\00\00\01\00\08\00\00\F0!\00\04\17\0C\00\00\00\00\00\00\00\00\00\00\F0!\00\03\1B\FF\00\04\1D\08\00x\06\00\00\10\14\00\00\04\1C\04\00x\0F\00\00\04\1E\04\00`\00\00\00\010\00\00\01*\00\00\04\0A\08\00,\00\00\00@\01\1C\00\03\19\1C\00\04\17\0C\00\00\00\00\00\04\00\18\00\00\F0\11\00\04\17\0C\00\00\00\00\00\03\00\14\00\00\F0\11\00\04\17\0C\00\00\00\00\00\02\00\10\00\00\F0\11\00\04\17\0C\00\00\00\00\00\01\00\08\00\00\F0!\00\04\17\0C\00\00\00\00\00\00\00\00\00\00\F0!\00\03\1B\FF\00\04\1D\08\00\D0\04\00\00\B8\06\00\00\04\1C\04\00\B8\0E\00\00\04\1E\04\00 \00\00\00\010\00\00\01*\00\00\04\0A\08\00/\00\00\00@\01$\00\03\19$\00\04\17\0C\00\00\00\00\00\04\00 \00\00\F0\11\00\04\17\0C\00\00\00\00\00\03\00\18\00\00\F0!\00\04\17\0C\00\00\00\00\00\02\00\10\00\00\F0!\00\04\17\0C\00\00\00\00\00\01\00\08\00\00\F0!\00\04\17\0C\00\00\00\00\00\00\00\00\00\00\F0!\00\03\1B\FF\00\04\1D\04\00\D0\04\00\00\04\1C\04\00\90)\00\00\04\1E\04\00P\00\00\00\010\00\00\01*\00\00\04\0A\08\003\00\00\00@\01@\00\03\19@\00\04\17\0C\00\00\00\00\00\07\008\00\00\F0!\00\04\17\0C\00\00\00\00\00\06\000\00\00\F0!\00\04\17\0C\00\00\00\00\00\05\00(\00\00\F0!\00\04\17\0C\00\00\00\00\00\04\00 \00\00\F0!\00\04\17\0C\00\00\00\00\00\03\00\18\00\00\F0!\00\04\17\0C\00\00\00\00\00\02\00\10\00\00\F0!\00\04\17\0C\00\00\00\00\00\01\00\08\00\00\F0!\00\04\17\0C\00\00\00\00\00\00\00\00\00\00\F0!\00\03\1B\FF\00\04\1D\08\00\D0\07\00\00X9\00\00\04\1C\04\00\A8Z\00\00\04\1E\04\00P\00\00\00\010\00\00\01*\00\00\04\0A\08\007\00\00\00@\01\18\00\03\19\18\00\04\17\0C\00\00\00\00\00\02\00\10\00\00\F0!\00\04\17\0C\00\00\00\00\00\01\00\08\00\00\F0!\00\04\17\0C\00\00\00\00\00\00\00\00\00\00\F0!\00\03\1B\FF\00\04\1D\04\00\98\04\00\00\04\1C\04\00X\0C\00\00\04\1E\04\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\EF\1F\E0\FD\03\00\00\18 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\E5\04\00\00\01\00\00\00\06\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\80g\02\00\00\00\00\00\00\11\00\00\00\00\00\00\03\00\00\00?\00\00\0C \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\85\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80x\02\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\15\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\B2\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80x\02\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00@\01\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80x\02\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\16\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\F0\01\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80x\02\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\17\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\A0\02\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80x\02\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\18\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00:\03\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80x\02\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00h\04\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80x\02\00\00\00\00\00\040\00\00\00\00\00\00\00\00\00\00\1B\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \05\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80x\02\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\1C\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\05\00\00\00\C0\81\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\A8\00\00\00\00\00\00\00\A8\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\01\00\00\00\05\00\00\00\C4$\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\A8S\02\00\00\00\00\00\A8S\02\00\00\00\00\00\08\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\80x\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\040\00\00\00\00\00\00\08\00\00\00\00\00\00\00\01\00\01\01H\00\00\00h.\00\00\00\00\00\00d.\00\00@\00\00\00\04\00\06\00=\00\00\00\00\00\00\00\00\00\00\00\11 \00\00\00\00\00\00\00\00\00\00\00\00\00\00&\18\01\00\00\00\00\00\00\00\00\00\00\00\00\00\F0 \0A\0A\0A\0A.version 6.4\0A.target sm_61\0A.address_size 64.\00\F0\03func (.param .b32 \12\00\F5\0E_retval0) _ZL9atomicAddPjj\0A(\0A-\00-64\1F\00\11_\1C\00H_0,\0AS\00\0F&\00\04_1\0A)\0A;\83\00\12\128>\00/Or\82\00\02\08\1E\00\0F\81\00\06\0E%\00\09\80\00\F8\1F_ZL22loadSharedChunkFromMemILb0EEvPjPKjiiRiS3_\03\00\0E\90\00\0FI\00$\0E\BB\00\0FP\002\1D1\0B\01\0FP\00+\1F2P\00<\1F3\F0\00<\1F4P\00<\1F5P\00<\1F6P\00<\1F7P\00<\1F8P\00<\1A9f\03\F1\0312prescanBlockILb1C\00>iS0J\03\0F-\00\09\0F\E9\03\02\0F4\00\13/1,h\00\1F\1B2,\04g1store\14\01-To\12\01\01\01\00\0E\1F\04\0F<\00\17\0E\12\04\0FC\00%\0E\05\04\0FC\00\1E\1F2C\00/\1F3C\00/\1F4C\00/\1F5C\00/\1F6C\00/\1F7C\00/\1F8@\07\17\9FbuildSumP?\07\01\06\1D\00\04q\02\0B\B3\03\F5\026clearLastElement\22\03>S0_\E2\02\0F1\00\0D\0E\D7\02\0F8\00\1A\0E\CC\02\0F8\00\13\1C2\D6\00\00\F1\03\CERootToLeaves]\08\0F'\00\02\0Ff\08\05\0F.\00\03\0Fo\08!\1F1o\085\1F1o\08<\1F1o\08<\1F1o\08<\1F1o\08<\1F1o\08<\1F1o\08<\1F1o\08<\1F1o\08<\1F1o\08<\1F1o\08\1E\0FU\05\07\1F1\A9\07(\1F1\A9\07/\1F1\A9\07/\1F1\A9\07/\1F1\A9\07/\1F1\A9\07/\1F1\A9\07/\1F1\A9\07/\1F1\A9\07/\1F1\A9\07\0F\0Fn\0A\01\1F0\03\0B\19\1F0\03\0B \1F0\03\0B \1E0\03\0B\0F\16\08\0F\1F0\16\08\1D\1F0\16\08$\1F0\16\08$\1F0\16\08\03\FF\14\0A.global .align 1 .b8 threadIdx[1];#\00\03\11b.\01\0F\22\00\0E?Dim\22\00\07Dgrid!\00\04\01\00o.weak \DC\09\0E\AAcudaMalloco\01\06\18\00\0EW\01\0F \00\02\00\9D\08f{\0A.loc\9E\00\118\9E\00!__\15\00\A0_depot0[16\C7\002regI\00;%SP\0F\00\15L\10\00\8932 %r<2>!\00\D3rd<3>;\0A\0Amov.u2\00\1B,e\00b;\0Acvta\8D\00\04%\00\13,\\\00\22ld\C8\00\02\18\00nrd2, [\CE\00\1E])\00\1F1)\00\01a0];\0Ast#\00\81[%SP+0],,\00\0A\16\00\128\16\00\222;\B6\00\01\D8\00a1, 999(\00\02g\00\00\EF\00\18[\9E\01\03M\00\AF1;\0Aret;\0A\0A}\D6\01\1A\FE\02FuncGetAttributes\E1\01\0D#\00\0E\EC\01\0F+\00\06\0F\F7\01\1B\1F1\F7\01Q\1F1\F7\01!\0E\D9\00\0F\02\02\0F\0E8\01\0F\0D\02\8DhDevice\B4\00\0E\0E\02\0E$\00\0F \06\03\0F,\00\0A\1F1,\00\18\1F2<\02\13\1F2<\02\1F\1D4<\02\1F2<\02\0C\1F2<\02\13\01_\00\04;\02\0F\D9\00\07\1D]4\00\1F14\00\06\0Fp\02\10\0E\9A\01\0Fq\02\12(32q\02\0B\15\00!12\16\00\09\86\02\1F3\86\02\15\1F3\86\02#2Get\CB\00\0E}\02\05\1B\00\07B\10\0F\1C\02\10?3[8W\04.\0F\1B\02\0D\1F3W\04\19\04\B3\01\0D\D0\00\0F\AA\01\06\0F\05\04W\F1\03OccupancyMaxActive\AB\09\FE\03sPerMultiprocessor\9F\01\0F;\00\16\0EB\06\0FC\00%\0EJ\04\0FC\00\1E\1F2\86\00/\1F3\88\02\13O4[32\89\02\1C\1D3\89\02\1F4\89\02\0C\1F4\89\02\19\133\89\02\0F\F1\00\1E\0F\BC\04\00\0FK\00$/2]w\07\00\0FL\00$\0F\1F\05\01\0F\98\00%\0F\A7\07\1D\097\05\186M\05\04,\00\2224-\00\183\CF\03\1F2\CF\03\15\1F2\CF\03L\9FWithFlags\D8\03(\05D\00\0E\E1\03\0FL\00'\0F\EA\030\0CL\00\1F2\98\008\1F3\98\008\1F4H\04\13O5[40\EC\08.\0FH\04\0D\1F5\EC\08\1C\0F\F9\00+\1F]\9C\040\0D\9A\01\0F\A5\040\0D:\02\0F\AE\041\0D\DB\02\0F\B7\041\0D|\03\0F\C0\04I\08-\00\1F3$\0A6\F6\15visible .entry _Z12histo_kernelPhlPj\9E\04\00\98\00\0F#\00\02\0E}\04\0F+\00\0D\1F1+\00\10\0F\8F\0C\1B\1F6\EB\07\18xpred %pu\0A\02\B5\03.19\DE\0E\100\B7\031\09.s\16\14\04\81\00\124\81\00\1FZ\B8\00\01\A0E4temp[102e\03\0F\F1\03\08\1F69\08\1D\0F'\01\02\0F(\03\0C\0F\86\01\02\0F\07\03\0C\0F\E5\01\0A\13]\B6\00#to\F5\12\04:\00\144\AC\02\01\1F\00\0A\1C\00\115\1C\00\1F4;\00\05\146*\03\0F;\00\00\117\1C\00\1F6\\\03\02\1F7\\\03\09)64\\\03+d5\D5\0Ba%tid.xt\00\00-\00\03\19\00#d8\89\03\05\B9\01Ord9,\EB\01\0A\03\B7\00\02\22\02\05H\01\110u\00\00\93\03$hlN\02311,c\00\832;\0Aadd.s\18\00'2,4\00+11\B0\08\170\00\04&rd#\0E\ABbar.sync 0\0B\04B%cta\DD\00\06\17\00\00\9F\01\13n\F3\00\81mul.lo.s\19\00#5,5\00#r4\95\00\01\17\00#6,'\01*r5\7F\04\03\96\04\186]\00\00\A5\01\16nu\00\08_\00#8,}\00+r7H\00\02\AF\01\F2\048;\0Abra.uni LBB6_1;\0A\08\004:\0Al\8C\00Ed13,}\00\01\B4\02\04f\01$4,\FB\01\92;\0Asetp.geU\014p1,9\00\01(\00\A2;\0A@%p1 brag\00\1B3w\00\132w\00'2:_\00422,p\02\17;\8E\00\192\8E\00\07\C8\01424,7\00\01'\00\02\AB\00\118\0D\00!5,\BE\01\013\00\07\13\02426,\1F\00\192u\02/27v\02 228,<\00\0A\97\00(9,\1D\00\09\BA\01\00!\01v1;\0A{ \0A\09\0B\05\00`\00\03\F0\03Ireg;\BC\09\01\0B\00\180j\06\00i\03\02\16\00\04\98\03929;\A4\09\01\0B\00\1C1\9E\06\02\16\00\04=\0F\1A33\00\03\B6\06a;\0Acall\A7\01\14(g\0B<, \0Az(R, \0A(\0A\84\00\22, \09\0071\0A)\DE\04\02\E1\05\01/\02\06\10\07\84;\0A} \0A\09ld\0B\01%6,\9A\02&;\0A\17\00\1D7\EE\01\02\18\00#8,\1E\00\00;\00\0F$\03\02\1F1\DD\02\05)3:\BD\03\07\D1\02%5,\B6\04\08\A7\01\1F9\B0\04\06\111A\02\0Bh\04$7,\1B\00\0Bi\04$8,f\00\01'\00\09r\02\1F1\E8\04!\132\B4\04\1A9r\02(1,\1D\00\187O\01\130\09\03/1]w\02=/18w\02\1F\1F0w\02Q\1F1w\02\00\04\86\09\0F\AB+\1E\0F\AA+<\0F\\\09\10\1F7G\11\1F\1F5\FF\0C\1E\1F7\FF\0C\18\02\A5\08\0E\D3\00\0F\D4\08\0A\0F(\01\03\1F]-\08\03\1F1\D0\03\03\08\AB\03\182\AA\03\05\DF\02\182-\04\0F\0F\0C\00\1F2\05\16\01\182X\00\1A3t\06\05\D5\07\05\E8\06\00\C7\00\00\F4-\06\D9\07\00P\03\143\DF\0B\0F\03\0C\0E\1F4\03\0C\0A\D3L26vlc_encode\05\04\91_sm64huff\05\1FES1_S\02\00\0C\1F\0C\0F?\00\1C\0E;\0C\0FG\00)\1F1G\003\1F2G\003\1F3G\003\1F4G\003\1F5G\003\1F6G\003\1F7z\04\13_8[168\D7\0D\1D-13\D8\0D\1E6\90\04?143\DA\0D\0A\0F\D8\00\1C\BFE2sm[12288]V\00\03\00\AD\03\0FW\00 o5kcmaxH\0E\0A\1F8H\0E\19\128\0C\05\0F\B5\01#\0F\\\05\00\1F7P\00(\1F6P\00\00\1F6P\00(\1F5P\00\00\1F5P\00(\0F%\13\01\1F4P\00(/3]\D8\0F\00\0FP\00(\0F\F4\0F\02\0FP\00(\0F<\07\02\0FP\00(\0F,\10\07\02\91\0C\1F8\F1\0F\02\06:\0F\0F<\00\03\03E\0F\1F7=\00\03\152C\0F\0F>\00\04\143P\10\0F>\00\01\1345\0E\0F>\00\06\145K\10\0F>\00\01\03\C7\10\1F5>\00\06\197\07\11\0B>\00\158,\0B\0F>\00\04\1F9a\11\08\07\87\0B\0F6\01\03\04\92\0B\0F>\00\03\03\B1\0E\0F6\01\06/23\A2\11\08\04\F6\0E\1F3\F1\08\03\1F4\A5\11\03\0F\A6\11\04/20\04\15\03*18\18\00\03\05\15+d1\1A\12\144\0C\0C\1B4\18\00\03x\00\1B1x\00\145\F1\09\09D\11\1F6D\11\03\1F7D\11\05$8,2\11\1F7\B6\0D\04\078\0E$0,2\00\1A9\0D\0A%64\94\0C\09\17\00\02\BB\00\1A9\1F\10;5, +\01\148[\01\0A\EA\12;1, Q\00#10\FD\0C\0A\E7\12\00\8B\10\0F\F9\06#\0F\1A\0E\03\157o\10\09\E9\01\03\C0\12\0D\A5\10\04\BB\10L, 105\02$12N\02\1F8\DA\10\02|7, 20485\00\168\8F\10\07`\0B\170L\0B\05\E6\0FEd31,o\01\09M\0F432, \00\0AM\0F433,P\00\01'\00\08\E5\0E\132\95\0B)3]{\00&4,\05\01\0AL\00$5,!\00\03L\00\07\F2\13\2235\AF\01\0A'\0C\1F6\80\0C\02?d37\C8\00\05$8, \00\0B\C8\00$9,Q\00\01'\00\08\C8\00\133\C8\00\199\C8\00640,\98\01\09L\00441,!\00\03L\00\07\C8\00%41\EB\11\07L\00\1F2\F0\0C\01$d4\F2\0C\1B61\13444, \00\0A\C7\00445,P\00\01'\00\08\C7\00\03$\0D:45]\0A\03\139x\19\1A4M\15\09-\03%36-\03\07\CC\11\138\CC\11\138\A9\14\03i\00&5,6\00\04\92\14\02M\00\03\92\14\00\22\00\1A3\8D\14;8_4[\00\132[\00\182[\00549,\B5\00\18;s\00\190t\00\07\FA\03!51l\004sub{\04452,\19\00\01:\00\03Z\01\03\1D\00$3,$\00\006\00%hrH\00$4,\81\00\01'\00\02!\01\148M\04\03\B6\04)54\C9\12)31\EC\02\05\09\15\101P\03\05:\00\0A\B7\12\03R\03\01#\00\0B\B9\12\03\1A\03$13\D8\15\193\04\01\03^\15L134]\EC\04\03h%*55\9F\00\195\C3\02\07\9F\00\1F6\9F\00\07%7,#\00\0C\9F\00%8,W\00\02+\00\09\9F\00\146\9F\00+8]=\01\03\DB\03*56\9E\00%9,\D4\05\06\9D\00F157,8\00\0A\9C\00\03r\03#13\A5\01\08\80\00 d1\97\03\05\0F\01F;\0Aor8\00)2,@\00/41U\06\038142\89\00\198\89\00\07\8D\02&9,d\06\09\F6\06460,!\00\01A\00\0F\93\06\04+60\0C\03\133\0C\03\183\0C\03)61\F4\02\08g\00$2,!\00\1F1\C9\03\04/62\CA\03\04>4:\0A\0D\16\02\C9\00\07\FC\04\05\19\00\1A2A\06\1F4y\05\05448, \00\0B\B2\04$9,R\00\01'\00\0A-\05\139\AE\00\0F\E8\19\05.17\E3\00\03\FE\08)17)\00\178\B7\08\07\D7\03\02\8A\01\1F8F\00\00\03\D2\03\1B9(\01\135(\01\175(\01\00y\0A\056\00\03\F2\04\22eq\8E\013p2,\22\00\110\F2\04\162\F2\04\1C1\E7\01\136\\\00\1E6\1A\17\03R\07\188_\01\07\18\00\1E9\81\00$ges\05$2,<\00\01+\00\02y\05\07\88\00\1B8\87\00\137\87\00\187\0B\02\163\E4\00\09\A5\06\1F14\08\00\03\19\00$2, \00\121o\03\03\18\00$3,\1F\00\1B1C\0A\03\E2\04\2213(\03)33\D7\02\02X\04\01$\00*-1C\04\03\DA\0A9135\9B\00\1F6\B4\00\05\1F7\B4\00\05$8, \00\1A1|\00$9, \00\1C2\B5\00\027\04\121<\0891399\00\02\0D\08\01$\00\0D\B5\00\03\DE\02)41\F8\04-24]\03\02\96\05\02?\1B\03\EF\00\0A\FA\04\03B\1B\01#\00\0CW\1D%7,W\00\02+\00\09\15\08\03\A5\09:127l\00&8,\A6\00\0Bl\00%9,#\00\0C\02\06\1B0l\00\199l\00\143\02\06\0B\17\05\02\CF\08\2214\19\02\1A4\F9\09#13\D0\03\1C4\22\08\138\A8\02\198\22\08\195\F4\01\07\DC\01\02c\04\01!\00\0F3\04\05+46c\00\139c\00\199c\00\1A7n\03\06N\04\02\E6\04\01!\00\0FP\04\05/48Q\04\04(10R\04\0AU\03\00\D0\03#neQ\04#3,!\00\02Q\04\173Q\04\0D\D5\05\05\A0\09\181\D3\1D)50b\02\07h\1F\172&\05\06\AE\0D\02\FA\0E\00\1D\00--1|\1B\02H\09)23%\02\02d\09-d50\0C\02`\09\22d5)\02\195\C0#,24\E7\1F\125\D1\17,24\D8\00\04\1D\0A812:A\00\0F\DB\01\00\135* \1C5C\00\04T\07\181U\07\00H\03\058\00\09\9C\00\08\F7\0E\0A`\05#4,9\00\00&\00\01\93\01\174\93\01\0C\EF\01$14x\00\09j\07\1C0\B7\02\05T\02\120\B7\02\1F0\B7\02\08?06;1\06\04/071\06\03)08\E8\00\0B1\06$1,<\00\01+\00\021\06\07\AB\0B,16\D5\00\05\C5\02\195\D5\00\1F9\80\05\04/10\80\05\04\03{\00\00 \00\094\06\03\C4\06/114\06\00\02\CE\12\2210\A2\05)12[\04\02\CE\12\01$\00\0C\7F\05\145\D4\0C\09&\0D/15\B4\00\05\1F6\B4\00\05$7, \00\0A4\06\03\1D\1F/174\06\00\03y\08\121\D3\06)189\00\02\C9\12\01$\00\0D\B5\00\137\07\0F\0A2\1F/094\06\04\05j\01\00\EF\00\0B\88#%1,#\00\0B\C8\05\05\8C#\03\EB\05)11n\08\131\C8\05,12i\0C\136\92\02\1A2\D3\06/13\9F\00\05&4,\D9\00\0B\9F\00%5,#\00\0C\9F\00%6,W\00\02+\00\09\9F\00\04\D3\06*16l\00\1F7\0B\01\07%8,#\00\0Cl\00\1B9l\00\0A\A2\0A#11\C5\07\1A2\FB\10\05\F1\00\1A6:\0B\01\DC\01\0F\DE\07\03\1F1\0B\01\06\03\9B\14\01#\00\0C\DE\07%3,W\00\02+\00\09\87\00\144\DE\07*3]b\02$5, \00\01\AE\00\0B]%\133\D4\00\0D5\05\04\A2\0A;16:\1A\00\045\0A\1916\0A\0BP\05\076\03\02\97\08\01!\00\0F\B3\05\04?127\B4\05\06\1F8\22\0B\04\0A!\0B\07\D9\06\1F9\D9\06\02\02\B0\08\142h\03\09g\07#5,P\00\00'\00\01\03\05\165\02\05,20\9B\00\04*\08)19j\07\1F4)\0D\04/55)\0D\04\00'\0F\03 \00\0B:\07$7,R\00\01'\00\08\19\1F\03\91\03)57/\1F\1F2\87\0E\04\02\81\0B\02E\10\193P\13\05\D3\0E\1A5F\11(34\0C\16\0C\01\08\01\22\03)34\C7\00\02\EA\0E\01\1C\00\0A\C7\00\00\95\0E\03j\00\01'\00\09z\02\126\1D\13\193\1D\13/62D\01\04/63D\01\04464, \00\0B}\00$5,R\00\01'\00\08.\01\03>\11\196\CC\0F/36D\01\05#7,5\00\00%\00\08\B1\07\02C\0C\00 \00\195Z\16?66,\FC\1C)\0F]\16\00\136\17*\1A6D\01\02\22\06\1C3y\08$20Q\13(0:^\01\1F8^\01\05\1F9^\01\04\127\DB\01\1D6\DB\01471,R\00\01'\00\08H\01\129^\01)71\DD\08\02:\0D\00\1D\00\0B`)\127\03\04\194\E6\06\1F7\09\02\05\1F7\09\02\05474, \00\0B\AB\00$5,R\00\01'\00\07N\00#41\AB\00\00\09\023and\B1\04\02$\12\00\1D\00\1B3\B0\04\127H\08)42\AC\00\0F\22\11\05\1F7\22\11\05\1377\01\1D7\AC\00$9,R\00\01'\00\09\D1*\1C33\0B\127\90\06/43\13\0A\04-44\D4\11\02\18\00\04\91\04\1A7\FB\03\006\0D(32A\15\00\DE\0C\02\18\00\006\00\037\05\14l=\0A#6,e\00\00)\00\017\05\1767\05\0C\A1\0C$21\95\02\08B\16/48\8C\00\04\1C9\8C\00#1,\17\00\005\00\09\F0\11#63\AD$\0Ap\00\04B\06>22:\B0$\02\13\01\0DE\00\1F2E\00\06+3:t,\003\00\0B\DD$\05s0\06\D2\04,80\DA\14\02\85,\1F0\9B\01\03\00F\0D\04L\00\08\FD\00\02e\0D\02K\0D#51X\03\03b\00$1,i\00\00(\00\0F\0F\16\03)d8\A6\09\1F8_\03\05583,\96\03\09\B3\02\128_\03\1D8_\03485,R\00\01'\00\08\CD\00\193\86\15\06\FD\00\184\F4\01\06\17\00\185\FC\00\06\80\05\02'\07\02\0D\07\195\EC\1B,57%\02\02l\06\02@\07(56\86\08\02\BB\06\02\94\0E/58\8B)=/85\8B)\1E/59\8B)\1C\08\FBS\0F\8A)\14/60\01,\09\05n\07\198\84\02)63\9C\02\06\85\02\02l\07\02)\03/62\D1\16\03\09i\07*65J\00\09-\15#7,\22\00\02\DC\10\177;\04\0D\D0\06\04I\0F\182I\0F.66^\00\14l}\1A#8,\22\00\123~\1A\178_\00\0C\D3\0E$25_\00\185\E5\03\136^\02\08%\04\02\02\01\0C\AD\0A$27A\00\186\DB\04\0Fk\04\06\023\05\0FE\00\06\187\86\00\02\BE\0B/64k\04\02\09\E4\19/86k\04\02/68k\04\03/69k\04\03\02\F4\07\126A\01\1A9k\04$7,i\00\00(\00\03\1F\0A#32 \00\03\15\08\198\8E\17\00x\07\181\89\03\00\A2\07\02\17\00\02`\00\06A\15\02\C3\07\137\C0\0F\06\90\07\02\C2\07\02^\00/74\E1\04\03\1A7\0B\01\0F\EA\08\04(76\DF\04\07z\00#7,\1E\00\0E\F5\12\1189\04)77\0F\05\129\19\09\1D8\19\09491,\81\00\01'\00\08}\00\1F8\0F\05\03\197\89\01\06(\02,80\DE\04\02\EB\05\02\EA\05(79U\01\02\7F\05\02X\08\1F8\E00>/91\DE\04\1E/82\DE\04O/83\DE\04\09/85\DE\04\02/86\DE\04\04\02\DD\02\02\DC\02/85\DE\04\03\1D8\FA\03\04\99\16\182\9A\16/88\F8\04\08#9,\22\00\02\F8\04\169\99\04,30^\00\04j\0E\192j\0E/92\E9\03\02/89q\04\04+90\83\03\02\A5\02\02\C4\02\198\83\03\00[\00\02 \00\0F\FF\15\00\119\BA\03#92\9C\03\03\0A\03$4,\94\00\01#\00\0F\80\08\04\199.\1F/95\A0\03\03/93\A0\03\03\02e\00\129}\08\0C\96\00\02\112\0A\94\0E497,\1C\00\0B\A0\03$8,\81\00\01'\00\08}\00\1F5\A0\03\03/96X\01\05\0D\7F\08\02^\00\02}\00\199\7F\08399,c\00\00&\00\0F\A1\03>\0F\0A2\1F\1F9\7F\08P/10\80\08\01\0A\EF\1E\04\AB\0E/30\0A\1D\05-02\E9\11\03\CC\01\1F9g\0F=\01\B1\00\01Z\00\09\81\00\04\CD\1A.00\E5\22$0,\A4\00\01*\00\02A\17\170\D5\03\0CS\0C$31\F2\00\09\A9\19?101\94\0B\04\0B\01\01\08.\14\00\9A\00\04\22\00\0BA\22504,W\00\02+\00\09\D3\00\04.\14\1B0a8\05\9D\18\1C4\85\00\1F6\A1$\04\03=\18\02\22\00\0C\85\00%8,V\00\02+\00\0A~\14\04\AD\22\1C0\0D\09$32%\01%2:\BE1\0Fc_\1D\0Fb_:\0F\BE/\10\1F984Q\1F984\1F\0E\D2\00\0F74\09\0E%\01\0F64\A7\05V\1A\0F54=\825pack2PjS\04\0D5@\0C \00\0E\F73\0F(\00\0A\1F1(\00\14\1F2(\00\14\08\9A3/32(\00\00\0F\1FD\1BO10[7}@\1E\168\EA\02\8C16 %rs<5\B72\1E9ED\1F5nO\0E\1F0\10\03\18\03\BD1\0F\FD\00\04\0FN1\01\0F1\00\09\1F3/1\01\0F1\00\09\1F2\101\01\0F1\00\09\1F1\F10\01\0F1\00\01\0F\AE@\0F\03k\18\0Fs@\0B\0F;\00\03\1E8\C6/\0E\D90\0F\C4/\04\1F0\C4/\08\04\95\1C\1F0>\00\06\1F2\C4/\08\04\A5\1B\1F2\86D\03\1F3\86/\02/11\C9\04\03\1F9\85/\03\1F7\89D\02\09\DF\0E\08l&\0A\09/\0F\1F@\03\0A\0E/\0A\B7.\0F*\1F8\1A.\03/19\93\00\04\05=2\0C\93\00\03\C7=%18\9B1\0B\16?\03\C7=\09\93\00\03\C3\08\09\F4=\188E\09\0F\83(\01\0B`\0E\04\07\1D/9;j(\00)48\9E\18$21f(\0C\9E\18\03\E6 \0A\91\1F\1F2p.\03\05\B6\1E+40\1D\01\04\DE2\0D\1D\01\195\EDA\08\E8\13\04\87\1F?25]\E21\02\09\AA\1E\192\EA.\06\17\00\184\90\1C\064\01\02w\00\03\97$\1F4*2\02)25\F1\00\1C6\0F\14\03\1E\0Fd\0FP/68r\06\0F\05\C7\09\00\1A/\0F\A4\18\09\9110uniform\02N]S_iii\A8\18\0E$\00\0E\05n\0F,\00\0F\1D1`\18\0F,\00\07\1F2,\00\18\1F3,\00\11\0F\BC\18\1C\1E1\DC\\\0F\BC\18\0E\0DaK.31\C0c/3>\09K\0B\0F\BB\00\00_E3uni\ECJ\0A/11\DF\18\18\03L\18\0F$\01\08\1E]Z]\0F4\00\0D\0F\E5\\\01\0F4\00\06\0F\A9I\0F\0FE\02\00\0F\93\1C\0F\0F\A6\02\00\0F\F1\18\0E\1E3<\18\0E\BBY\0F\F6H\03\1F5\FDG\08\05H\19\0F^\18\00\1F6]\18\03\1F4&\1D\05\0F\1EX\00\1F2r\18\02\1C3\D9X\08\9D8\0Ag\13\1E4f\13\1C1f\13\141f\13)1_\83 \1F7\8CU\03\185\CD\18\06#\06\08=V\07\8C\11\15,\FB\05\0FkZ\03\0BH'\1F,!Z\03&0,\99\1A\09\EB\0F\04\B7 \0A\0A\22\00>\19\0Fd\03\0B\0F\ED!\01\06\02%\1A\08\89F\0A\BBE+32RB\16,7\00\1C5\81A\0F\A3\1A\00&8,6\00\1F7\A3\1A\03\1F8\D4A\00\06\C6\1B\0F\B9\01\1F\06\B7L'ld[\19\01\BF\01\0B\D0\22\1F5\AE\1A\03\1E6\AE\1A\0FJX\1D\0B\A9\19\00#\00\09I\01\06\A8\19\02\D9\19\08d\02\158\A9\19\070\00\172`Y\1F01\19\01-24\E7,%2,:\00\01\DA77elpP\19\009>\10,&\00\08N\00\175)\01\09\0B\1C\03\D8<\1E4S\19/19F\01\01\05Q\19\0B\94D\02P\19\152\C9\00\0B\06\04\02\12\01\1A2@\0E\07AY\0B\84\19'2,\0DN\04\DB\1A\07s\18\00#\00\1F]\E97\03\02\18\19\0705\132O\05\1F0\DD!\0B\137Ct\01\0Au\07\B7|.S0D\09\0F/\00\0E\0EO\09\0F7\00\19\1F17\00#\0Ee\09\0F7\00\12\1F37\00#\1F47\00#\1F5\B2\09\14?2[7\EBb/.23\B2\09\1F1\11U\09\0F\C5\00\0D\85E6s_data\05U\0F\C6\09\09\1F2\A5\22\1F\0FC\01\13\0E\9D\09\1F6?\00\18\0F\10\0A\00\1F5?\00\18\0F\01#\02\0F@\00\18\0F\10#\02\0F@\00\18\0F\1F#\02\0F@\00\18/0]\02\0A\0B\1F4\02\0A\0B\0F;\00\03\1F7\F2\22\08\03\F77\0F&T\0B\1F2&T\0C\0F\D7\22\01\1F0z\0A\03\1F8\D7\22\03\1F6e\0A\02\1F5\BC\07\02\1F6\13\22\02\197\1E\06\0F\7F!\02\181_\08\0A\C0\09\05v \0E&\1E\1E8\BF\0A\1C2\BF\0A\142\BF\0A?2_1\8C\09\9A\1A2\8B\09\0B\8CE\1Dr\E7\00\143\E7\00.2:\E4(\01B\01\0CC\00\1F3C\00\06\1D3\F4\19.22C\0B\0F\F6\04\16\0FQ\0B\0D\01\AF]\07\A9%\00\EE\04*44\18\00\144\18\00\1A8\18\00\135\18\00*52\18\00\146\18\00\1A6\18\00\137\18\00*60\18\00\148\18\00\0FQ\15>/124\00\00\1F14\00\02\1F1p\12\09\1F2p\12\02\162`s\0D2\00\1F32\00\02\163\B5*\0D\97\00\1F4\97\00\02\184)'\0D4\00\1F54\00\02\1554\00\0Fh\00\01\1F64\00\02\1564\00\1F54\00\00\1F74\00\02\1574\00\1F64\00\00\1F84\00\02\1584\00\1F74\00\00\1F94\00\02\189Hc\05\C5\13\1F\0A*\8A'\0F\E5\13\01\04\09\00\142\09\00\143\09\00\144\09\00\145\09\00\146\09\00\147\09\00\148\09\00<9\0A)\BEe\1C4\EB'\0B\AC\0B\01.\0C\0F\F8\02H\0Fqd\14\0F,\02\01\1F2g\00\02\04\F8\02\02\D6Y\08\90\01\0F\D8\8A\08\0Ft\01\0A,\0A)U\18\1F2\0DW\02/15\AD\06\02(16\C7\1B\0E!g\0A#1\1F1\99\18\03\191\BE\1E\0E\DE'\0A\89#\06\0DL\0F\BE\01?/20\B6\04 \1F2\B7\04\1F\1F5\B8\04\1E/163\00\00\1F43\00\02&4+\F3Q\0D3\00\1F53\00\02\04\B8\04\0F/g\02\1F63\00\02\04\B7\04\1F1\8B'\01\1F73\00\02\04\B6\04/203\00\00\1F83\00\02\04\B5\04,21\80\04\0FC\8B\16\0Fs\04@.\0A)\B1g\0FY\92)\0FX\92\FF\FF\FF\13\0F\06\11\11?3[8\94w\1D\1F2\95w\00\1F0P3\0D\1F3^e\1D\0F\02\01/\0Fge\01\0FY\001\1F8pe\01\0FY\001\1F7ye\01\0FY\001\1F6\82e\01\0FY\001\1F5\8Be\01\0FY\001\0FS\1C\01\0FX\001\0Fw\1C\01\0FX\001\0FDf\01\0F\B1\002\0FMf\01\0F\B2\00+\0Fhy>\05l\1C\05\F1}\0F~y\08\0Cyd\1F4xd\03\1F5wd\03\1F6vd\03\0B\C1v%64\A8\12\0A\D0u\04\AE\11\0E'L.3;aE\1B2\E4%\03\08\1D\0B\8AI\199{\12\06\15\18\1E9JE\1F1\80.\03\1C6}\1C\05\F2\1C\0EoP\09\22e\07,\13\191\1A4\08]R\04w\1C\05\B3-\189\0CA\08WR\0C=;\0A\BA\1C\0A\BB>\0FPA\03\06\FD\12\0C\A0\00\183\0A\0D\09\9BY\09\02\13\0B\0C6\0A\A3%'12c\1A\00\E5&\04Y[\04\00\13\1F4\A3\1B\02+56s\00\1F5?c\00/16\AB\0D\03\04\D0>\1A6s\00\145\CD\1C\0As\00\05\FA(\0CC\01\1F7\F26\01\1B84\0E\0Bi\0F\1B4.w\04\0F\1C/9]\E3\1A\1B\1E8\E3\1A\04\097\1A2\03\02\1C2\FE<\06\BB5\0F\8F\01\01\04\BB6\0ALx/25\99\0E\02'18\CC5\072\02\179\9E\1C\02\F09\00\C0\00\05\F5\00\156\E7\1C\07\F2\00\04\12g\0D\F2\00'8,fi*27\A5\1B\1F8\E47\00/29\84\01\02+30\8B\0F\18s\DDf\00 \00\0F\DCf\1B.29\F9,/20\DCf\0B\0A\84\01\1F3K\10\03\04HW>35]\D5f\0E\0C7\04Og/6]\9C[\00\141\BE\15\0B\84\01.37\9E[\0F\06g\0F\1F4\BAf\01%39\CC\0E\0D\07\0E\0F\FA\9C\08\0F\F9\9C\8C\0Fg\0B\11\1F4X\7F2\1D0y\0B\1F7x\0B\0D\0FW\87\1A\03\14\0A\0F\F7\00\10\0EG\09\0F<\00\16\1F14\0A\01\0F=\00\15\0F\B6\08\04\1F3\D9A\01\1F48%\06(ld_\0B\04n\03\0F\17\13;\0F\EA,\1E\06h\9C\07~\11\0F\E0,\01\0F\CC)\00\0F\09&\00\0Al\06\0E\D9\05\0FEC\06\1C7\0C~\0AK\1B\1E7K\1B\1C4K\1B\144K\1B\1A4K\1B\1F1K\1B\03\1F9\D48\00\144d\1A/4_hS\01\0A\9CY\1E9\E8\1A\08A\00\0EdS\1F9\F7+I\0F\04\15\14\0F\03\15\1F\1C3\C0\16\0F\D9\9D\0B\0F\C4\16\1C\1F6x\1C\01\1F8\F6\17G\1F6\FDM\1F\0D\00\01\0EO\9E\0F\13-\02\0E|\14\0F\A9\A2\1E\0F\A8\A2\FF\FFM\0FC\08\11?5[4\0F\92\1D.16\B0y\1F92\08\0D\1F5U$\1C\0F\F4\00\22\0Fa$\00\0FK\00$\1F7m$\00\0FK\00$\1F6\D6\08\00\0FK\00$\0FB%\00\1F3K\00$\0F\0B\13\01\0FK\00$\0F\FE\12\01\0FK\00$\0F\F1\12\01\0F\97\00%\0F\E4\12\01\0F\98\00\1E\0F\D7\12T\0Bf\09\1F3o/\02\1F4\0A%1\0F\DA\84\03\08\8CL\0E\A6\07\09\BC\07\1E9H+\0E9w\0B\ED\0D\154:w\07R?\02\B6&\0D\0Aa\16,\101\09>e\03\94\0E\0A@ \1F7\03\88\02\188\EE/\0F\C0/\1F\09\F4O\0FI\12\01\1F1\97\1F\02\0F\028\03\06c%\0C\\l\0A\EB.\0B2\01\03\19\00\1B4\E4r\03\E7\1E\0D@Q\03d.\1F1k.\00\1F5k.\0B\0A:\01\0A\B1\12\0Fk.#\0E;.,15\9A\0F\0F:\A9\16\0F9\A9\09\0F\F7\98\1B.16\EA\06\0FL5 \1D7\FC\06\0F\FB\06\0E\1F6\0D\99\1D\0E\E7\00\0F\D7P\0B\0F:\8D\00\0F\C63\05\09\C7E\0F\D63\06\0A\D8\0C\05\8F(\0F\EC3\02\08\1E\0D\04D\89\00\09\00\0F\\\\\00'32\130\0A\074\1B1\FD\0D<6_6[\00\142[\00\1F2|U\04\0FKI\03\1D7}\00\0A\16F\04\F7\16\09\14F<6_4\7F\00\143\7F\00/3:#\05\00\0D:\0E\1F2\A8)\16\1F8\03\17\01\0A\A7)\1F133\08\0BuM\0Ey\04\0Az\17\05\C8\10/12\DD\9C\02\0A=\04\1F4\81$\0A.12\90\00\0C\923\0Fb3\01\1F6\A0$\01\0B\05N\1E8\B25\0F\DA\15\01\07p\14\03\BC2\06\9Bl\0B\FD\06/20\BB$\01.40\CC\14\0Ew\00\0C\CD\14\0F\E7M\00/23 L\01)40\E3\17$25\B62\09\CF\8F\0C\CD2\0F\BE\00\01\1F6\CD2\01\05\02I\0C\CD2\0A_\00\169\E42/28\BE\00\03\1F9\C3\11\09\04\B4\15\0F\86M\04\03\96\15\0D\1BG\02\0E\09\08\1F\13\07\E2J9rd5]\00\09\BF&\07\B2W\03\F0Q\0D\CAc\07]\00\1F7sj\00\0A\C0\01'32Zj\0A\98f$8]oj\0A\F0\03\144\F0\03\09\92J\1D3[\08\05\F3K\02\1E\00\0FT\05\03\1D3O\04\145_\00,5:\ECi\06\7F\07\04\D8\01\03\BAJ\0EPK\04\87\05\1F6\88\05\06\08@?\195\BD\00\0FUV\0D\0D\B5\07\0F\96\B0\0F\0F\95\B0\98\0F2\08\11O7[24_\17/\0E~=/153\08\0D\0Fp\8D \0F\FB\00\14\0F\ED<\01\0FA\00\19\0F\F9<\01\0F\82\00\12\0FK\0D;\0A\8FN\0Fb<\07\1E2X\16\1C7X\16\147.\03\1B7\C8O\0F\8B1\02\02\EA\03\0BSs\04\C6\1F\1F-\E6\0D\03\1F5\A6\08\01\0A\1A\06\02af\0B\B9\05\09\98\1F\0FX\00\00\1F8eZ\08\06{\0D\08o\00\0F\7F\0D%\1F9~\0D\09\1F8~\0D\02/16~\0D4\1E9}\0D\0E\B9\0C\1E2\E8\00\0F4\0D\1D\0A\863\0B\D8\97\06\FE\85\0A;\02\142;\02\0D\FB]\0F\EF\B4\05\0F\EE\B4L\0F\D9\04\11O8[56\0B\0D/\0E\90\9B\1F19\1C\0E\1F8\D9\04!\0F\F1\00\00\0F\8E\04\11\0EV\01\0F#^&\0Fo\04\00\0F<\0D\12\1F16\0D\11\04\E4\80/186\0D\07\0A\E1@\0A\F0y\09\C3\84\02yl\0B\F3\04\01\C2\7F\0As\00\03\B8\02\0A\C7\84\09B\0D\07\EFQ\03\9C\04\0E\1F\01\0FU\12\04\0E\1C\0D\0E?\12\0F\8F\0D\04\04B\12\09\8F\0D\0C\85\85\141z\82\1B1{\82\09\A5N\0A\B0Z\0F\91\0D\02/11:7\02\1F0\C6@L/28\93\0D\03\1F4\93\0D\03\1F5\E71\01\0E\07\99\0E\93\0D\0F\F5@\1A\0E\052\1F3\052\03/24;@\00$19d\0D\0C%@/21\93\0D\01\0FkY\08\0B\93\0D\1E4w\00\0FkY\0D)44kY\05d\0D\0F\93\0D\02\02\17\0D\0C{\07*28>}\0F\BE\00\01\09dY\1F9\93\0D\03\06\E1?\09_\00&31\F8?/30\BE\00\02/31\93\0DX\162\93\0D\0F0\\\00\0A\8Dw\1F6\8B\00\03\1F7\C1\0D\04\03H<\0D\DCh\16,p\08,8;c\0D\00\EA(\09\E0\07\1F0\E9\00\04\05\98_\0F\B7\9F\04\1F67E\08\09\A7\88,34)5\0Be(\0B\EF\00/14\F0\00\04\04\0B\15\0E\1F|\196\F6\9E\1F5\E5w\00*16\B7\0E\176\CDw\1A4\C3\00\1F6\FA\0D\02\01*\05\03\09\00\1B:\1A\00\03s\0E\0A#\86-37\F2\15\1A3MY\0F\C4\06\04\1F8\C5\06\06/6:\B1B\19\1F1\B1B\1B\1F1\B1B#\1F1\B1B#\1F1\B1B#\1F1\B1B#\1F1\B1B#\1F1\B1B*\1F9\B1Bs\1F1\B1B(\1F9\B1B.\1F1\B1B+\1F1\B1B+\1F1\B1B,\1F1\B1B,\1F1\B1B,\1F1\B1B\FF\A9\1C9\0E\11\149\C9\05\1F9\B1B\CA\149B\0C\1F9\B1B&\07C\00\0F\B1B%\1F1\B1B\FF\FF\FE\1F1\B1B\FF\FF\FF\FFo\1F1\B1B\83\0F\16\05\09\0F\9A\CC\FF\FF\FF\13\0F0\C3\11\1E0\B1B\0F\06\11 \0E\12\1B/41E\C3\0D\1F0\C3B;\1F1\C3BE\1F1\C3BE\1F1\C3BE\1F1\C3BE\1F1\C3BE\1F1\C3B\22\0F\B1\002\0F\C5/\00\0F\B0\00\10\0F\C3BE\1F1\C3BE\1F1\C3BR\1F3\AE!\02\1F4\C3B\83\1F5\C3B\05\0F\BB\22\0B\0BF_\02\F7\8A\0F\C3B\17\1F7\C3B\10\1F8\C3B\02\0E2\93\0E\B9\A7\0F\C4B\17\0A\EC\1D\1F1\C6B#\0E\BA\12\0F\C7B\01\05RB\0C\A3\00\0F\C7B\0D\1F3\C7B\11\1E4\C7B\0ETB\0F\C7B\16\1F5\C7B\11\1F6\C7B\03\03u\B7\0F\C7B\1D\1F7\C7Bu\1F8\C7B1\1F9\C7B\19.20\C7B\0FZ\1F\00\0F\C7B\02/21\C7B8\1F8\C7B\02/32\F0A\01?29]\BE\1F\01(16\EE\BB\07\8A'\05\F8_\08_\A7\1C2Vw\142Vw\00\09\00\1F:\1A\AA\09\03\17\00\1F1UC\04\04\96B\1B1UC\035p\0D\C5\A6)34Np\1C3m\17\00\22\00\0A\14\16\1E8a>\1425w\00\D8\00\1E:C\9E\0C>\00/24?\00\06\0Etw/28\BCC\02\1F0\A5C\03\0B\B5\01\03Ia\0B\CF\12/37\D3C\03\176\EDn\07\90\02&7,y!\1E6\D3C\03~.\0Ap\01\03\BAC\0D\F8'\04\A9n\03\\\AB\0A\FA'\1D4\E6\C7\0F]\D8 \0F\\\D8\FF\FFM\0FV\0E\11\1E1s6\0FA. \1F8o=\1F/21o=9\1F1o=7\1F1o=7\1F1o=7\1F1o=7\1F1o=7\1F1o=7\1F1o=8\1F1o=8\1F1o=\FF\FF\0C\0FX=\12\0Fp\0A\05\06\0A \09p\0A\0C`n\142`n\1B2`n\0F\E6=\04\0F\EF\0B\04\1E5\E6=\0F\A0l\01\0F\E6=\03\1F6\E6=/\1F7\E6=p\1C7Y\01\142Y\01\1F2\12(\16\1F0\C3j\1B\1F0\C3j#\1F0\C3j#\1F0\C3j#\1F0\C3j#\1F0\C3j#\1F0\C3j-\1F2\C3jp\1F0\C3j+\1F2\C3j+\1F0\C3j+\1F0\C3j+\1F0\C3j,\1F0\C3j,\1F0\C3j,\1F0\C3j\FF\AC\1C2\C3j\142\C3j\1F2\C3j\CA\142\80j\1F2\C3j&\08C\00\0F\C3j!\1F0\C3j\FF\FF\FF\FF\8A\1F0\C3j\FF\FF\FFd\0F\86\03\08\0F\B2\EE\8C\0Ff\0E\11\1F3\BC\\d/23\BC\\1\1F0\BC\\(\1F0\BC\\)\1F0\BC\\\FF\92,23D\0D\143D\0D\1F3\BC\\%$23]\0C\1F3\BC\\#\08A\00\0F\BC\\\DA\1F0\BC\\\FF\1A\0FB\01\0C\0Fa\F4\98\0F\85\06\11\1E4\E2K\0F\85\06S\1F4\E1K4\1F0\E1K-\1F0\E1K-\1F0\E1K}\1C29b\1429b/24\E1K\FE\092\06\0B\F4\BA\04\98\13\0AK\01\142K\01\0F\D5\19\1B\1F1\D5\19\18\0F\E7A#\0F7\00\07\1F17\00#\0F\D5\19\0B\0F\E7A#\0E7\00\0F\D5\19\13\0F\E7A-/25\D5\19s\0F\E7A(/25\D5\19.\1F1\D5\19+\1F1\D5\19(\0F\E7A,\0E\A6\02\0F\D5\19\1C\0F\E7A,\1F0\E7A\FF\AC,25\14\07\145\14\07\1F5\D5\19\CA\145\F4\0C\1F5\D5\19&\07C\00\0F\D5\19\22\0F\E7A\FF\FF\FF\FF\8A\1F0\E7A\FF\FF\FFVP;\0A\0A}\0A\00\00\00\00\00", section ".nv_fatbin", align 8 @__cuda_fatbin_wrapper = internal constant { i32, i32, i8*, i8* } { i32 1180844977, i32 1, i8* getelementptr inbounds ([176489 x i8], [176489 x i8]* @8, i64 0, i64 0), i8* null }, section ".nvFatBinSegment", align 8 @__cuda_gpubin_handle = internal global i8** null, align 8 @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_main_test_cu.cu, i8* null }, { i32, void ()*, i8* } { i32 65535, void ()* bitcast (void (i8*)* @__cuda_module_ctor to void ()*), i8* null }] ; Function Attrs: noinline optnone uwtable define dso_local zeroext i1 @_Z8InitCUDAv() #0 { entry: %call = call i32 @cudaSetDevice(i32 0) %call1 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0)) ret i1 true } declare dso_local i32 @cudaSetDevice(i32) #1 declare dso_local i32 @printf(i8*, ...) #1 ; Function Attrs: noinline uwtable define internal void @__cxx_global_var_init() #2 section ".text.startup" { entry: call void @_ZNSt8ios_base4InitC1Ev(%"class.std::ios_base::Init"* @_ZStL8__ioinit) %0 = call i32 @__cxa_atexit(void (i8*)* bitcast (void (%"class.std::ios_base::Init"*)* @_ZNSt8ios_base4InitD1Ev to void (i8*)*), i8* getelementptr inbounds (%"class.std::ios_base::Init", %"class.std::ios_base::Init"* @_ZStL8__ioinit, i32 0, i32 0), i8* @__dso_handle) #3 ret void } declare dso_local void @_ZNSt8ios_base4InitC1Ev(%"class.std::ios_base::Init"*) unnamed_addr #1 declare dso_local void @_ZNSt8ios_base4InitD1Ev(%"class.std::ios_base::Init"*) unnamed_addr #1 ; Function Attrs: nounwind declare dso_local i32 @__cxa_atexit(void (i8*)*, i8*, i8*) #3 ; Function Attrs: noinline optnone uwtable define dso_local void @_Z12histo_kernelPhlPj(i8* %buffer, i64 %size, i32* %histo) #0 { entry: %buffer.addr = alloca i8*, align 8 %size.addr = alloca i64, align 8 %histo.addr = alloca i32*, align 8 %grid_dim = alloca %struct.dim3, align 8 %block_dim = alloca %struct.dim3, align 8 %shmem_size = alloca i64, align 8 %stream = alloca i8*, align 8 %grid_dim.coerce = alloca { i64, i32 }, align 8 %block_dim.coerce = alloca { i64, i32 }, align 8 store i8* %buffer, i8** %buffer.addr, align 8 store i64 %size, i64* %size.addr, align 8 store i32* %histo, i32** %histo.addr, align 8 %kernel_args = alloca i8*, i64 3, align 16 %0 = bitcast i8** %buffer.addr to i8* %1 = getelementptr i8*, i8** %kernel_args, i32 0 store i8* %0, i8** %1 %2 = bitcast i64* %size.addr to i8* %3 = getelementptr i8*, i8** %kernel_args, i32 1 store i8* %2, i8** %3 %4 = bitcast i32** %histo.addr to i8* %5 = getelementptr i8*, i8** %kernel_args, i32 2 store i8* %4, i8** %5 %6 = call i32 @__cudaPopCallConfiguration(%struct.dim3* %grid_dim, %struct.dim3* %block_dim, i64* %shmem_size, i8** %stream) %7 = load i64, i64* %shmem_size, align 8 %8 = load i8*, i8** %stream, align 8 %9 = bitcast { i64, i32 }* %grid_dim.coerce to i8* %10 = bitcast %struct.dim3* %grid_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 12, i1 false) %11 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 0 %12 = load i64, i64* %11, align 8 %13 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 1 %14 = load i32, i32* %13, align 8 %15 = bitcast { i64, i32 }* %block_dim.coerce to i8* %16 = bitcast %struct.dim3* %block_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %16, i64 12, i1 false) %17 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 0 %18 = load i64, i64* %17, align 8 %19 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 1 %20 = load i32, i32* %19, align 8 %21 = bitcast i8* %8 to %struct.CUstream_st* %call = call i32 @cudaLaunchKernel(i8* bitcast (void (i8*, i64, i32*)* @_Z12histo_kernelPhlPj to i8*), i64 %12, i32 %14, i64 %18, i32 %20, i8** %kernel_args, i64 %7, %struct.CUstream_st* %21) br label %setup.end setup.end: ; preds = %entry ret void } declare dso_local i32 @__cudaPopCallConfiguration(%struct.dim3*, %struct.dim3*, i64*, i8**) declare dso_local i32 @cudaLaunchKernel(i8*, i64, i32, i64, i32, i8**, i64, %struct.CUstream_st*) ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #4 ; Function Attrs: noinline optnone uwtable define dso_local i32 @_Z8runHistoPcPjjS0_(i8* %file, i32* %freq, i32 %memSize, i32* %source) #0 { entry: %file.addr = alloca i8*, align 8 %freq.addr = alloca i32*, align 8 %memSize.addr = alloca i32, align 4 %source.addr = alloca i32*, align 8 %f = alloca %struct._IO_FILE*, align 8 %result = alloca i64, align 8 %buffer = alloca i8*, align 8 %blocks = alloca i32, align 4 %partSize = alloca i32, align 4 %totalNum = alloca i32, align 4 %partialNum = alloca i32, align 4 %dev_buffer0 = alloca i8*, align 8 %dev_buffer1 = alloca i8*, align 8 %dev_histo = alloca i32*, align 8 %i = alloca i32, align 4 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp29 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp29.coerce = alloca { i64, i32 }, align 4 %agg.tmp34 = alloca %struct.dim3, align 4 %agg.tmp36 = alloca %struct.dim3, align 4 %agg.tmp34.coerce = alloca { i64, i32 }, align 4 %agg.tmp36.coerce = alloca { i64, i32 }, align 4 store i8* %file, i8** %file.addr, align 8 store i32* %freq, i32** %freq.addr, align 8 store i32 %memSize, i32* %memSize.addr, align 4 store i32* %source, i32** %source.addr, align 8 %0 = load i8*, i8** %file.addr, align 8 %call = call %struct._IO_FILE* @fopen(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0)) store %struct._IO_FILE* %call, %struct._IO_FILE** %f, align 8 %1 = load %struct._IO_FILE*, %struct._IO_FILE** %f, align 8 %tobool = icmp ne %struct._IO_FILE* %1, null br i1 %tobool, label %if.end, label %if.then if.then: ; preds = %entry %2 = load i8*, i8** %file.addr, align 8 call void @perror(i8* %2) call void @exit(i32 1) #16 unreachable if.end: ; preds = %entry %3 = load %struct._IO_FILE*, %struct._IO_FILE** %f, align 8 %call1 = call i32 @fseek(%struct._IO_FILE* %3, i64 0, i32 0) %4 = load i32*, i32** %source.addr, align 8 %5 = bitcast i32* %4 to i8* %6 = load i32, i32* %memSize.addr, align 4 %conv = zext i32 %6 to i64 %7 = load %struct._IO_FILE*, %struct._IO_FILE** %f, align 8 %call2 = call i64 @fread(i8* %5, i64 1, i64 %conv, %struct._IO_FILE* %7) store i64 %call2, i64* %result, align 8 %8 = load i64, i64* %result, align 8 %9 = load i32, i32* %memSize.addr, align 4 %conv3 = zext i32 %9 to i64 %cmp = icmp ne i64 %8, %conv3 br i1 %cmp, label %if.then4, label %if.end6 if.then4: ; preds = %if.end %10 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %call5 = call i32 @fputs(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.2, i64 0, i64 0), %struct._IO_FILE* %10) br label %if.end6 if.end6: ; preds = %if.then4, %if.end %11 = load %struct._IO_FILE*, %struct._IO_FILE** %f, align 8 %call7 = call i32 @fclose(%struct._IO_FILE* %11) %12 = load i32*, i32** %source.addr, align 8 %13 = bitcast i32* %12 to i8* store i8* %13, i8** %buffer, align 8 store i32 2, i32* %blocks, align 4 %14 = load i32, i32* %memSize.addr, align 4 %div = udiv i32 %14, 32 store i32 %div, i32* %partSize, align 4 %15 = load i32, i32* %memSize.addr, align 4 %conv8 = zext i32 %15 to i64 %div9 = udiv i64 %conv8, 4 %conv10 = trunc i64 %div9 to i32 store i32 %conv10, i32* %totalNum, align 4 %16 = load i32, i32* %partSize, align 4 %conv11 = sext i32 %16 to i64 %div12 = udiv i64 %conv11, 4 %conv13 = trunc i64 %div12 to i32 store i32 %conv13, i32* %partialNum, align 4 %17 = load i32, i32* %partSize, align 4 %conv14 = sext i32 %17 to i64 %call15 = call i32 @cudaMalloc(i8** %dev_buffer0, i64 %conv14) %18 = load i32, i32* %partSize, align 4 %conv16 = sext i32 %18 to i64 %call17 = call i32 @cudaMalloc(i8** %dev_buffer1, i64 %conv16) %19 = bitcast i32** %dev_histo to i8** %call18 = call i32 @cudaMalloc(i8** %19, i64 1024) %20 = load i32*, i32** %dev_histo, align 8 %21 = bitcast i32* %20 to i8* %call19 = call i32 @cudaMemset(i8* %21, i32 0, i64 1024) store i32 0, i32* %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %if.end6 %22 = load i32, i32* %i, align 4 %23 = load i32, i32* %totalNum, align 4 %cmp20 = icmp slt i32 %22, %23 br i1 %cmp20, label %for.body, label %for.end for.body: ; preds = %for.cond %24 = load i8*, i8** %dev_buffer0, align 8 %25 = load i8*, i8** %buffer, align 8 %26 = load i32, i32* %i, align 4 %idx.ext = sext i32 %26 to i64 %add.ptr = getelementptr inbounds i8, i8* %25, i64 %idx.ext %27 = load i32, i32* %partSize, align 4 %conv21 = sext i32 %27 to i64 %call22 = call i32 @cudaMemcpy(i8* %24, i8* %add.ptr, i64 %conv21, i32 1) call void @_Z9gpuAssert9cudaErrorPKcib(i32 %call22, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.3, i64 0, i64 0), i32 88, i1 zeroext true) %28 = load i8*, i8** %dev_buffer1, align 8 %29 = load i8*, i8** %buffer, align 8 %30 = load i32, i32* %i, align 4 %idx.ext23 = sext i32 %30 to i64 %add.ptr24 = getelementptr inbounds i8, i8* %29, i64 %idx.ext23 %31 = load i32, i32* %partialNum, align 4 %idx.ext25 = sext i32 %31 to i64 %add.ptr26 = getelementptr inbounds i8, i8* %add.ptr24, i64 %idx.ext25 %32 = load i32, i32* %partSize, align 4 %conv27 = sext i32 %32 to i64 %call28 = call i32 @cudaMemcpy(i8* %28, i8* %add.ptr26, i64 %conv27, i32 1) call void @_Z9gpuAssert9cudaErrorPKcib(i32 %call28, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.3, i64 0, i64 0), i32 90, i1 zeroext true) %33 = load i32, i32* %blocks, align 4 %mul = mul nsw i32 %33, 2 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp, i32 %mul, i32 1, i32 1) call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp29, i32 256, i32 1, i32 1) %34 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %35 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %34, i8* align 4 %35, i64 12, i1 false) %36 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %37 = load i64, i64* %36, align 4 %38 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %39 = load i32, i32* %38, align 4 %40 = bitcast { i64, i32 }* %agg.tmp29.coerce to i8* %41 = bitcast %struct.dim3* %agg.tmp29 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %40, i8* align 4 %41, i64 12, i1 false) %42 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp29.coerce, i32 0, i32 0 %43 = load i64, i64* %42, align 4 %44 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp29.coerce, i32 0, i32 1 %45 = load i32, i32* %44, align 4 %call30 = call i32 @__cudaPushCallConfiguration(i64 %37, i32 %39, i64 %43, i32 %45, i64 0, i8* null) %tobool31 = icmp ne i32 %call30, 0 br i1 %tobool31, label %kcall.end, label %kcall.configok kcall.configok: ; preds = %for.body %46 = load i8*, i8** %dev_buffer0, align 8 %47 = load i32, i32* %partSize, align 4 %conv32 = sext i32 %47 to i64 %48 = load i32*, i32** %dev_histo, align 8 call void @_Z12histo_kernelPhlPj(i8* %46, i64 %conv32, i32* %48) br label %kcall.end kcall.end: ; preds = %kcall.configok, %for.body %call33 = call i32 @cudaDeviceSynchronize() %49 = load i32, i32* %blocks, align 4 %mul35 = mul nsw i32 %49, 2 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp34, i32 %mul35, i32 1, i32 1) call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp36, i32 256, i32 1, i32 1) %50 = bitcast { i64, i32 }* %agg.tmp34.coerce to i8* %51 = bitcast %struct.dim3* %agg.tmp34 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %50, i8* align 4 %51, i64 12, i1 false) %52 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp34.coerce, i32 0, i32 0 %53 = load i64, i64* %52, align 4 %54 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp34.coerce, i32 0, i32 1 %55 = load i32, i32* %54, align 4 %56 = bitcast { i64, i32 }* %agg.tmp36.coerce to i8* %57 = bitcast %struct.dim3* %agg.tmp36 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %56, i8* align 4 %57, i64 12, i1 false) %58 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp36.coerce, i32 0, i32 0 %59 = load i64, i64* %58, align 4 %60 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp36.coerce, i32 0, i32 1 %61 = load i32, i32* %60, align 4 %call37 = call i32 @__cudaPushCallConfiguration(i64 %53, i32 %55, i64 %59, i32 %61, i64 0, i8* null) %tobool38 = icmp ne i32 %call37, 0 br i1 %tobool38, label %kcall.end41, label %kcall.configok39 kcall.configok39: ; preds = %kcall.end %62 = load i8*, i8** %dev_buffer1, align 8 %63 = load i32, i32* %partSize, align 4 %conv40 = sext i32 %63 to i64 %64 = load i32*, i32** %dev_histo, align 8 call void @_Z12histo_kernelPhlPj(i8* %62, i64 %conv40, i32* %64) br label %kcall.end41 kcall.end41: ; preds = %kcall.configok39, %kcall.end %call42 = call i32 @cudaDeviceSynchronize() br label %for.inc for.inc: ; preds = %kcall.end41 %65 = load i32, i32* %partialNum, align 4 %mul43 = mul nsw i32 %65, 2 %66 = load i32, i32* %i, align 4 %add = add nsw i32 %66, %mul43 store i32 %add, i32* %i, align 4 br label %for.cond for.end: ; preds = %for.cond %67 = load i32*, i32** %freq.addr, align 8 %68 = bitcast i32* %67 to i8* %69 = load i32*, i32** %dev_histo, align 8 %70 = bitcast i32* %69 to i8* %call44 = call i32 @cudaMemcpy(i8* %68, i8* %70, i64 1024, i32 2) %71 = load i32*, i32** %dev_histo, align 8 %72 = bitcast i32* %71 to i8* %call45 = call i32 @cudaFree(i8* %72) %73 = load i8*, i8** %dev_buffer0, align 8 %call46 = call i32 @cudaFree(i8* %73) %74 = load i8*, i8** %dev_buffer1, align 8 %call47 = call i32 @cudaFree(i8* %74) ret i32 0 } declare dso_local %struct._IO_FILE* @fopen(i8*, i8*) #1 declare dso_local void @perror(i8*) #1 ; Function Attrs: noreturn nounwind declare dso_local void @exit(i32) #5 declare dso_local i32 @fseek(%struct._IO_FILE*, i64, i32) #1 declare dso_local i64 @fread(i8*, i64, i64, %struct._IO_FILE*) #1 declare dso_local i32 @fputs(i8*, %struct._IO_FILE*) #1 declare dso_local i32 @fclose(%struct._IO_FILE*) #1 declare dso_local i32 @cudaMalloc(i8**, i64) #1 declare dso_local i32 @cudaMemset(i8*, i32, i64) #1 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_Z9gpuAssert9cudaErrorPKcib(i32 %code, i8* %file, i32 %line, i1 zeroext %abort) #0 comdat { entry: %code.addr = alloca i32, align 4 %file.addr = alloca i8*, align 8 %line.addr = alloca i32, align 4 %abort.addr = alloca i8, align 1 store i32 %code, i32* %code.addr, align 4 store i8* %file, i8** %file.addr, align 8 store i32 %line, i32* %line.addr, align 4 %frombool = zext i1 %abort to i8 store i8 %frombool, i8* %abort.addr, align 1 %0 = load i32, i32* %code.addr, align 4 %cmp = icmp ne i32 %0, 0 br i1 %cmp, label %if.then, label %if.end3 if.then: ; preds = %entry %1 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %2 = load i32, i32* %code.addr, align 4 %call = call i8* @cudaGetErrorString(i32 %2) %3 = load i8*, i8** %file.addr, align 8 %4 = load i32, i32* %line.addr, align 4 %call1 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %1, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.13, i64 0, i64 0), i8* %call, i8* %3, i32 %4) %5 = load i8, i8* %abort.addr, align 1 %tobool = trunc i8 %5 to i1 br i1 %tobool, label %if.then2, label %if.end if.then2: ; preds = %if.then %6 = load i32, i32* %code.addr, align 4 call void @exit(i32 %6) #16 unreachable if.end: ; preds = %if.then br label %if.end3 if.end3: ; preds = %if.end, %entry ret void } declare dso_local i32 @cudaMemcpy(i8*, i8*, i64, i32) #1 declare dso_local i32 @__cudaPushCallConfiguration(i64, i32, i64, i32, i64, i8*) #1 ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN4dim3C2Ejjj(%struct.dim3* %this, i32 %vx, i32 %vy, i32 %vz) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %struct.dim3*, align 8 %vx.addr = alloca i32, align 4 %vy.addr = alloca i32, align 4 %vz.addr = alloca i32, align 4 store %struct.dim3* %this, %struct.dim3** %this.addr, align 8 store i32 %vx, i32* %vx.addr, align 4 store i32 %vy, i32* %vy.addr, align 4 store i32 %vz, i32* %vz.addr, align 4 %this1 = load %struct.dim3*, %struct.dim3** %this.addr, align 8 %x = getelementptr inbounds %struct.dim3, %struct.dim3* %this1, i32 0, i32 0 %0 = load i32, i32* %vx.addr, align 4 store i32 %0, i32* %x, align 4 %y = getelementptr inbounds %struct.dim3, %struct.dim3* %this1, i32 0, i32 1 %1 = load i32, i32* %vy.addr, align 4 store i32 %1, i32* %y, align 4 %z = getelementptr inbounds %struct.dim3, %struct.dim3* %this1, i32 0, i32 2 %2 = load i32, i32* %vz.addr, align 4 store i32 %2, i32* %z, align 4 ret void } declare dso_local i32 @cudaDeviceSynchronize() #1 declare dso_local i32 @cudaFree(i8*) #1 ; Function Attrs: noinline optnone uwtable define dso_local void @_Z9printBitsji(i32 %val, i32 %numbits) #0 { entry: %val.addr = alloca i32, align 4 %numbits.addr = alloca i32, align 4 %i = alloca i32, align 4 store i32 %val, i32* %val.addr, align 4 store i32 %numbits, i32* %numbits.addr, align 4 %0 = load i32, i32* %numbits.addr, align 4 %sub = sub nsw i32 %0, 1 store i32 %sub, i32* %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %1 = load i32, i32* %i, align 4 %cmp = icmp sge i32 %1, 0 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load i32, i32* %val.addr, align 4 %3 = load i32, i32* %i, align 4 %shr = lshr i32 %2, %3 %and = and i32 %shr, 1 %add = add i32 48, %and %call = call i32 @putchar(i32 %add) br label %for.inc for.inc: ; preds = %for.body %4 = load i32, i32* %i, align 4 %dec = add nsw i32 %4, -1 store i32 %dec, i32* %i, align 4 br label %for.cond for.end: ; preds = %for.cond ret void } declare dso_local i32 @putchar(i32) #1 ; Function Attrs: noinline optnone uwtable define dso_local %class.INode* @_Z9BuildTreeRA256_j([256 x i32]* dereferenceable(1024) %frequencies) #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %frequencies.addr = alloca [256 x i32]*, align 8 %trees = alloca %"class.std::priority_queue", align 8 %ref.tmp = alloca %struct.NodeCmp, align 1 %ref.tmp1 = alloca %"class.std::vector", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %i = alloca i32, align 4 %ref.tmp4 = alloca %class.INode*, align 8 %childR = alloca %class.INode*, align 8 %childL = alloca %class.INode*, align 8 %parent = alloca %class.INode*, align 8 store [256 x i32]* %frequencies, [256 x i32]** %frequencies.addr, align 8 call void @_ZNSt6vectorIP5INodeSaIS1_EEC2Ev(%"class.std::vector"* %ref.tmp1) invoke void @_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpEC2ERKS5_RKS4_(%"class.std::priority_queue"* %trees, %struct.NodeCmp* dereferenceable(1) %ref.tmp, %"class.std::vector"* dereferenceable(24) %ref.tmp1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void @_ZNSt6vectorIP5INodeSaIS1_EED2Ev(%"class.std::vector"* %ref.tmp1) store i32 0, i32* %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %invoke.cont %0 = load i32, i32* %i, align 4 %cmp = icmp slt i32 %0, 256 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %1 = load [256 x i32]*, [256 x i32]** %frequencies.addr, align 8 %2 = load i32, i32* %i, align 4 %idxprom = sext i32 %2 to i64 %arrayidx = getelementptr inbounds [256 x i32], [256 x i32]* %1, i64 0, i64 %idxprom %3 = load i32, i32* %arrayidx, align 4 %cmp3 = icmp ne i32 %3, 0 br i1 %cmp3, label %if.then, label %if.end if.then: ; preds = %for.body %call = invoke i8* @_Znwm(i64 16) #17 to label %invoke.cont6 unwind label %lpad5 invoke.cont6: ; preds = %if.then %4 = bitcast i8* %call to %class.LeafNode* %5 = load [256 x i32]*, [256 x i32]** %frequencies.addr, align 8 %6 = load i32, i32* %i, align 4 %idxprom7 = sext i32 %6 to i64 %arrayidx8 = getelementptr inbounds [256 x i32], [256 x i32]* %5, i64 0, i64 %idxprom7 %7 = load i32, i32* %arrayidx8, align 4 %8 = load i32, i32* %i, align 4 %conv = trunc i32 %8 to i8 invoke void @_ZN8LeafNodeC2Eic(%class.LeafNode* %4, i32 %7, i8 signext %conv) to label %invoke.cont10 unwind label %lpad9 invoke.cont10: ; preds = %invoke.cont6 %9 = bitcast %class.LeafNode* %4 to %class.INode* store %class.INode* %9, %class.INode** %ref.tmp4, align 8 invoke void @_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE4pushERKS1_(%"class.std::priority_queue"* %trees, %class.INode** dereferenceable(8) %ref.tmp4) to label %invoke.cont11 unwind label %lpad5 invoke.cont11: ; preds = %invoke.cont10 br label %if.end lpad: ; preds = %entry %10 = landingpad { i8*, i32 } cleanup %11 = extractvalue { i8*, i32 } %10, 0 store i8* %11, i8** %exn.slot, align 8 %12 = extractvalue { i8*, i32 } %10, 1 store i32 %12, i32* %ehselector.slot, align 4 invoke void @_ZNSt6vectorIP5INodeSaIS1_EED2Ev(%"class.std::vector"* %ref.tmp1) to label %invoke.cont2 unwind label %terminate.lpad invoke.cont2: ; preds = %lpad br label %eh.resume lpad5: ; preds = %while.end, %invoke.cont24, %invoke.cont20, %invoke.cont18, %invoke.cont17, %invoke.cont15, %while.body, %while.cond, %invoke.cont10, %if.then %13 = landingpad { i8*, i32 } cleanup %14 = extractvalue { i8*, i32 } %13, 0 store i8* %14, i8** %exn.slot, align 8 %15 = extractvalue { i8*, i32 } %13, 1 store i32 %15, i32* %ehselector.slot, align 4 br label %ehcleanup lpad9: ; preds = %invoke.cont6 %16 = landingpad { i8*, i32 } cleanup %17 = extractvalue { i8*, i32 } %16, 0 store i8* %17, i8** %exn.slot, align 8 %18 = extractvalue { i8*, i32 } %16, 1 store i32 %18, i32* %ehselector.slot, align 4 call void @_ZdlPv(i8* %call) #18 br label %ehcleanup if.end: ; preds = %invoke.cont11, %for.body br label %for.inc for.inc: ; preds = %if.end %19 = load i32, i32* %i, align 4 %inc = add nsw i32 %19, 1 store i32 %inc, i32* %i, align 4 br label %for.cond for.end: ; preds = %for.cond br label %while.cond while.cond: ; preds = %invoke.cont25, %for.end %call13 = invoke i64 @_ZNKSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE4sizeEv(%"class.std::priority_queue"* %trees) to label %invoke.cont12 unwind label %lpad5 invoke.cont12: ; preds = %while.cond %cmp14 = icmp ugt i64 %call13, 1 br i1 %cmp14, label %while.body, label %while.end while.body: ; preds = %invoke.cont12 %call16 = invoke dereferenceable(8) %class.INode** @_ZNKSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE3topEv(%"class.std::priority_queue"* %trees) to label %invoke.cont15 unwind label %lpad5 invoke.cont15: ; preds = %while.body %20 = load %class.INode*, %class.INode** %call16, align 8 store %class.INode* %20, %class.INode** %childR, align 8 invoke void @_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE3popEv(%"class.std::priority_queue"* %trees) to label %invoke.cont17 unwind label %lpad5 invoke.cont17: ; preds = %invoke.cont15 %call19 = invoke dereferenceable(8) %class.INode** @_ZNKSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE3topEv(%"class.std::priority_queue"* %trees) to label %invoke.cont18 unwind label %lpad5 invoke.cont18: ; preds = %invoke.cont17 %21 = load %class.INode*, %class.INode** %call19, align 8 store %class.INode* %21, %class.INode** %childL, align 8 invoke void @_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE3popEv(%"class.std::priority_queue"* %trees) to label %invoke.cont20 unwind label %lpad5 invoke.cont20: ; preds = %invoke.cont18 %call22 = invoke i8* @_Znwm(i64 32) #17 to label %invoke.cont21 unwind label %lpad5 invoke.cont21: ; preds = %invoke.cont20 %22 = bitcast i8* %call22 to %class.InternalNode* %23 = load %class.INode*, %class.INode** %childR, align 8 %24 = load %class.INode*, %class.INode** %childL, align 8 invoke void @_ZN12InternalNodeC2EP5INodeS1_(%class.InternalNode* %22, %class.INode* %23, %class.INode* %24) to label %invoke.cont24 unwind label %lpad23 invoke.cont24: ; preds = %invoke.cont21 %25 = bitcast %class.InternalNode* %22 to %class.INode* store %class.INode* %25, %class.INode** %parent, align 8 invoke void @_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE4pushERKS1_(%"class.std::priority_queue"* %trees, %class.INode** dereferenceable(8) %parent) to label %invoke.cont25 unwind label %lpad5 invoke.cont25: ; preds = %invoke.cont24 br label %while.cond lpad23: ; preds = %invoke.cont21 %26 = landingpad { i8*, i32 } cleanup %27 = extractvalue { i8*, i32 } %26, 0 store i8* %27, i8** %exn.slot, align 8 %28 = extractvalue { i8*, i32 } %26, 1 store i32 %28, i32* %ehselector.slot, align 4 call void @_ZdlPv(i8* %call22) #18 br label %ehcleanup while.end: ; preds = %invoke.cont12 %call27 = invoke dereferenceable(8) %class.INode** @_ZNKSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE3topEv(%"class.std::priority_queue"* %trees) to label %invoke.cont26 unwind label %lpad5 invoke.cont26: ; preds = %while.end %29 = load %class.INode*, %class.INode** %call27, align 8 call void @_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpED2Ev(%"class.std::priority_queue"* %trees) ret %class.INode* %29 ehcleanup: ; preds = %lpad23, %lpad9, %lpad5 invoke void @_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpED2Ev(%"class.std::priority_queue"* %trees) to label %invoke.cont28 unwind label %terminate.lpad invoke.cont28: ; preds = %ehcleanup br label %eh.resume eh.resume: ; preds = %invoke.cont28, %invoke.cont2 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val29 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val29 terminate.lpad: ; preds = %ehcleanup, %lpad %30 = landingpad { i8*, i32 } catch i8* null %31 = extractvalue { i8*, i32 } %30, 0 call void @__clang_call_terminate(i8* %31) #16 unreachable } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorIP5INodeSaIS1_EEC2Ev(%"class.std::vector"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* call void @_ZNSt12_Vector_baseIP5INodeSaIS1_EEC2Ev(%"struct.std::_Vector_base"* %0) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpEC2ERKS5_RKS4_(%"class.std::priority_queue"* %this, %struct.NodeCmp* dereferenceable(1) %__x, %"class.std::vector"* dereferenceable(24) %__s) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::priority_queue"*, align 8 %__x.addr = alloca %struct.NodeCmp*, align 8 %__s.addr = alloca %"class.std::vector"*, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp3 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp8 = alloca %struct.NodeCmp, align 1 store %"class.std::priority_queue"* %this, %"class.std::priority_queue"** %this.addr, align 8 store %struct.NodeCmp* %__x, %struct.NodeCmp** %__x.addr, align 8 store %"class.std::vector"* %__s, %"class.std::vector"** %__s.addr, align 8 %this1 = load %"class.std::priority_queue"*, %"class.std::priority_queue"** %this.addr, align 8 %c = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 0 %0 = load %"class.std::vector"*, %"class.std::vector"** %__s.addr, align 8 call void @_ZNSt6vectorIP5INodeSaIS1_EEC2ERKS3_(%"class.std::vector"* %c, %"class.std::vector"* dereferenceable(24) %0) %comp = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 1 %1 = load %struct.NodeCmp*, %struct.NodeCmp** %__x.addr, align 8 %c2 = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 0 %call = invoke %class.INode** @_ZNSt6vectorIP5INodeSaIS1_EE5beginEv(%"class.std::vector"* %c2) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 store %class.INode** %call, %class.INode*** %coerce.dive, align 8 %c4 = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 0 %call6 = invoke %class.INode** @_ZNSt6vectorIP5INodeSaIS1_EE3endEv(%"class.std::vector"* %c4) to label %invoke.cont5 unwind label %lpad invoke.cont5: ; preds = %invoke.cont %coerce.dive7 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp3, i32 0, i32 0 store %class.INode** %call6, %class.INode*** %coerce.dive7, align 8 %comp9 = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 1 %coerce.dive10 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 %2 = load %class.INode**, %class.INode*** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp3, i32 0, i32 0 %3 = load %class.INode**, %class.INode*** %coerce.dive11, align 8 invoke void @_ZSt9make_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEE7NodeCmpEvT_SA_T0_(%class.INode** %2, %class.INode** %3) to label %invoke.cont12 unwind label %lpad invoke.cont12: ; preds = %invoke.cont5 ret void lpad: ; preds = %invoke.cont5, %invoke.cont, %entry %4 = landingpad { i8*, i32 } cleanup %5 = extractvalue { i8*, i32 } %4, 0 store i8* %5, i8** %exn.slot, align 8 %6 = extractvalue { i8*, i32 } %4, 1 store i32 %6, i32* %ehselector.slot, align 4 invoke void @_ZNSt6vectorIP5INodeSaIS1_EED2Ev(%"class.std::vector"* %c) to label %invoke.cont13 unwind label %terminate.lpad invoke.cont13: ; preds = %lpad br label %eh.resume eh.resume: ; preds = %invoke.cont13 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val14 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val14 terminate.lpad: ; preds = %lpad %7 = landingpad { i8*, i32 } catch i8* null %8 = extractvalue { i8*, i32 } %7, 0 call void @__clang_call_terminate(i8* %8) #16 unreachable } declare dso_local i32 @__gxx_personality_v0(...) ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorIP5INodeSaIS1_EED2Ev(%"class.std::vector"* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::vector"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 %1 = load %class.INode**, %class.INode*** %_M_start, align 8 %2 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %2, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 1 %3 = load %class.INode**, %class.INode*** %_M_finish, align 8 %4 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call = invoke dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseIP5INodeSaIS1_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %4) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_ZSt8_DestroyIPP5INodeS1_EvT_S3_RSaIT0_E(%class.INode** %1, %class.INode** %3, %"class.std::allocator"* dereferenceable(1) %call) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont %5 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* call void @_ZNSt12_Vector_baseIP5INodeSaIS1_EED2Ev(%"struct.std::_Vector_base"* %5) ret void lpad: ; preds = %invoke.cont, %entry %6 = landingpad { i8*, i32 } cleanup %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 %9 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* invoke void @_ZNSt12_Vector_baseIP5INodeSaIS1_EED2Ev(%"struct.std::_Vector_base"* %9) to label %invoke.cont4 unwind label %terminate.lpad invoke.cont4: ; preds = %lpad br label %eh.resume eh.resume: ; preds = %invoke.cont4 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val5 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val5 terminate.lpad: ; preds = %lpad %10 = landingpad { i8*, i32 } catch i8* null %11 = extractvalue { i8*, i32 } %10, 0 call void @__clang_call_terminate(i8* %11) #16 unreachable } ; Function Attrs: noinline noreturn nounwind define linkonce_odr hidden void @__clang_call_terminate(i8* %0) #7 comdat { %2 = call i8* @__cxa_begin_catch(i8* %0) #3 call void @_ZSt9terminatev() #16 unreachable } declare dso_local i8* @__cxa_begin_catch(i8*) declare dso_local void @_ZSt9terminatev() ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE4pushERKS1_(%"class.std::priority_queue"* %this, %class.INode** dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::priority_queue"*, align 8 %__x.addr = alloca %class.INode**, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp3 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp7 = alloca %struct.NodeCmp, align 1 store %"class.std::priority_queue"* %this, %"class.std::priority_queue"** %this.addr, align 8 store %class.INode** %__x, %class.INode*** %__x.addr, align 8 %this1 = load %"class.std::priority_queue"*, %"class.std::priority_queue"** %this.addr, align 8 %c = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 0 %0 = load %class.INode**, %class.INode*** %__x.addr, align 8 call void @_ZNSt6vectorIP5INodeSaIS1_EE9push_backERKS1_(%"class.std::vector"* %c, %class.INode** dereferenceable(8) %0) %c2 = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 0 %call = call %class.INode** @_ZNSt6vectorIP5INodeSaIS1_EE5beginEv(%"class.std::vector"* %c2) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 store %class.INode** %call, %class.INode*** %coerce.dive, align 8 %c4 = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 0 %call5 = call %class.INode** @_ZNSt6vectorIP5INodeSaIS1_EE3endEv(%"class.std::vector"* %c4) %coerce.dive6 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp3, i32 0, i32 0 store %class.INode** %call5, %class.INode*** %coerce.dive6, align 8 %comp = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 1 %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 %1 = load %class.INode**, %class.INode*** %coerce.dive8, align 8 %coerce.dive9 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp3, i32 0, i32 0 %2 = load %class.INode**, %class.INode*** %coerce.dive9, align 8 call void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEE7NodeCmpEvT_SA_T0_(%class.INode** %1, %class.INode** %2) ret void } ; Function Attrs: nobuiltin declare dso_local noalias i8* @_Znwm(i64) #8 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN8LeafNodeC2Eic(%class.LeafNode* %this, i32 %f, i8 signext %c) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %class.LeafNode*, align 8 %f.addr = alloca i32, align 4 %c.addr = alloca i8, align 1 store %class.LeafNode* %this, %class.LeafNode** %this.addr, align 8 store i32 %f, i32* %f.addr, align 4 store i8 %c, i8* %c.addr, align 1 %this1 = load %class.LeafNode*, %class.LeafNode** %this.addr, align 8 %0 = bitcast %class.LeafNode* %this1 to %class.INode* %1 = load i32, i32* %f.addr, align 4 call void @_ZN5INodeC2Ei(%class.INode* %0, i32 %1) %2 = bitcast %class.LeafNode* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [4 x i8*] }, { [4 x i8*] }* @_ZTV8LeafNode, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %2, align 8 %c2 = getelementptr inbounds %class.LeafNode, %class.LeafNode* %this1, i32 0, i32 1 %3 = load i8, i8* %c.addr, align 1 store i8 %3, i8* %c2, align 4 ret void } ; Function Attrs: nobuiltin nounwind declare dso_local void @_ZdlPv(i8*) #9 ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE4sizeEv(%"class.std::priority_queue"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.std::priority_queue"*, align 8 store %"class.std::priority_queue"* %this, %"class.std::priority_queue"** %this.addr, align 8 %this1 = load %"class.std::priority_queue"*, %"class.std::priority_queue"** %this.addr, align 8 %c = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 0 %call = call i64 @_ZNKSt6vectorIP5INodeSaIS1_EE4sizeEv(%"class.std::vector"* %c) ret i64 %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local dereferenceable(8) %class.INode** @_ZNKSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE3topEv(%"class.std::priority_queue"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::priority_queue"*, align 8 store %"class.std::priority_queue"* %this, %"class.std::priority_queue"** %this.addr, align 8 %this1 = load %"class.std::priority_queue"*, %"class.std::priority_queue"** %this.addr, align 8 %c = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 0 %call = call dereferenceable(8) %class.INode** @_ZNKSt6vectorIP5INodeSaIS1_EE5frontEv(%"class.std::vector"* %c) ret %class.INode** %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpE3popEv(%"class.std::priority_queue"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::priority_queue"*, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp2 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp6 = alloca %struct.NodeCmp, align 1 store %"class.std::priority_queue"* %this, %"class.std::priority_queue"** %this.addr, align 8 %this1 = load %"class.std::priority_queue"*, %"class.std::priority_queue"** %this.addr, align 8 %c = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 0 %call = call %class.INode** @_ZNSt6vectorIP5INodeSaIS1_EE5beginEv(%"class.std::vector"* %c) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 store %class.INode** %call, %class.INode*** %coerce.dive, align 8 %c3 = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 0 %call4 = call %class.INode** @_ZNSt6vectorIP5INodeSaIS1_EE3endEv(%"class.std::vector"* %c3) %coerce.dive5 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp2, i32 0, i32 0 store %class.INode** %call4, %class.INode*** %coerce.dive5, align 8 %comp = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 1 %coerce.dive7 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 %0 = load %class.INode**, %class.INode*** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp2, i32 0, i32 0 %1 = load %class.INode**, %class.INode*** %coerce.dive8, align 8 call void @_ZSt8pop_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEE7NodeCmpEvT_SA_T0_(%class.INode** %0, %class.INode** %1) %c9 = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 0 call void @_ZNSt6vectorIP5INodeSaIS1_EE8pop_backEv(%"class.std::vector"* %c9) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN12InternalNodeC2EP5INodeS1_(%class.InternalNode* %this, %class.INode* %c0, %class.INode* %c1) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %class.InternalNode*, align 8 %c0.addr = alloca %class.INode*, align 8 %c1.addr = alloca %class.INode*, align 8 store %class.InternalNode* %this, %class.InternalNode** %this.addr, align 8 store %class.INode* %c0, %class.INode** %c0.addr, align 8 store %class.INode* %c1, %class.INode** %c1.addr, align 8 %this1 = load %class.InternalNode*, %class.InternalNode** %this.addr, align 8 %0 = bitcast %class.InternalNode* %this1 to %class.INode* %1 = load %class.INode*, %class.INode** %c0.addr, align 8 %f = getelementptr inbounds %class.INode, %class.INode* %1, i32 0, i32 1 %2 = load i32, i32* %f, align 8 %3 = load %class.INode*, %class.INode** %c1.addr, align 8 %f2 = getelementptr inbounds %class.INode, %class.INode* %3, i32 0, i32 1 %4 = load i32, i32* %f2, align 8 %add = add nsw i32 %2, %4 call void @_ZN5INodeC2Ei(%class.INode* %0, i32 %add) %5 = bitcast %class.InternalNode* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [4 x i8*] }, { [4 x i8*] }* @_ZTV12InternalNode, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %5, align 8 %left = getelementptr inbounds %class.InternalNode, %class.InternalNode* %this1, i32 0, i32 1 %6 = load %class.INode*, %class.INode** %c0.addr, align 8 store %class.INode* %6, %class.INode** %left, align 8 %right = getelementptr inbounds %class.InternalNode, %class.InternalNode* %this1, i32 0, i32 2 %7 = load %class.INode*, %class.INode** %c1.addr, align 8 store %class.INode* %7, %class.INode** %right, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt14priority_queueIP5INodeSt6vectorIS1_SaIS1_EE7NodeCmpED2Ev(%"class.std::priority_queue"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.std::priority_queue"*, align 8 store %"class.std::priority_queue"* %this, %"class.std::priority_queue"** %this.addr, align 8 %this1 = load %"class.std::priority_queue"*, %"class.std::priority_queue"** %this.addr, align 8 %c = getelementptr inbounds %"class.std::priority_queue", %"class.std::priority_queue"* %this1, i32 0, i32 0 call void @_ZNSt6vectorIP5INodeSaIS1_EED2Ev(%"class.std::vector"* %c) ret void } ; Function Attrs: noinline optnone uwtable define dso_local void @_Z13GenerateCodesPK5INodeRKSt6vectorIbSaIbEERSt3mapIhS4_St4lessIhESaISt4pairIKhS4_EEE(%class.INode* %node, %"class.std::vector.0"* dereferenceable(40) %prefix, %"class.std::map"* dereferenceable(48) %outCodes) #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %node.addr = alloca %class.INode*, align 8 %prefix.addr = alloca %"class.std::vector.0"*, align 8 %outCodes.addr = alloca %"class.std::map"*, align 8 %lf = alloca %class.LeafNode*, align 8 %ref.tmp = alloca i8, align 1 %in = alloca %class.InternalNode*, align 8 %leftPrefix = alloca %"class.std::vector.0", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %rightPrefix = alloca %"class.std::vector.0", align 8 store %class.INode* %node, %class.INode** %node.addr, align 8 store %"class.std::vector.0"* %prefix, %"class.std::vector.0"** %prefix.addr, align 8 store %"class.std::map"* %outCodes, %"class.std::map"** %outCodes.addr, align 8 %0 = load %class.INode*, %class.INode** %node.addr, align 8 %1 = icmp eq %class.INode* %0, null br i1 %1, label %dynamic_cast.null, label %dynamic_cast.notnull dynamic_cast.notnull: ; preds = %entry %2 = bitcast %class.INode* %0 to i8* %3 = call i8* @__dynamic_cast(i8* %2, i8* bitcast ({ i8*, i8* }* @_ZTI5INode to i8*), i8* bitcast ({ i8*, i8*, i8* }* @_ZTI8LeafNode to i8*), i64 0) #3 %4 = bitcast i8* %3 to %class.LeafNode* br label %dynamic_cast.end dynamic_cast.null: ; preds = %entry br label %dynamic_cast.end dynamic_cast.end: ; preds = %dynamic_cast.null, %dynamic_cast.notnull %5 = phi %class.LeafNode* [ %4, %dynamic_cast.notnull ], [ null, %dynamic_cast.null ] store %class.LeafNode* %5, %class.LeafNode** %lf, align 8 %6 = load %class.LeafNode*, %class.LeafNode** %lf, align 8 %tobool = icmp ne %class.LeafNode* %6, null br i1 %tobool, label %if.then, label %if.else if.then: ; preds = %dynamic_cast.end %7 = load %"class.std::vector.0"*, %"class.std::vector.0"** %prefix.addr, align 8 %8 = load %"class.std::map"*, %"class.std::map"** %outCodes.addr, align 8 %9 = load %class.LeafNode*, %class.LeafNode** %lf, align 8 %c = getelementptr inbounds %class.LeafNode, %class.LeafNode* %9, i32 0, i32 1 %10 = load i8, i8* %c, align 4 store i8 %10, i8* %ref.tmp, align 1 %call = call dereferenceable(40) %"class.std::vector.0"* @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEEixERS6_(%"class.std::map"* %8, i8* dereferenceable(1) %ref.tmp) %call1 = call dereferenceable(40) %"class.std::vector.0"* @_ZNSt6vectorIbSaIbEEaSERKS1_(%"class.std::vector.0"* %call, %"class.std::vector.0"* dereferenceable(40) %7) br label %if.end15 if.else: ; preds = %dynamic_cast.end %11 = load %class.INode*, %class.INode** %node.addr, align 8 %12 = icmp eq %class.INode* %11, null br i1 %12, label %dynamic_cast.null3, label %dynamic_cast.notnull2 dynamic_cast.notnull2: ; preds = %if.else %13 = bitcast %class.INode* %11 to i8* %14 = call i8* @__dynamic_cast(i8* %13, i8* bitcast ({ i8*, i8* }* @_ZTI5INode to i8*), i8* bitcast ({ i8*, i8*, i8* }* @_ZTI12InternalNode to i8*), i64 0) #3 %15 = bitcast i8* %14 to %class.InternalNode* br label %dynamic_cast.end4 dynamic_cast.null3: ; preds = %if.else br label %dynamic_cast.end4 dynamic_cast.end4: ; preds = %dynamic_cast.null3, %dynamic_cast.notnull2 %16 = phi %class.InternalNode* [ %15, %dynamic_cast.notnull2 ], [ null, %dynamic_cast.null3 ] store %class.InternalNode* %16, %class.InternalNode** %in, align 8 %17 = load %class.InternalNode*, %class.InternalNode** %in, align 8 %tobool5 = icmp ne %class.InternalNode* %17, null br i1 %tobool5, label %if.then6, label %if.end if.then6: ; preds = %dynamic_cast.end4 %18 = load %"class.std::vector.0"*, %"class.std::vector.0"** %prefix.addr, align 8 call void @_ZNSt6vectorIbSaIbEEC2ERKS1_(%"class.std::vector.0"* %leftPrefix, %"class.std::vector.0"* dereferenceable(40) %18) invoke void @_ZNSt6vectorIbSaIbEE9push_backEb(%"class.std::vector.0"* %leftPrefix, i1 zeroext false) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then6 %19 = load %class.InternalNode*, %class.InternalNode** %in, align 8 %left = getelementptr inbounds %class.InternalNode, %class.InternalNode* %19, i32 0, i32 1 %20 = load %class.INode*, %class.INode** %left, align 8 %21 = load %"class.std::map"*, %"class.std::map"** %outCodes.addr, align 8 invoke void @_Z13GenerateCodesPK5INodeRKSt6vectorIbSaIbEERSt3mapIhS4_St4lessIhESaISt4pairIKhS4_EEE(%class.INode* %20, %"class.std::vector.0"* dereferenceable(40) %leftPrefix, %"class.std::map"* dereferenceable(48) %21) to label %invoke.cont7 unwind label %lpad invoke.cont7: ; preds = %invoke.cont %22 = load %"class.std::vector.0"*, %"class.std::vector.0"** %prefix.addr, align 8 invoke void @_ZNSt6vectorIbSaIbEEC2ERKS1_(%"class.std::vector.0"* %rightPrefix, %"class.std::vector.0"* dereferenceable(40) %22) to label %invoke.cont8 unwind label %lpad invoke.cont8: ; preds = %invoke.cont7 invoke void @_ZNSt6vectorIbSaIbEE9push_backEb(%"class.std::vector.0"* %rightPrefix, i1 zeroext true) to label %invoke.cont10 unwind label %lpad9 invoke.cont10: ; preds = %invoke.cont8 %23 = load %class.InternalNode*, %class.InternalNode** %in, align 8 %right = getelementptr inbounds %class.InternalNode, %class.InternalNode* %23, i32 0, i32 2 %24 = load %class.INode*, %class.INode** %right, align 8 %25 = load %"class.std::map"*, %"class.std::map"** %outCodes.addr, align 8 invoke void @_Z13GenerateCodesPK5INodeRKSt6vectorIbSaIbEERSt3mapIhS4_St4lessIhESaISt4pairIKhS4_EEE(%class.INode* %24, %"class.std::vector.0"* dereferenceable(40) %rightPrefix, %"class.std::map"* dereferenceable(48) %25) to label %invoke.cont11 unwind label %lpad9 invoke.cont11: ; preds = %invoke.cont10 invoke void @_ZNSt6vectorIbSaIbEED2Ev(%"class.std::vector.0"* %rightPrefix) to label %invoke.cont12 unwind label %lpad invoke.cont12: ; preds = %invoke.cont11 call void @_ZNSt6vectorIbSaIbEED2Ev(%"class.std::vector.0"* %leftPrefix) br label %if.end lpad: ; preds = %invoke.cont11, %invoke.cont7, %invoke.cont, %if.then6 %26 = landingpad { i8*, i32 } cleanup %27 = extractvalue { i8*, i32 } %26, 0 store i8* %27, i8** %exn.slot, align 8 %28 = extractvalue { i8*, i32 } %26, 1 store i32 %28, i32* %ehselector.slot, align 4 br label %ehcleanup lpad9: ; preds = %invoke.cont10, %invoke.cont8 %29 = landingpad { i8*, i32 } cleanup %30 = extractvalue { i8*, i32 } %29, 0 store i8* %30, i8** %exn.slot, align 8 %31 = extractvalue { i8*, i32 } %29, 1 store i32 %31, i32* %ehselector.slot, align 4 invoke void @_ZNSt6vectorIbSaIbEED2Ev(%"class.std::vector.0"* %rightPrefix) to label %invoke.cont13 unwind label %terminate.lpad invoke.cont13: ; preds = %lpad9 br label %ehcleanup ehcleanup: ; preds = %invoke.cont13, %lpad invoke void @_ZNSt6vectorIbSaIbEED2Ev(%"class.std::vector.0"* %leftPrefix) to label %invoke.cont14 unwind label %terminate.lpad invoke.cont14: ; preds = %ehcleanup br label %eh.resume if.end: ; preds = %invoke.cont12, %dynamic_cast.end4 br label %if.end15 if.end15: ; preds = %if.end, %if.then ret void eh.resume: ; preds = %invoke.cont14 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val16 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val16 terminate.lpad: ; preds = %ehcleanup, %lpad9 %32 = landingpad { i8*, i32 } catch i8* null %33 = extractvalue { i8*, i32 } %32, 0 call void @__clang_call_terminate(i8* %33) #16 unreachable } ; Function Attrs: nounwind readonly declare dso_local i8* @__dynamic_cast(i8*, i8*, i8*, i64) #10 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local dereferenceable(40) %"class.std::vector.0"* @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEEixERS6_(%"class.std::map"* %this, i8* dereferenceable(1) %__k) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::map"*, align 8 %__k.addr = alloca i8*, align 8 %__i = alloca %"struct.std::_Rb_tree_iterator", align 8 %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 %ref.tmp5 = alloca %"struct.std::less", align 1 %undef.agg.tmp = alloca %"struct.std::less", align 1 %ref.tmp8 = alloca %"struct.std::_Rb_tree_iterator", align 8 %agg.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 %ref.tmp9 = alloca %"struct.std::pair", align 8 %ref.tmp10 = alloca %"class.std::vector.0", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.std::map"* %this, %"class.std::map"** %this.addr, align 8 store i8* %__k, i8** %__k.addr, align 8 %this1 = load %"class.std::map"*, %"class.std::map"** %this.addr, align 8 %0 = load i8*, i8** %__k.addr, align 8 %call = call %"struct.std::_Rb_tree_node_base"* @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE11lower_boundERS6_(%"class.std::map"* %this1, i8* dereferenceable(1) %0) %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__i, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 %call2 = call %"struct.std::_Rb_tree_node_base"* @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE3endEv(%"class.std::map"* %this1) %coerce.dive3 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %ref.tmp, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call2, %"struct.std::_Rb_tree_node_base"** %coerce.dive3, align 8 %call4 = call zeroext i1 @_ZNKSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEeqERKS6_(%"struct.std::_Rb_tree_iterator"* %__i, %"struct.std::_Rb_tree_iterator"* dereferenceable(8) %ref.tmp) br i1 %call4, label %lor.end, label %lor.rhs lor.rhs: ; preds = %entry call void @_ZNKSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE8key_compEv(%"class.std::map"* %this1) %1 = load i8*, i8** %__k.addr, align 8 %call6 = call dereferenceable(48) %"struct.std::pair"* @_ZNKSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEdeEv(%"struct.std::_Rb_tree_iterator"* %__i) %first = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %call6, i32 0, i32 0 %call7 = call zeroext i1 @_ZNKSt4lessIhEclERKhS2_(%"struct.std::less"* %ref.tmp5, i8* dereferenceable(1) %1, i8* dereferenceable(1) %first) br label %lor.end lor.end: ; preds = %lor.rhs, %entry %2 = phi i1 [ true, %entry ], [ %call7, %lor.rhs ] br i1 %2, label %if.then, label %if.end if.then: ; preds = %lor.end %3 = bitcast %"struct.std::_Rb_tree_iterator"* %agg.tmp to i8* %4 = bitcast %"struct.std::_Rb_tree_iterator"* %__i to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %4, i64 8, i1 false) %5 = load i8*, i8** %__k.addr, align 8 call void @_ZNSt6vectorIbSaIbEEC2Ev(%"class.std::vector.0"* %ref.tmp10) invoke void @_ZNSt4pairIKhSt6vectorIbSaIbEEEC2ERS0_RKS3_(%"struct.std::pair"* %ref.tmp9, i8* dereferenceable(1) %5, %"class.std::vector.0"* dereferenceable(40) %ref.tmp10) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then %coerce.dive11 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %agg.tmp, i32 0, i32 0 %6 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive11, align 8 %call14 = invoke %"struct.std::_Rb_tree_node_base"* @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE6insertESt17_Rb_tree_iteratorIS7_ERKS7_(%"class.std::map"* %this1, %"struct.std::_Rb_tree_node_base"* %6, %"struct.std::pair"* dereferenceable(48) %ref.tmp9) to label %invoke.cont13 unwind label %lpad12 invoke.cont13: ; preds = %invoke.cont %coerce.dive15 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %ref.tmp8, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call14, %"struct.std::_Rb_tree_node_base"** %coerce.dive15, align 8 %7 = bitcast %"struct.std::_Rb_tree_iterator"* %__i to i8* %8 = bitcast %"struct.std::_Rb_tree_iterator"* %ref.tmp8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %7, i8* align 8 %8, i64 8, i1 false) invoke void @_ZNSt4pairIKhSt6vectorIbSaIbEEED2Ev(%"struct.std::pair"* %ref.tmp9) to label %invoke.cont16 unwind label %lpad invoke.cont16: ; preds = %invoke.cont13 call void @_ZNSt6vectorIbSaIbEED2Ev(%"class.std::vector.0"* %ref.tmp10) br label %if.end lpad: ; preds = %invoke.cont13, %if.then %9 = landingpad { i8*, i32 } cleanup %10 = extractvalue { i8*, i32 } %9, 0 store i8* %10, i8** %exn.slot, align 8 %11 = extractvalue { i8*, i32 } %9, 1 store i32 %11, i32* %ehselector.slot, align 4 br label %ehcleanup lpad12: ; preds = %invoke.cont %12 = landingpad { i8*, i32 } cleanup %13 = extractvalue { i8*, i32 } %12, 0 store i8* %13, i8** %exn.slot, align 8 %14 = extractvalue { i8*, i32 } %12, 1 store i32 %14, i32* %ehselector.slot, align 4 invoke void @_ZNSt4pairIKhSt6vectorIbSaIbEEED2Ev(%"struct.std::pair"* %ref.tmp9) to label %invoke.cont17 unwind label %terminate.lpad invoke.cont17: ; preds = %lpad12 br label %ehcleanup ehcleanup: ; preds = %invoke.cont17, %lpad invoke void @_ZNSt6vectorIbSaIbEED2Ev(%"class.std::vector.0"* %ref.tmp10) to label %invoke.cont18 unwind label %terminate.lpad invoke.cont18: ; preds = %ehcleanup br label %eh.resume if.end: ; preds = %invoke.cont16, %lor.end %call19 = call dereferenceable(48) %"struct.std::pair"* @_ZNKSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEdeEv(%"struct.std::_Rb_tree_iterator"* %__i) %second = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %call19, i32 0, i32 1 ret %"class.std::vector.0"* %second eh.resume: ; preds = %invoke.cont18 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val20 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val20 terminate.lpad: ; preds = %ehcleanup, %lpad12 %15 = landingpad { i8*, i32 } catch i8* null %16 = extractvalue { i8*, i32 } %15, 0 call void @__clang_call_terminate(i8* %16) #16 unreachable } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local dereferenceable(40) %"class.std::vector.0"* @_ZNSt6vectorIbSaIbEEaSERKS1_(%"class.std::vector.0"* %this, %"class.std::vector.0"* dereferenceable(40) %__x) #0 comdat align 2 { entry: %retval = alloca %"class.std::vector.0"*, align 8 %this.addr = alloca %"class.std::vector.0"*, align 8 %__x.addr = alloca %"class.std::vector.0"*, align 8 %ref.tmp = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp8 = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp10 = alloca %"struct.std::_Bit_iterator", align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 store %"class.std::vector.0"* %__x, %"class.std::vector.0"** %__x.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = load %"class.std::vector.0"*, %"class.std::vector.0"** %__x.addr, align 8 %cmp = icmp eq %"class.std::vector.0"* %0, %this1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry store %"class.std::vector.0"* %this1, %"class.std::vector.0"** %retval, align 8 br label %return if.end: ; preds = %entry %1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %__x.addr, align 8 %call = call i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(%"class.std::vector.0"* %1) %call2 = call i64 @_ZNKSt6vectorIbSaIbEE8capacityEv(%"class.std::vector.0"* %this1) %cmp3 = icmp ugt i64 %call, %call2 br i1 %cmp3, label %if.then4, label %if.end6 if.then4: ; preds = %if.end %2 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* call void @_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv(%"struct.std::_Bvector_base"* %2) %3 = load %"class.std::vector.0"*, %"class.std::vector.0"** %__x.addr, align 8 %call5 = call i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(%"class.std::vector.0"* %3) call void @_ZNSt6vectorIbSaIbEE13_M_initializeEm(%"class.std::vector.0"* %this1, i64 %call5) br label %if.end6 if.end6: ; preds = %if.then4, %if.end %4 = load %"class.std::vector.0"*, %"class.std::vector.0"** %__x.addr, align 8 %call7 = call { i64*, i32 } @_ZNKSt6vectorIbSaIbEE5beginEv(%"class.std::vector.0"* %4) %5 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %6 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %5, i32 0, i32 0 %7 = extractvalue { i64*, i32 } %call7, 0 store i64* %7, i64** %6, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %5, i32 0, i32 1 %9 = extractvalue { i64*, i32 } %call7, 1 store i32 %9, i32* %8, align 8 %10 = load %"class.std::vector.0"*, %"class.std::vector.0"** %__x.addr, align 8 %call9 = call { i64*, i32 } @_ZNKSt6vectorIbSaIbEE3endEv(%"class.std::vector.0"* %10) %11 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp8 to { i64*, i32 }* %12 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 0 %13 = extractvalue { i64*, i32 } %call9, 0 store i64* %13, i64** %12, align 8 %14 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 1 %15 = extractvalue { i64*, i32 } %call9, 1 store i32 %15, i32* %14, align 8 %call11 = call { i64*, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(%"class.std::vector.0"* %this1) %16 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp10 to { i64*, i32 }* %17 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 0 %18 = extractvalue { i64*, i32 } %call11, 0 store i64* %18, i64** %17, align 8 %19 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 1 %20 = extractvalue { i64*, i32 } %call11, 1 store i32 %20, i32* %19, align 8 %21 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %22 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %21, i32 0, i32 0 %23 = load i64*, i64** %22, align 8 %24 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %21, i32 0, i32 1 %25 = load i32, i32* %24, align 8 %26 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp8 to { i64*, i32 }* %27 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %26, i32 0, i32 0 %28 = load i64*, i64** %27, align 8 %29 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %26, i32 0, i32 1 %30 = load i32, i32* %29, align 8 %call12 = call { i64*, i32 } @_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator(%"class.std::vector.0"* %this1, i64* %23, i32 %25, i64* %28, i32 %30, %"struct.std::_Bit_iterator"* byval(%"struct.std::_Bit_iterator") align 8 %agg.tmp10) %31 = bitcast %"struct.std::_Bit_iterator"* %ref.tmp to { i64*, i32 }* %32 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %31, i32 0, i32 0 %33 = extractvalue { i64*, i32 } %call12, 0 store i64* %33, i64** %32, align 8 %34 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %31, i32 0, i32 1 %35 = extractvalue { i64*, i32 } %call12, 1 store i32 %35, i32* %34, align 8 %36 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %36, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl, i32 0, i32 1 %37 = bitcast %"struct.std::_Bit_iterator"* %_M_finish to i8* %38 = bitcast %"struct.std::_Bit_iterator"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %37, i8* align 8 %38, i64 12, i1 false) store %"class.std::vector.0"* %this1, %"class.std::vector.0"** %retval, align 8 br label %return return: ; preds = %if.end6, %if.then %39 = load %"class.std::vector.0"*, %"class.std::vector.0"** %retval, align 8 ret %"class.std::vector.0"* %39 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorIbSaIbEEC2ERKS1_(%"class.std::vector.0"* %this, %"class.std::vector.0"* dereferenceable(40) %__x) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 %__x.addr = alloca %"class.std::vector.0"*, align 8 %ref.tmp = alloca %"class.std::allocator.13", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp9 = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp12 = alloca %"struct.std::_Bit_iterator", align 8 %coerce = alloca %"struct.std::_Bit_iterator", align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 store %"class.std::vector.0"* %__x, %"class.std::vector.0"** %__x.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %__x.addr, align 8 %2 = bitcast %"class.std::vector.0"* %1 to %"struct.std::_Bvector_base"* %call = call dereferenceable(1) %"class.std::allocator.1"* @_ZNKSt13_Bvector_baseISaIbEE20_M_get_Bit_allocatorEv(%"struct.std::_Bvector_base"* %2) %call2 = call dereferenceable(1) %"class.std::allocator.1"* @_ZN9__gnu_cxx14__alloc_traitsISaImEE17_S_select_on_copyERKS1_(%"class.std::allocator.1"* dereferenceable(1) %call) call void @_ZNSaIbEC2ImEERKSaIT_E(%"class.std::allocator.13"* %ref.tmp, %"class.std::allocator.1"* dereferenceable(1) %call2) #3 invoke void @_ZNSt13_Bvector_baseISaIbEEC2ERKS0_(%"struct.std::_Bvector_base"* %0, %"class.std::allocator.13"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void @_ZNSaIbED2Ev(%"class.std::allocator.13"* %ref.tmp) #3 %3 = load %"class.std::vector.0"*, %"class.std::vector.0"** %__x.addr, align 8 %call5 = invoke i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(%"class.std::vector.0"* %3) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont invoke void @_ZNSt6vectorIbSaIbEE13_M_initializeEm(%"class.std::vector.0"* %this1, i64 %call5) to label %invoke.cont6 unwind label %lpad3 invoke.cont6: ; preds = %invoke.cont4 %4 = load %"class.std::vector.0"*, %"class.std::vector.0"** %__x.addr, align 8 %call8 = invoke { i64*, i32 } @_ZNKSt6vectorIbSaIbEE5beginEv(%"class.std::vector.0"* %4) to label %invoke.cont7 unwind label %lpad3 invoke.cont7: ; preds = %invoke.cont6 %5 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %6 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %5, i32 0, i32 0 %7 = extractvalue { i64*, i32 } %call8, 0 store i64* %7, i64** %6, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %5, i32 0, i32 1 %9 = extractvalue { i64*, i32 } %call8, 1 store i32 %9, i32* %8, align 8 %10 = load %"class.std::vector.0"*, %"class.std::vector.0"** %__x.addr, align 8 %call11 = invoke { i64*, i32 } @_ZNKSt6vectorIbSaIbEE3endEv(%"class.std::vector.0"* %10) to label %invoke.cont10 unwind label %lpad3 invoke.cont10: ; preds = %invoke.cont7 %11 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp9 to { i64*, i32 }* %12 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 0 %13 = extractvalue { i64*, i32 } %call11, 0 store i64* %13, i64** %12, align 8 %14 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 1 %15 = extractvalue { i64*, i32 } %call11, 1 store i32 %15, i32* %14, align 8 %16 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %16, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl, i32 0, i32 0 %17 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp12 to i8* %18 = bitcast %"struct.std::_Bit_iterator"* %_M_start to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %17, i8* align 8 %18, i64 16, i1 false) %19 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %20 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %19, i32 0, i32 0 %21 = load i64*, i64** %20, align 8 %22 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %19, i32 0, i32 1 %23 = load i32, i32* %22, align 8 %24 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp9 to { i64*, i32 }* %25 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %24, i32 0, i32 0 %26 = load i64*, i64** %25, align 8 %27 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %24, i32 0, i32 1 %28 = load i32, i32* %27, align 8 %call14 = invoke { i64*, i32 } @_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator(%"class.std::vector.0"* %this1, i64* %21, i32 %23, i64* %26, i32 %28, %"struct.std::_Bit_iterator"* byval(%"struct.std::_Bit_iterator") align 8 %agg.tmp12) to label %invoke.cont13 unwind label %lpad3 invoke.cont13: ; preds = %invoke.cont10 %29 = bitcast %"struct.std::_Bit_iterator"* %coerce to { i64*, i32 }* %30 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %29, i32 0, i32 0 %31 = extractvalue { i64*, i32 } %call14, 0 store i64* %31, i64** %30, align 8 %32 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %29, i32 0, i32 1 %33 = extractvalue { i64*, i32 } %call14, 1 store i32 %33, i32* %32, align 8 ret void lpad: ; preds = %entry %34 = landingpad { i8*, i32 } cleanup %35 = extractvalue { i8*, i32 } %34, 0 store i8* %35, i8** %exn.slot, align 8 %36 = extractvalue { i8*, i32 } %34, 1 store i32 %36, i32* %ehselector.slot, align 4 call void @_ZNSaIbED2Ev(%"class.std::allocator.13"* %ref.tmp) #3 br label %eh.resume lpad3: ; preds = %invoke.cont10, %invoke.cont7, %invoke.cont6, %invoke.cont4, %invoke.cont %37 = landingpad { i8*, i32 } cleanup %38 = extractvalue { i8*, i32 } %37, 0 store i8* %38, i8** %exn.slot, align 8 %39 = extractvalue { i8*, i32 } %37, 1 store i32 %39, i32* %ehselector.slot, align 4 %40 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* invoke void @_ZNSt13_Bvector_baseISaIbEED2Ev(%"struct.std::_Bvector_base"* %40) to label %invoke.cont15 unwind label %terminate.lpad invoke.cont15: ; preds = %lpad3 br label %eh.resume eh.resume: ; preds = %invoke.cont15, %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val16 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val16 terminate.lpad: ; preds = %lpad3 %41 = landingpad { i8*, i32 } catch i8* null %42 = extractvalue { i8*, i32 } %41, 0 call void @__clang_call_terminate(i8* %42) #16 unreachable } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorIbSaIbEE9push_backEb(%"class.std::vector.0"* %this, i1 zeroext %__x) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 %__x.addr = alloca i8, align 1 %ref.tmp = alloca %"struct.std::_Bit_reference", align 8 %ref.tmp3 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp = alloca %"struct.std::_Bit_iterator", align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %frombool = zext i1 %__x to i8 store i8 %frombool, i8* %__x.addr, align 1 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl, i32 0, i32 1 %1 = bitcast %"struct.std::_Bit_iterator"* %_M_finish to %"struct.std::_Bit_iterator_base"* %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %1, i32 0, i32 0 %2 = load i64*, i64** %_M_p, align 8 %3 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl2 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %3, i32 0, i32 0 %call = call i64* @_ZNKSt13_Bvector_baseISaIbEE13_Bvector_impl11_M_end_addrEv(%"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl2) %cmp = icmp ne i64* %2, %call br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %4 = load i8, i8* %__x.addr, align 1 %tobool = trunc i8 %4 to i1 %5 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl4 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %5, i32 0, i32 0 %_M_finish5 = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl4, i32 0, i32 1 %call6 = call { i64*, i32 } @_ZNSt13_Bit_iteratorppEi(%"struct.std::_Bit_iterator"* %_M_finish5, i32 0) %6 = bitcast %"struct.std::_Bit_iterator"* %ref.tmp3 to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 %8 = extractvalue { i64*, i32 } %call6, 0 store i64* %8, i64** %7, align 8 %9 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 %10 = extractvalue { i64*, i32 } %call6, 1 store i32 %10, i32* %9, align 8 %call7 = call { i64*, i64 } @_ZNKSt13_Bit_iteratordeEv(%"struct.std::_Bit_iterator"* %ref.tmp3) %11 = bitcast %"struct.std::_Bit_reference"* %ref.tmp to { i64*, i64 }* %12 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %11, i32 0, i32 0 %13 = extractvalue { i64*, i64 } %call7, 0 store i64* %13, i64** %12, align 8 %14 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %11, i32 0, i32 1 %15 = extractvalue { i64*, i64 } %call7, 1 store i64 %15, i64* %14, align 8 %call8 = call dereferenceable(16) %"struct.std::_Bit_reference"* @_ZNSt14_Bit_referenceaSEb(%"struct.std::_Bit_reference"* %ref.tmp, i1 zeroext %tobool) br label %if.end if.else: ; preds = %entry %call9 = call { i64*, i32 } @_ZNSt6vectorIbSaIbEE3endEv(%"class.std::vector.0"* %this1) %16 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %17 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 0 %18 = extractvalue { i64*, i32 } %call9, 0 store i64* %18, i64** %17, align 8 %19 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 1 %20 = extractvalue { i64*, i32 } %call9, 1 store i32 %20, i32* %19, align 8 %21 = load i8, i8* %__x.addr, align 1 %tobool10 = trunc i8 %21 to i1 %22 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %23 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %22, i32 0, i32 0 %24 = load i64*, i64** %23, align 8 %25 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %22, i32 0, i32 1 %26 = load i32, i32* %25, align 8 call void @_ZNSt6vectorIbSaIbEE13_M_insert_auxESt13_Bit_iteratorb(%"class.std::vector.0"* %this1, i64* %24, i32 %26, i1 zeroext %tobool10) br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorIbSaIbEED2Ev(%"class.std::vector.0"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* call void @_ZNSt13_Bvector_baseISaIbEED2Ev(%"struct.std::_Bvector_base"* %0) ret void } ; Function Attrs: noinline nounwind optnone uwtable define dso_local i64 @_Z8get_timev() #6 { entry: %tv = alloca %struct.timeval, align 8 %call = call i32 @gettimeofday(%struct.timeval* %tv, %struct.timezone* null) #3 %tv_sec = getelementptr inbounds %struct.timeval, %struct.timeval* %tv, i32 0, i32 0 %0 = load i64, i64* %tv_sec, align 8 %mul = mul nsw i64 %0, 1000000 %tv_usec = getelementptr inbounds %struct.timeval, %struct.timeval* %tv, i32 0, i32 1 %1 = load i64, i64* %tv_usec, align 8 %add = add nsw i64 %mul, %1 ret i64 %add } ; Function Attrs: nounwind declare dso_local i32 @gettimeofday(%struct.timeval*, %struct.timezone*) #11 ; Function Attrs: noinline norecurse optnone uwtable define dso_local i32 @main(i32 %argc, i8** %argv) #12 { entry: %retval = alloca i32, align 4 %argc.addr = alloca i32, align 4 %argv.addr = alloca i8**, align 8 %num_block_threads = alloca i32, align 4 %i = alloca i32, align 4 store i32 0, i32* %retval, align 4 store i32 %argc, i32* %argc.addr, align 4 store i8** %argv, i8*** %argv.addr, align 8 %call = call zeroext i1 @_Z8InitCUDAv() br i1 %call, label %if.end, label %if.then if.then: ; preds = %entry store i32 0, i32* %retval, align 4 br label %return if.end: ; preds = %entry store i32 256, i32* %num_block_threads, align 4 %0 = load i32, i32* %argc.addr, align 4 %cmp = icmp sgt i32 %0, 1 br i1 %cmp, label %if.then1, label %if.else if.then1: ; preds = %if.end store i32 1, i32* %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %if.then1 %1 = load i32, i32* %i, align 4 %2 = load i32, i32* %argc.addr, align 4 %cmp2 = icmp slt i32 %1, %2 br i1 %cmp2, label %for.body, label %for.end for.body: ; preds = %for.cond %3 = load i8**, i8*** %argv.addr, align 8 %4 = load i32, i32* %i, align 4 %idxprom = sext i32 %4 to i64 %arrayidx = getelementptr inbounds i8*, i8** %3, i64 %idxprom %5 = load i8*, i8** %arrayidx, align 8 %6 = load i32, i32* %num_block_threads, align 4 call void @_Z10runVLCTestPcjj(i8* %5, i32 %6, i32 1) br label %for.inc for.inc: ; preds = %for.body %7 = load i32, i32* %i, align 4 %inc = add nsw i32 %7, 1 store i32 %inc, i32* %i, align 4 br label %for.cond for.end: ; preds = %for.cond br label %if.end3 if.else: ; preds = %if.end %8 = load i32, i32* %num_block_threads, align 4 call void @_Z10runVLCTestPcjj(i8* null, i32 %8, i32 1024) br label %if.end3 if.end3: ; preds = %if.else, %for.end store i32 0, i32* %retval, align 4 br label %return return: ; preds = %if.end3, %if.then %9 = load i32, i32* %retval, align 4 ret i32 %9 } ; Function Attrs: noinline optnone uwtable define dso_local void @_Z10runVLCTestPcjj(i8* %file_name, i32 %num_block_threads, i32 %num_blocks) #0 { entry: %file_name.addr = alloca i8*, align 8 %num_block_threads.addr = alloca i32, align 4 %num_blocks.addr = alloca i32, align 4 %num_elements = alloca i32, align 4 %mem_size = alloca i32, align 4 %symbol_type_size = alloca i32, align 4 %H = alloca double, align 8 %sourceData = alloca i32*, align 8 %destData = alloca i32*, align 8 %crefData = alloca i32*, align 8 %codewords = alloca i32*, align 8 %codewordlens = alloca i32*, align 8 %cw32 = alloca i32*, align 8 %cw32len = alloca i32*, align 8 %cw32idx = alloca i32*, align 8 %cindex2 = alloca i32*, align 8 %d_sourceData = alloca i32*, align 8 %d_destData = alloca i32*, align 8 %d_destDataPacked = alloca i32*, align 8 %d_codewords = alloca i32*, align 8 %d_codewordlens = alloca i32*, align 8 %d_cw32 = alloca i32*, align 8 %d_cw32len = alloca i32*, align 8 %d_cw32idx = alloca i32*, align 8 %d_cindex = alloca i32*, align 8 %d_cindex2 = alloca i32*, align 8 %err = alloca i32, align 4 %err37 = alloca i32, align 4 %err45 = alloca i32, align 4 %err53 = alloca i32, align 4 %err62 = alloca i32, align 4 %err71 = alloca i32, align 4 %err79 = alloca i32, align 4 %err87 = alloca i32, align 4 %err95 = alloca i32, align 4 %err104 = alloca i32, align 4 %err113 = alloca i32, align 4 %err121 = alloca i32, align 4 %err130 = alloca i32, align 4 %err139 = alloca i32, align 4 %grid_size = alloca %struct.dim3, align 4 %block_size = alloca %struct.dim3, align 4 %sm_size = alloca i32, align 4 %NT = alloca i32, align 4 %refbytesize = alloca i32, align 4 %timer = alloca i64, align 8 %msec = alloca float, align 4 %num_ints = alloca i32, align 4 %i = alloca i32, align 4 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp167 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp167.coerce = alloca { i64, i32 }, align 4 %num_scan_elements = alloca i32, align 4 %agg.tmp174 = alloca %struct.dim3, align 4 %agg.tmp176 = alloca %struct.dim3, align 4 %agg.tmp174.coerce = alloca { i64, i32 }, align 4 %agg.tmp176.coerce = alloca { i64, i32 }, align 4 %err183 = alloca i32, align 4 %err190 = alloca i32, align 4 %err199 = alloca i32, align 4 %err206 = alloca i32, align 4 %err213 = alloca i32, align 4 %err220 = alloca i32, align 4 %err227 = alloca i32, align 4 %err234 = alloca i32, align 4 %err241 = alloca i32, align 4 %err248 = alloca i32, align 4 %err255 = alloca i32, align 4 %err262 = alloca i32, align 4 store i8* %file_name, i8** %file_name.addr, align 8 store i32 %num_block_threads, i32* %num_block_threads.addr, align 4 store i32 %num_blocks, i32* %num_blocks.addr, align 4 %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.4, i64 0, i64 0)) store i32 4, i32* %symbol_type_size, align 4 %0 = load i8*, i8** %file_name.addr, align 8 %1 = load i32, i32* %num_block_threads.addr, align 4 %2 = load i32, i32* %symbol_type_size, align 4 call void @_Z10initParamsPcjRjS0_S0_j(i8* %0, i32 %1, i32* dereferenceable(4) %num_blocks.addr, i32* dereferenceable(4) %num_elements, i32* dereferenceable(4) %mem_size, i32 %2) %3 = load i32, i32* %num_elements, align 4 %4 = load i32, i32* %num_blocks.addr, align 4 %5 = load i32, i32* %num_block_threads.addr, align 4 %call1 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([98 x i8], [98 x i8]* @.str.5, i64 0, i64 0), i32 %3, i32 %4, i32 %5) %6 = load i32, i32* %mem_size, align 4 %conv = zext i32 %6 to i64 %call2 = call noalias i8* @malloc(i64 %conv) #3 %7 = bitcast i8* %call2 to i32* store i32* %7, i32** %sourceData, align 8 %8 = load i32, i32* %mem_size, align 4 %conv3 = zext i32 %8 to i64 %call4 = call noalias i8* @malloc(i64 %conv3) #3 %9 = bitcast i8* %call4 to i32* store i32* %9, i32** %destData, align 8 %10 = load i32, i32* %mem_size, align 4 %conv5 = zext i32 %10 to i64 %call6 = call noalias i8* @malloc(i64 %conv5) #3 %11 = bitcast i8* %call6 to i32* store i32* %11, i32** %crefData, align 8 %12 = load i32, i32* %symbol_type_size, align 4 %mul = mul i32 256, %12 %conv7 = zext i32 %mul to i64 %call8 = call noalias i8* @malloc(i64 %conv7) #3 %13 = bitcast i8* %call8 to i32* store i32* %13, i32** %codewords, align 8 %14 = load i32, i32* %symbol_type_size, align 4 %mul9 = mul i32 256, %14 %conv10 = zext i32 %mul9 to i64 %call11 = call noalias i8* @malloc(i64 %conv10) #3 %15 = bitcast i8* %call11 to i32* store i32* %15, i32** %codewordlens, align 8 %16 = load i32, i32* %mem_size, align 4 %conv12 = zext i32 %16 to i64 %call13 = call noalias i8* @malloc(i64 %conv12) #3 %17 = bitcast i8* %call13 to i32* store i32* %17, i32** %cw32, align 8 %18 = load i32, i32* %mem_size, align 4 %conv14 = zext i32 %18 to i64 %call15 = call noalias i8* @malloc(i64 %conv14) #3 %19 = bitcast i8* %call15 to i32* store i32* %19, i32** %cw32len, align 8 %20 = load i32, i32* %mem_size, align 4 %conv16 = zext i32 %20 to i64 %call17 = call noalias i8* @malloc(i64 %conv16) #3 %21 = bitcast i8* %call17 to i32* store i32* %21, i32** %cw32idx, align 8 %22 = load i32, i32* %num_blocks.addr, align 4 %conv18 = zext i32 %22 to i64 %mul19 = mul i64 %conv18, 4 %call20 = call noalias i8* @malloc(i64 %mul19) #3 %23 = bitcast i8* %call20 to i32* store i32* %23, i32** %cindex2, align 8 %24 = load i32*, i32** %sourceData, align 8 %25 = bitcast i32* %24 to i8* %26 = load i32, i32* %mem_size, align 4 %conv21 = zext i32 %26 to i64 call void @llvm.memset.p0i8.i64(i8* align 4 %25, i8 0, i64 %conv21, i1 false) %27 = load i32*, i32** %destData, align 8 %28 = bitcast i32* %27 to i8* %29 = load i32, i32* %mem_size, align 4 %conv22 = zext i32 %29 to i64 call void @llvm.memset.p0i8.i64(i8* align 4 %28, i8 0, i64 %conv22, i1 false) %30 = load i32*, i32** %crefData, align 8 %31 = bitcast i32* %30 to i8* %32 = load i32, i32* %mem_size, align 4 %conv23 = zext i32 %32 to i64 call void @llvm.memset.p0i8.i64(i8* align 4 %31, i8 0, i64 %conv23, i1 false) %33 = load i32*, i32** %cw32, align 8 %34 = bitcast i32* %33 to i8* %35 = load i32, i32* %mem_size, align 4 %conv24 = zext i32 %35 to i64 call void @llvm.memset.p0i8.i64(i8* align 4 %34, i8 0, i64 %conv24, i1 false) %36 = load i32*, i32** %cw32len, align 8 %37 = bitcast i32* %36 to i8* %38 = load i32, i32* %mem_size, align 4 %conv25 = zext i32 %38 to i64 call void @llvm.memset.p0i8.i64(i8* align 4 %37, i8 0, i64 %conv25, i1 false) %39 = load i32*, i32** %cw32idx, align 8 %40 = bitcast i32* %39 to i8* %41 = load i32, i32* %mem_size, align 4 %conv26 = zext i32 %41 to i64 call void @llvm.memset.p0i8.i64(i8* align 4 %40, i8 0, i64 %conv26, i1 false) %42 = load i32*, i32** %codewords, align 8 %43 = bitcast i32* %42 to i8* %44 = load i32, i32* %symbol_type_size, align 4 %mul27 = mul i32 256, %44 %conv28 = zext i32 %mul27 to i64 call void @llvm.memset.p0i8.i64(i8* align 4 %43, i8 0, i64 %conv28, i1 false) %45 = load i32*, i32** %codewordlens, align 8 %46 = bitcast i32* %45 to i8* %47 = load i32, i32* %symbol_type_size, align 4 %mul29 = mul i32 256, %47 %conv30 = zext i32 %mul29 to i64 call void @llvm.memset.p0i8.i64(i8* align 4 %46, i8 0, i64 %conv30, i1 false) %48 = load i32*, i32** %cindex2, align 8 %49 = bitcast i32* %48 to i8* %50 = load i32, i32* %num_blocks.addr, align 4 %conv31 = zext i32 %50 to i64 %mul32 = mul i64 %conv31, 4 call void @llvm.memset.p0i8.i64(i8* align 4 %49, i8 0, i64 %mul32, i1 false) %51 = load i8*, i8** %file_name.addr, align 8 %52 = load i32*, i32** %sourceData, align 8 %53 = load i32*, i32** %codewords, align 8 %54 = load i32*, i32** %codewordlens, align 8 %55 = load i32, i32* %num_elements, align 4 %56 = load i32, i32* %mem_size, align 4 call void @_Z8loadDataPcPjS0_S0_jjRd(i8* %51, i32* %52, i32* %53, i32* %54, i32 %55, i32 %56, double* dereferenceable(8) %H) %57 = bitcast i32** %d_sourceData to i8** %58 = load i32, i32* %mem_size, align 4 %conv33 = zext i32 %58 to i64 %call34 = call i32 @cudaMalloc(i8** %57, i64 %conv33) store i32 %call34, i32* %err, align 4 %59 = load i32, i32* %err, align 4 %cmp = icmp ne i32 0, %59 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %60 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %61 = load i32, i32* %err, align 4 %call35 = call i8* @cudaGetErrorString(i32 %61) %call36 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %60, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 107, i8* %call35) call void @exit(i32 1) #16 unreachable if.end: ; preds = %entry %62 = bitcast i32** %d_destData to i8** %63 = load i32, i32* %mem_size, align 4 %conv38 = zext i32 %63 to i64 %call39 = call i32 @cudaMalloc(i8** %62, i64 %conv38) store i32 %call39, i32* %err37, align 4 %64 = load i32, i32* %err37, align 4 %cmp40 = icmp ne i32 0, %64 br i1 %cmp40, label %if.then41, label %if.end44 if.then41: ; preds = %if.end %65 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %66 = load i32, i32* %err37, align 4 %call42 = call i8* @cudaGetErrorString(i32 %66) %call43 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %65, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 108, i8* %call42) call void @exit(i32 1) #16 unreachable if.end44: ; preds = %if.end %67 = bitcast i32** %d_destDataPacked to i8** %68 = load i32, i32* %mem_size, align 4 %conv46 = zext i32 %68 to i64 %call47 = call i32 @cudaMalloc(i8** %67, i64 %conv46) store i32 %call47, i32* %err45, align 4 %69 = load i32, i32* %err45, align 4 %cmp48 = icmp ne i32 0, %69 br i1 %cmp48, label %if.then49, label %if.end52 if.then49: ; preds = %if.end44 %70 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %71 = load i32, i32* %err45, align 4 %call50 = call i8* @cudaGetErrorString(i32 %71) %call51 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %70, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 109, i8* %call50) call void @exit(i32 1) #16 unreachable if.end52: ; preds = %if.end44 %72 = bitcast i32** %d_codewords to i8** %73 = load i32, i32* %symbol_type_size, align 4 %mul54 = mul i32 256, %73 %conv55 = zext i32 %mul54 to i64 %call56 = call i32 @cudaMalloc(i8** %72, i64 %conv55) store i32 %call56, i32* %err53, align 4 %74 = load i32, i32* %err53, align 4 %cmp57 = icmp ne i32 0, %74 br i1 %cmp57, label %if.then58, label %if.end61 if.then58: ; preds = %if.end52 %75 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %76 = load i32, i32* %err53, align 4 %call59 = call i8* @cudaGetErrorString(i32 %76) %call60 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %75, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 112, i8* %call59) call void @exit(i32 1) #16 unreachable if.end61: ; preds = %if.end52 %77 = bitcast i32** %d_codewordlens to i8** %78 = load i32, i32* %symbol_type_size, align 4 %mul63 = mul i32 256, %78 %conv64 = zext i32 %mul63 to i64 %call65 = call i32 @cudaMalloc(i8** %77, i64 %conv64) store i32 %call65, i32* %err62, align 4 %79 = load i32, i32* %err62, align 4 %cmp66 = icmp ne i32 0, %79 br i1 %cmp66, label %if.then67, label %if.end70 if.then67: ; preds = %if.end61 %80 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %81 = load i32, i32* %err62, align 4 %call68 = call i8* @cudaGetErrorString(i32 %81) %call69 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %80, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 114, i8* %call68) call void @exit(i32 1) #16 unreachable if.end70: ; preds = %if.end61 %82 = bitcast i32** %d_cw32 to i8** %83 = load i32, i32* %mem_size, align 4 %conv72 = zext i32 %83 to i64 %call73 = call i32 @cudaMalloc(i8** %82, i64 %conv72) store i32 %call73, i32* %err71, align 4 %84 = load i32, i32* %err71, align 4 %cmp74 = icmp ne i32 0, %84 br i1 %cmp74, label %if.then75, label %if.end78 if.then75: ; preds = %if.end70 %85 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %86 = load i32, i32* %err71, align 4 %call76 = call i8* @cudaGetErrorString(i32 %86) %call77 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %85, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 116, i8* %call76) call void @exit(i32 1) #16 unreachable if.end78: ; preds = %if.end70 %87 = bitcast i32** %d_cw32len to i8** %88 = load i32, i32* %mem_size, align 4 %conv80 = zext i32 %88 to i64 %call81 = call i32 @cudaMalloc(i8** %87, i64 %conv80) store i32 %call81, i32* %err79, align 4 %89 = load i32, i32* %err79, align 4 %cmp82 = icmp ne i32 0, %89 br i1 %cmp82, label %if.then83, label %if.end86 if.then83: ; preds = %if.end78 %90 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %91 = load i32, i32* %err79, align 4 %call84 = call i8* @cudaGetErrorString(i32 %91) %call85 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %90, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 117, i8* %call84) call void @exit(i32 1) #16 unreachable if.end86: ; preds = %if.end78 %92 = bitcast i32** %d_cw32idx to i8** %93 = load i32, i32* %mem_size, align 4 %conv88 = zext i32 %93 to i64 %call89 = call i32 @cudaMalloc(i8** %92, i64 %conv88) store i32 %call89, i32* %err87, align 4 %94 = load i32, i32* %err87, align 4 %cmp90 = icmp ne i32 0, %94 br i1 %cmp90, label %if.then91, label %if.end94 if.then91: ; preds = %if.end86 %95 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %96 = load i32, i32* %err87, align 4 %call92 = call i8* @cudaGetErrorString(i32 %96) %call93 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %95, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 118, i8* %call92) call void @exit(i32 1) #16 unreachable if.end94: ; preds = %if.end86 %97 = bitcast i32** %d_cindex to i8** %98 = load i32, i32* %num_blocks.addr, align 4 %conv96 = zext i32 %98 to i64 %mul97 = mul i64 %conv96, 4 %call98 = call i32 @cudaMalloc(i8** %97, i64 %mul97) store i32 %call98, i32* %err95, align 4 %99 = load i32, i32* %err95, align 4 %cmp99 = icmp ne i32 0, %99 br i1 %cmp99, label %if.then100, label %if.end103 if.then100: ; preds = %if.end94 %100 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %101 = load i32, i32* %err95, align 4 %call101 = call i8* @cudaGetErrorString(i32 %101) %call102 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %100, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 121, i8* %call101) call void @exit(i32 1) #16 unreachable if.end103: ; preds = %if.end94 %102 = bitcast i32** %d_cindex2 to i8** %103 = load i32, i32* %num_blocks.addr, align 4 %conv105 = zext i32 %103 to i64 %mul106 = mul i64 %conv105, 4 %call107 = call i32 @cudaMalloc(i8** %102, i64 %mul106) store i32 %call107, i32* %err104, align 4 %104 = load i32, i32* %err104, align 4 %cmp108 = icmp ne i32 0, %104 br i1 %cmp108, label %if.then109, label %if.end112 if.then109: ; preds = %if.end103 %105 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %106 = load i32, i32* %err104, align 4 %call110 = call i8* @cudaGetErrorString(i32 %106) %call111 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %105, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 123, i8* %call110) call void @exit(i32 1) #16 unreachable if.end112: ; preds = %if.end103 %107 = load i32*, i32** %d_sourceData, align 8 %108 = bitcast i32* %107 to i8* %109 = load i32*, i32** %sourceData, align 8 %110 = bitcast i32* %109 to i8* %111 = load i32, i32* %mem_size, align 4 %conv114 = zext i32 %111 to i64 %call115 = call i32 @cudaMemcpy(i8* %108, i8* %110, i64 %conv114, i32 1) store i32 %call115, i32* %err113, align 4 %112 = load i32, i32* %err113, align 4 %cmp116 = icmp ne i32 0, %112 br i1 %cmp116, label %if.then117, label %if.end120 if.then117: ; preds = %if.end112 %113 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %114 = load i32, i32* %err113, align 4 %call118 = call i8* @cudaGetErrorString(i32 %114) %call119 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %113, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 141, i8* %call118) call void @exit(i32 1) #16 unreachable if.end120: ; preds = %if.end112 %115 = load i32*, i32** %d_codewords, align 8 %116 = bitcast i32* %115 to i8* %117 = load i32*, i32** %codewords, align 8 %118 = bitcast i32* %117 to i8* %119 = load i32, i32* %symbol_type_size, align 4 %mul122 = mul i32 256, %119 %conv123 = zext i32 %mul122 to i64 %call124 = call i32 @cudaMemcpy(i8* %116, i8* %118, i64 %conv123, i32 1) store i32 %call124, i32* %err121, align 4 %120 = load i32, i32* %err121, align 4 %cmp125 = icmp ne i32 0, %120 br i1 %cmp125, label %if.then126, label %if.end129 if.then126: ; preds = %if.end120 %121 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %122 = load i32, i32* %err121, align 4 %call127 = call i8* @cudaGetErrorString(i32 %122) %call128 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %121, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 144, i8* %call127) call void @exit(i32 1) #16 unreachable if.end129: ; preds = %if.end120 %123 = load i32*, i32** %d_codewordlens, align 8 %124 = bitcast i32* %123 to i8* %125 = load i32*, i32** %codewordlens, align 8 %126 = bitcast i32* %125 to i8* %127 = load i32, i32* %symbol_type_size, align 4 %mul131 = mul i32 256, %127 %conv132 = zext i32 %mul131 to i64 %call133 = call i32 @cudaMemcpy(i8* %124, i8* %126, i64 %conv132, i32 1) store i32 %call133, i32* %err130, align 4 %128 = load i32, i32* %err130, align 4 %cmp134 = icmp ne i32 0, %128 br i1 %cmp134, label %if.then135, label %if.end138 if.then135: ; preds = %if.end129 %129 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %130 = load i32, i32* %err130, align 4 %call136 = call i8* @cudaGetErrorString(i32 %130) %call137 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %129, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 147, i8* %call136) call void @exit(i32 1) #16 unreachable if.end138: ; preds = %if.end129 %131 = load i32*, i32** %d_destData, align 8 %132 = bitcast i32* %131 to i8* %133 = load i32*, i32** %destData, align 8 %134 = bitcast i32* %133 to i8* %135 = load i32, i32* %mem_size, align 4 %conv140 = zext i32 %135 to i64 %call141 = call i32 @cudaMemcpy(i8* %132, i8* %134, i64 %conv140, i32 1) store i32 %call141, i32* %err139, align 4 %136 = load i32, i32* %err139, align 4 %cmp142 = icmp ne i32 0, %136 br i1 %cmp142, label %if.then143, label %if.end146 if.then143: ; preds = %if.end138 %137 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %138 = load i32, i32* %err139, align 4 %call144 = call i8* @cudaGetErrorString(i32 %138) %call145 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %137, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 149, i8* %call144) call void @exit(i32 1) #16 unreachable if.end146: ; preds = %if.end138 %139 = load i32, i32* %num_blocks.addr, align 4 call void @_ZN4dim3C2Ejjj(%struct.dim3* %grid_size, i32 %139, i32 1, i32 1) %140 = load i32, i32* %num_block_threads.addr, align 4 call void @_ZN4dim3C2Ejjj(%struct.dim3* %block_size, i32 %140, i32 1, i32 1) store i32 10, i32* %NT, align 4 %call147 = call i64 @_Z8get_timev() store i64 %call147, i64* %timer, align 8 %141 = load i32*, i32** %sourceData, align 8 %142 = load i32, i32* %num_elements, align 4 %143 = load i32*, i32** %crefData, align 8 %144 = load i32*, i32** %codewords, align 8 %145 = load i32*, i32** %codewordlens, align 8 call void @cpu_vlc_encode(i32* %141, i32 %142, i32* %143, i32* %refbytesize, i32* %144, i32* %145) %call148 = call i64 @_Z8get_timev() %146 = load i64, i64* %timer, align 8 %sub = sub nsw i64 %call148, %146 %conv149 = sitofp i64 %sub to double %div = fdiv double %conv149, 1.000000e+03 %conv150 = fptrunc double %div to float store float %conv150, float* %msec, align 4 %147 = load float, float* %msec, align 4 %conv151 = fpext float %147 to double %call152 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.8, i64 0, i64 0), double %conv151) %148 = load i32, i32* %refbytesize, align 4 %call153 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.9, i64 0, i64 0), i32 %148) %149 = load i32, i32* %refbytesize, align 4 %div154 = udiv i32 %149, 4 %150 = load i32, i32* %refbytesize, align 4 %rem = urem i32 %150, 4 %cmp155 = icmp eq i32 %rem, 0 %151 = zext i1 %cmp155 to i64 %cond = select i1 %cmp155, i32 0, i32 1 %add = add i32 %div154, %cond store i32 %add, i32* %num_ints, align 4 %152 = load i32, i32* %num_blocks.addr, align 4 %x = getelementptr inbounds %struct.dim3, %struct.dim3* %grid_size, i32 0, i32 0 store i32 %152, i32* %x, align 4 %153 = load i32, i32* %num_block_threads.addr, align 4 %x156 = getelementptr inbounds %struct.dim3, %struct.dim3* %block_size, i32 0, i32 0 store i32 %153, i32* %x156, align 4 %x157 = getelementptr inbounds %struct.dim3, %struct.dim3* %block_size, i32 0, i32 0 %154 = load i32, i32* %x157, align 4 %conv158 = zext i32 %154 to i64 %mul159 = mul i64 %conv158, 4 %conv160 = trunc i64 %mul159 to i32 store i32 %conv160, i32* %sm_size, align 4 %x161 = getelementptr inbounds %struct.dim3, %struct.dim3* %block_size, i32 0, i32 0 %155 = load i32, i32* %x161, align 4 %conv162 = zext i32 %155 to i64 %mul163 = mul i64 %conv162, 4 %add164 = add i64 2048, %mul163 %conv165 = trunc i64 %add164 to i32 store i32 %conv165, i32* %sm_size, align 4 store i32 0, i32* %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %if.end146 %156 = load i32, i32* %i, align 4 %157 = load i32, i32* %NT, align 4 %cmp166 = icmp ult i32 %156, %157 br i1 %cmp166, label %for.body, label %for.end for.body: ; preds = %for.cond %158 = bitcast %struct.dim3* %agg.tmp to i8* %159 = bitcast %struct.dim3* %grid_size to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %158, i8* align 4 %159, i64 12, i1 false) %160 = bitcast %struct.dim3* %agg.tmp167 to i8* %161 = bitcast %struct.dim3* %block_size to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %160, i8* align 4 %161, i64 12, i1 false) %162 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %163 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %162, i8* align 4 %163, i64 12, i1 false) %164 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %165 = load i64, i64* %164, align 4 %166 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %167 = load i32, i32* %166, align 4 %168 = bitcast { i64, i32 }* %agg.tmp167.coerce to i8* %169 = bitcast %struct.dim3* %agg.tmp167 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %168, i8* align 4 %169, i64 12, i1 false) %170 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp167.coerce, i32 0, i32 0 %171 = load i64, i64* %170, align 4 %172 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp167.coerce, i32 0, i32 1 %173 = load i32, i32* %172, align 4 %call168 = call i32 @__cudaPushCallConfiguration(i64 %165, i32 %167, i64 %171, i32 %173, i64 0, i8* null) %tobool = icmp ne i32 %call168, 0 br i1 %tobool, label %kcall.end, label %kcall.configok kcall.configok: ; preds = %for.body %174 = load i32*, i32** %d_sourceData, align 8 %175 = load i32*, i32** %d_codewords, align 8 %176 = load i32*, i32** %d_codewordlens, align 8 %177 = load i32*, i32** %d_cw32, align 8 %178 = load i32*, i32** %d_cw32len, align 8 %179 = load i32*, i32** %d_cw32idx, align 8 %180 = load i32*, i32** %d_destData, align 8 %181 = load i32*, i32** %d_cindex, align 8 call void @_ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_(i32* %174, i32* %175, i32* %176, i32* %177, i32* %178, i32* %179, i32* %180, i32* %181) br label %kcall.end kcall.end: ; preds = %kcall.configok, %for.body %call169 = call i32 @cudaThreadSynchronize() br label %for.inc for.inc: ; preds = %kcall.end %182 = load i32, i32* %i, align 4 %inc = add nsw i32 %182, 1 store i32 %inc, i32* %i, align 4 br label %for.cond for.end: ; preds = %for.cond %x170 = getelementptr inbounds %struct.dim3, %struct.dim3* %grid_size, i32 0, i32 0 %183 = load i32, i32* %x170, align 4 store i32 %183, i32* %num_scan_elements, align 4 %184 = load i32, i32* %num_scan_elements, align 4 call void @_ZL17preallocBlockSumsj(i32 %184) %185 = load i32*, i32** %d_destDataPacked, align 8 %186 = bitcast i32* %185 to i8* %187 = load i32, i32* %mem_size, align 4 %conv171 = zext i32 %187 to i64 %call172 = call i32 @cudaMemset(i8* %186, i32 0, i64 %conv171) %188 = load i32, i32* %num_scan_elements, align 4 %call173 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.10, i64 0, i64 0), i32 %188) %189 = load i32*, i32** %d_cindex2, align 8 %190 = load i32*, i32** %d_cindex, align 8 %191 = load i32, i32* %num_scan_elements, align 4 call void @_ZL12prescanArrayPjS_i(i32* %189, i32* %190, i32 %191) %192 = load i32, i32* %num_scan_elements, align 4 %div175 = udiv i32 %192, 32 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp174, i32 %div175, i32 1, i32 1) call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp176, i32 32, i32 1, i32 1) %193 = bitcast { i64, i32 }* %agg.tmp174.coerce to i8* %194 = bitcast %struct.dim3* %agg.tmp174 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %193, i8* align 4 %194, i64 12, i1 false) %195 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp174.coerce, i32 0, i32 0 %196 = load i64, i64* %195, align 4 %197 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp174.coerce, i32 0, i32 1 %198 = load i32, i32* %197, align 4 %199 = bitcast { i64, i32 }* %agg.tmp176.coerce to i8* %200 = bitcast %struct.dim3* %agg.tmp176 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %199, i8* align 4 %200, i64 12, i1 false) %201 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp176.coerce, i32 0, i32 0 %202 = load i64, i64* %201, align 4 %203 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp176.coerce, i32 0, i32 1 %204 = load i32, i32* %203, align 4 %call177 = call i32 @__cudaPushCallConfiguration(i64 %196, i32 %198, i64 %202, i32 %204, i64 0, i8* null) %tobool178 = icmp ne i32 %call177, 0 br i1 %tobool178, label %kcall.end181, label %kcall.configok179 kcall.configok179: ; preds = %for.end %205 = load i32*, i32** %d_destData, align 8 %206 = load i32*, i32** %d_cindex, align 8 %207 = load i32*, i32** %d_cindex2, align 8 %208 = load i32*, i32** %d_destDataPacked, align 8 %209 = load i32, i32* %num_elements, align 4 %210 = load i32, i32* %num_scan_elements, align 4 %div180 = udiv i32 %209, %210 call void @_ZL5pack2PjS_S_S_j(i32* %205, i32* %206, i32* %207, i32* %208, i32 %div180) br label %kcall.end181 kcall.end181: ; preds = %kcall.configok179, %for.end %call182 = call i32 @cudaThreadSynchronize() %call184 = call i32 @cudaGetLastError() store i32 %call184, i32* %err183, align 4 %211 = load i32, i32* %err183, align 4 %cmp185 = icmp ne i32 0, %211 br i1 %cmp185, label %if.then186, label %if.end189 if.then186: ; preds = %kcall.end181 %212 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %213 = load i32, i32* %err183, align 4 %call187 = call i8* @cudaGetErrorString(i32 %213) %call188 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %212, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 198, i8* %call187) call void @exit(i32 1) #16 unreachable if.end189: ; preds = %kcall.end181 call void @_ZL16deallocBlockSumsv() %214 = load i32*, i32** %destData, align 8 %215 = bitcast i32* %214 to i8* %216 = load i32*, i32** %d_destDataPacked, align 8 %217 = bitcast i32* %216 to i8* %218 = load i32, i32* %mem_size, align 4 %conv191 = zext i32 %218 to i64 %call192 = call i32 @cudaMemcpy(i8* %215, i8* %217, i64 %conv191, i32 2) store i32 %call192, i32* %err190, align 4 %219 = load i32, i32* %err190, align 4 %cmp193 = icmp ne i32 0, %219 br i1 %cmp193, label %if.then194, label %if.end197 if.then194: ; preds = %if.end189 %220 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %221 = load i32, i32* %err190, align 4 %call195 = call i8* @cudaGetErrorString(i32 %221) %call196 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %220, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 203, i8* %call195) call void @exit(i32 1) #16 unreachable if.end197: ; preds = %if.end189 %222 = load i32*, i32** %crefData, align 8 %223 = load i32*, i32** %destData, align 8 %224 = load i32, i32* %num_ints, align 4 %call198 = call i32 @_Z15compare_vectorsIjEiPT_S1_j(i32* %222, i32* %223, i32 %224) %225 = load i32*, i32** %sourceData, align 8 %226 = bitcast i32* %225 to i8* call void @free(i8* %226) #3 %227 = load i32*, i32** %destData, align 8 %228 = bitcast i32* %227 to i8* call void @free(i8* %228) #3 %229 = load i32*, i32** %codewords, align 8 %230 = bitcast i32* %229 to i8* call void @free(i8* %230) #3 %231 = load i32*, i32** %codewordlens, align 8 %232 = bitcast i32* %231 to i8* call void @free(i8* %232) #3 %233 = load i32*, i32** %cw32, align 8 %234 = bitcast i32* %233 to i8* call void @free(i8* %234) #3 %235 = load i32*, i32** %cw32len, align 8 %236 = bitcast i32* %235 to i8* call void @free(i8* %236) #3 %237 = load i32*, i32** %crefData, align 8 %238 = bitcast i32* %237 to i8* call void @free(i8* %238) #3 %239 = load i32*, i32** %d_sourceData, align 8 %240 = bitcast i32* %239 to i8* %call200 = call i32 @cudaFree(i8* %240) store i32 %call200, i32* %err199, align 4 %241 = load i32, i32* %err199, align 4 %cmp201 = icmp ne i32 0, %241 br i1 %cmp201, label %if.then202, label %if.end205 if.then202: ; preds = %if.end197 %242 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %243 = load i32, i32* %err199, align 4 %call203 = call i8* @cudaGetErrorString(i32 %243) %call204 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %242, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 214, i8* %call203) call void @exit(i32 1) #16 unreachable if.end205: ; preds = %if.end197 %244 = load i32*, i32** %d_destData, align 8 %245 = bitcast i32* %244 to i8* %call207 = call i32 @cudaFree(i8* %245) store i32 %call207, i32* %err206, align 4 %246 = load i32, i32* %err206, align 4 %cmp208 = icmp ne i32 0, %246 br i1 %cmp208, label %if.then209, label %if.end212 if.then209: ; preds = %if.end205 %247 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %248 = load i32, i32* %err206, align 4 %call210 = call i8* @cudaGetErrorString(i32 %248) %call211 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %247, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 215, i8* %call210) call void @exit(i32 1) #16 unreachable if.end212: ; preds = %if.end205 %249 = load i32*, i32** %d_destDataPacked, align 8 %250 = bitcast i32* %249 to i8* %call214 = call i32 @cudaFree(i8* %250) store i32 %call214, i32* %err213, align 4 %251 = load i32, i32* %err213, align 4 %cmp215 = icmp ne i32 0, %251 br i1 %cmp215, label %if.then216, label %if.end219 if.then216: ; preds = %if.end212 %252 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %253 = load i32, i32* %err213, align 4 %call217 = call i8* @cudaGetErrorString(i32 %253) %call218 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %252, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 216, i8* %call217) call void @exit(i32 1) #16 unreachable if.end219: ; preds = %if.end212 %254 = load i32*, i32** %d_codewords, align 8 %255 = bitcast i32* %254 to i8* %call221 = call i32 @cudaFree(i8* %255) store i32 %call221, i32* %err220, align 4 %256 = load i32, i32* %err220, align 4 %cmp222 = icmp ne i32 0, %256 br i1 %cmp222, label %if.then223, label %if.end226 if.then223: ; preds = %if.end219 %257 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %258 = load i32, i32* %err220, align 4 %call224 = call i8* @cudaGetErrorString(i32 %258) %call225 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %257, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 217, i8* %call224) call void @exit(i32 1) #16 unreachable if.end226: ; preds = %if.end219 %259 = load i32*, i32** %d_codewordlens, align 8 %260 = bitcast i32* %259 to i8* %call228 = call i32 @cudaFree(i8* %260) store i32 %call228, i32* %err227, align 4 %261 = load i32, i32* %err227, align 4 %cmp229 = icmp ne i32 0, %261 br i1 %cmp229, label %if.then230, label %if.end233 if.then230: ; preds = %if.end226 %262 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %263 = load i32, i32* %err227, align 4 %call231 = call i8* @cudaGetErrorString(i32 %263) %call232 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %262, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 218, i8* %call231) call void @exit(i32 1) #16 unreachable if.end233: ; preds = %if.end226 %264 = load i32*, i32** %d_cw32, align 8 %265 = bitcast i32* %264 to i8* %call235 = call i32 @cudaFree(i8* %265) store i32 %call235, i32* %err234, align 4 %266 = load i32, i32* %err234, align 4 %cmp236 = icmp ne i32 0, %266 br i1 %cmp236, label %if.then237, label %if.end240 if.then237: ; preds = %if.end233 %267 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %268 = load i32, i32* %err234, align 4 %call238 = call i8* @cudaGetErrorString(i32 %268) %call239 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %267, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 219, i8* %call238) call void @exit(i32 1) #16 unreachable if.end240: ; preds = %if.end233 %269 = load i32*, i32** %d_cw32len, align 8 %270 = bitcast i32* %269 to i8* %call242 = call i32 @cudaFree(i8* %270) store i32 %call242, i32* %err241, align 4 %271 = load i32, i32* %err241, align 4 %cmp243 = icmp ne i32 0, %271 br i1 %cmp243, label %if.then244, label %if.end247 if.then244: ; preds = %if.end240 %272 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %273 = load i32, i32* %err241, align 4 %call245 = call i8* @cudaGetErrorString(i32 %273) %call246 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %272, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 220, i8* %call245) call void @exit(i32 1) #16 unreachable if.end247: ; preds = %if.end240 %274 = load i32*, i32** %d_cw32idx, align 8 %275 = bitcast i32* %274 to i8* %call249 = call i32 @cudaFree(i8* %275) store i32 %call249, i32* %err248, align 4 %276 = load i32, i32* %err248, align 4 %cmp250 = icmp ne i32 0, %276 br i1 %cmp250, label %if.then251, label %if.end254 if.then251: ; preds = %if.end247 %277 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %278 = load i32, i32* %err248, align 4 %call252 = call i8* @cudaGetErrorString(i32 %278) %call253 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %277, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 221, i8* %call252) call void @exit(i32 1) #16 unreachable if.end254: ; preds = %if.end247 %279 = load i32*, i32** %d_cindex, align 8 %280 = bitcast i32* %279 to i8* %call256 = call i32 @cudaFree(i8* %280) store i32 %call256, i32* %err255, align 4 %281 = load i32, i32* %err255, align 4 %cmp257 = icmp ne i32 0, %281 br i1 %cmp257, label %if.then258, label %if.end261 if.then258: ; preds = %if.end254 %282 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %283 = load i32, i32* %err255, align 4 %call259 = call i8* @cudaGetErrorString(i32 %283) %call260 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %282, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 222, i8* %call259) call void @exit(i32 1) #16 unreachable if.end261: ; preds = %if.end254 %284 = load i32*, i32** %d_cindex2, align 8 %285 = bitcast i32* %284 to i8* %call263 = call i32 @cudaFree(i8* %285) store i32 %call263, i32* %err262, align 4 %286 = load i32, i32* %err262, align 4 %cmp264 = icmp ne i32 0, %286 br i1 %cmp264, label %if.then265, label %if.end268 if.then265: ; preds = %if.end261 %287 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %288 = load i32, i32* %err262, align 4 %call266 = call i8* @cudaGetErrorString(i32 %288) %call267 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %287, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0), i32 223, i8* %call266) call void @exit(i32 1) #16 unreachable if.end268: ; preds = %if.end261 %289 = load i32*, i32** %cindex2, align 8 %290 = bitcast i32* %289 to i8* call void @free(i8* %290) #3 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_Z10initParamsPcjRjS0_S0_j(i8* %file_name, i32 %num_block_threads, i32* dereferenceable(4) %num_blocks, i32* dereferenceable(4) %num_elements, i32* dereferenceable(4) %mem_size, i32 %symbol_type_size) #0 comdat { entry: %file_name.addr = alloca i8*, align 8 %num_block_threads.addr = alloca i32, align 4 %num_blocks.addr = alloca i32*, align 8 %num_elements.addr = alloca i32*, align 8 %mem_size.addr = alloca i32*, align 8 %symbol_type_size.addr = alloca i32, align 4 %f = alloca %struct._IO_FILE*, align 8 store i8* %file_name, i8** %file_name.addr, align 8 store i32 %num_block_threads, i32* %num_block_threads.addr, align 4 store i32* %num_blocks, i32** %num_blocks.addr, align 8 store i32* %num_elements, i32** %num_elements.addr, align 8 store i32* %mem_size, i32** %mem_size.addr, align 8 store i32 %symbol_type_size, i32* %symbol_type_size.addr, align 4 %0 = load i8*, i8** %file_name.addr, align 8 %cmp = icmp eq i8* %0, null br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %1 = load i32*, i32** %num_blocks.addr, align 8 %2 = load i32, i32* %1, align 4 %3 = load i32, i32* %num_block_threads.addr, align 4 %mul = mul i32 %2, %3 %4 = load i32*, i32** %num_elements.addr, align 8 store i32 %mul, i32* %4, align 4 %5 = load i32*, i32** %num_elements.addr, align 8 %6 = load i32, i32* %5, align 4 %7 = load i32, i32* %symbol_type_size.addr, align 4 %mul1 = mul i32 %6, %7 %8 = load i32*, i32** %mem_size.addr, align 8 store i32 %mul1, i32* %8, align 4 br label %if.end7 if.else: ; preds = %entry %9 = load i8*, i8** %file_name.addr, align 8 %call = call %struct._IO_FILE* @fopen(i8* %9, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0)) store %struct._IO_FILE* %call, %struct._IO_FILE** %f, align 8 %10 = load %struct._IO_FILE*, %struct._IO_FILE** %f, align 8 %tobool = icmp ne %struct._IO_FILE* %10, null br i1 %tobool, label %if.end, label %if.then2 if.then2: ; preds = %if.else %11 = load i8*, i8** %file_name.addr, align 8 call void @perror(i8* %11) call void @exit(i32 1) #16 unreachable if.end: ; preds = %if.else %12 = load %struct._IO_FILE*, %struct._IO_FILE** %f, align 8 %call3 = call i32 @fseek(%struct._IO_FILE* %12, i64 0, i32 2) %13 = load %struct._IO_FILE*, %struct._IO_FILE** %f, align 8 %call4 = call i64 @ftell(%struct._IO_FILE* %13) %conv = trunc i64 %call4 to i32 %14 = load i32*, i32** %mem_size.addr, align 8 store i32 %conv, i32* %14, align 4 %15 = load %struct._IO_FILE*, %struct._IO_FILE** %f, align 8 %call5 = call i32 @fclose(%struct._IO_FILE* %15) %16 = load i32*, i32** %mem_size.addr, align 8 %17 = load i32, i32* %16, align 4 %18 = load i32, i32* %symbol_type_size.addr, align 4 %div = udiv i32 %17, %18 %19 = load i32*, i32** %num_elements.addr, align 8 store i32 %div, i32* %19, align 4 %20 = load i32*, i32** %num_elements.addr, align 8 %21 = load i32, i32* %20, align 4 %22 = load i32, i32* %num_block_threads.addr, align 4 %div6 = udiv i32 %21, %22 %23 = load i32*, i32** %num_blocks.addr, align 8 store i32 %div6, i32* %23, align 4 br label %if.end7 if.end7: ; preds = %if.end, %if.then ret void } ; Function Attrs: nounwind declare dso_local noalias i8* @malloc(i64) #11 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #4 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_Z8loadDataPcPjS0_S0_jjRd(i8* %file_name, i32* %sourceData, i32* %codewords, i32* %codewordlens, i32 %num_elements, i32 %mem_size, double* dereferenceable(8) %H) #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %file_name.addr = alloca i8*, align 8 %sourceData.addr = alloca i32*, align 8 %codewords.addr = alloca i32*, align 8 %codewordlens.addr = alloca i32*, align 8 %num_elements.addr = alloca i32, align 4 %mem_size.addr = alloca i32, align 4 %H.addr = alloca double*, align 8 %freqs = alloca [256 x i32], align 16 %root = alloca %class.INode*, align 8 %codes = alloca %"class.std::map", align 8 %ref.tmp = alloca %"class.std::vector.0", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %it = alloca %"struct.std::_Rb_tree_const_iterator", align 8 %ref.tmp8 = alloca %"struct.std::_Rb_tree_iterator", align 8 %ref.tmp12 = alloca %"struct.std::_Rb_tree_const_iterator", align 8 %ref.tmp13 = alloca %"struct.std::_Rb_tree_iterator", align 8 %count = alloca i32, align 4 %agg.tmp = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp24 = alloca %"struct.std::_Bit_const_iterator", align 8 %i = alloca i32, align 4 %i59 = alloca i32, align 4 %p = alloca double, align 8 store i8* %file_name, i8** %file_name.addr, align 8 store i32* %sourceData, i32** %sourceData.addr, align 8 store i32* %codewords, i32** %codewords.addr, align 8 store i32* %codewordlens, i32** %codewordlens.addr, align 8 store i32 %num_elements, i32* %num_elements.addr, align 4 store i32 %mem_size, i32* %mem_size.addr, align 4 store double* %H, double** %H.addr, align 8 %0 = load i8*, i8** %file_name.addr, align 8 %cmp = icmp eq i8* %0, null br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.14, i64 0, i64 0)) call void @exit(i32 -1) #16 unreachable if.else: ; preds = %entry %1 = bitcast [256 x i32]* %freqs to i8* call void @llvm.memset.p0i8.i64(i8* align 16 %1, i8 0, i64 1024, i1 false) %2 = load i8*, i8** %file_name.addr, align 8 %arraydecay = getelementptr inbounds [256 x i32], [256 x i32]* %freqs, i64 0, i64 0 %3 = load i32, i32* %mem_size.addr, align 4 %4 = load i32*, i32** %sourceData.addr, align 8 %call1 = call i32 @_Z8runHistoPcPjjS0_(i8* %2, i32* %arraydecay, i32 %3, i32* %4) %call2 = call %class.INode* @_Z9BuildTreeRA256_j([256 x i32]* dereferenceable(1024) %freqs) store %class.INode* %call2, %class.INode** %root, align 8 call void @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEEC2Ev(%"class.std::map"* %codes) %5 = load %class.INode*, %class.INode** %root, align 8 invoke void @_ZNSt6vectorIbSaIbEEC2Ev(%"class.std::vector.0"* %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.else invoke void @_Z13GenerateCodesPK5INodeRKSt6vectorIbSaIbEERSt3mapIhS4_St4lessIhESaISt4pairIKhS4_EEE(%class.INode* %5, %"class.std::vector.0"* dereferenceable(40) %ref.tmp, %"class.std::map"* dereferenceable(48) %codes) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont invoke void @_ZNSt6vectorIbSaIbEED2Ev(%"class.std::vector.0"* %ref.tmp) to label %invoke.cont5 unwind label %lpad invoke.cont5: ; preds = %invoke.cont4 %6 = load %class.INode*, %class.INode** %root, align 8 %isnull = icmp eq %class.INode* %6, null br i1 %isnull, label %delete.end, label %delete.notnull delete.notnull: ; preds = %invoke.cont5 %7 = bitcast %class.INode* %6 to void (%class.INode*)*** %vtable = load void (%class.INode*)**, void (%class.INode*)*** %7, align 8 %vfn = getelementptr inbounds void (%class.INode*)*, void (%class.INode*)** %vtable, i64 1 %8 = load void (%class.INode*)*, void (%class.INode*)** %vfn, align 8 invoke void %8(%class.INode* %6) to label %invoke.cont7 unwind label %lpad invoke.cont7: ; preds = %delete.notnull br label %delete.end delete.end: ; preds = %invoke.cont7, %invoke.cont5 %call10 = invoke %"struct.std::_Rb_tree_node_base"* @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE5beginEv(%"class.std::map"* %codes) to label %invoke.cont9 unwind label %lpad invoke.cont9: ; preds = %delete.end %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %ref.tmp8, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call10, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 invoke void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2ERKSt17_Rb_tree_iteratorIS5_E(%"struct.std::_Rb_tree_const_iterator"* %it, %"struct.std::_Rb_tree_iterator"* dereferenceable(8) %ref.tmp8) to label %invoke.cont11 unwind label %lpad invoke.cont11: ; preds = %invoke.cont9 br label %for.cond for.cond: ; preds = %invoke.cont56, %invoke.cont11 %call15 = invoke %"struct.std::_Rb_tree_node_base"* @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE3endEv(%"class.std::map"* %codes) to label %invoke.cont14 unwind label %lpad invoke.cont14: ; preds = %for.cond %coerce.dive16 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %ref.tmp13, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call15, %"struct.std::_Rb_tree_node_base"** %coerce.dive16, align 8 invoke void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2ERKSt17_Rb_tree_iteratorIS5_E(%"struct.std::_Rb_tree_const_iterator"* %ref.tmp12, %"struct.std::_Rb_tree_iterator"* dereferenceable(8) %ref.tmp13) to label %invoke.cont17 unwind label %lpad invoke.cont17: ; preds = %invoke.cont14 %call19 = invoke zeroext i1 @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEneERKS6_(%"struct.std::_Rb_tree_const_iterator"* %it, %"struct.std::_Rb_tree_const_iterator"* dereferenceable(8) %ref.tmp12) to label %invoke.cont18 unwind label %lpad invoke.cont18: ; preds = %invoke.cont17 br i1 %call19, label %for.body, label %for.end58 for.body: ; preds = %invoke.cont18 %call21 = invoke %"struct.std::pair"* @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEptEv(%"struct.std::_Rb_tree_const_iterator"* %it) to label %invoke.cont20 unwind label %lpad invoke.cont20: ; preds = %for.body %second = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %call21, i32 0, i32 1 %call23 = invoke { i64*, i32 } @_ZNKSt6vectorIbSaIbEE5beginEv(%"class.std::vector.0"* %second) to label %invoke.cont22 unwind label %lpad invoke.cont22: ; preds = %invoke.cont20 %9 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %10 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %9, i32 0, i32 0 %11 = extractvalue { i64*, i32 } %call23, 0 store i64* %11, i64** %10, align 8 %12 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %9, i32 0, i32 1 %13 = extractvalue { i64*, i32 } %call23, 1 store i32 %13, i32* %12, align 8 %call26 = invoke %"struct.std::pair"* @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEptEv(%"struct.std::_Rb_tree_const_iterator"* %it) to label %invoke.cont25 unwind label %lpad invoke.cont25: ; preds = %invoke.cont22 %second27 = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %call26, i32 0, i32 1 %call29 = invoke { i64*, i32 } @_ZNKSt6vectorIbSaIbEE3endEv(%"class.std::vector.0"* %second27) to label %invoke.cont28 unwind label %lpad invoke.cont28: ; preds = %invoke.cont25 %14 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp24 to { i64*, i32 }* %15 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %14, i32 0, i32 0 %16 = extractvalue { i64*, i32 } %call29, 0 store i64* %16, i64** %15, align 8 %17 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %14, i32 0, i32 1 %18 = extractvalue { i64*, i32 } %call29, 1 store i32 %18, i32* %17, align 8 %19 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %20 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %19, i32 0, i32 0 %21 = load i64*, i64** %20, align 8 %22 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %19, i32 0, i32 1 %23 = load i32, i32* %22, align 8 %24 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp24 to { i64*, i32 }* %25 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %24, i32 0, i32 0 %26 = load i64*, i64** %25, align 8 %27 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %24, i32 0, i32 1 %28 = load i32, i32* %27, align 8 %call31 = invoke i64 @_ZSt8distanceISt19_Bit_const_iteratorENSt15iterator_traitsIT_E15difference_typeES2_S2_(i64* %21, i32 %23, i64* %26, i32 %28) to label %invoke.cont30 unwind label %lpad invoke.cont30: ; preds = %invoke.cont28 %conv = trunc i64 %call31 to i32 store i32 %conv, i32* %count, align 4 store i32 0, i32* %i, align 4 br label %for.cond32 for.cond32: ; preds = %for.inc, %invoke.cont30 %29 = load i32, i32* %i, align 4 %30 = load i32, i32* %count, align 4 %cmp33 = icmp ult i32 %29, %30 br i1 %cmp33, label %for.body34, label %for.end for.body34: ; preds = %for.cond32 %call36 = invoke %"struct.std::pair"* @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEptEv(%"struct.std::_Rb_tree_const_iterator"* %it) to label %invoke.cont35 unwind label %lpad invoke.cont35: ; preds = %for.body34 %second37 = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %call36, i32 0, i32 1 %31 = load i32, i32* %i, align 4 %conv38 = sext i32 %31 to i64 %call40 = invoke zeroext i1 @_ZNKSt6vectorIbSaIbEEixEm(%"class.std::vector.0"* %second37, i64 %conv38) to label %invoke.cont39 unwind label %lpad invoke.cont39: ; preds = %invoke.cont35 br i1 %call40, label %if.then41, label %if.end if.then41: ; preds = %invoke.cont39 %32 = load i32, i32* %count, align 4 %33 = load i32, i32* %i, align 4 %sub = sub nsw i32 %32, %33 %sub42 = sub nsw i32 %sub, 1 %call44 = invoke float @_ZSt3powfi(float 2.000000e+00, i32 %sub42) to label %invoke.cont43 unwind label %lpad invoke.cont43: ; preds = %if.then41 %conv45 = fptoui float %call44 to i32 %34 = load i32*, i32** %codewords.addr, align 8 %call47 = invoke %"struct.std::pair"* @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEptEv(%"struct.std::_Rb_tree_const_iterator"* %it) to label %invoke.cont46 unwind label %lpad invoke.cont46: ; preds = %invoke.cont43 %first = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %call47, i32 0, i32 0 %35 = load i8, i8* %first, align 8 %conv48 = zext i8 %35 to i32 %idxprom = zext i32 %conv48 to i64 %arrayidx = getelementptr inbounds i32, i32* %34, i64 %idxprom %36 = load i32, i32* %arrayidx, align 4 %add = add i32 %36, %conv45 store i32 %add, i32* %arrayidx, align 4 br label %if.end lpad: ; preds = %for.end78, %for.inc55, %for.end, %invoke.cont43, %if.then41, %invoke.cont35, %for.body34, %invoke.cont28, %invoke.cont25, %invoke.cont22, %invoke.cont20, %for.body, %invoke.cont17, %invoke.cont14, %for.cond, %invoke.cont9, %delete.end, %delete.notnull, %invoke.cont4, %if.else %37 = landingpad { i8*, i32 } cleanup %38 = extractvalue { i8*, i32 } %37, 0 store i8* %38, i8** %exn.slot, align 8 %39 = extractvalue { i8*, i32 } %37, 1 store i32 %39, i32* %ehselector.slot, align 4 br label %ehcleanup lpad3: ; preds = %invoke.cont %40 = landingpad { i8*, i32 } cleanup %41 = extractvalue { i8*, i32 } %40, 0 store i8* %41, i8** %exn.slot, align 8 %42 = extractvalue { i8*, i32 } %40, 1 store i32 %42, i32* %ehselector.slot, align 4 invoke void @_ZNSt6vectorIbSaIbEED2Ev(%"class.std::vector.0"* %ref.tmp) to label %invoke.cont6 unwind label %terminate.lpad invoke.cont6: ; preds = %lpad3 br label %ehcleanup if.end: ; preds = %invoke.cont46, %invoke.cont39 br label %for.inc for.inc: ; preds = %if.end %43 = load i32, i32* %i, align 4 %inc = add nsw i32 %43, 1 store i32 %inc, i32* %i, align 4 br label %for.cond32 for.end: ; preds = %for.cond32 %44 = load i32, i32* %count, align 4 %45 = load i32*, i32** %codewordlens.addr, align 8 %call50 = invoke %"struct.std::pair"* @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEptEv(%"struct.std::_Rb_tree_const_iterator"* %it) to label %invoke.cont49 unwind label %lpad invoke.cont49: ; preds = %for.end %first51 = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %call50, i32 0, i32 0 %46 = load i8, i8* %first51, align 8 %conv52 = zext i8 %46 to i32 %idxprom53 = zext i32 %conv52 to i64 %arrayidx54 = getelementptr inbounds i32, i32* %45, i64 %idxprom53 store i32 %44, i32* %arrayidx54, align 4 br label %for.inc55 for.inc55: ; preds = %invoke.cont49 %call57 = invoke dereferenceable(8) %"struct.std::_Rb_tree_const_iterator"* @_ZNSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEppEv(%"struct.std::_Rb_tree_const_iterator"* %it) to label %invoke.cont56 unwind label %lpad invoke.cont56: ; preds = %for.inc55 br label %for.cond for.end58: ; preds = %invoke.cont18 %47 = load double*, double** %H.addr, align 8 store double 0.000000e+00, double* %47, align 8 store i32 0, i32* %i59, align 4 br label %for.cond60 for.cond60: ; preds = %for.inc76, %for.end58 %48 = load i32, i32* %i59, align 4 %cmp61 = icmp ult i32 %48, 256 br i1 %cmp61, label %for.body62, label %for.end78 for.body62: ; preds = %for.cond60 %49 = load i32, i32* %i59, align 4 %idxprom63 = zext i32 %49 to i64 %arrayidx64 = getelementptr inbounds [256 x i32], [256 x i32]* %freqs, i64 0, i64 %idxprom63 %50 = load i32, i32* %arrayidx64, align 4 %cmp65 = icmp ugt i32 %50, 0 br i1 %cmp65, label %if.then66, label %if.end75 if.then66: ; preds = %for.body62 %51 = load i32, i32* %i59, align 4 %idxprom67 = zext i32 %51 to i64 %arrayidx68 = getelementptr inbounds [256 x i32], [256 x i32]* %freqs, i64 0, i64 %idxprom67 %52 = load i32, i32* %arrayidx68, align 4 %conv69 = uitofp i32 %52 to double %53 = load i32, i32* %mem_size.addr, align 4 %conv70 = uitofp i32 %53 to double %div = fdiv double %conv69, %conv70 store double %div, double* %p, align 8 %54 = load double, double* %p, align 8 %55 = load double, double* %p, align 8 %call71 = call double @log(double %55) #3 %mul = fmul contract double %54, %call71 %call72 = call double @log(double 2.000000e+00) #3 %div73 = fdiv double %mul, %call72 %56 = load double*, double** %H.addr, align 8 %57 = load double, double* %56, align 8 %add74 = fadd contract double %57, %div73 store double %add74, double* %56, align 8 br label %if.end75 if.end75: ; preds = %if.then66, %for.body62 br label %for.inc76 for.inc76: ; preds = %if.end75 %58 = load i32, i32* %i59, align 4 %inc77 = add i32 %58, 1 store i32 %inc77, i32* %i59, align 4 br label %for.cond60 for.end78: ; preds = %for.cond60 %59 = load double*, double** %H.addr, align 8 %60 = load double, double* %59, align 8 %fneg = fneg double %60 %61 = load double*, double** %H.addr, align 8 store double %fneg, double* %61, align 8 %62 = load i8*, i8** %file_name.addr, align 8 %63 = load i32, i32* %mem_size.addr, align 4 %64 = load double*, double** %H.addr, align 8 %65 = load double, double* %64, align 8 %call80 = invoke i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.15, i64 0, i64 0), i8* %62, i32 %63, double %65) to label %invoke.cont79 unwind label %lpad invoke.cont79: ; preds = %for.end78 call void @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEED2Ev(%"class.std::map"* %codes) br label %if.end82 ehcleanup: ; preds = %invoke.cont6, %lpad invoke void @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEED2Ev(%"class.std::map"* %codes) to label %invoke.cont81 unwind label %terminate.lpad invoke.cont81: ; preds = %ehcleanup br label %eh.resume if.end82: ; preds = %invoke.cont79 ret void eh.resume: ; preds = %invoke.cont81 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val83 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val83 terminate.lpad: ; preds = %ehcleanup, %lpad3 %66 = landingpad { i8*, i32 } catch i8* null %67 = extractvalue { i8*, i32 } %66, 0 call void @__clang_call_terminate(i8* %67) #16 unreachable } declare dso_local i32 @fprintf(%struct._IO_FILE*, i8*, ...) #1 declare dso_local i8* @cudaGetErrorString(i32) #1 declare dso_local void @cpu_vlc_encode(i32*, i32, i32*, i32*, i32*, i32*) #1 ; Function Attrs: noinline optnone uwtable define internal void @_ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_(i32* %data, i32* %gm_codewords, i32* %gm_codewordlens, i32* %cw32, i32* %cw32len, i32* %cw32idx, i32* %out, i32* %outidx) #0 { entry: %data.addr = alloca i32*, align 8 %gm_codewords.addr = alloca i32*, align 8 %gm_codewordlens.addr = alloca i32*, align 8 %cw32.addr = alloca i32*, align 8 %cw32len.addr = alloca i32*, align 8 %cw32idx.addr = alloca i32*, align 8 %out.addr = alloca i32*, align 8 %outidx.addr = alloca i32*, align 8 %grid_dim = alloca %struct.dim3, align 8 %block_dim = alloca %struct.dim3, align 8 %shmem_size = alloca i64, align 8 %stream = alloca i8*, align 8 %grid_dim.coerce = alloca { i64, i32 }, align 8 %block_dim.coerce = alloca { i64, i32 }, align 8 store i32* %data, i32** %data.addr, align 8 store i32* %gm_codewords, i32** %gm_codewords.addr, align 8 store i32* %gm_codewordlens, i32** %gm_codewordlens.addr, align 8 store i32* %cw32, i32** %cw32.addr, align 8 store i32* %cw32len, i32** %cw32len.addr, align 8 store i32* %cw32idx, i32** %cw32idx.addr, align 8 store i32* %out, i32** %out.addr, align 8 store i32* %outidx, i32** %outidx.addr, align 8 %kernel_args = alloca i8*, i64 8, align 16 %0 = bitcast i32** %data.addr to i8* %1 = getelementptr i8*, i8** %kernel_args, i32 0 store i8* %0, i8** %1 %2 = bitcast i32** %gm_codewords.addr to i8* %3 = getelementptr i8*, i8** %kernel_args, i32 1 store i8* %2, i8** %3 %4 = bitcast i32** %gm_codewordlens.addr to i8* %5 = getelementptr i8*, i8** %kernel_args, i32 2 store i8* %4, i8** %5 %6 = bitcast i32** %cw32.addr to i8* %7 = getelementptr i8*, i8** %kernel_args, i32 3 store i8* %6, i8** %7 %8 = bitcast i32** %cw32len.addr to i8* %9 = getelementptr i8*, i8** %kernel_args, i32 4 store i8* %8, i8** %9 %10 = bitcast i32** %cw32idx.addr to i8* %11 = getelementptr i8*, i8** %kernel_args, i32 5 store i8* %10, i8** %11 %12 = bitcast i32** %out.addr to i8* %13 = getelementptr i8*, i8** %kernel_args, i32 6 store i8* %12, i8** %13 %14 = bitcast i32** %outidx.addr to i8* %15 = getelementptr i8*, i8** %kernel_args, i32 7 store i8* %14, i8** %15 %16 = call i32 @__cudaPopCallConfiguration(%struct.dim3* %grid_dim, %struct.dim3* %block_dim, i64* %shmem_size, i8** %stream) %17 = load i64, i64* %shmem_size, align 8 %18 = load i8*, i8** %stream, align 8 %19 = bitcast { i64, i32 }* %grid_dim.coerce to i8* %20 = bitcast %struct.dim3* %grid_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 12, i1 false) %21 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 0 %22 = load i64, i64* %21, align 8 %23 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 1 %24 = load i32, i32* %23, align 8 %25 = bitcast { i64, i32 }* %block_dim.coerce to i8* %26 = bitcast %struct.dim3* %block_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %25, i8* align 8 %26, i64 12, i1 false) %27 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 0 %28 = load i64, i64* %27, align 8 %29 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 1 %30 = load i32, i32* %29, align 8 %31 = bitcast i8* %18 to %struct.CUstream_st* %call = call i32 @cudaLaunchKernel(i8* bitcast (void (i32*, i32*, i32*, i32*, i32*, i32*, i32*, i32*)* @_ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_ to i8*), i64 %22, i32 %24, i64 %28, i32 %30, i8** %kernel_args, i64 %17, %struct.CUstream_st* %31) br label %setup.end setup.end: ; preds = %entry ret void } declare dso_local i32 @cudaThreadSynchronize() #1 ; Function Attrs: noinline optnone uwtable define internal void @_ZL17preallocBlockSumsj(i32 %maxNumElements) #0 { entry: %maxNumElements.addr = alloca i32, align 4 %blockSize = alloca i32, align 4 %numElts = alloca i32, align 4 %level = alloca i32, align 4 %numBlocks = alloca i32, align 4 %numBlocks19 = alloca i32, align 4 %err = alloca i32, align 4 %err52 = alloca i32, align 4 store i32 %maxNumElements, i32* %maxNumElements.addr, align 4 %0 = load i32, i32* @_ZL18g_numEltsAllocated, align 4 %cmp = icmp eq i32 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry br label %cond.end cond.false: ; preds = %entry call void @__assert_fail(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i32 63, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @__PRETTY_FUNCTION__._ZL17preallocBlockSumsj, i64 0, i64 0)) #16 unreachable 1: ; No predecessors! br label %cond.end cond.end: ; preds = %1, %cond.true %2 = load i32, i32* %maxNumElements.addr, align 4 store i32 %2, i32* @_ZL18g_numEltsAllocated, align 4 store i32 256, i32* %blockSize, align 4 %3 = load i32, i32* %maxNumElements.addr, align 4 store i32 %3, i32* %numElts, align 4 store i32 0, i32* %level, align 4 br label %do.body do.body: ; preds = %do.cond, %cond.end %4 = load i32, i32* %numElts, align 4 %conv = uitofp i32 %4 to float %5 = load i32, i32* %blockSize, align 4 %conv1 = uitofp i32 %5 to float %mul = fmul contract float 2.000000e+00, %conv1 %div = fdiv float %conv, %mul %call = call float @_ZSt4ceilf(float %div) %conv2 = fptosi float %call to i32 %cmp3 = icmp sgt i32 1, %conv2 br i1 %cmp3, label %cond.true4, label %cond.false5 cond.true4: ; preds = %do.body br label %cond.end12 cond.false5: ; preds = %do.body %6 = load i32, i32* %numElts, align 4 %conv6 = uitofp i32 %6 to float %7 = load i32, i32* %blockSize, align 4 %conv7 = uitofp i32 %7 to float %mul8 = fmul contract float 2.000000e+00, %conv7 %div9 = fdiv float %conv6, %mul8 %call10 = call float @_ZSt4ceilf(float %div9) %conv11 = fptosi float %call10 to i32 br label %cond.end12 cond.end12: ; preds = %cond.false5, %cond.true4 %cond = phi i32 [ 1, %cond.true4 ], [ %conv11, %cond.false5 ] store i32 %cond, i32* %numBlocks, align 4 %8 = load i32, i32* %numBlocks, align 4 %cmp13 = icmp ugt i32 %8, 1 br i1 %cmp13, label %if.then, label %if.end if.then: ; preds = %cond.end12 %9 = load i32, i32* %level, align 4 %inc = add nsw i32 %9, 1 store i32 %inc, i32* %level, align 4 br label %if.end if.end: ; preds = %if.then, %cond.end12 %10 = load i32, i32* %numBlocks, align 4 store i32 %10, i32* %numElts, align 4 br label %do.cond do.cond: ; preds = %if.end %11 = load i32, i32* %numElts, align 4 %cmp14 = icmp ugt i32 %11, 1 br i1 %cmp14, label %do.body, label %do.end do.end: ; preds = %do.cond %12 = load i32, i32* %level, align 4 %conv15 = sext i32 %12 to i64 %mul16 = mul i64 %conv15, 8 %call17 = call noalias i8* @malloc(i64 %mul16) #3 %13 = bitcast i8* %call17 to i32** store i32** %13, i32*** @_ZL15g_scanBlockSums, align 8 %14 = load i32, i32* %level, align 4 store i32 %14, i32* @_ZL20g_numLevelsAllocated, align 4 %15 = load i32, i32* %maxNumElements.addr, align 4 store i32 %15, i32* %numElts, align 4 store i32 0, i32* %level, align 4 br label %do.body18 do.body18: ; preds = %do.cond49, %do.end %16 = load i32, i32* %numElts, align 4 %conv20 = uitofp i32 %16 to float %17 = load i32, i32* %blockSize, align 4 %conv21 = uitofp i32 %17 to float %mul22 = fmul contract float 2.000000e+00, %conv21 %div23 = fdiv float %conv20, %mul22 %call24 = call float @_ZSt4ceilf(float %div23) %conv25 = fptosi float %call24 to i32 %cmp26 = icmp sgt i32 1, %conv25 br i1 %cmp26, label %cond.true27, label %cond.false28 cond.true27: ; preds = %do.body18 br label %cond.end35 cond.false28: ; preds = %do.body18 %18 = load i32, i32* %numElts, align 4 %conv29 = uitofp i32 %18 to float %19 = load i32, i32* %blockSize, align 4 %conv30 = uitofp i32 %19 to float %mul31 = fmul contract float 2.000000e+00, %conv30 %div32 = fdiv float %conv29, %mul31 %call33 = call float @_ZSt4ceilf(float %div32) %conv34 = fptosi float %call33 to i32 br label %cond.end35 cond.end35: ; preds = %cond.false28, %cond.true27 %cond36 = phi i32 [ 1, %cond.true27 ], [ %conv34, %cond.false28 ] store i32 %cond36, i32* %numBlocks19, align 4 %20 = load i32, i32* %numBlocks19, align 4 %cmp37 = icmp ugt i32 %20, 1 br i1 %cmp37, label %if.then38, label %if.end48 if.then38: ; preds = %cond.end35 %21 = load i32**, i32*** @_ZL15g_scanBlockSums, align 8 %22 = load i32, i32* %level, align 4 %inc39 = add nsw i32 %22, 1 store i32 %inc39, i32* %level, align 4 %idxprom = sext i32 %22 to i64 %arrayidx = getelementptr inbounds i32*, i32** %21, i64 %idxprom %23 = bitcast i32** %arrayidx to i8** %24 = load i32, i32* %numBlocks19, align 4 %conv40 = zext i32 %24 to i64 %mul41 = mul i64 %conv40, 4 %call42 = call i32 @cudaMalloc(i8** %23, i64 %mul41) store i32 %call42, i32* %err, align 4 %25 = load i32, i32* %err, align 4 %cmp43 = icmp ne i32 0, %25 br i1 %cmp43, label %if.then44, label %if.end47 if.then44: ; preds = %if.then38 %26 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %27 = load i32, i32* %err, align 4 %call45 = call i8* @cudaGetErrorString(i32 %27) %call46 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %26, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i32 89, i8* %call45) call void @exit(i32 1) #16 unreachable if.end47: ; preds = %if.then38 br label %if.end48 if.end48: ; preds = %if.end47, %cond.end35 %28 = load i32, i32* %numBlocks19, align 4 store i32 %28, i32* %numElts, align 4 br label %do.cond49 do.cond49: ; preds = %if.end48 %29 = load i32, i32* %numElts, align 4 %cmp50 = icmp ugt i32 %29, 1 br i1 %cmp50, label %do.body18, label %do.end51 do.end51: ; preds = %do.cond49 %call53 = call i32 @cudaGetLastError() store i32 %call53, i32* %err52, align 4 %30 = load i32, i32* %err52, align 4 %cmp54 = icmp ne i32 0, %30 br i1 %cmp54, label %if.then55, label %if.end58 if.then55: ; preds = %do.end51 %31 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %32 = load i32, i32* %err52, align 4 %call56 = call i8* @cudaGetErrorString(i32 %32) %call57 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %31, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.18, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i32 93, i8* %call56) call void @exit(i32 1) #16 unreachable if.end58: ; preds = %do.end51 ret void } ; Function Attrs: noinline optnone uwtable define internal void @_ZL12prescanArrayPjS_i(i32* %outArray, i32* %inArray, i32 %numElements) #0 { entry: %outArray.addr = alloca i32*, align 8 %inArray.addr = alloca i32*, align 8 %numElements.addr = alloca i32, align 4 store i32* %outArray, i32** %outArray.addr, align 8 store i32* %inArray, i32** %inArray.addr, align 8 store i32 %numElements, i32* %numElements.addr, align 4 %0 = load i32*, i32** %outArray.addr, align 8 %1 = load i32*, i32** %inArray.addr, align 8 %2 = load i32, i32* %numElements.addr, align 4 call void @_ZL21prescanArrayRecursivePjPKjii(i32* %0, i32* %1, i32 %2, i32 0) ret void } ; Function Attrs: noinline optnone uwtable define internal void @_ZL5pack2PjS_S_S_j(i32* %srcData, i32* %cindex, i32* %cindex2, i32* %dstData, i32 %original_num_block_elements) #0 { entry: %srcData.addr = alloca i32*, align 8 %cindex.addr = alloca i32*, align 8 %cindex2.addr = alloca i32*, align 8 %dstData.addr = alloca i32*, align 8 %original_num_block_elements.addr = alloca i32, align 4 %grid_dim = alloca %struct.dim3, align 8 %block_dim = alloca %struct.dim3, align 8 %shmem_size = alloca i64, align 8 %stream = alloca i8*, align 8 %grid_dim.coerce = alloca { i64, i32 }, align 8 %block_dim.coerce = alloca { i64, i32 }, align 8 store i32* %srcData, i32** %srcData.addr, align 8 store i32* %cindex, i32** %cindex.addr, align 8 store i32* %cindex2, i32** %cindex2.addr, align 8 store i32* %dstData, i32** %dstData.addr, align 8 store i32 %original_num_block_elements, i32* %original_num_block_elements.addr, align 4 %kernel_args = alloca i8*, i64 5, align 16 %0 = bitcast i32** %srcData.addr to i8* %1 = getelementptr i8*, i8** %kernel_args, i32 0 store i8* %0, i8** %1 %2 = bitcast i32** %cindex.addr to i8* %3 = getelementptr i8*, i8** %kernel_args, i32 1 store i8* %2, i8** %3 %4 = bitcast i32** %cindex2.addr to i8* %5 = getelementptr i8*, i8** %kernel_args, i32 2 store i8* %4, i8** %5 %6 = bitcast i32** %dstData.addr to i8* %7 = getelementptr i8*, i8** %kernel_args, i32 3 store i8* %6, i8** %7 %8 = bitcast i32* %original_num_block_elements.addr to i8* %9 = getelementptr i8*, i8** %kernel_args, i32 4 store i8* %8, i8** %9 %10 = call i32 @__cudaPopCallConfiguration(%struct.dim3* %grid_dim, %struct.dim3* %block_dim, i64* %shmem_size, i8** %stream) %11 = load i64, i64* %shmem_size, align 8 %12 = load i8*, i8** %stream, align 8 %13 = bitcast { i64, i32 }* %grid_dim.coerce to i8* %14 = bitcast %struct.dim3* %grid_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 12, i1 false) %15 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 0 %16 = load i64, i64* %15, align 8 %17 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 1 %18 = load i32, i32* %17, align 8 %19 = bitcast { i64, i32 }* %block_dim.coerce to i8* %20 = bitcast %struct.dim3* %block_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 12, i1 false) %21 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 0 %22 = load i64, i64* %21, align 8 %23 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 1 %24 = load i32, i32* %23, align 8 %25 = bitcast i8* %12 to %struct.CUstream_st* %call = call i32 @cudaLaunchKernel(i8* bitcast (void (i32*, i32*, i32*, i32*, i32)* @_ZL5pack2PjS_S_S_j to i8*), i64 %16, i32 %18, i64 %22, i32 %24, i8** %kernel_args, i64 %11, %struct.CUstream_st* %25) br label %setup.end setup.end: ; preds = %entry ret void } declare dso_local i32 @cudaGetLastError() #1 ; Function Attrs: noinline optnone uwtable define internal void @_ZL16deallocBlockSumsv() #0 { entry: %i = alloca i32, align 4 %err = alloca i32, align 4 store i32 0, i32* %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, i32* %i, align 4 %1 = load i32, i32* @_ZL20g_numLevelsAllocated, align 4 %cmp = icmp ult i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load i32**, i32*** @_ZL15g_scanBlockSums, align 8 %3 = load i32, i32* %i, align 4 %idxprom = zext i32 %3 to i64 %arrayidx = getelementptr inbounds i32*, i32** %2, i64 %idxprom %4 = load i32*, i32** %arrayidx, align 8 %5 = bitcast i32* %4 to i8* %call = call i32 @cudaFree(i8* %5) br label %for.inc for.inc: ; preds = %for.body %6 = load i32, i32* %i, align 4 %inc = add i32 %6, 1 store i32 %inc, i32* %i, align 4 br label %for.cond for.end: ; preds = %for.cond %call1 = call i32 @cudaGetLastError() store i32 %call1, i32* %err, align 4 %7 = load i32, i32* %err, align 4 %cmp2 = icmp ne i32 0, %7 br i1 %cmp2, label %if.then, label %if.end if.then: ; preds = %for.end %8 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %9 = load i32, i32* %err, align 4 %call3 = call i8* @cudaGetErrorString(i32 %9) %call4 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %8, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.25, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i32 101, i8* %call3) call void @exit(i32 1) #16 unreachable if.end: ; preds = %for.end %10 = load i32**, i32*** @_ZL15g_scanBlockSums, align 8 %11 = bitcast i32** %10 to i8** %12 = bitcast i8** %11 to i8* call void @free(i8* %12) #3 store i32** null, i32*** @_ZL15g_scanBlockSums, align 8 store i32 0, i32* @_ZL18g_numEltsAllocated, align 4 store i32 0, i32* @_ZL20g_numLevelsAllocated, align 4 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i32 @_Z15compare_vectorsIjEiPT_S1_j(i32* %data1, i32* %data2, i32 %size) #0 comdat { entry: %data1.addr = alloca i32*, align 8 %data2.addr = alloca i32*, align 8 %size.addr = alloca i32, align 4 %match = alloca i8, align 1 %i = alloca i32, align 4 store i32* %data1, i32** %data1.addr, align 8 store i32* %data2, i32** %data2.addr, align 8 store i32 %size, i32* %size.addr, align 4 %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.28, i64 0, i64 0)) store i8 1, i8* %match, align 1 store i32 0, i32* %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %entry %0 = load i32, i32* %i, align 4 %1 = load i32, i32* %size.addr, align 4 %cmp = icmp ult i32 %0, %1 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %2 = load i32*, i32** %data1.addr, align 8 %3 = load i32, i32* %i, align 4 %idxprom = zext i32 %3 to i64 %arrayidx = getelementptr inbounds i32, i32* %2, i64 %idxprom %4 = load i32, i32* %arrayidx, align 4 %5 = load i32*, i32** %data2.addr, align 8 %6 = load i32, i32* %i, align 4 %idxprom1 = zext i32 %6 to i64 %arrayidx2 = getelementptr inbounds i32, i32* %5, i64 %idxprom1 %7 = load i32, i32* %arrayidx2, align 4 %cmp3 = icmp ne i32 %4, %7 br i1 %cmp3, label %if.then, label %if.end if.then: ; preds = %for.body store i8 0, i8* %match, align 1 %8 = load i32, i32* %i, align 4 %9 = load i32*, i32** %data1.addr, align 8 %10 = load i32, i32* %i, align 4 %idxprom4 = zext i32 %10 to i64 %arrayidx5 = getelementptr inbounds i32, i32* %9, i64 %idxprom4 %11 = load i32, i32* %arrayidx5, align 4 %12 = load i32, i32* %i, align 4 %13 = load i32*, i32** %data2.addr, align 8 %14 = load i32, i32* %i, align 4 %idxprom6 = zext i32 %14 to i64 %arrayidx7 = getelementptr inbounds i32, i32* %13, i64 %idxprom6 %15 = load i32, i32* %arrayidx7, align 4 %call8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.29, i64 0, i64 0), i32 %8, i32 %11, i32 %12, i32 %15) br label %if.end if.end: ; preds = %if.then, %for.body br label %for.inc for.inc: ; preds = %if.end %16 = load i32, i32* %i, align 4 %inc = add i32 %16, 1 store i32 %inc, i32* %i, align 4 br label %for.cond for.end: ; preds = %for.cond %17 = load i8, i8* %match, align 1 %tobool = trunc i8 %17 to i1 br i1 %tobool, label %if.then9, label %if.else if.then9: ; preds = %for.end %call10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.30, i64 0, i64 0)) ret i32 0 if.else: ; preds = %for.end %call11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.31, i64 0, i64 0)) call void @exit(i32 1) #16 unreachable } ; Function Attrs: nounwind declare dso_local void @free(i8*) #11 ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN5INodeC2Ei(%class.INode* %this, i32 %f) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %class.INode*, align 8 %f.addr = alloca i32, align 4 store %class.INode* %this, %class.INode** %this.addr, align 8 store i32 %f, i32* %f.addr, align 4 %this1 = load %class.INode*, %class.INode** %this.addr, align 8 %0 = bitcast %class.INode* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [4 x i8*] }, { [4 x i8*] }* @_ZTV5INode, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %0, align 8 %f2 = getelementptr inbounds %class.INode, %class.INode* %this1, i32 0, i32 1 %1 = load i32, i32* %f.addr, align 4 store i32 %1, i32* %f2, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN8LeafNodeD2Ev(%class.LeafNode* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %class.LeafNode*, align 8 store %class.LeafNode* %this, %class.LeafNode** %this.addr, align 8 %this1 = load %class.LeafNode*, %class.LeafNode** %this.addr, align 8 %0 = bitcast %class.LeafNode* %this1 to %class.INode* call void @_ZN5INodeD2Ev(%class.INode* %0) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN8LeafNodeD0Ev(%class.LeafNode* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %class.LeafNode*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %class.LeafNode* %this, %class.LeafNode** %this.addr, align 8 %this1 = load %class.LeafNode*, %class.LeafNode** %this.addr, align 8 invoke void @_ZN8LeafNodeD2Ev(%class.LeafNode* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %0 = bitcast %class.LeafNode* %this1 to i8* call void @_ZdlPv(i8* %0) #18 ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 %4 = bitcast %class.LeafNode* %this1 to i8* call void @_ZdlPv(i8* %4) #18 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN5INodeD2Ev(%class.INode* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %class.INode*, align 8 store %class.INode* %this, %class.INode** %this.addr, align 8 %this1 = load %class.INode*, %class.INode** %this.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN5INodeD0Ev(%class.INode* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %class.INode*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %class.INode* %this, %class.INode** %this.addr, align 8 %this1 = load %class.INode*, %class.INode** %this.addr, align 8 invoke void @_ZN5INodeD2Ev(%class.INode* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %0 = bitcast %class.INode* %this1 to i8* call void @_ZdlPv(i8* %0) #18 ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 %4 = bitcast %class.INode* %this1 to i8* call void @_ZdlPv(i8* %4) #18 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN12InternalNodeD2Ev(%class.InternalNode* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %class.InternalNode*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %class.InternalNode* %this, %class.InternalNode** %this.addr, align 8 %this1 = load %class.InternalNode*, %class.InternalNode** %this.addr, align 8 %0 = bitcast %class.InternalNode* %this1 to i32 (...)*** store i32 (...)** bitcast (i8** getelementptr inbounds ({ [4 x i8*] }, { [4 x i8*] }* @_ZTV12InternalNode, i32 0, inrange i32 0, i32 2) to i32 (...)**), i32 (...)*** %0, align 8 %left = getelementptr inbounds %class.InternalNode, %class.InternalNode* %this1, i32 0, i32 1 %1 = load %class.INode*, %class.INode** %left, align 8 %isnull = icmp eq %class.INode* %1, null br i1 %isnull, label %delete.end, label %delete.notnull delete.notnull: ; preds = %entry %2 = bitcast %class.INode* %1 to void (%class.INode*)*** %vtable = load void (%class.INode*)**, void (%class.INode*)*** %2, align 8 %vfn = getelementptr inbounds void (%class.INode*)*, void (%class.INode*)** %vtable, i64 1 %3 = load void (%class.INode*)*, void (%class.INode*)** %vfn, align 8 invoke void %3(%class.INode* %1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %delete.notnull br label %delete.end delete.end: ; preds = %invoke.cont, %entry %right = getelementptr inbounds %class.InternalNode, %class.InternalNode* %this1, i32 0, i32 2 %4 = load %class.INode*, %class.INode** %right, align 8 %isnull2 = icmp eq %class.INode* %4, null br i1 %isnull2, label %delete.end7, label %delete.notnull3 delete.notnull3: ; preds = %delete.end %5 = bitcast %class.INode* %4 to void (%class.INode*)*** %vtable4 = load void (%class.INode*)**, void (%class.INode*)*** %5, align 8 %vfn5 = getelementptr inbounds void (%class.INode*)*, void (%class.INode*)** %vtable4, i64 1 %6 = load void (%class.INode*)*, void (%class.INode*)** %vfn5, align 8 invoke void %6(%class.INode* %4) to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %delete.notnull3 br label %delete.end7 delete.end7: ; preds = %invoke.cont6, %delete.end %7 = bitcast %class.InternalNode* %this1 to %class.INode* call void @_ZN5INodeD2Ev(%class.INode* %7) ret void lpad: ; preds = %delete.notnull3, %delete.notnull %8 = landingpad { i8*, i32 } cleanup %9 = extractvalue { i8*, i32 } %8, 0 store i8* %9, i8** %exn.slot, align 8 %10 = extractvalue { i8*, i32 } %8, 1 store i32 %10, i32* %ehselector.slot, align 4 %11 = bitcast %class.InternalNode* %this1 to %class.INode* invoke void @_ZN5INodeD2Ev(%class.INode* %11) to label %invoke.cont8 unwind label %terminate.lpad invoke.cont8: ; preds = %lpad br label %eh.resume eh.resume: ; preds = %invoke.cont8 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val9 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val9 terminate.lpad: ; preds = %lpad %12 = landingpad { i8*, i32 } catch i8* null %13 = extractvalue { i8*, i32 } %12, 0 call void @__clang_call_terminate(i8* %13) #16 unreachable } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN12InternalNodeD0Ev(%class.InternalNode* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %class.InternalNode*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %class.InternalNode* %this, %class.InternalNode** %this.addr, align 8 %this1 = load %class.InternalNode*, %class.InternalNode** %this.addr, align 8 invoke void @_ZN12InternalNodeD2Ev(%class.InternalNode* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %0 = bitcast %class.InternalNode* %this1 to i8* call void @_ZdlPv(i8* %0) #18 ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 %4 = bitcast %class.InternalNode* %this1 to i8* call void @_ZdlPv(i8* %4) #18 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } declare dso_local i64 @ftell(%struct._IO_FILE*) #1 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEEC2Ev(%"class.std::map"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.std::map"*, align 8 store %"class.std::map"* %this, %"class.std::map"** %this.addr, align 8 %this1 = load %"class.std::map"*, %"class.std::map"** %this.addr, align 8 %_M_t = getelementptr inbounds %"class.std::map", %"class.std::map"* %this1, i32 0, i32 0 call void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EEC2Ev(%"class.std::_Rb_tree"* %_M_t) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorIbSaIbEEC2Ev(%"class.std::vector.0"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* call void @_ZNSt13_Bvector_baseISaIbEEC2Ev(%"struct.std::_Bvector_base"* %0) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE5beginEv(%"class.std::map"* %this) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %this.addr = alloca %"class.std::map"*, align 8 store %"class.std::map"* %this, %"class.std::map"** %this.addr, align 8 %this1 = load %"class.std::map"*, %"class.std::map"** %this.addr, align 8 %_M_t = getelementptr inbounds %"class.std::map", %"class.std::map"* %this1, i32 0, i32 0 %call = call %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE5beginEv(%"class.std::_Rb_tree"* %_M_t) %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive2, align 8 ret %"struct.std::_Rb_tree_node_base"* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2ERKSt17_Rb_tree_iteratorIS5_E(%"struct.std::_Rb_tree_const_iterator"* %this, %"struct.std::_Rb_tree_iterator"* dereferenceable(8) %__it) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_const_iterator"*, align 8 %__it.addr = alloca %"struct.std::_Rb_tree_iterator"*, align 8 store %"struct.std::_Rb_tree_const_iterator"* %this, %"struct.std::_Rb_tree_const_iterator"** %this.addr, align 8 store %"struct.std::_Rb_tree_iterator"* %__it, %"struct.std::_Rb_tree_iterator"** %__it.addr, align 8 %this1 = load %"struct.std::_Rb_tree_const_iterator"*, %"struct.std::_Rb_tree_const_iterator"** %this.addr, align 8 %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %this1, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_iterator"*, %"struct.std::_Rb_tree_iterator"** %__it.addr, align 8 %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %0, i32 0, i32 0 %1 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node2, align 8 store %"struct.std::_Rb_tree_node_base"* %1, %"struct.std::_Rb_tree_node_base"** %_M_node, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local zeroext i1 @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEneERKS6_(%"struct.std::_Rb_tree_const_iterator"* %this, %"struct.std::_Rb_tree_const_iterator"* dereferenceable(8) %__x) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_const_iterator"*, align 8 %__x.addr = alloca %"struct.std::_Rb_tree_const_iterator"*, align 8 store %"struct.std::_Rb_tree_const_iterator"* %this, %"struct.std::_Rb_tree_const_iterator"** %this.addr, align 8 store %"struct.std::_Rb_tree_const_iterator"* %__x, %"struct.std::_Rb_tree_const_iterator"** %__x.addr, align 8 %this1 = load %"struct.std::_Rb_tree_const_iterator"*, %"struct.std::_Rb_tree_const_iterator"** %this.addr, align 8 %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %this1, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node, align 8 %1 = load %"struct.std::_Rb_tree_const_iterator"*, %"struct.std::_Rb_tree_const_iterator"** %__x.addr, align 8 %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %1, i32 0, i32 0 %2 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node2, align 8 %cmp = icmp ne %"struct.std::_Rb_tree_node_base"* %0, %2 ret i1 %cmp } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE3endEv(%"class.std::map"* %this) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %this.addr = alloca %"class.std::map"*, align 8 store %"class.std::map"* %this, %"class.std::map"** %this.addr, align 8 %this1 = load %"class.std::map"*, %"class.std::map"** %this.addr, align 8 %_M_t = getelementptr inbounds %"class.std::map", %"class.std::map"* %this1, i32 0, i32 0 %call = call %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE3endEv(%"class.std::_Rb_tree"* %_M_t) %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive2, align 8 ret %"struct.std::_Rb_tree_node_base"* %0 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZSt8distanceISt19_Bit_const_iteratorENSt15iterator_traitsIT_E15difference_typeES2_S2_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1) #0 comdat { entry: %__first = alloca %"struct.std::_Bit_const_iterator", align 8 %__last = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp1 = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp2 = alloca %"struct.std::random_access_iterator_tag", align 1 %undef.agg.tmp = alloca %"struct.std::random_access_iterator_tag", align 1 %0 = bitcast %"struct.std::_Bit_const_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_const_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to i8* %7 = bitcast %"struct.std::_Bit_const_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %7, i64 16, i1 false) %8 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp1 to i8* %9 = bitcast %"struct.std::_Bit_const_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false) call void @_ZSt19__iterator_categoryISt19_Bit_const_iteratorENSt15iterator_traitsIT_E17iterator_categoryERKS2_(%"struct.std::_Bit_const_iterator"* dereferenceable(16) %__first) %10 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %11 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %10, i32 0, i32 0 %12 = load i64*, i64** %11, align 8 %13 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %10, i32 0, i32 1 %14 = load i32, i32* %13, align 8 %15 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp1 to { i64*, i32 }* %16 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %15, i32 0, i32 0 %17 = load i64*, i64** %16, align 8 %18 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %15, i32 0, i32 1 %19 = load i32, i32* %18, align 8 %call = call i64 @_ZSt10__distanceISt19_Bit_const_iteratorENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag(i64* %12, i32 %14, i64* %17, i32 %19) ret i64 %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::pair"* @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEptEv(%"struct.std::_Rb_tree_const_iterator"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_const_iterator"*, align 8 store %"struct.std::_Rb_tree_const_iterator"* %this, %"struct.std::_Rb_tree_const_iterator"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree_const_iterator"*, %"struct.std::_Rb_tree_const_iterator"** %this.addr, align 8 %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %this1, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node, align 8 %1 = bitcast %"struct.std::_Rb_tree_node_base"* %0 to %"struct.std::_Rb_tree_node"* %call = call %"struct.std::pair"* @_ZNKSt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEE9_M_valptrEv(%"struct.std::_Rb_tree_node"* %1) ret %"struct.std::pair"* %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZNKSt6vectorIbSaIbEE5beginEv(%"class.std::vector.0"* %this) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Bit_const_iterator", align 8 %this.addr = alloca %"class.std::vector.0"*, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl, i32 0, i32 0 call void @_ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator(%"struct.std::_Bit_const_iterator"* %retval, %"struct.std::_Bit_iterator"* dereferenceable(16) %_M_start) %1 = bitcast %"struct.std::_Bit_const_iterator"* %retval to { i64*, i32 }* %2 = load { i64*, i32 }, { i64*, i32 }* %1, align 8 ret { i64*, i32 } %2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZNKSt6vectorIbSaIbEE3endEv(%"class.std::vector.0"* %this) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Bit_const_iterator", align 8 %this.addr = alloca %"class.std::vector.0"*, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl, i32 0, i32 1 call void @_ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator(%"struct.std::_Bit_const_iterator"* %retval, %"struct.std::_Bit_iterator"* dereferenceable(16) %_M_finish) %1 = bitcast %"struct.std::_Bit_const_iterator"* %retval to { i64*, i32 }* %2 = load { i64*, i32 }, { i64*, i32 }* %1, align 8 ret { i64*, i32 } %2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local zeroext i1 @_ZNKSt6vectorIbSaIbEEixEm(%"class.std::vector.0"* %this, i64 %__n) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 %__n.addr = alloca i64, align 8 %ref.tmp = alloca %"struct.std::_Bit_const_iterator", align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl, i32 0, i32 0 %1 = bitcast %"struct.std::_Bit_iterator"* %_M_start to %"struct.std::_Bit_iterator_base"* %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %1, i32 0, i32 0 %2 = load i64*, i64** %_M_p, align 8 %3 = load i64, i64* %__n.addr, align 8 %div = udiv i64 %3, 64 %add.ptr = getelementptr inbounds i64, i64* %2, i64 %div %4 = load i64, i64* %__n.addr, align 8 %rem = urem i64 %4, 64 %conv = trunc i64 %rem to i32 call void @_ZNSt19_Bit_const_iteratorC2EPmj(%"struct.std::_Bit_const_iterator"* %ref.tmp, i64* %add.ptr, i32 %conv) %call = call zeroext i1 @_ZNKSt19_Bit_const_iteratordeEv(%"struct.std::_Bit_const_iterator"* %ref.tmp) ret i1 %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local float @_ZSt3powfi(float %__x, i32 %__n) #6 comdat { entry: %__x.addr = alloca float, align 4 %__n.addr = alloca i32, align 4 store float %__x, float* %__x.addr, align 4 store i32 %__n, i32* %__n.addr, align 4 %0 = load float, float* %__x.addr, align 4 %1 = load i32, i32* %__n.addr, align 4 %2 = call float @llvm.powi.f32(float %0, i32 %1) ret float %2 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %"struct.std::_Rb_tree_const_iterator"* @_ZNSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEppEv(%"struct.std::_Rb_tree_const_iterator"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_const_iterator"*, align 8 store %"struct.std::_Rb_tree_const_iterator"* %this, %"struct.std::_Rb_tree_const_iterator"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree_const_iterator"*, %"struct.std::_Rb_tree_const_iterator"** %this.addr, align 8 %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %this1, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node, align 8 %call = call %"struct.std::_Rb_tree_node_base"* @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %0) #10 %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %this1, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call, %"struct.std::_Rb_tree_node_base"** %_M_node2, align 8 ret %"struct.std::_Rb_tree_const_iterator"* %this1 } ; Function Attrs: nounwind declare dso_local double @log(double) #11 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEED2Ev(%"class.std::map"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.std::map"*, align 8 store %"class.std::map"* %this, %"class.std::map"** %this.addr, align 8 %this1 = load %"class.std::map"*, %"class.std::map"** %this.addr, align 8 %_M_t = getelementptr inbounds %"class.std::map", %"class.std::map"* %this1, i32 0, i32 0 call void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EED2Ev(%"class.std::_Rb_tree"* %_M_t) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EEC2Ev(%"class.std::_Rb_tree"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 call void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE13_Rb_tree_implIS9_Lb0EEC2Ev(%"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE13_Rb_tree_implIS9_Lb0EEC2Ev(%"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %this, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"*, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"** %this.addr, align 8 %0 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %this1 to %"class.std::allocator.4"* call void @_ZNSaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEEC2Ev(%"class.std::allocator.4"* %0) #3 %1 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %this1 to %"struct.std::_Rb_tree_key_compare"* invoke void @_ZNSt20_Rb_tree_key_compareISt4lessIhEEC2Ev(%"struct.std::_Rb_tree_key_compare"* %1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %2 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %this1 to i8* %3 = getelementptr inbounds i8, i8* %2, i64 8 %4 = bitcast i8* %3 to %"struct.std::_Rb_tree_header"* invoke void @_ZNSt15_Rb_tree_headerC2Ev(%"struct.std::_Rb_tree_header"* %4) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont ret void lpad: ; preds = %invoke.cont, %entry %5 = landingpad { i8*, i32 } cleanup %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 %8 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %this1 to %"class.std::allocator.4"* call void @_ZNSaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEED2Ev(%"class.std::allocator.4"* %8) #3 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val3 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEEC2Ev(%"class.std::allocator.4"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.4"*, align 8 store %"class.std::allocator.4"* %this, %"class.std::allocator.4"** %this.addr, align 8 %this1 = load %"class.std::allocator.4"*, %"class.std::allocator.4"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.4"* %this1 to %"class.__gnu_cxx::new_allocator.5"* call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEEC2Ev(%"class.__gnu_cxx::new_allocator.5"* %0) #3 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt20_Rb_tree_key_compareISt4lessIhEEC2Ev(%"struct.std::_Rb_tree_key_compare"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_key_compare"*, align 8 store %"struct.std::_Rb_tree_key_compare"* %this, %"struct.std::_Rb_tree_key_compare"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree_key_compare"*, %"struct.std::_Rb_tree_key_compare"** %this.addr, align 8 %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_key_compare"* %this1, i32 0, i32 0 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt15_Rb_tree_headerC2Ev(%"struct.std::_Rb_tree_header"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_header"*, align 8 store %"struct.std::_Rb_tree_header"* %this, %"struct.std::_Rb_tree_header"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree_header"*, %"struct.std::_Rb_tree_header"** %this.addr, align 8 %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %this1, i32 0, i32 0 %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %this1, i32 0, i32 0 %_M_color = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %_M_header2, i32 0, i32 0 store i32 0, i32* %_M_color, align 8 call void @_ZNSt15_Rb_tree_header8_M_resetEv(%"struct.std::_Rb_tree_header"* %this1) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEED2Ev(%"class.std::allocator.4"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.4"*, align 8 store %"class.std::allocator.4"* %this, %"class.std::allocator.4"** %this.addr, align 8 %this1 = load %"class.std::allocator.4"*, %"class.std::allocator.4"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.4"* %this1 to %"class.__gnu_cxx::new_allocator.5"* call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEED2Ev(%"class.__gnu_cxx::new_allocator.5"* %0) #3 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEEC2Ev(%"class.__gnu_cxx::new_allocator.5"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.5"*, align 8 store %"class.__gnu_cxx::new_allocator.5"* %this, %"class.__gnu_cxx::new_allocator.5"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.5"*, %"class.__gnu_cxx::new_allocator.5"** %this.addr, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt15_Rb_tree_header8_M_resetEv(%"struct.std::_Rb_tree_header"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_header"*, align 8 store %"struct.std::_Rb_tree_header"* %this, %"struct.std::_Rb_tree_header"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree_header"*, %"struct.std::_Rb_tree_header"** %this.addr, align 8 %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %this1, i32 0, i32 0 %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %_M_header, i32 0, i32 1 store %"struct.std::_Rb_tree_node_base"* null, %"struct.std::_Rb_tree_node_base"** %_M_parent, align 8 %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %this1, i32 0, i32 0 %_M_header3 = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %this1, i32 0, i32 0 %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %_M_header3, i32 0, i32 2 store %"struct.std::_Rb_tree_node_base"* %_M_header2, %"struct.std::_Rb_tree_node_base"** %_M_left, align 8 %_M_header4 = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %this1, i32 0, i32 0 %_M_header5 = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %this1, i32 0, i32 0 %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %_M_header5, i32 0, i32 3 store %"struct.std::_Rb_tree_node_base"* %_M_header4, %"struct.std::_Rb_tree_node_base"** %_M_right, align 8 %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %this1, i32 0, i32 1 store i64 0, i64* %_M_node_count, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEED2Ev(%"class.__gnu_cxx::new_allocator.5"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.5"*, align 8 store %"class.__gnu_cxx::new_allocator.5"* %this, %"class.__gnu_cxx::new_allocator.5"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.5"*, %"class.__gnu_cxx::new_allocator.5"** %this.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt13_Bvector_baseISaIbEEC2Ev(%"struct.std::_Bvector_base"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bvector_base"*, align 8 store %"struct.std::_Bvector_base"* %this, %"struct.std::_Bvector_base"** %this.addr, align 8 %this1 = load %"struct.std::_Bvector_base"*, %"struct.std::_Bvector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 call void @_ZNSt13_Bvector_baseISaIbEE13_Bvector_implC2Ev(%"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt13_Bvector_baseISaIbEE13_Bvector_implC2Ev(%"struct.std::_Bvector_base >::_Bvector_impl"* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"struct.std::_Bvector_base >::_Bvector_impl"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"struct.std::_Bvector_base >::_Bvector_impl"* %this, %"struct.std::_Bvector_base >::_Bvector_impl"** %this.addr, align 8 %this1 = load %"struct.std::_Bvector_base >::_Bvector_impl"*, %"struct.std::_Bvector_base >::_Bvector_impl"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bvector_base >::_Bvector_impl"* %this1 to %"class.std::allocator.1"* call void @_ZNSaImEC2Ev(%"class.std::allocator.1"* %0) #3 %_M_start = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %this1, i32 0, i32 0 invoke void @_ZNSt13_Bit_iteratorC2Ev(%"struct.std::_Bit_iterator"* %_M_start) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %_M_finish = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %this1, i32 0, i32 1 invoke void @_ZNSt13_Bit_iteratorC2Ev(%"struct.std::_Bit_iterator"* %_M_finish) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %_M_end_of_storage = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %this1, i32 0, i32 2 store i64* null, i64** %_M_end_of_storage, align 8 ret void lpad: ; preds = %invoke.cont, %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 %4 = bitcast %"struct.std::_Bvector_base >::_Bvector_impl"* %this1 to %"class.std::allocator.1"* call void @_ZNSaImED2Ev(%"class.std::allocator.1"* %4) #3 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val3 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaImEC2Ev(%"class.std::allocator.1"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.1"*, align 8 store %"class.std::allocator.1"* %this, %"class.std::allocator.1"** %this.addr, align 8 %this1 = load %"class.std::allocator.1"*, %"class.std::allocator.1"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.1"* %this1 to %"class.__gnu_cxx::new_allocator.2"* call void @_ZN9__gnu_cxx13new_allocatorImEC2Ev(%"class.__gnu_cxx::new_allocator.2"* %0) #3 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt13_Bit_iteratorC2Ev(%"struct.std::_Bit_iterator"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_iterator"*, align 8 store %"struct.std::_Bit_iterator"* %this, %"struct.std::_Bit_iterator"** %this.addr, align 8 %this1 = load %"struct.std::_Bit_iterator"*, %"struct.std::_Bit_iterator"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* call void @_ZNSt18_Bit_iterator_baseC2EPmj(%"struct.std::_Bit_iterator_base"* %0, i64* null, i32 0) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorImEC2Ev(%"class.__gnu_cxx::new_allocator.2"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.2"*, align 8 store %"class.__gnu_cxx::new_allocator.2"* %this, %"class.__gnu_cxx::new_allocator.2"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.2"*, %"class.__gnu_cxx::new_allocator.2"** %this.addr, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt18_Bit_iterator_baseC2EPmj(%"struct.std::_Bit_iterator_base"* %this, i64* %__x, i32 %__y) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_iterator_base"*, align 8 %__x.addr = alloca i64*, align 8 %__y.addr = alloca i32, align 4 store %"struct.std::_Bit_iterator_base"* %this, %"struct.std::_Bit_iterator_base"** %this.addr, align 8 store i64* %__x, i64** %__x.addr, align 8 store i32 %__y, i32* %__y.addr, align 4 %this1 = load %"struct.std::_Bit_iterator_base"*, %"struct.std::_Bit_iterator_base"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bit_iterator_base"* %this1 to %"struct.std::iterator"* %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %this1, i32 0, i32 0 %1 = load i64*, i64** %__x.addr, align 8 store i64* %1, i64** %_M_p, align 8 %_M_offset = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %this1, i32 0, i32 1 %2 = load i32, i32* %__y.addr, align 4 store i32 %2, i32* %_M_offset, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorImED2Ev(%"class.__gnu_cxx::new_allocator.2"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.2"*, align 8 store %"class.__gnu_cxx::new_allocator.2"* %this, %"class.__gnu_cxx::new_allocator.2"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.2"*, %"class.__gnu_cxx::new_allocator.2"** %this.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE5beginEv(%"class.std::_Rb_tree"* %this) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %this.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to i8* %add.ptr = getelementptr inbounds i8, i8* %0, i64 8 %1 = bitcast i8* %add.ptr to %"struct.std::_Rb_tree_header"* %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %1, i32 0, i32 0 %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %_M_header, i32 0, i32 2 %2 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_left, align 8 call void @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2EPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_iterator"* %retval, %"struct.std::_Rb_tree_node_base"* %2) %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 %3 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 ret %"struct.std::_Rb_tree_node_base"* %3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2EPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_iterator"* %this, %"struct.std::_Rb_tree_node_base"* %__x) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_iterator"*, align 8 %__x.addr = alloca %"struct.std::_Rb_tree_node_base"*, align 8 store %"struct.std::_Rb_tree_iterator"* %this, %"struct.std::_Rb_tree_iterator"** %this.addr, align 8 store %"struct.std::_Rb_tree_node_base"* %__x, %"struct.std::_Rb_tree_node_base"** %__x.addr, align 8 %this1 = load %"struct.std::_Rb_tree_iterator"*, %"struct.std::_Rb_tree_iterator"** %this.addr, align 8 %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %this1, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %__x.addr, align 8 store %"struct.std::_Rb_tree_node_base"* %0, %"struct.std::_Rb_tree_node_base"** %_M_node, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE3endEv(%"class.std::_Rb_tree"* %this) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %this.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to i8* %add.ptr = getelementptr inbounds i8, i8* %0, i64 8 %1 = bitcast i8* %add.ptr to %"struct.std::_Rb_tree_header"* %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %1, i32 0, i32 0 call void @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2EPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_iterator"* %retval, %"struct.std::_Rb_tree_node_base"* %_M_header) %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 %2 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 ret %"struct.std::_Rb_tree_node_base"* %2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZSt10__distanceISt19_Bit_const_iteratorENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1) #0 comdat { entry: %__first = alloca %"struct.std::_Bit_const_iterator", align 8 %__last = alloca %"struct.std::_Bit_const_iterator", align 8 %0 = alloca %"struct.std::random_access_iterator_tag", align 1 %1 = bitcast %"struct.std::_Bit_const_iterator"* %__first to { i64*, i32 }* %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %1, i32 0, i32 0 store i64* %__first.coerce0, i64** %2, align 8 %3 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %1, i32 0, i32 1 store i32 %__first.coerce1, i32* %3, align 8 %4 = bitcast %"struct.std::_Bit_const_iterator"* %__last to { i64*, i32 }* %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %4, i32 0, i32 0 store i64* %__last.coerce0, i64** %5, align 8 %6 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %4, i32 0, i32 1 store i32 %__last.coerce1, i32* %6, align 8 %7 = bitcast %"struct.std::_Bit_const_iterator"* %__last to %"struct.std::_Bit_iterator_base"* %8 = bitcast %"struct.std::_Bit_const_iterator"* %__first to %"struct.std::_Bit_iterator_base"* %call = call i64 @_ZStmiRKSt18_Bit_iterator_baseS1_(%"struct.std::_Bit_iterator_base"* dereferenceable(16) %7, %"struct.std::_Bit_iterator_base"* dereferenceable(16) %8) ret i64 %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZSt19__iterator_categoryISt19_Bit_const_iteratorENSt15iterator_traitsIT_E17iterator_categoryERKS2_(%"struct.std::_Bit_const_iterator"* dereferenceable(16) %0) #6 comdat { entry: %.addr = alloca %"struct.std::_Bit_const_iterator"*, align 8 store %"struct.std::_Bit_const_iterator"* %0, %"struct.std::_Bit_const_iterator"** %.addr, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZStmiRKSt18_Bit_iterator_baseS1_(%"struct.std::_Bit_iterator_base"* dereferenceable(16) %__x, %"struct.std::_Bit_iterator_base"* dereferenceable(16) %__y) #6 comdat { entry: %__x.addr = alloca %"struct.std::_Bit_iterator_base"*, align 8 %__y.addr = alloca %"struct.std::_Bit_iterator_base"*, align 8 store %"struct.std::_Bit_iterator_base"* %__x, %"struct.std::_Bit_iterator_base"** %__x.addr, align 8 store %"struct.std::_Bit_iterator_base"* %__y, %"struct.std::_Bit_iterator_base"** %__y.addr, align 8 %0 = load %"struct.std::_Bit_iterator_base"*, %"struct.std::_Bit_iterator_base"** %__x.addr, align 8 %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %0, i32 0, i32 0 %1 = load i64*, i64** %_M_p, align 8 %2 = load %"struct.std::_Bit_iterator_base"*, %"struct.std::_Bit_iterator_base"** %__y.addr, align 8 %_M_p1 = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %2, i32 0, i32 0 %3 = load i64*, i64** %_M_p1, align 8 %sub.ptr.lhs.cast = ptrtoint i64* %1 to i64 %sub.ptr.rhs.cast = ptrtoint i64* %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 %mul = mul nsw i64 64, %sub.ptr.div %4 = load %"struct.std::_Bit_iterator_base"*, %"struct.std::_Bit_iterator_base"** %__x.addr, align 8 %_M_offset = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %4, i32 0, i32 1 %5 = load i32, i32* %_M_offset, align 8 %conv = zext i32 %5 to i64 %add = add nsw i64 %mul, %conv %6 = load %"struct.std::_Bit_iterator_base"*, %"struct.std::_Bit_iterator_base"** %__y.addr, align 8 %_M_offset2 = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %6, i32 0, i32 1 %7 = load i32, i32* %_M_offset2, align 8 %conv3 = zext i32 %7 to i64 %sub = sub nsw i64 %add, %conv3 ret i64 %sub } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::pair"* @_ZNKSt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEE9_M_valptrEv(%"struct.std::_Rb_tree_node"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_node"*, align 8 store %"struct.std::_Rb_tree_node"* %this, %"struct.std::_Rb_tree_node"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %this.addr, align 8 %_M_value_field = getelementptr inbounds %"struct.std::_Rb_tree_node", %"struct.std::_Rb_tree_node"* %this1, i32 0, i32 1 %call = call %"struct.std::pair"* @_ZSt11__addressofIKSt4pairIKhSt6vectorIbSaIbEEEEPT_RS7_(%"struct.std::pair"* dereferenceable(48) %_M_value_field) ret %"struct.std::pair"* %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %"struct.std::pair"* @_ZSt11__addressofIKSt4pairIKhSt6vectorIbSaIbEEEEPT_RS7_(%"struct.std::pair"* dereferenceable(48) %__r) #6 comdat { entry: %__r.addr = alloca %"struct.std::pair"*, align 8 store %"struct.std::pair"* %__r, %"struct.std::pair"** %__r.addr, align 8 %0 = load %"struct.std::pair"*, %"struct.std::pair"** %__r.addr, align 8 ret %"struct.std::pair"* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator(%"struct.std::_Bit_const_iterator"* %this, %"struct.std::_Bit_iterator"* dereferenceable(16) %__x) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_const_iterator"*, align 8 %__x.addr = alloca %"struct.std::_Bit_iterator"*, align 8 store %"struct.std::_Bit_const_iterator"* %this, %"struct.std::_Bit_const_iterator"** %this.addr, align 8 store %"struct.std::_Bit_iterator"* %__x, %"struct.std::_Bit_iterator"** %__x.addr, align 8 %this1 = load %"struct.std::_Bit_const_iterator"*, %"struct.std::_Bit_const_iterator"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bit_const_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* %1 = load %"struct.std::_Bit_iterator"*, %"struct.std::_Bit_iterator"** %__x.addr, align 8 %2 = bitcast %"struct.std::_Bit_iterator"* %1 to %"struct.std::_Bit_iterator_base"* %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %2, i32 0, i32 0 %3 = load i64*, i64** %_M_p, align 8 %4 = load %"struct.std::_Bit_iterator"*, %"struct.std::_Bit_iterator"** %__x.addr, align 8 %5 = bitcast %"struct.std::_Bit_iterator"* %4 to %"struct.std::_Bit_iterator_base"* %_M_offset = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %5, i32 0, i32 1 %6 = load i32, i32* %_M_offset, align 8 call void @_ZNSt18_Bit_iterator_baseC2EPmj(%"struct.std::_Bit_iterator_base"* %0, i64* %3, i32 %6) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt19_Bit_const_iteratorC2EPmj(%"struct.std::_Bit_const_iterator"* %this, i64* %__x, i32 %__y) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_const_iterator"*, align 8 %__x.addr = alloca i64*, align 8 %__y.addr = alloca i32, align 4 store %"struct.std::_Bit_const_iterator"* %this, %"struct.std::_Bit_const_iterator"** %this.addr, align 8 store i64* %__x, i64** %__x.addr, align 8 store i32 %__y, i32* %__y.addr, align 4 %this1 = load %"struct.std::_Bit_const_iterator"*, %"struct.std::_Bit_const_iterator"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bit_const_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* %1 = load i64*, i64** %__x.addr, align 8 %2 = load i32, i32* %__y.addr, align 4 call void @_ZNSt18_Bit_iterator_baseC2EPmj(%"struct.std::_Bit_iterator_base"* %0, i64* %1, i32 %2) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local zeroext i1 @_ZNKSt19_Bit_const_iteratordeEv(%"struct.std::_Bit_const_iterator"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_const_iterator"*, align 8 %ref.tmp = alloca %"struct.std::_Bit_reference", align 8 store %"struct.std::_Bit_const_iterator"* %this, %"struct.std::_Bit_const_iterator"** %this.addr, align 8 %this1 = load %"struct.std::_Bit_const_iterator"*, %"struct.std::_Bit_const_iterator"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bit_const_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %0, i32 0, i32 0 %1 = load i64*, i64** %_M_p, align 8 %2 = bitcast %"struct.std::_Bit_const_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* %_M_offset = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %2, i32 0, i32 1 %3 = load i32, i32* %_M_offset, align 8 %sh_prom = zext i32 %3 to i64 %shl = shl i64 1, %sh_prom call void @_ZNSt14_Bit_referenceC2EPmm(%"struct.std::_Bit_reference"* %ref.tmp, i64* %1, i64 %shl) %call = call zeroext i1 @_ZNKSt14_Bit_referencecvbEv(%"struct.std::_Bit_reference"* %ref.tmp) ret i1 %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt14_Bit_referenceC2EPmm(%"struct.std::_Bit_reference"* %this, i64* %__x, i64 %__y) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_reference"*, align 8 %__x.addr = alloca i64*, align 8 %__y.addr = alloca i64, align 8 store %"struct.std::_Bit_reference"* %this, %"struct.std::_Bit_reference"** %this.addr, align 8 store i64* %__x, i64** %__x.addr, align 8 store i64 %__y, i64* %__y.addr, align 8 %this1 = load %"struct.std::_Bit_reference"*, %"struct.std::_Bit_reference"** %this.addr, align 8 %_M_p = getelementptr inbounds %"struct.std::_Bit_reference", %"struct.std::_Bit_reference"* %this1, i32 0, i32 0 %0 = load i64*, i64** %__x.addr, align 8 store i64* %0, i64** %_M_p, align 8 %_M_mask = getelementptr inbounds %"struct.std::_Bit_reference", %"struct.std::_Bit_reference"* %this1, i32 0, i32 1 %1 = load i64, i64* %__y.addr, align 8 store i64 %1, i64* %_M_mask, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local zeroext i1 @_ZNKSt14_Bit_referencecvbEv(%"struct.std::_Bit_reference"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_reference"*, align 8 store %"struct.std::_Bit_reference"* %this, %"struct.std::_Bit_reference"** %this.addr, align 8 %this1 = load %"struct.std::_Bit_reference"*, %"struct.std::_Bit_reference"** %this.addr, align 8 %_M_p = getelementptr inbounds %"struct.std::_Bit_reference", %"struct.std::_Bit_reference"* %this1, i32 0, i32 0 %0 = load i64*, i64** %_M_p, align 8 %1 = load i64, i64* %0, align 8 %_M_mask = getelementptr inbounds %"struct.std::_Bit_reference", %"struct.std::_Bit_reference"* %this1, i32 0, i32 1 %2 = load i64, i64* %_M_mask, align 8 %and = and i64 %1, %2 %tobool = icmp ne i64 %and, 0 %lnot = xor i1 %tobool, true %lnot2 = xor i1 %lnot, true ret i1 %lnot2 } ; Function Attrs: nounwind readnone speculatable willreturn declare float @llvm.powi.f32(float, i32) #13 ; Function Attrs: nounwind readonly declare dso_local %"struct.std::_Rb_tree_node_base"* @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"*) #14 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EED2Ev(%"class.std::_Rb_tree"* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %call = invoke %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_M_beginEv(%"class.std::_Rb_tree"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E(%"class.std::_Rb_tree"* %this1, %"struct.std::_Rb_tree_node"* %call) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 call void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE13_Rb_tree_implIS9_Lb0EED2Ev(%"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl) #3 ret void lpad: ; preds = %invoke.cont, %entry %0 = landingpad { i8*, i32 } cleanup %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %_M_impl3 = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 call void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE13_Rb_tree_implIS9_Lb0EED2Ev(%"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl3) #3 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val4 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val4 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E(%"class.std::_Rb_tree"* %this, %"struct.std::_Rb_tree_node"* %__x) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__x.addr = alloca %"struct.std::_Rb_tree_node"*, align 8 %__y = alloca %"struct.std::_Rb_tree_node"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store %"struct.std::_Rb_tree_node"* %__x, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 br label %while.cond while.cond: ; preds = %while.body, %entry %0 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %cmp = icmp ne %"struct.std::_Rb_tree_node"* %0, null br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond %1 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %2 = bitcast %"struct.std::_Rb_tree_node"* %1 to %"struct.std::_Rb_tree_node_base"* %call = call %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %2) call void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E(%"class.std::_Rb_tree"* %this1, %"struct.std::_Rb_tree_node"* %call) %3 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %4 = bitcast %"struct.std::_Rb_tree_node"* %3 to %"struct.std::_Rb_tree_node_base"* %call2 = call %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE7_S_leftEPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %4) store %"struct.std::_Rb_tree_node"* %call2, %"struct.std::_Rb_tree_node"** %__y, align 8 %5 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 call void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E(%"class.std::_Rb_tree"* %this1, %"struct.std::_Rb_tree_node"* %5) %6 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__y, align 8 store %"struct.std::_Rb_tree_node"* %6, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 br label %while.cond while.end: ; preds = %while.cond ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_M_beginEv(%"class.std::_Rb_tree"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to i8* %add.ptr = getelementptr inbounds i8, i8* %0, i64 8 %1 = bitcast i8* %add.ptr to %"struct.std::_Rb_tree_header"* %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %1, i32 0, i32 0 %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %_M_header, i32 0, i32 1 %2 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_parent, align 8 %3 = bitcast %"struct.std::_Rb_tree_node_base"* %2 to %"struct.std::_Rb_tree_node"* ret %"struct.std::_Rb_tree_node"* %3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE13_Rb_tree_implIS9_Lb0EED2Ev(%"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"*, align 8 store %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %this, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"*, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"** %this.addr, align 8 %0 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %this1 to %"class.std::allocator.4"* call void @_ZNSaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEED2Ev(%"class.std::allocator.4"* %0) #3 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %__x) #6 comdat align 2 { entry: %__x.addr = alloca %"struct.std::_Rb_tree_node_base"*, align 8 store %"struct.std::_Rb_tree_node_base"* %__x, %"struct.std::_Rb_tree_node_base"** %__x.addr, align 8 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %__x.addr, align 8 %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %0, i32 0, i32 3 %1 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_right, align 8 %2 = bitcast %"struct.std::_Rb_tree_node_base"* %1 to %"struct.std::_Rb_tree_node"* ret %"struct.std::_Rb_tree_node"* %2 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE7_S_leftEPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %__x) #6 comdat align 2 { entry: %__x.addr = alloca %"struct.std::_Rb_tree_node_base"*, align 8 store %"struct.std::_Rb_tree_node_base"* %__x, %"struct.std::_Rb_tree_node_base"** %__x.addr, align 8 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %__x.addr, align 8 %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %0, i32 0, i32 2 %1 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_left, align 8 %2 = bitcast %"struct.std::_Rb_tree_node_base"* %1 to %"struct.std::_Rb_tree_node"* ret %"struct.std::_Rb_tree_node"* %2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E(%"class.std::_Rb_tree"* %this, %"struct.std::_Rb_tree_node"* %__p) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__p.addr = alloca %"struct.std::_Rb_tree_node"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store %"struct.std::_Rb_tree_node"* %__p, %"struct.std::_Rb_tree_node"** %__p.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %0 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__p.addr, align 8 call void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS5_E(%"class.std::_Rb_tree"* %this1, %"struct.std::_Rb_tree_node"* %0) %1 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__p.addr, align 8 call void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS5_E(%"class.std::_Rb_tree"* %this1, %"struct.std::_Rb_tree_node"* %1) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS5_E(%"class.std::_Rb_tree"* %this, %"struct.std::_Rb_tree_node"* %__p) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__p.addr = alloca %"struct.std::_Rb_tree_node"*, align 8 %ref.tmp = alloca %"class.std::allocator.7", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store %"struct.std::_Rb_tree_node"* %__p, %"struct.std::_Rb_tree_node"** %__p.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 call void @_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE13get_allocatorEv(%"class.std::allocator.7"* sret %ref.tmp, %"class.std::_Rb_tree"* %this1) %0 = bitcast %"class.std::allocator.7"* %ref.tmp to %"class.__gnu_cxx::new_allocator.8"* %1 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__p.addr, align 8 %call = invoke %"struct.std::pair"* @_ZNSt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEE9_M_valptrEv(%"struct.std::_Rb_tree_node"* %1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_ZN9__gnu_cxx13new_allocatorISt4pairIKhSt6vectorIbSaIbEEEE7destroyEPS6_(%"class.__gnu_cxx::new_allocator.8"* %0, %"struct.std::pair"* %call) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont call void @_ZNSaISt4pairIKhSt6vectorIbSaIbEEEED2Ev(%"class.std::allocator.7"* %ref.tmp) #3 ret void lpad: ; preds = %invoke.cont, %entry %2 = landingpad { i8*, i32 } cleanup %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 call void @_ZNSaISt4pairIKhSt6vectorIbSaIbEEEED2Ev(%"class.std::allocator.7"* %ref.tmp) #3 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val3 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val3 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS5_E(%"class.std::_Rb_tree"* %this, %"struct.std::_Rb_tree_node"* %__p) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__p.addr = alloca %"struct.std::_Rb_tree_node"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store %"struct.std::_Rb_tree_node"* %__p, %"struct.std::_Rb_tree_node"** %__p.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %call = call dereferenceable(1) %"class.std::allocator.4"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE21_M_get_Node_allocatorEv(%"class.std::_Rb_tree"* %this1) %0 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__p.addr, align 8 call void @_ZN9__gnu_cxx14__alloc_traitsISaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEEE10deallocateERS9_PS8_m(%"class.std::allocator.4"* dereferenceable(1) %call, %"struct.std::_Rb_tree_node"* %0, i64 1) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE13get_allocatorEv(%"class.std::allocator.7"* noalias sret %agg.result, %"class.std::_Rb_tree"* %this) #0 comdat align 2 { entry: %result.ptr = alloca i8*, align 8 %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %0 = bitcast %"class.std::allocator.7"* %agg.result to i8* store i8* %0, i8** %result.ptr, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %call = call dereferenceable(1) %"class.std::allocator.4"* @_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE21_M_get_Node_allocatorEv(%"class.std::_Rb_tree"* %this1) call void @_ZNSaISt4pairIKhSt6vectorIbSaIbEEEEC2ISt13_Rb_tree_nodeIS4_EEERKSaIT_E(%"class.std::allocator.7"* %agg.result, %"class.std::allocator.4"* dereferenceable(1) %call) #3 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt4pairIKhSt6vectorIbSaIbEEEE7destroyEPS6_(%"class.__gnu_cxx::new_allocator.8"* %this, %"struct.std::pair"* %__p) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.8"*, align 8 %__p.addr = alloca %"struct.std::pair"*, align 8 store %"class.__gnu_cxx::new_allocator.8"* %this, %"class.__gnu_cxx::new_allocator.8"** %this.addr, align 8 store %"struct.std::pair"* %__p, %"struct.std::pair"** %__p.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.8"*, %"class.__gnu_cxx::new_allocator.8"** %this.addr, align 8 %0 = load %"struct.std::pair"*, %"struct.std::pair"** %__p.addr, align 8 call void @_ZNSt4pairIKhSt6vectorIbSaIbEEED2Ev(%"struct.std::pair"* %0) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::pair"* @_ZNSt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEE9_M_valptrEv(%"struct.std::_Rb_tree_node"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_node"*, align 8 store %"struct.std::_Rb_tree_node"* %this, %"struct.std::_Rb_tree_node"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %this.addr, align 8 %_M_value_field = getelementptr inbounds %"struct.std::_Rb_tree_node", %"struct.std::_Rb_tree_node"* %this1, i32 0, i32 1 %call = call %"struct.std::pair"* @_ZSt11__addressofISt4pairIKhSt6vectorIbSaIbEEEEPT_RS6_(%"struct.std::pair"* dereferenceable(48) %_M_value_field) ret %"struct.std::pair"* %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaISt4pairIKhSt6vectorIbSaIbEEEED2Ev(%"class.std::allocator.7"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.7"*, align 8 store %"class.std::allocator.7"* %this, %"class.std::allocator.7"** %this.addr, align 8 %this1 = load %"class.std::allocator.7"*, %"class.std::allocator.7"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.7"* %this1 to %"class.__gnu_cxx::new_allocator.8"* call void @_ZN9__gnu_cxx13new_allocatorISt4pairIKhSt6vectorIbSaIbEEEED2Ev(%"class.__gnu_cxx::new_allocator.8"* %0) #3 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator.4"* @_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE21_M_get_Node_allocatorEv(%"class.std::_Rb_tree"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to %"class.std::allocator.4"* ret %"class.std::allocator.4"* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaISt4pairIKhSt6vectorIbSaIbEEEEC2ISt13_Rb_tree_nodeIS4_EEERKSaIT_E(%"class.std::allocator.7"* %this, %"class.std::allocator.4"* dereferenceable(1) %0) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.7"*, align 8 %.addr = alloca %"class.std::allocator.4"*, align 8 store %"class.std::allocator.7"* %this, %"class.std::allocator.7"** %this.addr, align 8 store %"class.std::allocator.4"* %0, %"class.std::allocator.4"** %.addr, align 8 %this1 = load %"class.std::allocator.7"*, %"class.std::allocator.7"** %this.addr, align 8 %1 = bitcast %"class.std::allocator.7"* %this1 to %"class.__gnu_cxx::new_allocator.8"* call void @_ZN9__gnu_cxx13new_allocatorISt4pairIKhSt6vectorIbSaIbEEEEC2Ev(%"class.__gnu_cxx::new_allocator.8"* %1) #3 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt4pairIKhSt6vectorIbSaIbEEEEC2Ev(%"class.__gnu_cxx::new_allocator.8"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.8"*, align 8 store %"class.__gnu_cxx::new_allocator.8"* %this, %"class.__gnu_cxx::new_allocator.8"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.8"*, %"class.__gnu_cxx::new_allocator.8"** %this.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt4pairIKhSt6vectorIbSaIbEEED2Ev(%"struct.std::pair"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::pair"*, align 8 store %"struct.std::pair"* %this, %"struct.std::pair"** %this.addr, align 8 %this1 = load %"struct.std::pair"*, %"struct.std::pair"** %this.addr, align 8 %second = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %this1, i32 0, i32 1 call void @_ZNSt6vectorIbSaIbEED2Ev(%"class.std::vector.0"* %second) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %"struct.std::pair"* @_ZSt11__addressofISt4pairIKhSt6vectorIbSaIbEEEEPT_RS6_(%"struct.std::pair"* dereferenceable(48) %__r) #6 comdat { entry: %__r.addr = alloca %"struct.std::pair"*, align 8 store %"struct.std::pair"* %__r, %"struct.std::pair"** %__r.addr, align 8 %0 = load %"struct.std::pair"*, %"struct.std::pair"** %__r.addr, align 8 ret %"struct.std::pair"* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt4pairIKhSt6vectorIbSaIbEEEED2Ev(%"class.__gnu_cxx::new_allocator.8"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.8"*, align 8 store %"class.__gnu_cxx::new_allocator.8"* %this, %"class.__gnu_cxx::new_allocator.8"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.8"*, %"class.__gnu_cxx::new_allocator.8"** %this.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx14__alloc_traitsISaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEEE10deallocateERS9_PS8_m(%"class.std::allocator.4"* dereferenceable(1) %__a, %"struct.std::_Rb_tree_node"* %__p, i64 %__n) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator.4"*, align 8 %__p.addr = alloca %"struct.std::_Rb_tree_node"*, align 8 %__n.addr = alloca i64, align 8 store %"class.std::allocator.4"* %__a, %"class.std::allocator.4"** %__a.addr, align 8 store %"struct.std::_Rb_tree_node"* %__p, %"struct.std::_Rb_tree_node"** %__p.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %0 = load %"class.std::allocator.4"*, %"class.std::allocator.4"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator.4"* %0 to %"class.__gnu_cxx::new_allocator.5"* %2 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__p.addr, align 8 %3 = load i64, i64* %__n.addr, align 8 call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEE10deallocateEPS8_m(%"class.__gnu_cxx::new_allocator.5"* %1, %"struct.std::_Rb_tree_node"* %2, i64 %3) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator.4"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE21_M_get_Node_allocatorEv(%"class.std::_Rb_tree"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to %"class.std::allocator.4"* ret %"class.std::allocator.4"* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEE10deallocateEPS8_m(%"class.__gnu_cxx::new_allocator.5"* %this, %"struct.std::_Rb_tree_node"* %__p, i64 %0) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.5"*, align 8 %__p.addr = alloca %"struct.std::_Rb_tree_node"*, align 8 %.addr = alloca i64, align 8 store %"class.__gnu_cxx::new_allocator.5"* %this, %"class.__gnu_cxx::new_allocator.5"** %this.addr, align 8 store %"struct.std::_Rb_tree_node"* %__p, %"struct.std::_Rb_tree_node"** %__p.addr, align 8 store i64 %0, i64* %.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.5"*, %"class.__gnu_cxx::new_allocator.5"** %this.addr, align 8 %1 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__p.addr, align 8 %2 = bitcast %"struct.std::_Rb_tree_node"* %1 to i8* call void @_ZdlPv(i8* %2) #3 ret void } ; Function Attrs: noreturn nounwind declare dso_local void @__assert_fail(i8*, i8*, i32, i8*) #5 ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local float @_ZSt4ceilf(float %__x) #6 comdat { entry: %__x.addr = alloca float, align 4 store float %__x, float* %__x.addr, align 4 %0 = load float, float* %__x.addr, align 4 %1 = call float @llvm.ceil.f32(float %0) ret float %1 } ; Function Attrs: nounwind readnone speculatable willreturn declare float @llvm.ceil.f32(float) #13 ; Function Attrs: noinline optnone uwtable define internal void @_ZL21prescanArrayRecursivePjPKjii(i32* %outArray, i32* %inArray, i32 %numElements, i32 %level) #0 { entry: %outArray.addr = alloca i32*, align 8 %inArray.addr = alloca i32*, align 8 %numElements.addr = alloca i32, align 4 %level.addr = alloca i32, align 4 %blockSize = alloca i32, align 4 %numBlocks = alloca i32, align 4 %numThreads = alloca i32, align 4 %numEltsPerBlock = alloca i32, align 4 %numEltsLastBlock = alloca i32, align 4 %numThreadsLastBlock = alloca i32, align 4 %np2LastBlock = alloca i32, align 4 %sharedMemLastBlock = alloca i32, align 4 %extraSpace = alloca i32, align 4 %extraSpace39 = alloca i32, align 4 %sharedMemSize = alloca i32, align 4 %grid = alloca %struct.dim3, align 4 %threads = alloca %struct.dim3, align 4 %err = alloca i32, align 4 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp60 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp60.coerce = alloca { i64, i32 }, align 4 %err64 = alloca i32, align 4 %agg.tmp73 = alloca %struct.dim3, align 4 %agg.tmp74 = alloca %struct.dim3, align 4 %agg.tmp73.coerce = alloca { i64, i32 }, align 4 %agg.tmp74.coerce = alloca { i64, i32 }, align 4 %err84 = alloca i32, align 4 %agg.tmp97 = alloca %struct.dim3, align 4 %agg.tmp98 = alloca %struct.dim3, align 4 %agg.tmp97.coerce = alloca { i64, i32 }, align 4 %agg.tmp98.coerce = alloca { i64, i32 }, align 4 %err107 = alloca i32, align 4 %agg.tmp116 = alloca %struct.dim3, align 4 %agg.tmp117 = alloca %struct.dim3, align 4 %agg.tmp116.coerce = alloca { i64, i32 }, align 4 %agg.tmp117.coerce = alloca { i64, i32 }, align 4 %err127 = alloca i32, align 4 %agg.tmp138 = alloca %struct.dim3, align 4 %agg.tmp139 = alloca %struct.dim3, align 4 %agg.tmp138.coerce = alloca { i64, i32 }, align 4 %agg.tmp139.coerce = alloca { i64, i32 }, align 4 %err146 = alloca i32, align 4 %agg.tmp154 = alloca %struct.dim3, align 4 %agg.tmp155 = alloca %struct.dim3, align 4 %agg.tmp154.coerce = alloca { i64, i32 }, align 4 %agg.tmp155.coerce = alloca { i64, i32 }, align 4 %err161 = alloca i32, align 4 store i32* %outArray, i32** %outArray.addr, align 8 store i32* %inArray, i32** %inArray.addr, align 8 store i32 %numElements, i32* %numElements.addr, align 4 store i32 %level, i32* %level.addr, align 4 store i32 256, i32* %blockSize, align 4 %0 = load i32, i32* %numElements.addr, align 4 %conv = sitofp i32 %0 to float %1 = load i32, i32* %blockSize, align 4 %conv1 = uitofp i32 %1 to float %mul = fmul contract float 2.000000e+00, %conv1 %div = fdiv float %conv, %mul %call = call float @_ZSt4ceilf(float %div) %conv2 = fptosi float %call to i32 %cmp = icmp sgt i32 1, %conv2 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry br label %cond.end cond.false: ; preds = %entry %2 = load i32, i32* %numElements.addr, align 4 %conv3 = sitofp i32 %2 to float %3 = load i32, i32* %blockSize, align 4 %conv4 = uitofp i32 %3 to float %mul5 = fmul contract float 2.000000e+00, %conv4 %div6 = fdiv float %conv3, %mul5 %call7 = call float @_ZSt4ceilf(float %div6) %conv8 = fptosi float %call7 to i32 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i32 [ 1, %cond.true ], [ %conv8, %cond.false ] store i32 %cond, i32* %numBlocks, align 4 %4 = load i32, i32* %numBlocks, align 4 %cmp9 = icmp ugt i32 %4, 1 br i1 %cmp9, label %if.then, label %if.else if.then: ; preds = %cond.end %5 = load i32, i32* %blockSize, align 4 store i32 %5, i32* %numThreads, align 4 br label %if.end15 if.else: ; preds = %cond.end %6 = load i32, i32* %numElements.addr, align 4 %call10 = call zeroext i1 @_Z12isPowerOfTwoi(i32 %6) br i1 %call10, label %if.then11, label %if.else13 if.then11: ; preds = %if.else %7 = load i32, i32* %numElements.addr, align 4 %div12 = sdiv i32 %7, 2 store i32 %div12, i32* %numThreads, align 4 br label %if.end if.else13: ; preds = %if.else %8 = load i32, i32* %numElements.addr, align 4 %call14 = call i32 @_Z9floorPow2i(i32 %8) store i32 %call14, i32* %numThreads, align 4 br label %if.end if.end: ; preds = %if.else13, %if.then11 br label %if.end15 if.end15: ; preds = %if.end, %if.then %9 = load i32, i32* %numThreads, align 4 %mul16 = mul i32 %9, 2 store i32 %mul16, i32* %numEltsPerBlock, align 4 %10 = load i32, i32* %numElements.addr, align 4 %11 = load i32, i32* %numBlocks, align 4 %sub = sub i32 %11, 1 %12 = load i32, i32* %numEltsPerBlock, align 4 %mul17 = mul i32 %sub, %12 %sub18 = sub i32 %10, %mul17 store i32 %sub18, i32* %numEltsLastBlock, align 4 %13 = load i32, i32* %numEltsLastBlock, align 4 %div19 = udiv i32 %13, 2 %cmp20 = icmp ugt i32 1, %div19 br i1 %cmp20, label %cond.true21, label %cond.false22 cond.true21: ; preds = %if.end15 br label %cond.end24 cond.false22: ; preds = %if.end15 %14 = load i32, i32* %numEltsLastBlock, align 4 %div23 = udiv i32 %14, 2 br label %cond.end24 cond.end24: ; preds = %cond.false22, %cond.true21 %cond25 = phi i32 [ 1, %cond.true21 ], [ %div23, %cond.false22 ] store i32 %cond25, i32* %numThreadsLastBlock, align 4 store i32 0, i32* %np2LastBlock, align 4 store i32 0, i32* %sharedMemLastBlock, align 4 %15 = load i32, i32* %numEltsLastBlock, align 4 %16 = load i32, i32* %numEltsPerBlock, align 4 %cmp26 = icmp ne i32 %15, %16 br i1 %cmp26, label %if.then27, label %if.end38 if.then27: ; preds = %cond.end24 store i32 1, i32* %np2LastBlock, align 4 %17 = load i32, i32* %numEltsLastBlock, align 4 %call28 = call zeroext i1 @_Z12isPowerOfTwoi(i32 %17) br i1 %call28, label %if.end31, label %if.then29 if.then29: ; preds = %if.then27 %18 = load i32, i32* %numEltsLastBlock, align 4 %call30 = call i32 @_Z9floorPow2i(i32 %18) store i32 %call30, i32* %numThreadsLastBlock, align 4 br label %if.end31 if.end31: ; preds = %if.then29, %if.then27 %19 = load i32, i32* %numThreadsLastBlock, align 4 %mul32 = mul i32 2, %19 %div33 = udiv i32 %mul32, 16 store i32 %div33, i32* %extraSpace, align 4 %20 = load i32, i32* %numThreadsLastBlock, align 4 %mul34 = mul i32 2, %20 %21 = load i32, i32* %extraSpace, align 4 %add = add i32 %mul34, %21 %conv35 = zext i32 %add to i64 %mul36 = mul i64 4, %conv35 %conv37 = trunc i64 %mul36 to i32 store i32 %conv37, i32* %sharedMemLastBlock, align 4 br label %if.end38 if.end38: ; preds = %if.end31, %cond.end24 %22 = load i32, i32* %numEltsPerBlock, align 4 %div40 = udiv i32 %22, 16 store i32 %div40, i32* %extraSpace39, align 4 %23 = load i32, i32* %numEltsPerBlock, align 4 %24 = load i32, i32* %extraSpace39, align 4 %add41 = add i32 %23, %24 %conv42 = zext i32 %add41 to i64 %mul43 = mul i64 4, %conv42 %conv44 = trunc i64 %mul43 to i32 store i32 %conv44, i32* %sharedMemSize, align 4 %25 = load i32, i32* %numBlocks, align 4 %26 = load i32, i32* %np2LastBlock, align 4 %sub45 = sub i32 %25, %26 %cmp46 = icmp ugt i32 1, %sub45 br i1 %cmp46, label %cond.true47, label %cond.false48 cond.true47: ; preds = %if.end38 br label %cond.end50 cond.false48: ; preds = %if.end38 %27 = load i32, i32* %numBlocks, align 4 %28 = load i32, i32* %np2LastBlock, align 4 %sub49 = sub i32 %27, %28 br label %cond.end50 cond.end50: ; preds = %cond.false48, %cond.true47 %cond51 = phi i32 [ 1, %cond.true47 ], [ %sub49, %cond.false48 ] call void @_ZN4dim3C2Ejjj(%struct.dim3* %grid, i32 %cond51, i32 1, i32 1) %29 = load i32, i32* %numThreads, align 4 call void @_ZN4dim3C2Ejjj(%struct.dim3* %threads, i32 %29, i32 1, i32 1) %call52 = call i32 @cudaGetLastError() store i32 %call52, i32* %err, align 4 %30 = load i32, i32* %err, align 4 %cmp53 = icmp ne i32 0, %30 br i1 %cmp53, label %if.then54, label %if.end57 if.then54: ; preds = %cond.end50 %31 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %32 = load i32, i32* %err, align 4 %call55 = call i8* @cudaGetErrorString(i32 %32) %call56 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %31, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.19, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i32 163, i8* %call55) call void @exit(i32 1) #16 unreachable if.end57: ; preds = %cond.end50 %33 = load i32, i32* %numBlocks, align 4 %cmp58 = icmp ugt i32 %33, 1 br i1 %cmp58, label %if.then59, label %if.else135 if.then59: ; preds = %if.end57 %34 = bitcast %struct.dim3* %agg.tmp to i8* %35 = bitcast %struct.dim3* %grid to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %34, i8* align 4 %35, i64 12, i1 false) %36 = bitcast %struct.dim3* %agg.tmp60 to i8* %37 = bitcast %struct.dim3* %threads to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %36, i8* align 4 %37, i64 12, i1 false) %38 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %39 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %38, i8* align 4 %39, i64 12, i1 false) %40 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %41 = load i64, i64* %40, align 4 %42 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %43 = load i32, i32* %42, align 4 %44 = bitcast { i64, i32 }* %agg.tmp60.coerce to i8* %45 = bitcast %struct.dim3* %agg.tmp60 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %44, i8* align 4 %45, i64 12, i1 false) %46 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp60.coerce, i32 0, i32 0 %47 = load i64, i64* %46, align 4 %48 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp60.coerce, i32 0, i32 1 %49 = load i32, i32* %48, align 4 %call61 = call i32 @__cudaPushCallConfiguration(i64 %41, i32 %43, i64 %47, i32 %49, i64 0, i8* null) %tobool = icmp ne i32 %call61, 0 br i1 %tobool, label %kcall.end, label %kcall.configok kcall.configok: ; preds = %if.then59 %50 = load i32*, i32** %outArray.addr, align 8 %51 = load i32*, i32** %inArray.addr, align 8 %52 = load i32**, i32*** @_ZL15g_scanBlockSums, align 8 %53 = load i32, i32* %level.addr, align 4 %idxprom = sext i32 %53 to i64 %arrayidx = getelementptr inbounds i32*, i32** %52, i64 %idxprom %54 = load i32*, i32** %arrayidx, align 8 %55 = load i32, i32* %numThreads, align 4 %mul62 = mul i32 %55, 2 call void @_ZL7prescanILb1ELb0EEvPjPKjS0_iii(i32* %50, i32* %51, i32* %54, i32 %mul62, i32 0, i32 0) br label %kcall.end kcall.end: ; preds = %kcall.configok, %if.then59 %call63 = call i32 @cudaThreadSynchronize() %call65 = call i32 @cudaGetLastError() store i32 %call65, i32* %err64, align 4 %56 = load i32, i32* %err64, align 4 %cmp66 = icmp ne i32 0, %56 br i1 %cmp66, label %if.then67, label %if.end70 if.then67: ; preds = %kcall.end %57 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %58 = load i32, i32* %err64, align 4 %call68 = call i8* @cudaGetErrorString(i32 %58) %call69 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %57, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i32 170, i8* %call68) call void @exit(i32 1) #16 unreachable if.end70: ; preds = %kcall.end %59 = load i32, i32* %np2LastBlock, align 4 %tobool71 = icmp ne i32 %59, 0 br i1 %tobool71, label %if.then72, label %if.end91 if.then72: ; preds = %if.end70 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp73, i32 1, i32 1, i32 1) %60 = load i32, i32* %numThreadsLastBlock, align 4 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp74, i32 %60, i32 1, i32 1) %61 = bitcast { i64, i32 }* %agg.tmp73.coerce to i8* %62 = bitcast %struct.dim3* %agg.tmp73 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %61, i8* align 4 %62, i64 12, i1 false) %63 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp73.coerce, i32 0, i32 0 %64 = load i64, i64* %63, align 4 %65 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp73.coerce, i32 0, i32 1 %66 = load i32, i32* %65, align 4 %67 = bitcast { i64, i32 }* %agg.tmp74.coerce to i8* %68 = bitcast %struct.dim3* %agg.tmp74 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %67, i8* align 4 %68, i64 12, i1 false) %69 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp74.coerce, i32 0, i32 0 %70 = load i64, i64* %69, align 4 %71 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp74.coerce, i32 0, i32 1 %72 = load i32, i32* %71, align 4 %call75 = call i32 @__cudaPushCallConfiguration(i64 %64, i32 %66, i64 %70, i32 %72, i64 0, i8* null) %tobool76 = icmp ne i32 %call75, 0 br i1 %tobool76, label %kcall.end82, label %kcall.configok77 kcall.configok77: ; preds = %if.then72 %73 = load i32*, i32** %outArray.addr, align 8 %74 = load i32*, i32** %inArray.addr, align 8 %75 = load i32**, i32*** @_ZL15g_scanBlockSums, align 8 %76 = load i32, i32* %level.addr, align 4 %idxprom78 = sext i32 %76 to i64 %arrayidx79 = getelementptr inbounds i32*, i32** %75, i64 %idxprom78 %77 = load i32*, i32** %arrayidx79, align 8 %78 = load i32, i32* %numEltsLastBlock, align 4 %79 = load i32, i32* %numBlocks, align 4 %sub80 = sub i32 %79, 1 %80 = load i32, i32* %numElements.addr, align 4 %81 = load i32, i32* %numEltsLastBlock, align 4 %sub81 = sub i32 %80, %81 call void @_ZL7prescanILb1ELb1EEvPjPKjS0_iii(i32* %73, i32* %74, i32* %77, i32 %78, i32 %sub80, i32 %sub81) br label %kcall.end82 kcall.end82: ; preds = %kcall.configok77, %if.then72 %call83 = call i32 @cudaThreadSynchronize() %call85 = call i32 @cudaGetLastError() store i32 %call85, i32* %err84, align 4 %82 = load i32, i32* %err84, align 4 %cmp86 = icmp ne i32 0, %82 br i1 %cmp86, label %if.then87, label %if.end90 if.then87: ; preds = %kcall.end82 %83 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %84 = load i32, i32* %err84, align 4 %call88 = call i8* @cudaGetErrorString(i32 %84) %call89 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %83, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.21, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i32 176, i8* %call88) call void @exit(i32 1) #16 unreachable if.end90: ; preds = %kcall.end82 br label %if.end91 if.end91: ; preds = %if.end90, %if.end70 %85 = load i32**, i32*** @_ZL15g_scanBlockSums, align 8 %86 = load i32, i32* %level.addr, align 4 %idxprom92 = sext i32 %86 to i64 %arrayidx93 = getelementptr inbounds i32*, i32** %85, i64 %idxprom92 %87 = load i32*, i32** %arrayidx93, align 8 %88 = load i32**, i32*** @_ZL15g_scanBlockSums, align 8 %89 = load i32, i32* %level.addr, align 4 %idxprom94 = sext i32 %89 to i64 %arrayidx95 = getelementptr inbounds i32*, i32** %88, i64 %idxprom94 %90 = load i32*, i32** %arrayidx95, align 8 %91 = load i32, i32* %numBlocks, align 4 %92 = load i32, i32* %level.addr, align 4 %add96 = add nsw i32 %92, 1 call void @_ZL21prescanArrayRecursivePjPKjii(i32* %87, i32* %90, i32 %91, i32 %add96) %93 = bitcast %struct.dim3* %agg.tmp97 to i8* %94 = bitcast %struct.dim3* %grid to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %93, i8* align 4 %94, i64 12, i1 false) %95 = bitcast %struct.dim3* %agg.tmp98 to i8* %96 = bitcast %struct.dim3* %threads to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %95, i8* align 4 %96, i64 12, i1 false) %97 = bitcast { i64, i32 }* %agg.tmp97.coerce to i8* %98 = bitcast %struct.dim3* %agg.tmp97 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %97, i8* align 4 %98, i64 12, i1 false) %99 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp97.coerce, i32 0, i32 0 %100 = load i64, i64* %99, align 4 %101 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp97.coerce, i32 0, i32 1 %102 = load i32, i32* %101, align 4 %103 = bitcast { i64, i32 }* %agg.tmp98.coerce to i8* %104 = bitcast %struct.dim3* %agg.tmp98 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %103, i8* align 4 %104, i64 12, i1 false) %105 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp98.coerce, i32 0, i32 0 %106 = load i64, i64* %105, align 4 %107 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp98.coerce, i32 0, i32 1 %108 = load i32, i32* %107, align 4 %call99 = call i32 @__cudaPushCallConfiguration(i64 %100, i32 %102, i64 %106, i32 %108, i64 0, i8* null) %tobool100 = icmp ne i32 %call99, 0 br i1 %tobool100, label %kcall.end105, label %kcall.configok101 kcall.configok101: ; preds = %if.end91 %109 = load i32*, i32** %outArray.addr, align 8 %110 = load i32**, i32*** @_ZL15g_scanBlockSums, align 8 %111 = load i32, i32* %level.addr, align 4 %idxprom102 = sext i32 %111 to i64 %arrayidx103 = getelementptr inbounds i32*, i32** %110, i64 %idxprom102 %112 = load i32*, i32** %arrayidx103, align 8 %113 = load i32, i32* %numElements.addr, align 4 %114 = load i32, i32* %numEltsLastBlock, align 4 %sub104 = sub i32 %113, %114 call void @_ZL10uniformAddPjS_iii(i32* %109, i32* %112, i32 %sub104, i32 0, i32 0) br label %kcall.end105 kcall.end105: ; preds = %kcall.configok101, %if.end91 %call106 = call i32 @cudaThreadSynchronize() %call108 = call i32 @cudaGetLastError() store i32 %call108, i32* %err107, align 4 %115 = load i32, i32* %err107, align 4 %cmp109 = icmp ne i32 0, %115 br i1 %cmp109, label %if.then110, label %if.end113 if.then110: ; preds = %kcall.end105 %116 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %117 = load i32, i32* %err107, align 4 %call111 = call i8* @cudaGetErrorString(i32 %117) %call112 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %116, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i32 190, i8* %call111) call void @exit(i32 1) #16 unreachable if.end113: ; preds = %kcall.end105 %118 = load i32, i32* %np2LastBlock, align 4 %tobool114 = icmp ne i32 %118, 0 br i1 %tobool114, label %if.then115, label %if.end134 if.then115: ; preds = %if.end113 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp116, i32 1, i32 1, i32 1) %119 = load i32, i32* %numThreadsLastBlock, align 4 call void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp117, i32 %119, i32 1, i32 1) %120 = bitcast { i64, i32 }* %agg.tmp116.coerce to i8* %121 = bitcast %struct.dim3* %agg.tmp116 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %120, i8* align 4 %121, i64 12, i1 false) %122 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp116.coerce, i32 0, i32 0 %123 = load i64, i64* %122, align 4 %124 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp116.coerce, i32 0, i32 1 %125 = load i32, i32* %124, align 4 %126 = bitcast { i64, i32 }* %agg.tmp117.coerce to i8* %127 = bitcast %struct.dim3* %agg.tmp117 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %126, i8* align 4 %127, i64 12, i1 false) %128 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp117.coerce, i32 0, i32 0 %129 = load i64, i64* %128, align 4 %130 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp117.coerce, i32 0, i32 1 %131 = load i32, i32* %130, align 4 %call118 = call i32 @__cudaPushCallConfiguration(i64 %123, i32 %125, i64 %129, i32 %131, i64 0, i8* null) %tobool119 = icmp ne i32 %call118, 0 br i1 %tobool119, label %kcall.end125, label %kcall.configok120 kcall.configok120: ; preds = %if.then115 %132 = load i32*, i32** %outArray.addr, align 8 %133 = load i32**, i32*** @_ZL15g_scanBlockSums, align 8 %134 = load i32, i32* %level.addr, align 4 %idxprom121 = sext i32 %134 to i64 %arrayidx122 = getelementptr inbounds i32*, i32** %133, i64 %idxprom121 %135 = load i32*, i32** %arrayidx122, align 8 %136 = load i32, i32* %numEltsLastBlock, align 4 %137 = load i32, i32* %numBlocks, align 4 %sub123 = sub i32 %137, 1 %138 = load i32, i32* %numElements.addr, align 4 %139 = load i32, i32* %numEltsLastBlock, align 4 %sub124 = sub i32 %138, %139 call void @_ZL10uniformAddPjS_iii(i32* %132, i32* %135, i32 %136, i32 %sub123, i32 %sub124) br label %kcall.end125 kcall.end125: ; preds = %kcall.configok120, %if.then115 %call126 = call i32 @cudaThreadSynchronize() %call128 = call i32 @cudaGetLastError() store i32 %call128, i32* %err127, align 4 %140 = load i32, i32* %err127, align 4 %cmp129 = icmp ne i32 0, %140 br i1 %cmp129, label %if.then130, label %if.end133 if.then130: ; preds = %kcall.end125 %141 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %142 = load i32, i32* %err127, align 4 %call131 = call i8* @cudaGetErrorString(i32 %142) %call132 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %141, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i32 196, i8* %call131) call void @exit(i32 1) #16 unreachable if.end133: ; preds = %kcall.end125 br label %if.end134 if.end134: ; preds = %if.end133, %if.end113 br label %if.end169 if.else135: ; preds = %if.end57 %143 = load i32, i32* %numElements.addr, align 4 %call136 = call zeroext i1 @_Z12isPowerOfTwoi(i32 %143) br i1 %call136, label %if.then137, label %if.else153 if.then137: ; preds = %if.else135 %144 = bitcast %struct.dim3* %agg.tmp138 to i8* %145 = bitcast %struct.dim3* %grid to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %144, i8* align 4 %145, i64 12, i1 false) %146 = bitcast %struct.dim3* %agg.tmp139 to i8* %147 = bitcast %struct.dim3* %threads to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %146, i8* align 4 %147, i64 12, i1 false) %148 = bitcast { i64, i32 }* %agg.tmp138.coerce to i8* %149 = bitcast %struct.dim3* %agg.tmp138 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %148, i8* align 4 %149, i64 12, i1 false) %150 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp138.coerce, i32 0, i32 0 %151 = load i64, i64* %150, align 4 %152 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp138.coerce, i32 0, i32 1 %153 = load i32, i32* %152, align 4 %154 = bitcast { i64, i32 }* %agg.tmp139.coerce to i8* %155 = bitcast %struct.dim3* %agg.tmp139 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %154, i8* align 4 %155, i64 12, i1 false) %156 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp139.coerce, i32 0, i32 0 %157 = load i64, i64* %156, align 4 %158 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp139.coerce, i32 0, i32 1 %159 = load i32, i32* %158, align 4 %call140 = call i32 @__cudaPushCallConfiguration(i64 %151, i32 %153, i64 %157, i32 %159, i64 0, i8* null) %tobool141 = icmp ne i32 %call140, 0 br i1 %tobool141, label %kcall.end144, label %kcall.configok142 kcall.configok142: ; preds = %if.then137 %160 = load i32*, i32** %outArray.addr, align 8 %161 = load i32*, i32** %inArray.addr, align 8 %162 = load i32, i32* %numThreads, align 4 %mul143 = mul i32 %162, 2 call void @_ZL7prescanILb0ELb0EEvPjPKjS0_iii(i32* %160, i32* %161, i32* null, i32 %mul143, i32 0, i32 0) br label %kcall.end144 kcall.end144: ; preds = %kcall.configok142, %if.then137 %call145 = call i32 @cudaThreadSynchronize() %call147 = call i32 @cudaGetLastError() store i32 %call147, i32* %err146, align 4 %163 = load i32, i32* %err146, align 4 %cmp148 = icmp ne i32 0, %163 br i1 %cmp148, label %if.then149, label %if.end152 if.then149: ; preds = %kcall.end144 %164 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %165 = load i32, i32* %err146, align 4 %call150 = call i8* @cudaGetErrorString(i32 %165) %call151 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %164, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.23, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i32 202, i8* %call150) call void @exit(i32 1) #16 unreachable if.end152: ; preds = %kcall.end144 br label %if.end168 if.else153: ; preds = %if.else135 %166 = bitcast %struct.dim3* %agg.tmp154 to i8* %167 = bitcast %struct.dim3* %grid to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %166, i8* align 4 %167, i64 12, i1 false) %168 = bitcast %struct.dim3* %agg.tmp155 to i8* %169 = bitcast %struct.dim3* %threads to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %168, i8* align 4 %169, i64 12, i1 false) %170 = bitcast { i64, i32 }* %agg.tmp154.coerce to i8* %171 = bitcast %struct.dim3* %agg.tmp154 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %170, i8* align 4 %171, i64 12, i1 false) %172 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp154.coerce, i32 0, i32 0 %173 = load i64, i64* %172, align 4 %174 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp154.coerce, i32 0, i32 1 %175 = load i32, i32* %174, align 4 %176 = bitcast { i64, i32 }* %agg.tmp155.coerce to i8* %177 = bitcast %struct.dim3* %agg.tmp155 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %176, i8* align 4 %177, i64 12, i1 false) %178 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp155.coerce, i32 0, i32 0 %179 = load i64, i64* %178, align 4 %180 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp155.coerce, i32 0, i32 1 %181 = load i32, i32* %180, align 4 %call156 = call i32 @__cudaPushCallConfiguration(i64 %173, i32 %175, i64 %179, i32 %181, i64 0, i8* null) %tobool157 = icmp ne i32 %call156, 0 br i1 %tobool157, label %kcall.end159, label %kcall.configok158 kcall.configok158: ; preds = %if.else153 %182 = load i32*, i32** %outArray.addr, align 8 %183 = load i32*, i32** %inArray.addr, align 8 %184 = load i32, i32* %numElements.addr, align 4 call void @_ZL7prescanILb0ELb1EEvPjPKjS0_iii(i32* %182, i32* %183, i32* null, i32 %184, i32 0, i32 0) br label %kcall.end159 kcall.end159: ; preds = %kcall.configok158, %if.else153 %call160 = call i32 @cudaThreadSynchronize() %call162 = call i32 @cudaGetLastError() store i32 %call162, i32* %err161, align 4 %185 = load i32, i32* %err161, align 4 %cmp163 = icmp ne i32 0, %185 br i1 %cmp163, label %if.then164, label %if.end167 if.then164: ; preds = %kcall.end159 %186 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %187 = load i32, i32* %err161, align 4 %call165 = call i8* @cudaGetErrorString(i32 %187) %call166 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %186, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.24, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i32 207, i8* %call165) call void @exit(i32 1) #16 unreachable if.end167: ; preds = %kcall.end159 br label %if.end168 if.end168: ; preds = %if.end167, %if.end152 br label %if.end169 if.end169: ; preds = %if.end168, %if.end134 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local zeroext i1 @_Z12isPowerOfTwoi(i32 %n) #6 comdat { entry: %n.addr = alloca i32, align 4 store i32 %n, i32* %n.addr, align 4 %0 = load i32, i32* %n.addr, align 4 %1 = load i32, i32* %n.addr, align 4 %sub = sub nsw i32 %1, 1 %and = and i32 %0, %sub %cmp = icmp eq i32 %and, 0 ret i1 %cmp } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i32 @_Z9floorPow2i(i32 %n) #0 comdat { entry: %n.addr = alloca i32, align 4 %exp = alloca i32, align 4 store i32 %n, i32* %n.addr, align 4 %0 = load i32, i32* %n.addr, align 4 %conv = sitofp i32 %0 to float %call = call float @_ZSt5frexpfPi(float %conv, i32* %exp) %1 = load i32, i32* %exp, align 4 %sub = sub nsw i32 %1, 1 %shl = shl i32 1, %sub ret i32 %shl } ; Function Attrs: noinline optnone uwtable define internal void @_ZL7prescanILb1ELb0EEvPjPKjS0_iii(i32* %g_odata, i32* %g_idata, i32* %g_blockSums, i32 %n, i32 %blockIndex, i32 %baseIndex) #0 { entry: %g_odata.addr = alloca i32*, align 8 %g_idata.addr = alloca i32*, align 8 %g_blockSums.addr = alloca i32*, align 8 %n.addr = alloca i32, align 4 %blockIndex.addr = alloca i32, align 4 %baseIndex.addr = alloca i32, align 4 %grid_dim = alloca %struct.dim3, align 8 %block_dim = alloca %struct.dim3, align 8 %shmem_size = alloca i64, align 8 %stream = alloca i8*, align 8 %grid_dim.coerce = alloca { i64, i32 }, align 8 %block_dim.coerce = alloca { i64, i32 }, align 8 store i32* %g_odata, i32** %g_odata.addr, align 8 store i32* %g_idata, i32** %g_idata.addr, align 8 store i32* %g_blockSums, i32** %g_blockSums.addr, align 8 store i32 %n, i32* %n.addr, align 4 store i32 %blockIndex, i32* %blockIndex.addr, align 4 store i32 %baseIndex, i32* %baseIndex.addr, align 4 %kernel_args = alloca i8*, i64 6, align 16 %0 = bitcast i32** %g_odata.addr to i8* %1 = getelementptr i8*, i8** %kernel_args, i32 0 store i8* %0, i8** %1 %2 = bitcast i32** %g_idata.addr to i8* %3 = getelementptr i8*, i8** %kernel_args, i32 1 store i8* %2, i8** %3 %4 = bitcast i32** %g_blockSums.addr to i8* %5 = getelementptr i8*, i8** %kernel_args, i32 2 store i8* %4, i8** %5 %6 = bitcast i32* %n.addr to i8* %7 = getelementptr i8*, i8** %kernel_args, i32 3 store i8* %6, i8** %7 %8 = bitcast i32* %blockIndex.addr to i8* %9 = getelementptr i8*, i8** %kernel_args, i32 4 store i8* %8, i8** %9 %10 = bitcast i32* %baseIndex.addr to i8* %11 = getelementptr i8*, i8** %kernel_args, i32 5 store i8* %10, i8** %11 %12 = call i32 @__cudaPopCallConfiguration(%struct.dim3* %grid_dim, %struct.dim3* %block_dim, i64* %shmem_size, i8** %stream) %13 = load i64, i64* %shmem_size, align 8 %14 = load i8*, i8** %stream, align 8 %15 = bitcast { i64, i32 }* %grid_dim.coerce to i8* %16 = bitcast %struct.dim3* %grid_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %16, i64 12, i1 false) %17 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 0 %18 = load i64, i64* %17, align 8 %19 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 1 %20 = load i32, i32* %19, align 8 %21 = bitcast { i64, i32 }* %block_dim.coerce to i8* %22 = bitcast %struct.dim3* %block_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %22, i64 12, i1 false) %23 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 0 %24 = load i64, i64* %23, align 8 %25 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 1 %26 = load i32, i32* %25, align 8 %27 = bitcast i8* %14 to %struct.CUstream_st* %call = call i32 @cudaLaunchKernel(i8* bitcast (void (i32*, i32*, i32*, i32, i32, i32)* @_ZL7prescanILb1ELb0EEvPjPKjS0_iii to i8*), i64 %18, i32 %20, i64 %24, i32 %26, i8** %kernel_args, i64 %13, %struct.CUstream_st* %27) br label %setup.end setup.end: ; preds = %entry ret void } ; Function Attrs: noinline optnone uwtable define internal void @_ZL7prescanILb1ELb1EEvPjPKjS0_iii(i32* %g_odata, i32* %g_idata, i32* %g_blockSums, i32 %n, i32 %blockIndex, i32 %baseIndex) #0 { entry: %g_odata.addr = alloca i32*, align 8 %g_idata.addr = alloca i32*, align 8 %g_blockSums.addr = alloca i32*, align 8 %n.addr = alloca i32, align 4 %blockIndex.addr = alloca i32, align 4 %baseIndex.addr = alloca i32, align 4 %grid_dim = alloca %struct.dim3, align 8 %block_dim = alloca %struct.dim3, align 8 %shmem_size = alloca i64, align 8 %stream = alloca i8*, align 8 %grid_dim.coerce = alloca { i64, i32 }, align 8 %block_dim.coerce = alloca { i64, i32 }, align 8 store i32* %g_odata, i32** %g_odata.addr, align 8 store i32* %g_idata, i32** %g_idata.addr, align 8 store i32* %g_blockSums, i32** %g_blockSums.addr, align 8 store i32 %n, i32* %n.addr, align 4 store i32 %blockIndex, i32* %blockIndex.addr, align 4 store i32 %baseIndex, i32* %baseIndex.addr, align 4 %kernel_args = alloca i8*, i64 6, align 16 %0 = bitcast i32** %g_odata.addr to i8* %1 = getelementptr i8*, i8** %kernel_args, i32 0 store i8* %0, i8** %1 %2 = bitcast i32** %g_idata.addr to i8* %3 = getelementptr i8*, i8** %kernel_args, i32 1 store i8* %2, i8** %3 %4 = bitcast i32** %g_blockSums.addr to i8* %5 = getelementptr i8*, i8** %kernel_args, i32 2 store i8* %4, i8** %5 %6 = bitcast i32* %n.addr to i8* %7 = getelementptr i8*, i8** %kernel_args, i32 3 store i8* %6, i8** %7 %8 = bitcast i32* %blockIndex.addr to i8* %9 = getelementptr i8*, i8** %kernel_args, i32 4 store i8* %8, i8** %9 %10 = bitcast i32* %baseIndex.addr to i8* %11 = getelementptr i8*, i8** %kernel_args, i32 5 store i8* %10, i8** %11 %12 = call i32 @__cudaPopCallConfiguration(%struct.dim3* %grid_dim, %struct.dim3* %block_dim, i64* %shmem_size, i8** %stream) %13 = load i64, i64* %shmem_size, align 8 %14 = load i8*, i8** %stream, align 8 %15 = bitcast { i64, i32 }* %grid_dim.coerce to i8* %16 = bitcast %struct.dim3* %grid_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %16, i64 12, i1 false) %17 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 0 %18 = load i64, i64* %17, align 8 %19 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 1 %20 = load i32, i32* %19, align 8 %21 = bitcast { i64, i32 }* %block_dim.coerce to i8* %22 = bitcast %struct.dim3* %block_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %22, i64 12, i1 false) %23 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 0 %24 = load i64, i64* %23, align 8 %25 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 1 %26 = load i32, i32* %25, align 8 %27 = bitcast i8* %14 to %struct.CUstream_st* %call = call i32 @cudaLaunchKernel(i8* bitcast (void (i32*, i32*, i32*, i32, i32, i32)* @_ZL7prescanILb1ELb1EEvPjPKjS0_iii to i8*), i64 %18, i32 %20, i64 %24, i32 %26, i8** %kernel_args, i64 %13, %struct.CUstream_st* %27) br label %setup.end setup.end: ; preds = %entry ret void } ; Function Attrs: noinline optnone uwtable define internal void @_ZL10uniformAddPjS_iii(i32* %g_data, i32* %uniforms, i32 %n, i32 %blockOffset, i32 %baseIndex) #0 { entry: %g_data.addr = alloca i32*, align 8 %uniforms.addr = alloca i32*, align 8 %n.addr = alloca i32, align 4 %blockOffset.addr = alloca i32, align 4 %baseIndex.addr = alloca i32, align 4 %grid_dim = alloca %struct.dim3, align 8 %block_dim = alloca %struct.dim3, align 8 %shmem_size = alloca i64, align 8 %stream = alloca i8*, align 8 %grid_dim.coerce = alloca { i64, i32 }, align 8 %block_dim.coerce = alloca { i64, i32 }, align 8 store i32* %g_data, i32** %g_data.addr, align 8 store i32* %uniforms, i32** %uniforms.addr, align 8 store i32 %n, i32* %n.addr, align 4 store i32 %blockOffset, i32* %blockOffset.addr, align 4 store i32 %baseIndex, i32* %baseIndex.addr, align 4 %kernel_args = alloca i8*, i64 5, align 16 %0 = bitcast i32** %g_data.addr to i8* %1 = getelementptr i8*, i8** %kernel_args, i32 0 store i8* %0, i8** %1 %2 = bitcast i32** %uniforms.addr to i8* %3 = getelementptr i8*, i8** %kernel_args, i32 1 store i8* %2, i8** %3 %4 = bitcast i32* %n.addr to i8* %5 = getelementptr i8*, i8** %kernel_args, i32 2 store i8* %4, i8** %5 %6 = bitcast i32* %blockOffset.addr to i8* %7 = getelementptr i8*, i8** %kernel_args, i32 3 store i8* %6, i8** %7 %8 = bitcast i32* %baseIndex.addr to i8* %9 = getelementptr i8*, i8** %kernel_args, i32 4 store i8* %8, i8** %9 %10 = call i32 @__cudaPopCallConfiguration(%struct.dim3* %grid_dim, %struct.dim3* %block_dim, i64* %shmem_size, i8** %stream) %11 = load i64, i64* %shmem_size, align 8 %12 = load i8*, i8** %stream, align 8 %13 = bitcast { i64, i32 }* %grid_dim.coerce to i8* %14 = bitcast %struct.dim3* %grid_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 12, i1 false) %15 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 0 %16 = load i64, i64* %15, align 8 %17 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 1 %18 = load i32, i32* %17, align 8 %19 = bitcast { i64, i32 }* %block_dim.coerce to i8* %20 = bitcast %struct.dim3* %block_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 12, i1 false) %21 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 0 %22 = load i64, i64* %21, align 8 %23 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 1 %24 = load i32, i32* %23, align 8 %25 = bitcast i8* %12 to %struct.CUstream_st* %call = call i32 @cudaLaunchKernel(i8* bitcast (void (i32*, i32*, i32, i32, i32)* @_ZL10uniformAddPjS_iii to i8*), i64 %16, i32 %18, i64 %22, i32 %24, i8** %kernel_args, i64 %11, %struct.CUstream_st* %25) br label %setup.end setup.end: ; preds = %entry ret void } ; Function Attrs: noinline optnone uwtable define internal void @_ZL7prescanILb0ELb0EEvPjPKjS0_iii(i32* %g_odata, i32* %g_idata, i32* %g_blockSums, i32 %n, i32 %blockIndex, i32 %baseIndex) #0 { entry: %g_odata.addr = alloca i32*, align 8 %g_idata.addr = alloca i32*, align 8 %g_blockSums.addr = alloca i32*, align 8 %n.addr = alloca i32, align 4 %blockIndex.addr = alloca i32, align 4 %baseIndex.addr = alloca i32, align 4 %grid_dim = alloca %struct.dim3, align 8 %block_dim = alloca %struct.dim3, align 8 %shmem_size = alloca i64, align 8 %stream = alloca i8*, align 8 %grid_dim.coerce = alloca { i64, i32 }, align 8 %block_dim.coerce = alloca { i64, i32 }, align 8 store i32* %g_odata, i32** %g_odata.addr, align 8 store i32* %g_idata, i32** %g_idata.addr, align 8 store i32* %g_blockSums, i32** %g_blockSums.addr, align 8 store i32 %n, i32* %n.addr, align 4 store i32 %blockIndex, i32* %blockIndex.addr, align 4 store i32 %baseIndex, i32* %baseIndex.addr, align 4 %kernel_args = alloca i8*, i64 6, align 16 %0 = bitcast i32** %g_odata.addr to i8* %1 = getelementptr i8*, i8** %kernel_args, i32 0 store i8* %0, i8** %1 %2 = bitcast i32** %g_idata.addr to i8* %3 = getelementptr i8*, i8** %kernel_args, i32 1 store i8* %2, i8** %3 %4 = bitcast i32** %g_blockSums.addr to i8* %5 = getelementptr i8*, i8** %kernel_args, i32 2 store i8* %4, i8** %5 %6 = bitcast i32* %n.addr to i8* %7 = getelementptr i8*, i8** %kernel_args, i32 3 store i8* %6, i8** %7 %8 = bitcast i32* %blockIndex.addr to i8* %9 = getelementptr i8*, i8** %kernel_args, i32 4 store i8* %8, i8** %9 %10 = bitcast i32* %baseIndex.addr to i8* %11 = getelementptr i8*, i8** %kernel_args, i32 5 store i8* %10, i8** %11 %12 = call i32 @__cudaPopCallConfiguration(%struct.dim3* %grid_dim, %struct.dim3* %block_dim, i64* %shmem_size, i8** %stream) %13 = load i64, i64* %shmem_size, align 8 %14 = load i8*, i8** %stream, align 8 %15 = bitcast { i64, i32 }* %grid_dim.coerce to i8* %16 = bitcast %struct.dim3* %grid_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %16, i64 12, i1 false) %17 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 0 %18 = load i64, i64* %17, align 8 %19 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 1 %20 = load i32, i32* %19, align 8 %21 = bitcast { i64, i32 }* %block_dim.coerce to i8* %22 = bitcast %struct.dim3* %block_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %22, i64 12, i1 false) %23 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 0 %24 = load i64, i64* %23, align 8 %25 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 1 %26 = load i32, i32* %25, align 8 %27 = bitcast i8* %14 to %struct.CUstream_st* %call = call i32 @cudaLaunchKernel(i8* bitcast (void (i32*, i32*, i32*, i32, i32, i32)* @_ZL7prescanILb0ELb0EEvPjPKjS0_iii to i8*), i64 %18, i32 %20, i64 %24, i32 %26, i8** %kernel_args, i64 %13, %struct.CUstream_st* %27) br label %setup.end setup.end: ; preds = %entry ret void } ; Function Attrs: noinline optnone uwtable define internal void @_ZL7prescanILb0ELb1EEvPjPKjS0_iii(i32* %g_odata, i32* %g_idata, i32* %g_blockSums, i32 %n, i32 %blockIndex, i32 %baseIndex) #0 { entry: %g_odata.addr = alloca i32*, align 8 %g_idata.addr = alloca i32*, align 8 %g_blockSums.addr = alloca i32*, align 8 %n.addr = alloca i32, align 4 %blockIndex.addr = alloca i32, align 4 %baseIndex.addr = alloca i32, align 4 %grid_dim = alloca %struct.dim3, align 8 %block_dim = alloca %struct.dim3, align 8 %shmem_size = alloca i64, align 8 %stream = alloca i8*, align 8 %grid_dim.coerce = alloca { i64, i32 }, align 8 %block_dim.coerce = alloca { i64, i32 }, align 8 store i32* %g_odata, i32** %g_odata.addr, align 8 store i32* %g_idata, i32** %g_idata.addr, align 8 store i32* %g_blockSums, i32** %g_blockSums.addr, align 8 store i32 %n, i32* %n.addr, align 4 store i32 %blockIndex, i32* %blockIndex.addr, align 4 store i32 %baseIndex, i32* %baseIndex.addr, align 4 %kernel_args = alloca i8*, i64 6, align 16 %0 = bitcast i32** %g_odata.addr to i8* %1 = getelementptr i8*, i8** %kernel_args, i32 0 store i8* %0, i8** %1 %2 = bitcast i32** %g_idata.addr to i8* %3 = getelementptr i8*, i8** %kernel_args, i32 1 store i8* %2, i8** %3 %4 = bitcast i32** %g_blockSums.addr to i8* %5 = getelementptr i8*, i8** %kernel_args, i32 2 store i8* %4, i8** %5 %6 = bitcast i32* %n.addr to i8* %7 = getelementptr i8*, i8** %kernel_args, i32 3 store i8* %6, i8** %7 %8 = bitcast i32* %blockIndex.addr to i8* %9 = getelementptr i8*, i8** %kernel_args, i32 4 store i8* %8, i8** %9 %10 = bitcast i32* %baseIndex.addr to i8* %11 = getelementptr i8*, i8** %kernel_args, i32 5 store i8* %10, i8** %11 %12 = call i32 @__cudaPopCallConfiguration(%struct.dim3* %grid_dim, %struct.dim3* %block_dim, i64* %shmem_size, i8** %stream) %13 = load i64, i64* %shmem_size, align 8 %14 = load i8*, i8** %stream, align 8 %15 = bitcast { i64, i32 }* %grid_dim.coerce to i8* %16 = bitcast %struct.dim3* %grid_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %16, i64 12, i1 false) %17 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 0 %18 = load i64, i64* %17, align 8 %19 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 1 %20 = load i32, i32* %19, align 8 %21 = bitcast { i64, i32 }* %block_dim.coerce to i8* %22 = bitcast %struct.dim3* %block_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %22, i64 12, i1 false) %23 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 0 %24 = load i64, i64* %23, align 8 %25 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 1 %26 = load i32, i32* %25, align 8 %27 = bitcast i8* %14 to %struct.CUstream_st* %call = call i32 @cudaLaunchKernel(i8* bitcast (void (i32*, i32*, i32*, i32, i32, i32)* @_ZL7prescanILb0ELb1EEvPjPKjS0_iii to i8*), i64 %18, i32 %20, i64 %24, i32 %26, i8** %kernel_args, i64 %13, %struct.CUstream_st* %27) br label %setup.end setup.end: ; preds = %entry ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local float @_ZSt5frexpfPi(float %__x, i32* %__exp) #6 comdat { entry: %__x.addr = alloca float, align 4 %__exp.addr = alloca i32*, align 8 store float %__x, float* %__x.addr, align 4 store i32* %__exp, i32** %__exp.addr, align 8 %0 = load float, float* %__x.addr, align 4 %1 = load i32*, i32** %__exp.addr, align 8 %call = call float @frexpf(float %0, i32* %1) #3 ret float %call } ; Function Attrs: nounwind declare dso_local float @frexpf(float, i32*) #11 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP5INodeSaIS1_EEC2Ev(%"struct.std::_Vector_base"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 call void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE12_Vector_implC2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %_M_impl) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE12_Vector_implC2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base >::_Vector_impl"*, align 8 store %"struct.std::_Vector_base >::_Vector_impl"* %this, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base >::_Vector_impl"*, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %this1 to %"class.std::allocator"* call void @_ZNSaIP5INodeEC2Ev(%"class.std::allocator"* %0) #3 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %this1, i32 0, i32 0 store %class.INode** null, %class.INode*** %_M_start, align 8 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %this1, i32 0, i32 1 store %class.INode** null, %class.INode*** %_M_finish, align 8 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %this1, i32 0, i32 2 store %class.INode** null, %class.INode*** %_M_end_of_storage, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaIP5INodeEC2Ev(%"class.std::allocator"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator"*, align 8 store %"class.std::allocator"* %this, %"class.std::allocator"** %this.addr, align 8 %this1 = load %"class.std::allocator"*, %"class.std::allocator"** %this.addr, align 8 %0 = bitcast %"class.std::allocator"* %this1 to %"class.__gnu_cxx::new_allocator"* call void @_ZN9__gnu_cxx13new_allocatorIP5INodeEC2Ev(%"class.__gnu_cxx::new_allocator"* %0) #3 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP5INodeEC2Ev(%"class.__gnu_cxx::new_allocator"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt8_DestroyIPP5INodeS1_EvT_S3_RSaIT0_E(%class.INode** %__first, %class.INode** %__last, %"class.std::allocator"* dereferenceable(1) %0) #0 comdat { entry: %__first.addr = alloca %class.INode**, align 8 %__last.addr = alloca %class.INode**, align 8 %.addr = alloca %"class.std::allocator"*, align 8 store %class.INode** %__first, %class.INode*** %__first.addr, align 8 store %class.INode** %__last, %class.INode*** %__last.addr, align 8 store %"class.std::allocator"* %0, %"class.std::allocator"** %.addr, align 8 %1 = load %class.INode**, %class.INode*** %__first.addr, align 8 %2 = load %class.INode**, %class.INode*** %__last.addr, align 8 call void @_ZSt8_DestroyIPP5INodeEvT_S3_(%class.INode** %1, %class.INode** %2) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseIP5INodeSaIS1_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator"* ret %"class.std::allocator"* %0 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP5INodeSaIS1_EED2Ev(%"struct.std::_Vector_base"* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 %0 = load %class.INode**, %class.INode*** %_M_start, align 8 %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 2 %1 = load %class.INode**, %class.INode*** %_M_end_of_storage, align 8 %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %_M_start4 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl3, i32 0, i32 0 %2 = load %class.INode**, %class.INode*** %_M_start4, align 8 %sub.ptr.lhs.cast = ptrtoint %class.INode** %1 to i64 %sub.ptr.rhs.cast = ptrtoint %class.INode** %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 invoke void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE13_M_deallocateEPS1_m(%"struct.std::_Vector_base"* %this1, %class.INode** %0, i64 %sub.ptr.div) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %_M_impl5 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 call void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE12_Vector_implD2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %_M_impl5) #3 ret void lpad: ; preds = %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 call void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE12_Vector_implD2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %_M_impl6) #3 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val7 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val7 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt8_DestroyIPP5INodeEvT_S3_(%class.INode** %__first, %class.INode** %__last) #0 comdat { entry: %__first.addr = alloca %class.INode**, align 8 %__last.addr = alloca %class.INode**, align 8 store %class.INode** %__first, %class.INode*** %__first.addr, align 8 store %class.INode** %__last, %class.INode*** %__last.addr, align 8 %0 = load %class.INode**, %class.INode*** %__first.addr, align 8 %1 = load %class.INode**, %class.INode*** %__last.addr, align 8 call void @_ZNSt12_Destroy_auxILb1EE9__destroyIPP5INodeEEvT_S5_(%class.INode** %0, %class.INode** %1) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Destroy_auxILb1EE9__destroyIPP5INodeEEvT_S5_(%class.INode** %0, %class.INode** %1) #6 comdat align 2 { entry: %.addr = alloca %class.INode**, align 8 %.addr1 = alloca %class.INode**, align 8 store %class.INode** %0, %class.INode*** %.addr, align 8 store %class.INode** %1, %class.INode*** %.addr1, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE13_M_deallocateEPS1_m(%"struct.std::_Vector_base"* %this, %class.INode** %__p, i64 %__n) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 %__p.addr = alloca %class.INode**, align 8 %__n.addr = alloca i64, align 8 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 store %class.INode** %__p, %class.INode*** %__p.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %0 = load %class.INode**, %class.INode*** %__p.addr, align 8 %tobool = icmp ne %class.INode** %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %1 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator"* %2 = load %class.INode**, %class.INode*** %__p.addr, align 8 %3 = load i64, i64* %__n.addr, align 8 call void @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE10deallocateERS3_PS2_m(%"class.std::allocator"* dereferenceable(1) %1, %class.INode** %2, i64 %3) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE12_Vector_implD2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base >::_Vector_impl"*, align 8 store %"struct.std::_Vector_base >::_Vector_impl"* %this, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base >::_Vector_impl"*, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %this1 to %"class.std::allocator"* call void @_ZNSaIP5INodeED2Ev(%"class.std::allocator"* %0) #3 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE10deallocateERS3_PS2_m(%"class.std::allocator"* dereferenceable(1) %__a, %class.INode** %__p, i64 %__n) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator"*, align 8 %__p.addr = alloca %class.INode**, align 8 %__n.addr = alloca i64, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 store %class.INode** %__p, %class.INode*** %__p.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %0 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator"* %0 to %"class.__gnu_cxx::new_allocator"* %2 = load %class.INode**, %class.INode*** %__p.addr, align 8 %3 = load i64, i64* %__n.addr, align 8 call void @_ZN9__gnu_cxx13new_allocatorIP5INodeE10deallocateEPS2_m(%"class.__gnu_cxx::new_allocator"* %1, %class.INode** %2, i64 %3) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP5INodeE10deallocateEPS2_m(%"class.__gnu_cxx::new_allocator"* %this, %class.INode** %__p, i64 %0) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 %__p.addr = alloca %class.INode**, align 8 %.addr = alloca i64, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 store %class.INode** %__p, %class.INode*** %__p.addr, align 8 store i64 %0, i64* %.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %1 = load %class.INode**, %class.INode*** %__p.addr, align 8 %2 = bitcast %class.INode** %1 to i8* call void @_ZdlPv(i8* %2) #3 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaIP5INodeED2Ev(%"class.std::allocator"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator"*, align 8 store %"class.std::allocator"* %this, %"class.std::allocator"** %this.addr, align 8 %this1 = load %"class.std::allocator"*, %"class.std::allocator"** %this.addr, align 8 %0 = bitcast %"class.std::allocator"* %this1 to %"class.__gnu_cxx::new_allocator"* call void @_ZN9__gnu_cxx13new_allocatorIP5INodeED2Ev(%"class.__gnu_cxx::new_allocator"* %0) #3 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP5INodeED2Ev(%"class.__gnu_cxx::new_allocator"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorIP5INodeSaIS1_EEC2ERKS3_(%"class.std::vector"* %this, %"class.std::vector"* dereferenceable(24) %__x) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::vector"*, align 8 %__x.addr = alloca %"class.std::vector"*, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %agg.tmp5 = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 store %"class.std::vector"* %__x, %"class.std::vector"** %__x.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %1 = load %"class.std::vector"*, %"class.std::vector"** %__x.addr, align 8 %call = call i64 @_ZNKSt6vectorIP5INodeSaIS1_EE4sizeEv(%"class.std::vector"* %1) %2 = load %"class.std::vector"*, %"class.std::vector"** %__x.addr, align 8 %3 = bitcast %"class.std::vector"* %2 to %"struct.std::_Vector_base"* %call2 = call dereferenceable(1) %"class.std::allocator"* @_ZNKSt12_Vector_baseIP5INodeSaIS1_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %3) %call3 = call dereferenceable(1) %"class.std::allocator"* @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE17_S_select_on_copyERKS3_(%"class.std::allocator"* dereferenceable(1) %call2) call void @_ZNSt12_Vector_baseIP5INodeSaIS1_EEC2EmRKS2_(%"struct.std::_Vector_base"* %0, i64 %call, %"class.std::allocator"* dereferenceable(1) %call3) %4 = load %"class.std::vector"*, %"class.std::vector"** %__x.addr, align 8 %call4 = invoke %class.INode** @_ZNKSt6vectorIP5INodeSaIS1_EE5beginEv(%"class.std::vector"* %4) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp, i32 0, i32 0 store %class.INode** %call4, %class.INode*** %coerce.dive, align 8 %5 = load %"class.std::vector"*, %"class.std::vector"** %__x.addr, align 8 %call7 = invoke %class.INode** @_ZNKSt6vectorIP5INodeSaIS1_EE3endEv(%"class.std::vector"* %5) to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %invoke.cont %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp5, i32 0, i32 0 store %class.INode** %call7, %class.INode*** %coerce.dive8, align 8 %6 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %6, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 %7 = load %class.INode**, %class.INode*** %_M_start, align 8 %8 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call10 = invoke dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseIP5INodeSaIS1_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %8) to label %invoke.cont9 unwind label %lpad invoke.cont9: ; preds = %invoke.cont6 %coerce.dive11 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp, i32 0, i32 0 %9 = load %class.INode**, %class.INode*** %coerce.dive11, align 8 %coerce.dive12 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp5, i32 0, i32 0 %10 = load %class.INode**, %class.INode*** %coerce.dive12, align 8 %call14 = invoke %class.INode** @_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEPS3_S3_ET0_T_SC_SB_RSaIT1_E(%class.INode** %9, %class.INode** %10, %class.INode** %7, %"class.std::allocator"* dereferenceable(1) %call10) to label %invoke.cont13 unwind label %lpad invoke.cont13: ; preds = %invoke.cont9 %11 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl15 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %11, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl15, i32 0, i32 1 store %class.INode** %call14, %class.INode*** %_M_finish, align 8 ret void lpad: ; preds = %invoke.cont9, %invoke.cont6, %invoke.cont, %entry %12 = landingpad { i8*, i32 } cleanup %13 = extractvalue { i8*, i32 } %12, 0 store i8* %13, i8** %exn.slot, align 8 %14 = extractvalue { i8*, i32 } %12, 1 store i32 %14, i32* %ehselector.slot, align 4 %15 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* invoke void @_ZNSt12_Vector_baseIP5INodeSaIS1_EED2Ev(%"struct.std::_Vector_base"* %15) to label %invoke.cont16 unwind label %terminate.lpad invoke.cont16: ; preds = %lpad br label %eh.resume eh.resume: ; preds = %invoke.cont16 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val17 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val17 terminate.lpad: ; preds = %lpad %16 = landingpad { i8*, i32 } catch i8* null %17 = extractvalue { i8*, i32 } %16, 0 call void @__clang_call_terminate(i8* %17) #16 unreachable } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt9make_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEE7NodeCmpEvT_SA_T0_(%class.INode** %__first.coerce, %class.INode** %__last.coerce) #0 comdat { entry: %__first = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__last = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__comp = alloca %struct.NodeCmp, align 1 %__cmp = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_iter", align 1 %agg.tmp = alloca %struct.NodeCmp, align 1 %agg.tmp2 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp3 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__first, i32 0, i32 0 store %class.INode** %__first.coerce, %class.INode*** %coerce.dive, align 8 %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__last, i32 0, i32 0 store %class.INode** %__last.coerce, %class.INode*** %coerce.dive1, align 8 call void @_ZN9__gnu_cxx5__ops15_Iter_comp_iterI7NodeCmpEC2ES2_(%"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %__cmp) %0 = bitcast %"class.__gnu_cxx::__normal_iterator"* %agg.tmp2 to i8* %1 = bitcast %"class.__gnu_cxx::__normal_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 8, i1 false) %2 = bitcast %"class.__gnu_cxx::__normal_iterator"* %agg.tmp3 to i8* %3 = bitcast %"class.__gnu_cxx::__normal_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %2, i8* align 8 %3, i64 8, i1 false) %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp2, i32 0, i32 0 %4 = load %class.INode**, %class.INode*** %coerce.dive4, align 8 %coerce.dive5 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp3, i32 0, i32 0 %5 = load %class.INode**, %class.INode*** %coerce.dive5, align 8 call void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterI7NodeCmpEEEvT_SD_RT0_(%class.INode** %4, %class.INode** %5, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* dereferenceable(1) %__cmp) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZNSt6vectorIP5INodeSaIS1_EE5beginEv(%"class.std::vector"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 call void @_ZN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEC2ERKS3_(%"class.__gnu_cxx::__normal_iterator"* %retval, %class.INode*** dereferenceable(8) %_M_start) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %retval, i32 0, i32 0 %1 = load %class.INode**, %class.INode*** %coerce.dive, align 8 ret %class.INode** %1 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZNSt6vectorIP5INodeSaIS1_EE3endEv(%"class.std::vector"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 1 call void @_ZN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEC2ERKS3_(%"class.__gnu_cxx::__normal_iterator"* %retval, %class.INode*** dereferenceable(8) %_M_finish) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %retval, i32 0, i32 0 %1 = load %class.INode**, %class.INode*** %coerce.dive, align 8 ret %class.INode** %1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorIP5INodeSaIS1_EE4sizeEv(%"class.std::vector"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 1 %1 = load %class.INode**, %class.INode*** %_M_finish, align 8 %2 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %2, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 0 %3 = load %class.INode**, %class.INode*** %_M_start, align 8 %sub.ptr.lhs.cast = ptrtoint %class.INode** %1 to i64 %sub.ptr.rhs.cast = ptrtoint %class.INode** %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 ret i64 %sub.ptr.div } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator"* @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE17_S_select_on_copyERKS3_(%"class.std::allocator"* dereferenceable(1) %__a) #6 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator"*, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 %0 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 ret %"class.std::allocator"* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator"* @_ZNKSt12_Vector_baseIP5INodeSaIS1_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator"* ret %"class.std::allocator"* %0 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP5INodeSaIS1_EEC2EmRKS2_(%"struct.std::_Vector_base"* %this, i64 %__n, %"class.std::allocator"* dereferenceable(1) %__a) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 %__n.addr = alloca i64, align 8 %__a.addr = alloca %"class.std::allocator"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %0 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 call void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE12_Vector_implC2ERKS2_(%"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, %"class.std::allocator"* dereferenceable(1) %0) %1 = load i64, i64* %__n.addr, align 8 invoke void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE17_M_create_storageEm(%"struct.std::_Vector_base"* %this1, i64 %1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry ret void lpad: ; preds = %entry %2 = landingpad { i8*, i32 } cleanup %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 call void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE12_Vector_implD2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %_M_impl) #3 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEPS3_S3_ET0_T_SC_SB_RSaIT1_E(%class.INode** %__first.coerce, %class.INode** %__last.coerce, %class.INode** %__result, %"class.std::allocator"* dereferenceable(1) %0) #0 comdat { entry: %__first = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %__last = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %__result.addr = alloca %class.INode**, align 8 %.addr = alloca %"class.std::allocator"*, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %agg.tmp2 = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %__first, i32 0, i32 0 store %class.INode** %__first.coerce, %class.INode*** %coerce.dive, align 8 %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %__last, i32 0, i32 0 store %class.INode** %__last.coerce, %class.INode*** %coerce.dive1, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 store %"class.std::allocator"* %0, %"class.std::allocator"** %.addr, align 8 %1 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp to i8* %2 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %1, i8* align 8 %2, i64 8, i1 false) %3 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp2 to i8* %4 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %4, i64 8, i1 false) %5 = load %class.INode**, %class.INode*** %__result.addr, align 8 %coerce.dive3 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp, i32 0, i32 0 %6 = load %class.INode**, %class.INode*** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp2, i32 0, i32 0 %7 = load %class.INode**, %class.INode*** %coerce.dive4, align 8 %call = call %class.INode** @_ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(%class.INode** %6, %class.INode** %7, %class.INode** %5) ret %class.INode** %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZNKSt6vectorIP5INodeSaIS1_EE5beginEv(%"class.std::vector"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 call void @_ZN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS2_SaIS2_EEEC2ERKS4_(%"class.__gnu_cxx::__normal_iterator.10"* %retval, %class.INode*** dereferenceable(8) %_M_start) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %retval, i32 0, i32 0 %1 = load %class.INode**, %class.INode*** %coerce.dive, align 8 ret %class.INode** %1 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZNKSt6vectorIP5INodeSaIS1_EE3endEv(%"class.std::vector"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 1 call void @_ZN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS2_SaIS2_EEEC2ERKS4_(%"class.__gnu_cxx::__normal_iterator.10"* %retval, %class.INode*** dereferenceable(8) %_M_finish) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %retval, i32 0, i32 0 %1 = load %class.INode**, %class.INode*** %coerce.dive, align 8 ret %class.INode** %1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE12_Vector_implC2ERKS2_(%"struct.std::_Vector_base >::_Vector_impl"* %this, %"class.std::allocator"* dereferenceable(1) %__a) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base >::_Vector_impl"*, align 8 %__a.addr = alloca %"class.std::allocator"*, align 8 store %"struct.std::_Vector_base >::_Vector_impl"* %this, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 %this1 = load %"struct.std::_Vector_base >::_Vector_impl"*, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %this1 to %"class.std::allocator"* %1 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 call void @_ZNSaIP5INodeEC2ERKS1_(%"class.std::allocator"* %0, %"class.std::allocator"* dereferenceable(1) %1) #3 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %this1, i32 0, i32 0 store %class.INode** null, %class.INode*** %_M_start, align 8 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %this1, i32 0, i32 1 store %class.INode** null, %class.INode*** %_M_finish, align 8 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %this1, i32 0, i32 2 store %class.INode** null, %class.INode*** %_M_end_of_storage, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE17_M_create_storageEm(%"struct.std::_Vector_base"* %this, i64 %__n) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 %__n.addr = alloca i64, align 8 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %0 = load i64, i64* %__n.addr, align 8 %call = call %class.INode** @_ZNSt12_Vector_baseIP5INodeSaIS1_EE11_M_allocateEm(%"struct.std::_Vector_base"* %this1, i64 %0) %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 store %class.INode** %call, %class.INode*** %_M_start, align 8 %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %_M_start3 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 0 %1 = load %class.INode**, %class.INode*** %_M_start3, align 8 %_M_impl4 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl4, i32 0, i32 1 store %class.INode** %1, %class.INode*** %_M_finish, align 8 %_M_impl5 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %_M_start6 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl5, i32 0, i32 0 %2 = load %class.INode**, %class.INode*** %_M_start6, align 8 %3 = load i64, i64* %__n.addr, align 8 %add.ptr = getelementptr inbounds %class.INode*, %class.INode** %2, i64 %3 %_M_impl7 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl7, i32 0, i32 2 store %class.INode** %add.ptr, %class.INode*** %_M_end_of_storage, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaIP5INodeEC2ERKS1_(%"class.std::allocator"* %this, %"class.std::allocator"* dereferenceable(1) %__a) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator"*, align 8 %__a.addr = alloca %"class.std::allocator"*, align 8 store %"class.std::allocator"* %this, %"class.std::allocator"** %this.addr, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 %this1 = load %"class.std::allocator"*, %"class.std::allocator"** %this.addr, align 8 %0 = bitcast %"class.std::allocator"* %this1 to %"class.__gnu_cxx::new_allocator"* %1 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %2 = bitcast %"class.std::allocator"* %1 to %"class.__gnu_cxx::new_allocator"* call void @_ZN9__gnu_cxx13new_allocatorIP5INodeEC2ERKS3_(%"class.__gnu_cxx::new_allocator"* %0, %"class.__gnu_cxx::new_allocator"* dereferenceable(1) %2) #3 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP5INodeEC2ERKS3_(%"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"* dereferenceable(1) %0) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 %.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 store %"class.__gnu_cxx::new_allocator"* %0, %"class.__gnu_cxx::new_allocator"** %.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZNSt12_Vector_baseIP5INodeSaIS1_EE11_M_allocateEm(%"struct.std::_Vector_base"* %this, i64 %__n) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 %__n.addr = alloca i64, align 8 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %0 = load i64, i64* %__n.addr, align 8 %cmp = icmp ne i64 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %1 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator"* %2 = load i64, i64* %__n.addr, align 8 %call = call %class.INode** @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE8allocateERS3_m(%"class.std::allocator"* dereferenceable(1) %1, i64 %2) br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi %class.INode** [ %call, %cond.true ], [ null, %cond.false ] ret %class.INode** %cond } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE8allocateERS3_m(%"class.std::allocator"* dereferenceable(1) %__a, i64 %__n) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator"*, align 8 %__n.addr = alloca i64, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %0 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator"* %0 to %"class.__gnu_cxx::new_allocator"* %2 = load i64, i64* %__n.addr, align 8 %call = call %class.INode** @_ZN9__gnu_cxx13new_allocatorIP5INodeE8allocateEmPKv(%"class.__gnu_cxx::new_allocator"* %1, i64 %2, i8* null) ret %class.INode** %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZN9__gnu_cxx13new_allocatorIP5INodeE8allocateEmPKv(%"class.__gnu_cxx::new_allocator"* %this, i64 %__n, i8* %0) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca i8*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 store i8* %0, i8** %.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %1 = load i64, i64* %__n.addr, align 8 %call = call i64 @_ZNK9__gnu_cxx13new_allocatorIP5INodeE8max_sizeEv(%"class.__gnu_cxx::new_allocator"* %this1) #3 %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZSt17__throw_bad_allocv() #19 unreachable if.end: ; preds = %entry %2 = load i64, i64* %__n.addr, align 8 %mul = mul i64 %2, 8 %call2 = call i8* @_Znwm(i64 %mul) %3 = bitcast i8* %call2 to %class.INode** ret %class.INode** %3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZNK9__gnu_cxx13new_allocatorIP5INodeE8max_sizeEv(%"class.__gnu_cxx::new_allocator"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 ret i64 2305843009213693951 } ; Function Attrs: noreturn declare dso_local void @_ZSt17__throw_bad_allocv() #15 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(%class.INode** %__first.coerce, %class.INode** %__last.coerce, %class.INode** %__result) #0 comdat { entry: %__first = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %__last = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %__result.addr = alloca %class.INode**, align 8 %__assignable = alloca i8, align 1 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %agg.tmp2 = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %__first, i32 0, i32 0 store %class.INode** %__first.coerce, %class.INode*** %coerce.dive, align 8 %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %__last, i32 0, i32 0 store %class.INode** %__last.coerce, %class.INode*** %coerce.dive1, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 store i8 1, i8* %__assignable, align 1 %0 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp to i8* %1 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 8, i1 false) %2 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp2 to i8* %3 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %2, i8* align 8 %3, i64 8, i1 false) %4 = load %class.INode**, %class.INode*** %__result.addr, align 8 %coerce.dive3 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp, i32 0, i32 0 %5 = load %class.INode**, %class.INode*** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp2, i32 0, i32 0 %6 = load %class.INode**, %class.INode*** %coerce.dive4, align 8 %call = call %class.INode** @_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS5_SaIS5_EEEEPS5_EET0_T_SE_SD_(%class.INode** %5, %class.INode** %6, %class.INode** %4) ret %class.INode** %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS5_SaIS5_EEEEPS5_EET0_T_SE_SD_(%class.INode** %__first.coerce, %class.INode** %__last.coerce, %class.INode** %__result) #0 comdat align 2 { entry: %__first = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %__last = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %__result.addr = alloca %class.INode**, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %agg.tmp2 = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %__first, i32 0, i32 0 store %class.INode** %__first.coerce, %class.INode*** %coerce.dive, align 8 %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %__last, i32 0, i32 0 store %class.INode** %__last.coerce, %class.INode*** %coerce.dive1, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 %0 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp to i8* %1 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 8, i1 false) %2 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp2 to i8* %3 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %2, i8* align 8 %3, i64 8, i1 false) %4 = load %class.INode**, %class.INode*** %__result.addr, align 8 %coerce.dive3 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp, i32 0, i32 0 %5 = load %class.INode**, %class.INode*** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp2, i32 0, i32 0 %6 = load %class.INode**, %class.INode*** %coerce.dive4, align 8 %call = call %class.INode** @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(%class.INode** %5, %class.INode** %6, %class.INode** %4) ret %class.INode** %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(%class.INode** %__first.coerce, %class.INode** %__last.coerce, %class.INode** %__result) #0 comdat { entry: %__first = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %__last = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %__result.addr = alloca %class.INode**, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %agg.tmp2 = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %agg.tmp5 = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %agg.tmp6 = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %__first, i32 0, i32 0 store %class.INode** %__first.coerce, %class.INode*** %coerce.dive, align 8 %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %__last, i32 0, i32 0 store %class.INode** %__last.coerce, %class.INode*** %coerce.dive1, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 %0 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp2 to i8* %1 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 8, i1 false) %coerce.dive3 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp2, i32 0, i32 0 %2 = load %class.INode**, %class.INode*** %coerce.dive3, align 8 %call = call %class.INode** @_ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEET_SA_(%class.INode** %2) %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp, i32 0, i32 0 store %class.INode** %call, %class.INode*** %coerce.dive4, align 8 %3 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp6 to i8* %4 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %4, i64 8, i1 false) %coerce.dive7 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp6, i32 0, i32 0 %5 = load %class.INode**, %class.INode*** %coerce.dive7, align 8 %call8 = call %class.INode** @_ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEET_SA_(%class.INode** %5) %coerce.dive9 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp5, i32 0, i32 0 store %class.INode** %call8, %class.INode*** %coerce.dive9, align 8 %6 = load %class.INode**, %class.INode*** %__result.addr, align 8 %coerce.dive10 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp, i32 0, i32 0 %7 = load %class.INode**, %class.INode*** %coerce.dive10, align 8 %coerce.dive11 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp5, i32 0, i32 0 %8 = load %class.INode**, %class.INode*** %coerce.dive11, align 8 %call12 = call %class.INode** @_ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEPS3_ET1_T0_SC_SB_(%class.INode** %7, %class.INode** %8, %class.INode** %6) ret %class.INode** %call12 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt14__copy_move_a2ILb0EN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEPS3_ET1_T0_SC_SB_(%class.INode** %__first.coerce, %class.INode** %__last.coerce, %class.INode** %__result) #0 comdat { entry: %__first = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %__last = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %__result.addr = alloca %class.INode**, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %agg.tmp3 = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %__first, i32 0, i32 0 store %class.INode** %__first.coerce, %class.INode*** %coerce.dive, align 8 %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %__last, i32 0, i32 0 store %class.INode** %__last.coerce, %class.INode*** %coerce.dive1, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 %0 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp to i8* %1 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 8, i1 false) %coerce.dive2 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp, i32 0, i32 0 %2 = load %class.INode**, %class.INode*** %coerce.dive2, align 8 %call = call %class.INode** @_ZSt12__niter_baseIPKP5INodeSt6vectorIS1_SaIS1_EEET_N9__gnu_cxx17__normal_iteratorIS7_T0_EE(%class.INode** %2) %3 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp3 to i8* %4 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %4, i64 8, i1 false) %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %agg.tmp3, i32 0, i32 0 %5 = load %class.INode**, %class.INode*** %coerce.dive4, align 8 %call5 = call %class.INode** @_ZSt12__niter_baseIPKP5INodeSt6vectorIS1_SaIS1_EEET_N9__gnu_cxx17__normal_iteratorIS7_T0_EE(%class.INode** %5) %6 = load %class.INode**, %class.INode*** %__result.addr, align 8 %call6 = call %class.INode** @_ZSt12__niter_baseIPP5INodeET_S3_(%class.INode** %6) %call7 = call %class.INode** @_ZSt13__copy_move_aILb0EPKP5INodePS1_ET1_T0_S6_S5_(%class.INode** %call, %class.INode** %call5, %class.INode** %call6) ret %class.INode** %call7 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt12__miter_baseIN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS3_SaIS3_EEEEET_SA_(%class.INode** %__it.coerce) #6 comdat { entry: %retval = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %__it = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %__it, i32 0, i32 0 store %class.INode** %__it.coerce, %class.INode*** %coerce.dive, align 8 %0 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %retval to i8* %1 = bitcast %"class.__gnu_cxx::__normal_iterator.10"* %__it to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 8, i1 false) %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %retval, i32 0, i32 0 %2 = load %class.INode**, %class.INode*** %coerce.dive1, align 8 ret %class.INode** %2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt13__copy_move_aILb0EPKP5INodePS1_ET1_T0_S6_S5_(%class.INode** %__first, %class.INode** %__last, %class.INode** %__result) #0 comdat { entry: %__first.addr = alloca %class.INode**, align 8 %__last.addr = alloca %class.INode**, align 8 %__result.addr = alloca %class.INode**, align 8 %__simple = alloca i8, align 1 store %class.INode** %__first, %class.INode*** %__first.addr, align 8 store %class.INode** %__last, %class.INode*** %__last.addr, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 store i8 1, i8* %__simple, align 1 %0 = load %class.INode**, %class.INode*** %__first.addr, align 8 %1 = load %class.INode**, %class.INode*** %__last.addr, align 8 %2 = load %class.INode**, %class.INode*** %__result.addr, align 8 %call = call %class.INode** @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP5INodeEEPT_PKS5_S8_S6_(%class.INode** %0, %class.INode** %1, %class.INode** %2) ret %class.INode** %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt12__niter_baseIPKP5INodeSt6vectorIS1_SaIS1_EEET_N9__gnu_cxx17__normal_iteratorIS7_T0_EE(%class.INode** %__it.coerce) #0 comdat { entry: %__it = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %__it, i32 0, i32 0 store %class.INode** %__it.coerce, %class.INode*** %coerce.dive, align 8 %call = call dereferenceable(8) %class.INode*** @_ZNK9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS2_SaIS2_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator.10"* %__it) %0 = load %class.INode**, %class.INode*** %call, align 8 ret %class.INode** %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt12__niter_baseIPP5INodeET_S3_(%class.INode** %__it) #6 comdat { entry: %__it.addr = alloca %class.INode**, align 8 store %class.INode** %__it, %class.INode*** %__it.addr, align 8 %0 = load %class.INode**, %class.INode*** %__it.addr, align 8 ret %class.INode** %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %class.INode** @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP5INodeEEPT_PKS5_S8_S6_(%class.INode** %__first, %class.INode** %__last, %class.INode** %__result) #6 comdat align 2 { entry: %__first.addr = alloca %class.INode**, align 8 %__last.addr = alloca %class.INode**, align 8 %__result.addr = alloca %class.INode**, align 8 %_Num = alloca i64, align 8 store %class.INode** %__first, %class.INode*** %__first.addr, align 8 store %class.INode** %__last, %class.INode*** %__last.addr, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 %0 = load %class.INode**, %class.INode*** %__last.addr, align 8 %1 = load %class.INode**, %class.INode*** %__first.addr, align 8 %sub.ptr.lhs.cast = ptrtoint %class.INode** %0 to i64 %sub.ptr.rhs.cast = ptrtoint %class.INode** %1 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 store i64 %sub.ptr.div, i64* %_Num, align 8 %2 = load i64, i64* %_Num, align 8 %tobool = icmp ne i64 %2, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %3 = load %class.INode**, %class.INode*** %__result.addr, align 8 %4 = bitcast %class.INode** %3 to i8* %5 = load %class.INode**, %class.INode*** %__first.addr, align 8 %6 = bitcast %class.INode** %5 to i8* %7 = load i64, i64* %_Num, align 8 %mul = mul i64 8, %7 call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %4, i8* align 8 %6, i64 %mul, i1 false) br label %if.end if.end: ; preds = %if.then, %entry %8 = load %class.INode**, %class.INode*** %__result.addr, align 8 %9 = load i64, i64* %_Num, align 8 %add.ptr = getelementptr inbounds %class.INode*, %class.INode** %8, i64 %9 ret %class.INode** %add.ptr } ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i1 immarg) #4 ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %class.INode*** @_ZNK9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS2_SaIS2_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator.10"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::__normal_iterator.10"*, align 8 store %"class.__gnu_cxx::__normal_iterator.10"* %this, %"class.__gnu_cxx::__normal_iterator.10"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator.10"*, %"class.__gnu_cxx::__normal_iterator.10"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %this1, i32 0, i32 0 ret %class.INode*** %_M_current } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS2_SaIS2_EEEC2ERKS4_(%"class.__gnu_cxx::__normal_iterator.10"* %this, %class.INode*** dereferenceable(8) %__i) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::__normal_iterator.10"*, align 8 %__i.addr = alloca %class.INode***, align 8 store %"class.__gnu_cxx::__normal_iterator.10"* %this, %"class.__gnu_cxx::__normal_iterator.10"** %this.addr, align 8 store %class.INode*** %__i, %class.INode**** %__i.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator.10"*, %"class.__gnu_cxx::__normal_iterator.10"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %this1, i32 0, i32 0 %0 = load %class.INode***, %class.INode**** %__i.addr, align 8 %1 = load %class.INode**, %class.INode*** %0, align 8 store %class.INode** %1, %class.INode*** %_M_current, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx5__ops15_Iter_comp_iterI7NodeCmpEC2ES2_(%"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %this) unnamed_addr #6 comdat align 2 { entry: %__comp = alloca %struct.NodeCmp, align 1 %this.addr = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_iter"*, align 8 store %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %this, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"** %this.addr, align 8 %this1 = load %"struct.__gnu_cxx::__ops::_Iter_comp_iter"*, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"** %this.addr, align 8 %_M_comp = getelementptr inbounds %"struct.__gnu_cxx::__ops::_Iter_comp_iter", %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %this1, i32 0, i32 0 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterI7NodeCmpEEEvT_SD_RT0_(%class.INode** %__first.coerce, %class.INode** %__last.coerce, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* dereferenceable(1) %__comp) #0 comdat { entry: %__first = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__last = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__comp.addr = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_iter"*, align 8 %__len = alloca i64, align 8 %__parent = alloca i64, align 8 %__value = alloca %class.INode*, align 8 %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp6 = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_iter", align 1 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__first, i32 0, i32 0 store %class.INode** %__first.coerce, %class.INode*** %coerce.dive, align 8 %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__last, i32 0, i32 0 store %class.INode** %__last.coerce, %class.INode*** %coerce.dive1, align 8 store %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %__comp, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"** %__comp.addr, align 8 %call = call i64 @_ZN9__gnu_cxxmiIPP5INodeSt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(%"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__last, %"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__first) %cmp = icmp slt i64 %call, 2 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry br label %return if.end: ; preds = %entry %call2 = call i64 @_ZN9__gnu_cxxmiIPP5INodeSt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(%"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__last, %"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__first) store i64 %call2, i64* %__len, align 8 %0 = load i64, i64* %__len, align 8 %sub = sub nsw i64 %0, 2 %div = sdiv i64 %sub, 2 store i64 %div, i64* %__parent, align 8 br label %while.body while.body: ; preds = %if.end, %if.end10 %1 = load i64, i64* %__parent, align 8 %call3 = call %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl(%"class.__gnu_cxx::__normal_iterator"* %__first, i64 %1) %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %ref.tmp, i32 0, i32 0 store %class.INode** %call3, %class.INode*** %coerce.dive4, align 8 %call5 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %ref.tmp) %2 = load %class.INode*, %class.INode** %call5, align 8 store %class.INode* %2, %class.INode** %__value, align 8 %3 = bitcast %"class.__gnu_cxx::__normal_iterator"* %agg.tmp to i8* %4 = bitcast %"class.__gnu_cxx::__normal_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %4, i64 8, i1 false) %5 = load i64, i64* %__parent, align 8 %6 = load i64, i64* %__len, align 8 %7 = load %class.INode*, %class.INode** %__value, align 8 %8 = load %"struct.__gnu_cxx::__ops::_Iter_comp_iter"*, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"** %__comp.addr, align 8 %9 = bitcast %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %agg.tmp6 to i8* %10 = bitcast %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %9, i8* align 1 %10, i64 1, i1 false) %coerce.dive7 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 %11 = load %class.INode**, %class.INode*** %coerce.dive7, align 8 call void @_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterI7NodeCmpEEEvT_T0_SE_T1_T2_(%class.INode** %11, i64 %5, i64 %6, %class.INode* %7) %12 = load i64, i64* %__parent, align 8 %cmp8 = icmp eq i64 %12, 0 br i1 %cmp8, label %if.then9, label %if.end10 if.then9: ; preds = %while.body br label %return if.end10: ; preds = %while.body %13 = load i64, i64* %__parent, align 8 %dec = add nsw i64 %13, -1 store i64 %dec, i64* %__parent, align 8 br label %while.body return: ; preds = %if.then9, %if.then ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZN9__gnu_cxxmiIPP5INodeSt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(%"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__lhs, %"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__rhs) #0 comdat { entry: %__lhs.addr = alloca %"class.__gnu_cxx::__normal_iterator"*, align 8 %__rhs.addr = alloca %"class.__gnu_cxx::__normal_iterator"*, align 8 store %"class.__gnu_cxx::__normal_iterator"* %__lhs, %"class.__gnu_cxx::__normal_iterator"** %__lhs.addr, align 8 store %"class.__gnu_cxx::__normal_iterator"* %__rhs, %"class.__gnu_cxx::__normal_iterator"** %__rhs.addr, align 8 %0 = load %"class.__gnu_cxx::__normal_iterator"*, %"class.__gnu_cxx::__normal_iterator"** %__lhs.addr, align 8 %call = call dereferenceable(8) %class.INode*** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* %0) %1 = load %class.INode**, %class.INode*** %call, align 8 %2 = load %"class.__gnu_cxx::__normal_iterator"*, %"class.__gnu_cxx::__normal_iterator"** %__rhs.addr, align 8 %call1 = call dereferenceable(8) %class.INode*** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* %2) %3 = load %class.INode**, %class.INode*** %call1, align 8 %sub.ptr.lhs.cast = ptrtoint %class.INode** %1 to i64 %sub.ptr.rhs.cast = ptrtoint %class.INode** %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 ret i64 %sub.ptr.div } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl(%"class.__gnu_cxx::__normal_iterator"* %this, i64 %__n) #0 comdat align 2 { entry: %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %this.addr = alloca %"class.__gnu_cxx::__normal_iterator"*, align 8 %__n.addr = alloca i64, align 8 %ref.tmp = alloca %class.INode**, align 8 store %"class.__gnu_cxx::__normal_iterator"* %this, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator"*, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %this1, i32 0, i32 0 %0 = load %class.INode**, %class.INode*** %_M_current, align 8 %1 = load i64, i64* %__n.addr, align 8 %add.ptr = getelementptr inbounds %class.INode*, %class.INode** %0, i64 %1 store %class.INode** %add.ptr, %class.INode*** %ref.tmp, align 8 call void @_ZN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEC2ERKS3_(%"class.__gnu_cxx::__normal_iterator"* %retval, %class.INode*** dereferenceable(8) %ref.tmp) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %retval, i32 0, i32 0 %2 = load %class.INode**, %class.INode*** %coerce.dive, align 8 ret %class.INode** %2 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::__normal_iterator"*, align 8 store %"class.__gnu_cxx::__normal_iterator"* %this, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator"*, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %this1, i32 0, i32 0 %0 = load %class.INode**, %class.INode*** %_M_current, align 8 ret %class.INode** %0 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterI7NodeCmpEEEvT_T0_SE_T1_T2_(%class.INode** %__first.coerce, i64 %__holeIndex, i64 %__len, %class.INode* %__value) #0 comdat { entry: %__first = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__comp = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_iter", align 1 %__holeIndex.addr = alloca i64, align 8 %__len.addr = alloca i64, align 8 %__value.addr = alloca %class.INode*, align 8 %__topIndex = alloca i64, align 8 %__secondChild = alloca i64, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp2 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %ref.tmp12 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %ref.tmp23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %ref.tmp28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__cmp = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_val", align 1 %agg.tmp34 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__first, i32 0, i32 0 store %class.INode** %__first.coerce, %class.INode*** %coerce.dive, align 8 store i64 %__holeIndex, i64* %__holeIndex.addr, align 8 store i64 %__len, i64* %__len.addr, align 8 store %class.INode* %__value, %class.INode** %__value.addr, align 8 %0 = load i64, i64* %__holeIndex.addr, align 8 store i64 %0, i64* %__topIndex, align 8 %1 = load i64, i64* %__holeIndex.addr, align 8 store i64 %1, i64* %__secondChild, align 8 br label %while.cond while.cond: ; preds = %if.end, %entry %2 = load i64, i64* %__secondChild, align 8 %3 = load i64, i64* %__len.addr, align 8 %sub = sub nsw i64 %3, 1 %div = sdiv i64 %sub, 2 %cmp = icmp slt i64 %2, %div br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond %4 = load i64, i64* %__secondChild, align 8 %add = add nsw i64 %4, 1 %mul = mul nsw i64 2, %add store i64 %mul, i64* %__secondChild, align 8 %5 = load i64, i64* %__secondChild, align 8 %call = call %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl(%"class.__gnu_cxx::__normal_iterator"* %__first, i64 %5) %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 store %class.INode** %call, %class.INode*** %coerce.dive1, align 8 %6 = load i64, i64* %__secondChild, align 8 %sub3 = sub nsw i64 %6, 1 %call4 = call %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl(%"class.__gnu_cxx::__normal_iterator"* %__first, i64 %sub3) %coerce.dive5 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp2, i32 0, i32 0 store %class.INode** %call4, %class.INode*** %coerce.dive5, align 8 %coerce.dive6 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 %7 = load %class.INode**, %class.INode*** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp2, i32 0, i32 0 %8 = load %class.INode**, %class.INode*** %coerce.dive7, align 8 %call8 = call zeroext i1 @_ZN9__gnu_cxx5__ops15_Iter_comp_iterI7NodeCmpEclINS_17__normal_iteratorIPP5INodeSt6vectorIS7_SaIS7_EEEESC_EEbT_T0_(%"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %__comp, %class.INode** %7, %class.INode** %8) br i1 %call8, label %if.then, label %if.end if.then: ; preds = %while.body %9 = load i64, i64* %__secondChild, align 8 %dec = add nsw i64 %9, -1 store i64 %dec, i64* %__secondChild, align 8 br label %if.end if.end: ; preds = %if.then, %while.body %10 = load i64, i64* %__secondChild, align 8 %call9 = call %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl(%"class.__gnu_cxx::__normal_iterator"* %__first, i64 %10) %coerce.dive10 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %ref.tmp, i32 0, i32 0 store %class.INode** %call9, %class.INode*** %coerce.dive10, align 8 %call11 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %ref.tmp) %11 = load %class.INode*, %class.INode** %call11, align 8 %12 = load i64, i64* %__holeIndex.addr, align 8 %call13 = call %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl(%"class.__gnu_cxx::__normal_iterator"* %__first, i64 %12) %coerce.dive14 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %ref.tmp12, i32 0, i32 0 store %class.INode** %call13, %class.INode*** %coerce.dive14, align 8 %call15 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %ref.tmp12) store %class.INode* %11, %class.INode** %call15, align 8 %13 = load i64, i64* %__secondChild, align 8 store i64 %13, i64* %__holeIndex.addr, align 8 br label %while.cond while.end: ; preds = %while.cond %14 = load i64, i64* %__len.addr, align 8 %and = and i64 %14, 1 %cmp16 = icmp eq i64 %and, 0 br i1 %cmp16, label %land.lhs.true, label %if.end33 land.lhs.true: ; preds = %while.end %15 = load i64, i64* %__secondChild, align 8 %16 = load i64, i64* %__len.addr, align 8 %sub17 = sub nsw i64 %16, 2 %div18 = sdiv i64 %sub17, 2 %cmp19 = icmp eq i64 %15, %div18 br i1 %cmp19, label %if.then20, label %if.end33 if.then20: ; preds = %land.lhs.true %17 = load i64, i64* %__secondChild, align 8 %add21 = add nsw i64 %17, 1 %mul22 = mul nsw i64 2, %add21 store i64 %mul22, i64* %__secondChild, align 8 %18 = load i64, i64* %__secondChild, align 8 %sub24 = sub nsw i64 %18, 1 %call25 = call %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl(%"class.__gnu_cxx::__normal_iterator"* %__first, i64 %sub24) %coerce.dive26 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %ref.tmp23, i32 0, i32 0 store %class.INode** %call25, %class.INode*** %coerce.dive26, align 8 %call27 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %ref.tmp23) %19 = load %class.INode*, %class.INode** %call27, align 8 %20 = load i64, i64* %__holeIndex.addr, align 8 %call29 = call %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl(%"class.__gnu_cxx::__normal_iterator"* %__first, i64 %20) %coerce.dive30 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %ref.tmp28, i32 0, i32 0 store %class.INode** %call29, %class.INode*** %coerce.dive30, align 8 %call31 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %ref.tmp28) store %class.INode* %19, %class.INode** %call31, align 8 %21 = load i64, i64* %__secondChild, align 8 %sub32 = sub nsw i64 %21, 1 store i64 %sub32, i64* %__holeIndex.addr, align 8 br label %if.end33 if.end33: ; preds = %if.then20, %land.lhs.true, %while.end call void @_ZN9__gnu_cxx5__ops14_Iter_comp_valI7NodeCmpEC2ERKNS0_15_Iter_comp_iterIS2_EE(%"struct.__gnu_cxx::__ops::_Iter_comp_val"* %__cmp, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* dereferenceable(1) %__comp) %22 = bitcast %"class.__gnu_cxx::__normal_iterator"* %agg.tmp34 to i8* %23 = bitcast %"class.__gnu_cxx::__normal_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %22, i8* align 8 %23, i64 8, i1 false) %24 = load i64, i64* %__holeIndex.addr, align 8 %25 = load i64, i64* %__topIndex, align 8 %26 = load %class.INode*, %class.INode** %__value.addr, align 8 %coerce.dive35 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp34, i32 0, i32 0 %27 = load %class.INode**, %class.INode*** %coerce.dive35, align 8 call void @_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops14_Iter_comp_valI7NodeCmpEEEvT_T0_SE_T1_RT2_(%class.INode** %27, i64 %24, i64 %25, %class.INode* %26, %"struct.__gnu_cxx::__ops::_Iter_comp_val"* dereferenceable(1) %__cmp) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %class.INode*** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::__normal_iterator"*, align 8 store %"class.__gnu_cxx::__normal_iterator"* %this, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator"*, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %this1, i32 0, i32 0 ret %class.INode*** %_M_current } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEC2ERKS3_(%"class.__gnu_cxx::__normal_iterator"* %this, %class.INode*** dereferenceable(8) %__i) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::__normal_iterator"*, align 8 %__i.addr = alloca %class.INode***, align 8 store %"class.__gnu_cxx::__normal_iterator"* %this, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 store %class.INode*** %__i, %class.INode**** %__i.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator"*, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %this1, i32 0, i32 0 %0 = load %class.INode***, %class.INode**** %__i.addr, align 8 %1 = load %class.INode**, %class.INode*** %0, align 8 store %class.INode** %1, %class.INode*** %_M_current, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local zeroext i1 @_ZN9__gnu_cxx5__ops15_Iter_comp_iterI7NodeCmpEclINS_17__normal_iteratorIPP5INodeSt6vectorIS7_SaIS7_EEEESC_EEbT_T0_(%"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %this, %class.INode** %__it1.coerce, %class.INode** %__it2.coerce) #0 comdat align 2 { entry: %__it1 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__it2 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %this.addr = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_iter"*, align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__it1, i32 0, i32 0 store %class.INode** %__it1.coerce, %class.INode*** %coerce.dive, align 8 %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__it2, i32 0, i32 0 store %class.INode** %__it2.coerce, %class.INode*** %coerce.dive1, align 8 store %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %this, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"** %this.addr, align 8 %this2 = load %"struct.__gnu_cxx::__ops::_Iter_comp_iter"*, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"** %this.addr, align 8 %_M_comp = getelementptr inbounds %"struct.__gnu_cxx::__ops::_Iter_comp_iter", %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %this2, i32 0, i32 0 %call = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %__it1) %0 = load %class.INode*, %class.INode** %call, align 8 %call3 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %__it2) %1 = load %class.INode*, %class.INode** %call3, align 8 %call4 = call zeroext i1 @_ZNK7NodeCmpclEPK5INodeS2_(%struct.NodeCmp* %_M_comp, %class.INode* %0, %class.INode* %1) ret i1 %call4 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx5__ops14_Iter_comp_valI7NodeCmpEC2ERKNS0_15_Iter_comp_iterIS2_EE(%"struct.__gnu_cxx::__ops::_Iter_comp_val"* %this, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* dereferenceable(1) %__comp) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_val"*, align 8 %__comp.addr = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_iter"*, align 8 store %"struct.__gnu_cxx::__ops::_Iter_comp_val"* %this, %"struct.__gnu_cxx::__ops::_Iter_comp_val"** %this.addr, align 8 store %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %__comp, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"** %__comp.addr, align 8 %this1 = load %"struct.__gnu_cxx::__ops::_Iter_comp_val"*, %"struct.__gnu_cxx::__ops::_Iter_comp_val"** %this.addr, align 8 %_M_comp = getelementptr inbounds %"struct.__gnu_cxx::__ops::_Iter_comp_val", %"struct.__gnu_cxx::__ops::_Iter_comp_val"* %this1, i32 0, i32 0 %0 = load %"struct.__gnu_cxx::__ops::_Iter_comp_iter"*, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"** %__comp.addr, align 8 %_M_comp2 = getelementptr inbounds %"struct.__gnu_cxx::__ops::_Iter_comp_iter", %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %0, i32 0, i32 0 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops14_Iter_comp_valI7NodeCmpEEEvT_T0_SE_T1_RT2_(%class.INode** %__first.coerce, i64 %__holeIndex, i64 %__topIndex, %class.INode* %__value, %"struct.__gnu_cxx::__ops::_Iter_comp_val"* dereferenceable(1) %__comp) #0 comdat { entry: %__first = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__holeIndex.addr = alloca i64, align 8 %__topIndex.addr = alloca i64, align 8 %__value.addr = alloca %class.INode*, align 8 %__comp.addr = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_val"*, align 8 %__parent = alloca i64, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %ref.tmp7 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %ref.tmp13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__first, i32 0, i32 0 store %class.INode** %__first.coerce, %class.INode*** %coerce.dive, align 8 store i64 %__holeIndex, i64* %__holeIndex.addr, align 8 store i64 %__topIndex, i64* %__topIndex.addr, align 8 store %class.INode* %__value, %class.INode** %__value.addr, align 8 store %"struct.__gnu_cxx::__ops::_Iter_comp_val"* %__comp, %"struct.__gnu_cxx::__ops::_Iter_comp_val"** %__comp.addr, align 8 %0 = load i64, i64* %__holeIndex.addr, align 8 %sub = sub nsw i64 %0, 1 %div = sdiv i64 %sub, 2 store i64 %div, i64* %__parent, align 8 br label %while.cond while.cond: ; preds = %while.body, %entry %1 = load i64, i64* %__holeIndex.addr, align 8 %2 = load i64, i64* %__topIndex.addr, align 8 %cmp = icmp sgt i64 %1, %2 br i1 %cmp, label %land.rhs, label %land.end land.rhs: ; preds = %while.cond %3 = load %"struct.__gnu_cxx::__ops::_Iter_comp_val"*, %"struct.__gnu_cxx::__ops::_Iter_comp_val"** %__comp.addr, align 8 %4 = load i64, i64* %__parent, align 8 %call = call %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl(%"class.__gnu_cxx::__normal_iterator"* %__first, i64 %4) %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 store %class.INode** %call, %class.INode*** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 %5 = load %class.INode**, %class.INode*** %coerce.dive2, align 8 %call3 = call zeroext i1 @_ZN9__gnu_cxx5__ops14_Iter_comp_valI7NodeCmpEclINS_17__normal_iteratorIPP5INodeSt6vectorIS7_SaIS7_EEEES7_EEbT_RT0_(%"struct.__gnu_cxx::__ops::_Iter_comp_val"* %3, %class.INode** %5, %class.INode** dereferenceable(8) %__value.addr) br label %land.end land.end: ; preds = %land.rhs, %while.cond %6 = phi i1 [ false, %while.cond ], [ %call3, %land.rhs ] br i1 %6, label %while.body, label %while.end while.body: ; preds = %land.end %7 = load i64, i64* %__parent, align 8 %call4 = call %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl(%"class.__gnu_cxx::__normal_iterator"* %__first, i64 %7) %coerce.dive5 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %ref.tmp, i32 0, i32 0 store %class.INode** %call4, %class.INode*** %coerce.dive5, align 8 %call6 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %ref.tmp) %8 = load %class.INode*, %class.INode** %call6, align 8 %9 = load i64, i64* %__holeIndex.addr, align 8 %call8 = call %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl(%"class.__gnu_cxx::__normal_iterator"* %__first, i64 %9) %coerce.dive9 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %ref.tmp7, i32 0, i32 0 store %class.INode** %call8, %class.INode*** %coerce.dive9, align 8 %call10 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %ref.tmp7) store %class.INode* %8, %class.INode** %call10, align 8 %10 = load i64, i64* %__parent, align 8 store i64 %10, i64* %__holeIndex.addr, align 8 %11 = load i64, i64* %__holeIndex.addr, align 8 %sub11 = sub nsw i64 %11, 1 %div12 = sdiv i64 %sub11, 2 store i64 %div12, i64* %__parent, align 8 br label %while.cond while.end: ; preds = %land.end %12 = load %class.INode*, %class.INode** %__value.addr, align 8 %13 = load i64, i64* %__holeIndex.addr, align 8 %call14 = call %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEplEl(%"class.__gnu_cxx::__normal_iterator"* %__first, i64 %13) %coerce.dive15 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %ref.tmp13, i32 0, i32 0 store %class.INode** %call14, %class.INode*** %coerce.dive15, align 8 %call16 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %ref.tmp13) store %class.INode* %12, %class.INode** %call16, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local zeroext i1 @_ZNK7NodeCmpclEPK5INodeS2_(%struct.NodeCmp* %this, %class.INode* %lhs, %class.INode* %rhs) #6 comdat align 2 { entry: %this.addr = alloca %struct.NodeCmp*, align 8 %lhs.addr = alloca %class.INode*, align 8 %rhs.addr = alloca %class.INode*, align 8 store %struct.NodeCmp* %this, %struct.NodeCmp** %this.addr, align 8 store %class.INode* %lhs, %class.INode** %lhs.addr, align 8 store %class.INode* %rhs, %class.INode** %rhs.addr, align 8 %this1 = load %struct.NodeCmp*, %struct.NodeCmp** %this.addr, align 8 %0 = load %class.INode*, %class.INode** %lhs.addr, align 8 %f = getelementptr inbounds %class.INode, %class.INode* %0, i32 0, i32 1 %1 = load i32, i32* %f, align 8 %2 = load %class.INode*, %class.INode** %rhs.addr, align 8 %f2 = getelementptr inbounds %class.INode, %class.INode* %2, i32 0, i32 1 %3 = load i32, i32* %f2, align 8 %cmp = icmp sgt i32 %1, %3 ret i1 %cmp } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local zeroext i1 @_ZN9__gnu_cxx5__ops14_Iter_comp_valI7NodeCmpEclINS_17__normal_iteratorIPP5INodeSt6vectorIS7_SaIS7_EEEES7_EEbT_RT0_(%"struct.__gnu_cxx::__ops::_Iter_comp_val"* %this, %class.INode** %__it.coerce, %class.INode** dereferenceable(8) %__val) #6 comdat align 2 { entry: %__it = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %this.addr = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_val"*, align 8 %__val.addr = alloca %class.INode**, align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__it, i32 0, i32 0 store %class.INode** %__it.coerce, %class.INode*** %coerce.dive, align 8 store %"struct.__gnu_cxx::__ops::_Iter_comp_val"* %this, %"struct.__gnu_cxx::__ops::_Iter_comp_val"** %this.addr, align 8 store %class.INode** %__val, %class.INode*** %__val.addr, align 8 %this1 = load %"struct.__gnu_cxx::__ops::_Iter_comp_val"*, %"struct.__gnu_cxx::__ops::_Iter_comp_val"** %this.addr, align 8 %_M_comp = getelementptr inbounds %"struct.__gnu_cxx::__ops::_Iter_comp_val", %"struct.__gnu_cxx::__ops::_Iter_comp_val"* %this1, i32 0, i32 0 %call = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %__it) %0 = load %class.INode*, %class.INode** %call, align 8 %1 = load %class.INode**, %class.INode*** %__val.addr, align 8 %2 = load %class.INode*, %class.INode** %1, align 8 %call2 = call zeroext i1 @_ZNK7NodeCmpclEPK5INodeS2_(%struct.NodeCmp* %_M_comp, %class.INode* %0, %class.INode* %2) ret i1 %call2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorIP5INodeSaIS1_EE9push_backERKS1_(%"class.std::vector"* %this, %class.INode** dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 %__x.addr = alloca %class.INode**, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 store %class.INode** %__x, %class.INode*** %__x.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 1 %1 = load %class.INode**, %class.INode*** %_M_finish, align 8 %2 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %2, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 2 %3 = load %class.INode**, %class.INode*** %_M_end_of_storage, align 8 %cmp = icmp ne %class.INode** %1, %3 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %4 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %4, i32 0, i32 0 %5 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl3 to %"class.std::allocator"* %6 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl4 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %6, i32 0, i32 0 %_M_finish5 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl4, i32 0, i32 1 %7 = load %class.INode**, %class.INode*** %_M_finish5, align 8 %8 = load %class.INode**, %class.INode*** %__x.addr, align 8 call void @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE9constructIS2_EEvRS3_PS2_RKT_(%"class.std::allocator"* dereferenceable(1) %5, %class.INode** %7, %class.INode** dereferenceable(8) %8) %9 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %9, i32 0, i32 0 %_M_finish7 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl6, i32 0, i32 1 %10 = load %class.INode**, %class.INode*** %_M_finish7, align 8 %incdec.ptr = getelementptr inbounds %class.INode*, %class.INode** %10, i32 1 store %class.INode** %incdec.ptr, %class.INode*** %_M_finish7, align 8 br label %if.end if.else: ; preds = %entry %call = call %class.INode** @_ZNSt6vectorIP5INodeSaIS1_EE3endEv(%"class.std::vector"* %this1) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 store %class.INode** %call, %class.INode*** %coerce.dive, align 8 %11 = load %class.INode**, %class.INode*** %__x.addr, align 8 %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 %12 = load %class.INode**, %class.INode*** %coerce.dive8, align 8 call void @_ZNSt6vectorIP5INodeSaIS1_EE17_M_realloc_insertEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_(%"class.std::vector"* %this1, %class.INode** %12, %class.INode** dereferenceable(8) %11) br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEE7NodeCmpEvT_SA_T0_(%class.INode** %__first.coerce, %class.INode** %__last.coerce) #0 comdat { entry: %__first = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__last = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__comp = alloca %struct.NodeCmp, align 1 %__cmp = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_val", align 1 %agg.tmp = alloca %struct.NodeCmp, align 1 %__value = alloca %class.INode*, align 8 %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp4 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__first, i32 0, i32 0 store %class.INode** %__first.coerce, %class.INode*** %coerce.dive, align 8 %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__last, i32 0, i32 0 store %class.INode** %__last.coerce, %class.INode*** %coerce.dive1, align 8 call void @_ZN9__gnu_cxx5__ops14_Iter_comp_valI7NodeCmpEC2ES2_(%"struct.__gnu_cxx::__ops::_Iter_comp_val"* %__cmp) %call = call %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEmiEl(%"class.__gnu_cxx::__normal_iterator"* %__last, i64 1) %coerce.dive2 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %ref.tmp, i32 0, i32 0 store %class.INode** %call, %class.INode*** %coerce.dive2, align 8 %call3 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %ref.tmp) %0 = load %class.INode*, %class.INode** %call3, align 8 store %class.INode* %0, %class.INode** %__value, align 8 %1 = bitcast %"class.__gnu_cxx::__normal_iterator"* %agg.tmp4 to i8* %2 = bitcast %"class.__gnu_cxx::__normal_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %1, i8* align 8 %2, i64 8, i1 false) %call5 = call i64 @_ZN9__gnu_cxxmiIPP5INodeSt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(%"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__last, %"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__first) %sub = sub nsw i64 %call5, 1 %3 = load %class.INode*, %class.INode** %__value, align 8 %coerce.dive6 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp4, i32 0, i32 0 %4 = load %class.INode**, %class.INode*** %coerce.dive6, align 8 call void @_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops14_Iter_comp_valI7NodeCmpEEEvT_T0_SE_T1_RT2_(%class.INode** %4, i64 %sub, i64 0, %class.INode* %3, %"struct.__gnu_cxx::__ops::_Iter_comp_val"* dereferenceable(1) %__cmp) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE9constructIS2_EEvRS3_PS2_RKT_(%"class.std::allocator"* dereferenceable(1) %__a, %class.INode** %__p, %class.INode** dereferenceable(8) %__arg) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator"*, align 8 %__p.addr = alloca %class.INode**, align 8 %__arg.addr = alloca %class.INode**, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 store %class.INode** %__p, %class.INode*** %__p.addr, align 8 store %class.INode** %__arg, %class.INode*** %__arg.addr, align 8 %0 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator"* %0 to %"class.__gnu_cxx::new_allocator"* %2 = load %class.INode**, %class.INode*** %__p.addr, align 8 %3 = load %class.INode**, %class.INode*** %__arg.addr, align 8 call void @_ZN9__gnu_cxx13new_allocatorIP5INodeE9constructEPS2_RKS2_(%"class.__gnu_cxx::new_allocator"* %1, %class.INode** %2, %class.INode** dereferenceable(8) %3) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorIP5INodeSaIS1_EE17_M_realloc_insertEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_(%"class.std::vector"* %this, %class.INode** %__position.coerce, %class.INode** dereferenceable(8) %__x) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %__position = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %this.addr = alloca %"class.std::vector"*, align 8 %__x.addr = alloca %class.INode**, align 8 %__len = alloca i64, align 8 %__elems_before = alloca i64, align 8 %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__new_start = alloca %class.INode**, align 8 %__new_finish = alloca %class.INode**, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__position, i32 0, i32 0 store %class.INode** %__position.coerce, %class.INode*** %coerce.dive, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 store %class.INode** %__x, %class.INode*** %__x.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %call = call i64 @_ZNKSt6vectorIP5INodeSaIS1_EE12_M_check_lenEmPKc(%"class.std::vector"* %this1, i64 1, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.26, i64 0, i64 0)) store i64 %call, i64* %__len, align 8 %call2 = call %class.INode** @_ZNSt6vectorIP5INodeSaIS1_EE5beginEv(%"class.std::vector"* %this1) %coerce.dive3 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %ref.tmp, i32 0, i32 0 store %class.INode** %call2, %class.INode*** %coerce.dive3, align 8 %call4 = call i64 @_ZN9__gnu_cxxmiIPP5INodeSt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(%"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__position, %"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %ref.tmp) store i64 %call4, i64* %__elems_before, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %1 = load i64, i64* %__len, align 8 %call5 = call %class.INode** @_ZNSt12_Vector_baseIP5INodeSaIS1_EE11_M_allocateEm(%"struct.std::_Vector_base"* %0, i64 %1) store %class.INode** %call5, %class.INode*** %__new_start, align 8 %2 = load %class.INode**, %class.INode*** %__new_start, align 8 store %class.INode** %2, %class.INode*** %__new_finish, align 8 %3 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %3, i32 0, i32 0 %4 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator"* %5 = load %class.INode**, %class.INode*** %__new_start, align 8 %6 = load i64, i64* %__elems_before, align 8 %add.ptr = getelementptr inbounds %class.INode*, %class.INode** %5, i64 %6 %7 = load %class.INode**, %class.INode*** %__x.addr, align 8 invoke void @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE9constructIS2_EEvRS3_PS2_RKT_(%"class.std::allocator"* dereferenceable(1) %4, %class.INode** %add.ptr, %class.INode** dereferenceable(8) %7) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry store %class.INode** null, %class.INode*** %__new_finish, align 8 %8 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %8, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl6, i32 0, i32 0 %9 = load %class.INode**, %class.INode*** %_M_start, align 8 %call8 = invoke dereferenceable(8) %class.INode*** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* %__position) to label %invoke.cont7 unwind label %lpad invoke.cont7: ; preds = %invoke.cont %10 = load %class.INode**, %class.INode*** %call8, align 8 %11 = load %class.INode**, %class.INode*** %__new_start, align 8 %12 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call10 = invoke dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseIP5INodeSaIS1_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %12) to label %invoke.cont9 unwind label %lpad invoke.cont9: ; preds = %invoke.cont7 %call12 = invoke %class.INode** @_ZSt34__uninitialized_move_if_noexcept_aIPP5INodeS2_SaIS1_EET0_T_S5_S4_RT1_(%class.INode** %9, %class.INode** %10, %class.INode** %11, %"class.std::allocator"* dereferenceable(1) %call10) to label %invoke.cont11 unwind label %lpad invoke.cont11: ; preds = %invoke.cont9 store %class.INode** %call12, %class.INode*** %__new_finish, align 8 %13 = load %class.INode**, %class.INode*** %__new_finish, align 8 %incdec.ptr = getelementptr inbounds %class.INode*, %class.INode** %13, i32 1 store %class.INode** %incdec.ptr, %class.INode*** %__new_finish, align 8 %call14 = invoke dereferenceable(8) %class.INode*** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* %__position) to label %invoke.cont13 unwind label %lpad invoke.cont13: ; preds = %invoke.cont11 %14 = load %class.INode**, %class.INode*** %call14, align 8 %15 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl15 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %15, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl15, i32 0, i32 1 %16 = load %class.INode**, %class.INode*** %_M_finish, align 8 %17 = load %class.INode**, %class.INode*** %__new_finish, align 8 %18 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call17 = invoke dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseIP5INodeSaIS1_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %18) to label %invoke.cont16 unwind label %lpad invoke.cont16: ; preds = %invoke.cont13 %call19 = invoke %class.INode** @_ZSt34__uninitialized_move_if_noexcept_aIPP5INodeS2_SaIS1_EET0_T_S5_S4_RT1_(%class.INode** %14, %class.INode** %16, %class.INode** %17, %"class.std::allocator"* dereferenceable(1) %call17) to label %invoke.cont18 unwind label %lpad invoke.cont18: ; preds = %invoke.cont16 store %class.INode** %call19, %class.INode*** %__new_finish, align 8 br label %try.cont lpad: ; preds = %invoke.cont16, %invoke.cont13, %invoke.cont11, %invoke.cont9, %invoke.cont7, %invoke.cont, %entry %19 = landingpad { i8*, i32 } catch i8* null %20 = extractvalue { i8*, i32 } %19, 0 store i8* %20, i8** %exn.slot, align 8 %21 = extractvalue { i8*, i32 } %19, 1 store i32 %21, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %22 = call i8* @__cxa_begin_catch(i8* %exn) #3 %23 = load %class.INode**, %class.INode*** %__new_finish, align 8 %tobool = icmp ne %class.INode** %23, null br i1 %tobool, label %if.else, label %if.then if.then: ; preds = %catch %24 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl20 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %24, i32 0, i32 0 %25 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl20 to %"class.std::allocator"* %26 = load %class.INode**, %class.INode*** %__new_start, align 8 %27 = load i64, i64* %__elems_before, align 8 %add.ptr21 = getelementptr inbounds %class.INode*, %class.INode** %26, i64 %27 invoke void @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE7destroyERS3_PS2_(%"class.std::allocator"* dereferenceable(1) %25, %class.INode** %add.ptr21) to label %invoke.cont23 unwind label %lpad22 invoke.cont23: ; preds = %if.then br label %if.end lpad22: ; preds = %invoke.cont27, %if.end, %invoke.cont24, %if.else, %if.then %28 = landingpad { i8*, i32 } cleanup %29 = extractvalue { i8*, i32 } %28, 0 store i8* %29, i8** %exn.slot, align 8 %30 = extractvalue { i8*, i32 } %28, 1 store i32 %30, i32* %ehselector.slot, align 4 invoke void @__cxa_end_catch() to label %invoke.cont28 unwind label %terminate.lpad if.else: ; preds = %catch %31 = load %class.INode**, %class.INode*** %__new_start, align 8 %32 = load %class.INode**, %class.INode*** %__new_finish, align 8 %33 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call25 = invoke dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseIP5INodeSaIS1_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %33) to label %invoke.cont24 unwind label %lpad22 invoke.cont24: ; preds = %if.else invoke void @_ZSt8_DestroyIPP5INodeS1_EvT_S3_RSaIT0_E(%class.INode** %31, %class.INode** %32, %"class.std::allocator"* dereferenceable(1) %call25) to label %invoke.cont26 unwind label %lpad22 invoke.cont26: ; preds = %invoke.cont24 br label %if.end if.end: ; preds = %invoke.cont26, %invoke.cont23 %34 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %35 = load %class.INode**, %class.INode*** %__new_start, align 8 %36 = load i64, i64* %__len, align 8 invoke void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE13_M_deallocateEPS1_m(%"struct.std::_Vector_base"* %34, %class.INode** %35, i64 %36) to label %invoke.cont27 unwind label %lpad22 invoke.cont27: ; preds = %if.end invoke void @__cxa_rethrow() #19 to label %unreachable unwind label %lpad22 invoke.cont28: ; preds = %lpad22 br label %eh.resume try.cont: ; preds = %invoke.cont18 %37 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl29 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %37, i32 0, i32 0 %_M_start30 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl29, i32 0, i32 0 %38 = load %class.INode**, %class.INode*** %_M_start30, align 8 %39 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl31 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %39, i32 0, i32 0 %_M_finish32 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl31, i32 0, i32 1 %40 = load %class.INode**, %class.INode*** %_M_finish32, align 8 %41 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call33 = call dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseIP5INodeSaIS1_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %41) call void @_ZSt8_DestroyIPP5INodeS1_EvT_S3_RSaIT0_E(%class.INode** %38, %class.INode** %40, %"class.std::allocator"* dereferenceable(1) %call33) %42 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %43 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl34 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %43, i32 0, i32 0 %_M_start35 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl34, i32 0, i32 0 %44 = load %class.INode**, %class.INode*** %_M_start35, align 8 %45 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl36 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %45, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl36, i32 0, i32 2 %46 = load %class.INode**, %class.INode*** %_M_end_of_storage, align 8 %47 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl37 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %47, i32 0, i32 0 %_M_start38 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl37, i32 0, i32 0 %48 = load %class.INode**, %class.INode*** %_M_start38, align 8 %sub.ptr.lhs.cast = ptrtoint %class.INode** %46 to i64 %sub.ptr.rhs.cast = ptrtoint %class.INode** %48 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 call void @_ZNSt12_Vector_baseIP5INodeSaIS1_EE13_M_deallocateEPS1_m(%"struct.std::_Vector_base"* %42, %class.INode** %44, i64 %sub.ptr.div) %49 = load %class.INode**, %class.INode*** %__new_start, align 8 %50 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl39 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %50, i32 0, i32 0 %_M_start40 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl39, i32 0, i32 0 store %class.INode** %49, %class.INode*** %_M_start40, align 8 %51 = load %class.INode**, %class.INode*** %__new_finish, align 8 %52 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl41 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %52, i32 0, i32 0 %_M_finish42 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl41, i32 0, i32 1 store %class.INode** %51, %class.INode*** %_M_finish42, align 8 %53 = load %class.INode**, %class.INode*** %__new_start, align 8 %54 = load i64, i64* %__len, align 8 %add.ptr43 = getelementptr inbounds %class.INode*, %class.INode** %53, i64 %54 %55 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl44 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %55, i32 0, i32 0 %_M_end_of_storage45 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl44, i32 0, i32 2 store %class.INode** %add.ptr43, %class.INode*** %_M_end_of_storage45, align 8 ret void eh.resume: ; preds = %invoke.cont28 %exn46 = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn46, 0 %lpad.val47 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val47 terminate.lpad: ; preds = %lpad22 %56 = landingpad { i8*, i32 } catch i8* null %57 = extractvalue { i8*, i32 } %56, 0 call void @__clang_call_terminate(i8* %57) #16 unreachable unreachable: ; preds = %invoke.cont27 unreachable } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP5INodeE9constructEPS2_RKS2_(%"class.__gnu_cxx::new_allocator"* %this, %class.INode** %__p, %class.INode** dereferenceable(8) %__val) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 %__p.addr = alloca %class.INode**, align 8 %__val.addr = alloca %class.INode**, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 store %class.INode** %__p, %class.INode*** %__p.addr, align 8 store %class.INode** %__val, %class.INode*** %__val.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %0 = load %class.INode**, %class.INode*** %__p.addr, align 8 %1 = bitcast %class.INode** %0 to i8* %2 = bitcast i8* %1 to %class.INode** %3 = load %class.INode**, %class.INode*** %__val.addr, align 8 %4 = load %class.INode*, %class.INode** %3, align 8 store %class.INode* %4, %class.INode** %2, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorIP5INodeSaIS1_EE12_M_check_lenEmPKc(%"class.std::vector"* %this, i64 %__n, i8* %__s) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 %__n.addr = alloca i64, align 8 %__s.addr = alloca i8*, align 8 %__len = alloca i64, align 8 %ref.tmp = alloca i64, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 store i8* %__s, i8** %__s.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %call = call i64 @_ZNKSt6vectorIP5INodeSaIS1_EE8max_sizeEv(%"class.std::vector"* %this1) %call2 = call i64 @_ZNKSt6vectorIP5INodeSaIS1_EE4sizeEv(%"class.std::vector"* %this1) %sub = sub i64 %call, %call2 %0 = load i64, i64* %__n.addr, align 8 %cmp = icmp ult i64 %sub, %0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load i8*, i8** %__s.addr, align 8 call void @_ZSt20__throw_length_errorPKc(i8* %1) #19 unreachable if.end: ; preds = %entry %call3 = call i64 @_ZNKSt6vectorIP5INodeSaIS1_EE4sizeEv(%"class.std::vector"* %this1) %call4 = call i64 @_ZNKSt6vectorIP5INodeSaIS1_EE4sizeEv(%"class.std::vector"* %this1) store i64 %call4, i64* %ref.tmp, align 8 %call5 = call dereferenceable(8) i64* @_ZSt3maxImERKT_S2_S2_(i64* dereferenceable(8) %ref.tmp, i64* dereferenceable(8) %__n.addr) %2 = load i64, i64* %call5, align 8 %add = add i64 %call3, %2 store i64 %add, i64* %__len, align 8 %3 = load i64, i64* %__len, align 8 %call6 = call i64 @_ZNKSt6vectorIP5INodeSaIS1_EE4sizeEv(%"class.std::vector"* %this1) %cmp7 = icmp ult i64 %3, %call6 br i1 %cmp7, label %cond.true, label %lor.lhs.false lor.lhs.false: ; preds = %if.end %4 = load i64, i64* %__len, align 8 %call8 = call i64 @_ZNKSt6vectorIP5INodeSaIS1_EE8max_sizeEv(%"class.std::vector"* %this1) %cmp9 = icmp ugt i64 %4, %call8 br i1 %cmp9, label %cond.true, label %cond.false cond.true: ; preds = %lor.lhs.false, %if.end %call10 = call i64 @_ZNKSt6vectorIP5INodeSaIS1_EE8max_sizeEv(%"class.std::vector"* %this1) br label %cond.end cond.false: ; preds = %lor.lhs.false %5 = load i64, i64* %__len, align 8 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i64 [ %call10, %cond.true ], [ %5, %cond.false ] ret i64 %cond } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt34__uninitialized_move_if_noexcept_aIPP5INodeS2_SaIS1_EET0_T_S5_S4_RT1_(%class.INode** %__first, %class.INode** %__last, %class.INode** %__result, %"class.std::allocator"* dereferenceable(1) %__alloc) #0 comdat { entry: %__first.addr = alloca %class.INode**, align 8 %__last.addr = alloca %class.INode**, align 8 %__result.addr = alloca %class.INode**, align 8 %__alloc.addr = alloca %"class.std::allocator"*, align 8 store %class.INode** %__first, %class.INode*** %__first.addr, align 8 store %class.INode** %__last, %class.INode*** %__last.addr, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 store %"class.std::allocator"* %__alloc, %"class.std::allocator"** %__alloc.addr, align 8 %0 = load %class.INode**, %class.INode*** %__first.addr, align 8 %1 = load %class.INode**, %class.INode*** %__last.addr, align 8 %2 = load %class.INode**, %class.INode*** %__result.addr, align 8 %3 = load %"class.std::allocator"*, %"class.std::allocator"** %__alloc.addr, align 8 %call = call %class.INode** @_ZSt22__uninitialized_copy_aIPP5INodeS2_S1_ET0_T_S4_S3_RSaIT1_E(%class.INode** %0, %class.INode** %1, %class.INode** %2, %"class.std::allocator"* dereferenceable(1) %3) ret %class.INode** %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE7destroyERS3_PS2_(%"class.std::allocator"* dereferenceable(1) %__a, %class.INode** %__p) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator"*, align 8 %__p.addr = alloca %class.INode**, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 store %class.INode** %__p, %class.INode*** %__p.addr, align 8 %0 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator"* %0 to %"class.__gnu_cxx::new_allocator"* %2 = load %class.INode**, %class.INode*** %__p.addr, align 8 call void @_ZN9__gnu_cxx13new_allocatorIP5INodeE7destroyEPS2_(%"class.__gnu_cxx::new_allocator"* %1, %class.INode** %2) ret void } declare dso_local void @__cxa_rethrow() declare dso_local void @__cxa_end_catch() ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorIP5INodeSaIS1_EE8max_sizeEv(%"class.std::vector"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call = call dereferenceable(1) %"class.std::allocator"* @_ZNKSt12_Vector_baseIP5INodeSaIS1_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %0) %call2 = call i64 @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE8max_sizeERKS3_(%"class.std::allocator"* dereferenceable(1) %call) ret i64 %call2 } ; Function Attrs: noreturn declare dso_local void @_ZSt20__throw_length_errorPKc(i8*) #15 ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) i64* @_ZSt3maxImERKT_S2_S2_(i64* dereferenceable(8) %__a, i64* dereferenceable(8) %__b) #6 comdat { entry: %retval = alloca i64*, align 8 %__a.addr = alloca i64*, align 8 %__b.addr = alloca i64*, align 8 store i64* %__a, i64** %__a.addr, align 8 store i64* %__b, i64** %__b.addr, align 8 %0 = load i64*, i64** %__a.addr, align 8 %1 = load i64, i64* %0, align 8 %2 = load i64*, i64** %__b.addr, align 8 %3 = load i64, i64* %2, align 8 %cmp = icmp ult i64 %1, %3 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %4 = load i64*, i64** %__b.addr, align 8 store i64* %4, i64** %retval, align 8 br label %return if.end: ; preds = %entry %5 = load i64*, i64** %__a.addr, align 8 store i64* %5, i64** %retval, align 8 br label %return return: ; preds = %if.end, %if.then %6 = load i64*, i64** %retval, align 8 ret i64* %6 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE8max_sizeERKS3_(%"class.std::allocator"* dereferenceable(1) %__a) #6 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator"*, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 %0 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator"* %0 to %"class.__gnu_cxx::new_allocator"* %call = call i64 @_ZNK9__gnu_cxx13new_allocatorIP5INodeE8max_sizeEv(%"class.__gnu_cxx::new_allocator"* %1) #3 ret i64 %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt22__uninitialized_copy_aIPP5INodeS2_S1_ET0_T_S4_S3_RSaIT1_E(%class.INode** %__first, %class.INode** %__last, %class.INode** %__result, %"class.std::allocator"* dereferenceable(1) %0) #0 comdat { entry: %__first.addr = alloca %class.INode**, align 8 %__last.addr = alloca %class.INode**, align 8 %__result.addr = alloca %class.INode**, align 8 %.addr = alloca %"class.std::allocator"*, align 8 store %class.INode** %__first, %class.INode*** %__first.addr, align 8 store %class.INode** %__last, %class.INode*** %__last.addr, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 store %"class.std::allocator"* %0, %"class.std::allocator"** %.addr, align 8 %1 = load %class.INode**, %class.INode*** %__first.addr, align 8 %2 = load %class.INode**, %class.INode*** %__last.addr, align 8 %3 = load %class.INode**, %class.INode*** %__result.addr, align 8 %call = call %class.INode** @_ZSt18uninitialized_copyIPP5INodeS2_ET0_T_S4_S3_(%class.INode** %1, %class.INode** %2, %class.INode** %3) ret %class.INode** %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt18uninitialized_copyIPP5INodeS2_ET0_T_S4_S3_(%class.INode** %__first, %class.INode** %__last, %class.INode** %__result) #0 comdat { entry: %__first.addr = alloca %class.INode**, align 8 %__last.addr = alloca %class.INode**, align 8 %__result.addr = alloca %class.INode**, align 8 %__assignable = alloca i8, align 1 store %class.INode** %__first, %class.INode*** %__first.addr, align 8 store %class.INode** %__last, %class.INode*** %__last.addr, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 store i8 1, i8* %__assignable, align 1 %0 = load %class.INode**, %class.INode*** %__first.addr, align 8 %1 = load %class.INode**, %class.INode*** %__last.addr, align 8 %2 = load %class.INode**, %class.INode*** %__result.addr, align 8 %call = call %class.INode** @_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPP5INodeS4_EET0_T_S6_S5_(%class.INode** %0, %class.INode** %1, %class.INode** %2) ret %class.INode** %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIPP5INodeS4_EET0_T_S6_S5_(%class.INode** %__first, %class.INode** %__last, %class.INode** %__result) #0 comdat align 2 { entry: %__first.addr = alloca %class.INode**, align 8 %__last.addr = alloca %class.INode**, align 8 %__result.addr = alloca %class.INode**, align 8 store %class.INode** %__first, %class.INode*** %__first.addr, align 8 store %class.INode** %__last, %class.INode*** %__last.addr, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 %0 = load %class.INode**, %class.INode*** %__first.addr, align 8 %1 = load %class.INode**, %class.INode*** %__last.addr, align 8 %2 = load %class.INode**, %class.INode*** %__result.addr, align 8 %call = call %class.INode** @_ZSt4copyIPP5INodeS2_ET0_T_S4_S3_(%class.INode** %0, %class.INode** %1, %class.INode** %2) ret %class.INode** %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt4copyIPP5INodeS2_ET0_T_S4_S3_(%class.INode** %__first, %class.INode** %__last, %class.INode** %__result) #0 comdat { entry: %__first.addr = alloca %class.INode**, align 8 %__last.addr = alloca %class.INode**, align 8 %__result.addr = alloca %class.INode**, align 8 store %class.INode** %__first, %class.INode*** %__first.addr, align 8 store %class.INode** %__last, %class.INode*** %__last.addr, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 %0 = load %class.INode**, %class.INode*** %__first.addr, align 8 %call = call %class.INode** @_ZSt12__miter_baseIPP5INodeET_S3_(%class.INode** %0) %1 = load %class.INode**, %class.INode*** %__last.addr, align 8 %call1 = call %class.INode** @_ZSt12__miter_baseIPP5INodeET_S3_(%class.INode** %1) %2 = load %class.INode**, %class.INode*** %__result.addr, align 8 %call2 = call %class.INode** @_ZSt14__copy_move_a2ILb0EPP5INodeS2_ET1_T0_S4_S3_(%class.INode** %call, %class.INode** %call1, %class.INode** %2) ret %class.INode** %call2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt14__copy_move_a2ILb0EPP5INodeS2_ET1_T0_S4_S3_(%class.INode** %__first, %class.INode** %__last, %class.INode** %__result) #0 comdat { entry: %__first.addr = alloca %class.INode**, align 8 %__last.addr = alloca %class.INode**, align 8 %__result.addr = alloca %class.INode**, align 8 store %class.INode** %__first, %class.INode*** %__first.addr, align 8 store %class.INode** %__last, %class.INode*** %__last.addr, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 %0 = load %class.INode**, %class.INode*** %__first.addr, align 8 %call = call %class.INode** @_ZSt12__niter_baseIPP5INodeET_S3_(%class.INode** %0) %1 = load %class.INode**, %class.INode*** %__last.addr, align 8 %call1 = call %class.INode** @_ZSt12__niter_baseIPP5INodeET_S3_(%class.INode** %1) %2 = load %class.INode**, %class.INode*** %__result.addr, align 8 %call2 = call %class.INode** @_ZSt12__niter_baseIPP5INodeET_S3_(%class.INode** %2) %call3 = call %class.INode** @_ZSt13__copy_move_aILb0EPP5INodeS2_ET1_T0_S4_S3_(%class.INode** %call, %class.INode** %call1, %class.INode** %call2) ret %class.INode** %call3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt12__miter_baseIPP5INodeET_S3_(%class.INode** %__it) #6 comdat { entry: %__it.addr = alloca %class.INode**, align 8 store %class.INode** %__it, %class.INode*** %__it.addr, align 8 %0 = load %class.INode**, %class.INode*** %__it.addr, align 8 ret %class.INode** %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %class.INode** @_ZSt13__copy_move_aILb0EPP5INodeS2_ET1_T0_S4_S3_(%class.INode** %__first, %class.INode** %__last, %class.INode** %__result) #6 comdat { entry: %__first.addr = alloca %class.INode**, align 8 %__last.addr = alloca %class.INode**, align 8 %__result.addr = alloca %class.INode**, align 8 %__simple = alloca i8, align 1 store %class.INode** %__first, %class.INode*** %__first.addr, align 8 store %class.INode** %__last, %class.INode*** %__last.addr, align 8 store %class.INode** %__result, %class.INode*** %__result.addr, align 8 store i8 1, i8* %__simple, align 1 %0 = load %class.INode**, %class.INode*** %__first.addr, align 8 %1 = load %class.INode**, %class.INode*** %__last.addr, align 8 %2 = load %class.INode**, %class.INode*** %__result.addr, align 8 %call = call %class.INode** @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP5INodeEEPT_PKS5_S8_S6_(%class.INode** %0, %class.INode** %1, %class.INode** %2) ret %class.INode** %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP5INodeE7destroyEPS2_(%"class.__gnu_cxx::new_allocator"* %this, %class.INode** %__p) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 %__p.addr = alloca %class.INode**, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 store %class.INode** %__p, %class.INode*** %__p.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx5__ops14_Iter_comp_valI7NodeCmpEC2ES2_(%"struct.__gnu_cxx::__ops::_Iter_comp_val"* %this) unnamed_addr #6 comdat align 2 { entry: %__comp = alloca %struct.NodeCmp, align 1 %this.addr = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_val"*, align 8 store %"struct.__gnu_cxx::__ops::_Iter_comp_val"* %this, %"struct.__gnu_cxx::__ops::_Iter_comp_val"** %this.addr, align 8 %this1 = load %"struct.__gnu_cxx::__ops::_Iter_comp_val"*, %"struct.__gnu_cxx::__ops::_Iter_comp_val"** %this.addr, align 8 %_M_comp = getelementptr inbounds %"struct.__gnu_cxx::__ops::_Iter_comp_val", %"struct.__gnu_cxx::__ops::_Iter_comp_val"* %this1, i32 0, i32 0 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEmiEl(%"class.__gnu_cxx::__normal_iterator"* %this, i64 %__n) #0 comdat align 2 { entry: %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %this.addr = alloca %"class.__gnu_cxx::__normal_iterator"*, align 8 %__n.addr = alloca i64, align 8 %ref.tmp = alloca %class.INode**, align 8 store %"class.__gnu_cxx::__normal_iterator"* %this, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator"*, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %this1, i32 0, i32 0 %0 = load %class.INode**, %class.INode*** %_M_current, align 8 %1 = load i64, i64* %__n.addr, align 8 %idx.neg = sub i64 0, %1 %add.ptr = getelementptr inbounds %class.INode*, %class.INode** %0, i64 %idx.neg store %class.INode** %add.ptr, %class.INode*** %ref.tmp, align 8 call void @_ZN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEC2ERKS3_(%"class.__gnu_cxx::__normal_iterator"* %retval, %class.INode*** dereferenceable(8) %ref.tmp) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %retval, i32 0, i32 0 %2 = load %class.INode**, %class.INode*** %coerce.dive, align 8 ret %class.INode** %2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local dereferenceable(8) %class.INode** @_ZNKSt6vectorIP5INodeSaIS1_EE5frontEv(%"class.std::vector"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.10", align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %call = call %class.INode** @_ZNKSt6vectorIP5INodeSaIS1_EE5beginEv(%"class.std::vector"* %this1) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %ref.tmp, i32 0, i32 0 store %class.INode** %call, %class.INode*** %coerce.dive, align 8 %call2 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator.10"* %ref.tmp) ret %class.INode** %call2 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPKP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator.10"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::__normal_iterator.10"*, align 8 store %"class.__gnu_cxx::__normal_iterator.10"* %this, %"class.__gnu_cxx::__normal_iterator.10"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator.10"*, %"class.__gnu_cxx::__normal_iterator.10"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.10", %"class.__gnu_cxx::__normal_iterator.10"* %this1, i32 0, i32 0 %0 = load %class.INode**, %class.INode*** %_M_current, align 8 ret %class.INode** %0 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt8pop_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEE7NodeCmpEvT_SA_T0_(%class.INode** %__first.coerce, %class.INode** %__last.coerce) #0 comdat { entry: %__first = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__last = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__comp = alloca %struct.NodeCmp, align 1 %__cmp = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_iter", align 1 %agg.tmp = alloca %struct.NodeCmp, align 1 %agg.tmp3 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp4 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp5 = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__first, i32 0, i32 0 store %class.INode** %__first.coerce, %class.INode*** %coerce.dive, align 8 %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__last, i32 0, i32 0 store %class.INode** %__last.coerce, %class.INode*** %coerce.dive1, align 8 %call = call i64 @_ZN9__gnu_cxxmiIPP5INodeSt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(%"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__last, %"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__first) %cmp = icmp sgt i64 %call, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZN9__gnu_cxx5__ops15_Iter_comp_iterI7NodeCmpEC2ES2_(%"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %__cmp) %call2 = call dereferenceable(8) %"class.__gnu_cxx::__normal_iterator"* @_ZN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEmmEv(%"class.__gnu_cxx::__normal_iterator"* %__last) %0 = bitcast %"class.__gnu_cxx::__normal_iterator"* %agg.tmp3 to i8* %1 = bitcast %"class.__gnu_cxx::__normal_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 8, i1 false) %2 = bitcast %"class.__gnu_cxx::__normal_iterator"* %agg.tmp4 to i8* %3 = bitcast %"class.__gnu_cxx::__normal_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %2, i8* align 8 %3, i64 8, i1 false) %4 = bitcast %"class.__gnu_cxx::__normal_iterator"* %agg.tmp5 to i8* %5 = bitcast %"class.__gnu_cxx::__normal_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %4, i8* align 8 %5, i64 8, i1 false) %coerce.dive6 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp3, i32 0, i32 0 %6 = load %class.INode**, %class.INode*** %coerce.dive6, align 8 %coerce.dive7 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp4, i32 0, i32 0 %7 = load %class.INode**, %class.INode*** %coerce.dive7, align 8 %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp5, i32 0, i32 0 %8 = load %class.INode**, %class.INode*** %coerce.dive8, align 8 call void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterI7NodeCmpEEEvT_SD_SD_RT0_(%class.INode** %6, %class.INode** %7, %class.INode** %8, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* dereferenceable(1) %__cmp) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorIP5INodeSaIS1_EE8pop_backEv(%"class.std::vector"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 1 %1 = load %class.INode**, %class.INode*** %_M_finish, align 8 %incdec.ptr = getelementptr inbounds %class.INode*, %class.INode** %1, i32 -1 store %class.INode** %incdec.ptr, %class.INode*** %_M_finish, align 8 %2 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %2, i32 0, i32 0 %3 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2 to %"class.std::allocator"* %4 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %4, i32 0, i32 0 %_M_finish4 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl3, i32 0, i32 1 %5 = load %class.INode**, %class.INode*** %_M_finish4, align 8 call void @_ZN9__gnu_cxx14__alloc_traitsISaIP5INodeEE7destroyERS3_PS2_(%"class.std::allocator"* dereferenceable(1) %3, %class.INode** %5) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %"class.__gnu_cxx::__normal_iterator"* @_ZN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEmmEv(%"class.__gnu_cxx::__normal_iterator"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::__normal_iterator"*, align 8 store %"class.__gnu_cxx::__normal_iterator"* %this, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator"*, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %this1, i32 0, i32 0 %0 = load %class.INode**, %class.INode*** %_M_current, align 8 %incdec.ptr = getelementptr inbounds %class.INode*, %class.INode** %0, i32 -1 store %class.INode** %incdec.ptr, %class.INode*** %_M_current, align 8 ret %"class.__gnu_cxx::__normal_iterator"* %this1 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterI7NodeCmpEEEvT_SD_SD_RT0_(%class.INode** %__first.coerce, %class.INode** %__last.coerce, %class.INode** %__result.coerce, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* dereferenceable(1) %__comp) #0 comdat { entry: %__first = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__last = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__result = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__comp.addr = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_iter"*, align 8 %__value = alloca %class.INode*, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %agg.tmp6 = alloca %"struct.__gnu_cxx::__ops::_Iter_comp_iter", align 1 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__first, i32 0, i32 0 store %class.INode** %__first.coerce, %class.INode*** %coerce.dive, align 8 %coerce.dive1 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__last, i32 0, i32 0 store %class.INode** %__last.coerce, %class.INode*** %coerce.dive1, align 8 %coerce.dive2 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__result, i32 0, i32 0 store %class.INode** %__result.coerce, %class.INode*** %coerce.dive2, align 8 store %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %__comp, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"** %__comp.addr, align 8 %call = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %__result) %0 = load %class.INode*, %class.INode** %call, align 8 store %class.INode* %0, %class.INode** %__value, align 8 %call3 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %__first) %1 = load %class.INode*, %class.INode** %call3, align 8 %call4 = call dereferenceable(8) %class.INode** @_ZNK9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS2_SaIS2_EEEdeEv(%"class.__gnu_cxx::__normal_iterator"* %__result) store %class.INode* %1, %class.INode** %call4, align 8 %2 = bitcast %"class.__gnu_cxx::__normal_iterator"* %agg.tmp to i8* %3 = bitcast %"class.__gnu_cxx::__normal_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %2, i8* align 8 %3, i64 8, i1 false) %call5 = call i64 @_ZN9__gnu_cxxmiIPP5INodeSt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(%"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__last, %"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__first) %4 = load %class.INode*, %class.INode** %__value, align 8 %5 = load %"struct.__gnu_cxx::__ops::_Iter_comp_iter"*, %"struct.__gnu_cxx::__ops::_Iter_comp_iter"** %__comp.addr, align 8 %6 = bitcast %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %agg.tmp6 to i8* %7 = bitcast %"struct.__gnu_cxx::__ops::_Iter_comp_iter"* %5 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %6, i8* align 1 %7, i64 1, i1 false) %coerce.dive7 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 %8 = load %class.INode**, %class.INode*** %coerce.dive7, align 8 call void @_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPP5INodeSt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterI7NodeCmpEEEvT_T0_SE_T1_T2_(%class.INode** %8, i64 0, i64 %call5, %class.INode* %4) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE11lower_boundERS6_(%"class.std::map"* %this, i8* dereferenceable(1) %__x) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %this.addr = alloca %"class.std::map"*, align 8 %__x.addr = alloca i8*, align 8 store %"class.std::map"* %this, %"class.std::map"** %this.addr, align 8 store i8* %__x, i8** %__x.addr, align 8 %this1 = load %"class.std::map"*, %"class.std::map"** %this.addr, align 8 %_M_t = getelementptr inbounds %"class.std::map", %"class.std::map"* %this1, i32 0, i32 0 %0 = load i8*, i8** %__x.addr, align 8 %call = call %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11lower_boundERS1_(%"class.std::_Rb_tree"* %_M_t, i8* dereferenceable(1) %0) %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 %1 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive2, align 8 ret %"struct.std::_Rb_tree_node_base"* %1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local zeroext i1 @_ZNKSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEeqERKS6_(%"struct.std::_Rb_tree_iterator"* %this, %"struct.std::_Rb_tree_iterator"* dereferenceable(8) %__x) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_iterator"*, align 8 %__x.addr = alloca %"struct.std::_Rb_tree_iterator"*, align 8 store %"struct.std::_Rb_tree_iterator"* %this, %"struct.std::_Rb_tree_iterator"** %this.addr, align 8 store %"struct.std::_Rb_tree_iterator"* %__x, %"struct.std::_Rb_tree_iterator"** %__x.addr, align 8 %this1 = load %"struct.std::_Rb_tree_iterator"*, %"struct.std::_Rb_tree_iterator"** %this.addr, align 8 %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %this1, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node, align 8 %1 = load %"struct.std::_Rb_tree_iterator"*, %"struct.std::_Rb_tree_iterator"** %__x.addr, align 8 %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %1, i32 0, i32 0 %2 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node2, align 8 %cmp = icmp eq %"struct.std::_Rb_tree_node_base"* %0, %2 ret i1 %cmp } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNKSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE8key_compEv(%"class.std::map"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::map"*, align 8 %undef.agg.tmp = alloca %"struct.std::less", align 1 store %"class.std::map"* %this, %"class.std::map"** %this.addr, align 8 %this1 = load %"class.std::map"*, %"class.std::map"** %this.addr, align 8 %_M_t = getelementptr inbounds %"class.std::map", %"class.std::map"* %this1, i32 0, i32 0 call void @_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8key_compEv(%"class.std::_Rb_tree"* %_M_t) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local zeroext i1 @_ZNKSt4lessIhEclERKhS2_(%"struct.std::less"* %this, i8* dereferenceable(1) %__x, i8* dereferenceable(1) %__y) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::less"*, align 8 %__x.addr = alloca i8*, align 8 %__y.addr = alloca i8*, align 8 store %"struct.std::less"* %this, %"struct.std::less"** %this.addr, align 8 store i8* %__x, i8** %__x.addr, align 8 store i8* %__y, i8** %__y.addr, align 8 %this1 = load %"struct.std::less"*, %"struct.std::less"** %this.addr, align 8 %0 = load i8*, i8** %__x.addr, align 8 %1 = load i8, i8* %0, align 1 %conv = zext i8 %1 to i32 %2 = load i8*, i8** %__y.addr, align 8 %3 = load i8, i8* %2, align 1 %conv2 = zext i8 %3 to i32 %cmp = icmp slt i32 %conv, %conv2 ret i1 %cmp } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local dereferenceable(48) %"struct.std::pair"* @_ZNKSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEdeEv(%"struct.std::_Rb_tree_iterator"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_iterator"*, align 8 store %"struct.std::_Rb_tree_iterator"* %this, %"struct.std::_Rb_tree_iterator"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree_iterator"*, %"struct.std::_Rb_tree_iterator"** %this.addr, align 8 %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %this1, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node, align 8 %1 = bitcast %"struct.std::_Rb_tree_node_base"* %0 to %"struct.std::_Rb_tree_node"* %call = call %"struct.std::pair"* @_ZNSt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEE9_M_valptrEv(%"struct.std::_Rb_tree_node"* %1) ret %"struct.std::pair"* %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNSt3mapIhSt6vectorIbSaIbEESt4lessIhESaISt4pairIKhS2_EEE6insertESt17_Rb_tree_iteratorIS7_ERKS7_(%"class.std::map"* %this, %"struct.std::_Rb_tree_node_base"* %__position.coerce, %"struct.std::pair"* dereferenceable(48) %__x) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %__position = alloca %"struct.std::_Rb_tree_iterator", align 8 %this.addr = alloca %"class.std::map"*, align 8 %__x.addr = alloca %"struct.std::pair"*, align 8 %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 8 %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__position, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %__position.coerce, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 store %"class.std::map"* %this, %"class.std::map"** %this.addr, align 8 store %"struct.std::pair"* %__x, %"struct.std::pair"** %__x.addr, align 8 %this1 = load %"class.std::map"*, %"class.std::map"** %this.addr, align 8 %_M_t = getelementptr inbounds %"class.std::map", %"class.std::map"* %this1, i32 0, i32 0 call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2ERKSt17_Rb_tree_iteratorIS5_E(%"struct.std::_Rb_tree_const_iterator"* %agg.tmp, %"struct.std::_Rb_tree_iterator"* dereferenceable(8) %__position) %0 = load %"struct.std::pair"*, %"struct.std::pair"** %__x.addr, align 8 %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %agg.tmp, i32 0, i32 0 %1 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive2, align 8 %call = call %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE17_M_insert_unique_ESt23_Rb_tree_const_iteratorIS5_ERKS5_(%"class.std::_Rb_tree"* %_M_t, %"struct.std::_Rb_tree_node_base"* %1, %"struct.std::pair"* dereferenceable(48) %0) %coerce.dive3 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call, %"struct.std::_Rb_tree_node_base"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 %2 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive4, align 8 ret %"struct.std::_Rb_tree_node_base"* %2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt4pairIKhSt6vectorIbSaIbEEEC2ERS0_RKS3_(%"struct.std::pair"* %this, i8* dereferenceable(1) %__a, %"class.std::vector.0"* dereferenceable(40) %__b) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::pair"*, align 8 %__a.addr = alloca i8*, align 8 %__b.addr = alloca %"class.std::vector.0"*, align 8 store %"struct.std::pair"* %this, %"struct.std::pair"** %this.addr, align 8 store i8* %__a, i8** %__a.addr, align 8 store %"class.std::vector.0"* %__b, %"class.std::vector.0"** %__b.addr, align 8 %this1 = load %"struct.std::pair"*, %"struct.std::pair"** %this.addr, align 8 %0 = bitcast %"struct.std::pair"* %this1 to %"class.std::__pair_base"* %first = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %this1, i32 0, i32 0 %1 = load i8*, i8** %__a.addr, align 8 %2 = load i8, i8* %1, align 1 store i8 %2, i8* %first, align 8 %second = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %this1, i32 0, i32 1 %3 = load %"class.std::vector.0"*, %"class.std::vector.0"** %__b.addr, align 8 call void @_ZNSt6vectorIbSaIbEEC2ERKS1_(%"class.std::vector.0"* %second, %"class.std::vector.0"* dereferenceable(40) %3) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11lower_boundERS1_(%"class.std::_Rb_tree"* %this, i8* dereferenceable(1) %__k) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__k.addr = alloca i8*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store i8* %__k, i8** %__k.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %call = call %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_M_beginEv(%"class.std::_Rb_tree"* %this1) %call2 = call %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_M_endEv(%"class.std::_Rb_tree"* %this1) %0 = load i8*, i8** %__k.addr, align 8 %call3 = call %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_(%"class.std::_Rb_tree"* %this1, %"struct.std::_Rb_tree_node"* %call, %"struct.std::_Rb_tree_node_base"* %call2, i8* dereferenceable(1) %0) %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call3, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 %coerce.dive4 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 %1 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive4, align 8 ret %"struct.std::_Rb_tree_node_base"* %1 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS5_EPSt18_Rb_tree_node_baseRS1_(%"class.std::_Rb_tree"* %this, %"struct.std::_Rb_tree_node"* %__x, %"struct.std::_Rb_tree_node_base"* %__y, i8* dereferenceable(1) %__k) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__x.addr = alloca %"struct.std::_Rb_tree_node"*, align 8 %__y.addr = alloca %"struct.std::_Rb_tree_node_base"*, align 8 %__k.addr = alloca i8*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store %"struct.std::_Rb_tree_node"* %__x, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 store %"struct.std::_Rb_tree_node_base"* %__y, %"struct.std::_Rb_tree_node_base"** %__y.addr, align 8 store i8* %__k, i8** %__k.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 br label %while.cond while.cond: ; preds = %if.end, %entry %0 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %cmp = icmp ne %"struct.std::_Rb_tree_node"* %0, null br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %1 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to %"struct.std::_Rb_tree_key_compare"* %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_key_compare"* %1, i32 0, i32 0 %2 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %call = call dereferenceable(1) i8* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E(%"struct.std::_Rb_tree_node"* %2) %3 = load i8*, i8** %__k.addr, align 8 %call2 = call zeroext i1 @_ZNKSt4lessIhEclERKhS2_(%"struct.std::less"* %_M_key_compare, i8* dereferenceable(1) %call, i8* dereferenceable(1) %3) br i1 %call2, label %if.else, label %if.then if.then: ; preds = %while.body %4 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %5 = bitcast %"struct.std::_Rb_tree_node"* %4 to %"struct.std::_Rb_tree_node_base"* store %"struct.std::_Rb_tree_node_base"* %5, %"struct.std::_Rb_tree_node_base"** %__y.addr, align 8 %6 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %7 = bitcast %"struct.std::_Rb_tree_node"* %6 to %"struct.std::_Rb_tree_node_base"* %call3 = call %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE7_S_leftEPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %7) store %"struct.std::_Rb_tree_node"* %call3, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 br label %if.end if.else: ; preds = %while.body %8 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %9 = bitcast %"struct.std::_Rb_tree_node"* %8 to %"struct.std::_Rb_tree_node_base"* %call4 = call %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %9) store %"struct.std::_Rb_tree_node"* %call4, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 br label %if.end if.end: ; preds = %if.else, %if.then br label %while.cond while.end: ; preds = %while.cond %10 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %__y.addr, align 8 call void @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2EPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_iterator"* %retval, %"struct.std::_Rb_tree_node_base"* %10) %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 %11 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 ret %"struct.std::_Rb_tree_node_base"* %11 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_M_endEv(%"class.std::_Rb_tree"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to i8* %add.ptr = getelementptr inbounds i8, i8* %0, i64 8 %1 = bitcast i8* %add.ptr to %"struct.std::_Rb_tree_header"* %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %1, i32 0, i32 0 ret %"struct.std::_Rb_tree_node_base"* %_M_header } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local dereferenceable(1) i8* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E(%"struct.std::_Rb_tree_node"* %__x) #0 comdat align 2 { entry: %__x.addr = alloca %"struct.std::_Rb_tree_node"*, align 8 %ref.tmp = alloca %"struct.std::_Select1st", align 1 store %"struct.std::_Rb_tree_node"* %__x, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %0 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %call = call dereferenceable(48) %"struct.std::pair"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_valueEPKSt13_Rb_tree_nodeIS5_E(%"struct.std::_Rb_tree_node"* %0) %call1 = call dereferenceable(1) i8* @_ZNKSt10_Select1stISt4pairIKhSt6vectorIbSaIbEEEEclERKS5_(%"struct.std::_Select1st"* %ref.tmp, %"struct.std::pair"* dereferenceable(48) %call) ret i8* %call1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(1) i8* @_ZNKSt10_Select1stISt4pairIKhSt6vectorIbSaIbEEEEclERKS5_(%"struct.std::_Select1st"* %this, %"struct.std::pair"* dereferenceable(48) %__x) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Select1st"*, align 8 %__x.addr = alloca %"struct.std::pair"*, align 8 store %"struct.std::_Select1st"* %this, %"struct.std::_Select1st"** %this.addr, align 8 store %"struct.std::pair"* %__x, %"struct.std::pair"** %__x.addr, align 8 %this1 = load %"struct.std::_Select1st"*, %"struct.std::_Select1st"** %this.addr, align 8 %0 = load %"struct.std::pair"*, %"struct.std::pair"** %__x.addr, align 8 %first = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %0, i32 0, i32 0 ret i8* %first } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local dereferenceable(48) %"struct.std::pair"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_valueEPKSt13_Rb_tree_nodeIS5_E(%"struct.std::_Rb_tree_node"* %__x) #0 comdat align 2 { entry: %__x.addr = alloca %"struct.std::_Rb_tree_node"*, align 8 store %"struct.std::_Rb_tree_node"* %__x, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %0 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x.addr, align 8 %call = call %"struct.std::pair"* @_ZNKSt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEE9_M_valptrEv(%"struct.std::_Rb_tree_node"* %0) ret %"struct.std::pair"* %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8key_compEv(%"class.std::_Rb_tree"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to %"struct.std::_Rb_tree_key_compare"* %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_key_compare"* %0, i32 0, i32 0 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE17_M_insert_unique_ESt23_Rb_tree_const_iteratorIS5_ERKS5_(%"class.std::_Rb_tree"* %this, %"struct.std::_Rb_tree_node_base"* %__pos.coerce, %"struct.std::pair"* dereferenceable(48) %__x) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %__pos = alloca %"struct.std::_Rb_tree_const_iterator", align 8 %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__x.addr = alloca %"struct.std::pair"*, align 8 %__an = alloca %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node", align 8 %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 8 %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %__pos, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %__pos.coerce, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store %"struct.std::pair"* %__x, %"struct.std::pair"** %__x.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 call void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_Alloc_nodeC2ERSB_(%"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* %__an, %"class.std::_Rb_tree"* dereferenceable(48) %this1) %0 = bitcast %"struct.std::_Rb_tree_const_iterator"* %agg.tmp to i8* %1 = bitcast %"struct.std::_Rb_tree_const_iterator"* %__pos to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 8, i1 false) %2 = load %"struct.std::pair"*, %"struct.std::pair"** %__x.addr, align 8 %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %agg.tmp, i32 0, i32 0 %3 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive2, align 8 %call = call %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE17_M_insert_unique_INSB_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_ERKS5_RT_(%"class.std::_Rb_tree"* %this1, %"struct.std::_Rb_tree_node_base"* %3, %"struct.std::pair"* dereferenceable(48) %2, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* dereferenceable(8) %__an) %coerce.dive3 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call, %"struct.std::_Rb_tree_node_base"** %coerce.dive3, align 8 %coerce.dive4 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 %4 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive4, align 8 ret %"struct.std::_Rb_tree_node_base"* %4 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_Alloc_nodeC2ERSB_(%"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* %this, %"class.std::_Rb_tree"* dereferenceable(48) %__t) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"*, align 8 %__t.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* %this, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"** %this.addr, align 8 store %"class.std::_Rb_tree"* %__t, %"class.std::_Rb_tree"** %__t.addr, align 8 %this1 = load %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"*, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"** %this.addr, align 8 %_M_t = getelementptr inbounds %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node", %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* %this1, i32 0, i32 0 %0 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %__t.addr, align 8 store %"class.std::_Rb_tree"* %0, %"class.std::_Rb_tree"** %_M_t, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE17_M_insert_unique_INSB_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS5_ESt23_Rb_tree_const_iteratorIS5_ERKS5_RT_(%"class.std::_Rb_tree"* %this, %"struct.std::_Rb_tree_node_base"* %__position.coerce, %"struct.std::pair"* dereferenceable(48) %__v, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* dereferenceable(8) %__node_gen) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %__position = alloca %"struct.std::_Rb_tree_const_iterator", align 8 %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__v.addr = alloca %"struct.std::pair"*, align 8 %__node_gen.addr = alloca %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"*, align 8 %__res = alloca %"struct.std::pair.11", align 8 %agg.tmp = alloca %"struct.std::_Rb_tree_const_iterator", align 8 %ref.tmp = alloca %"struct.std::_Select1st", align 1 %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %__position, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %__position.coerce, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store %"struct.std::pair"* %__v, %"struct.std::pair"** %__v.addr, align 8 store %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* %__node_gen, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"** %__node_gen.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %0 = bitcast %"struct.std::_Rb_tree_const_iterator"* %agg.tmp to i8* %1 = bitcast %"struct.std::_Rb_tree_const_iterator"* %__position to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 8, i1 false) %2 = load %"struct.std::pair"*, %"struct.std::pair"** %__v.addr, align 8 %call = call dereferenceable(1) i8* @_ZNKSt10_Select1stISt4pairIKhSt6vectorIbSaIbEEEEclERKS5_(%"struct.std::_Select1st"* %ref.tmp, %"struct.std::pair"* dereferenceable(48) %2) %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %agg.tmp, i32 0, i32 0 %3 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive2, align 8 %call3 = call { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS1_(%"class.std::_Rb_tree"* %this1, %"struct.std::_Rb_tree_node_base"* %3, i8* dereferenceable(1) %call) %4 = bitcast %"struct.std::pair.11"* %__res to { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %5 = getelementptr inbounds { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }, { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %4, i32 0, i32 0 %6 = extractvalue { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %call3, 0 store %"struct.std::_Rb_tree_node_base"* %6, %"struct.std::_Rb_tree_node_base"** %5, align 8 %7 = getelementptr inbounds { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }, { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %4, i32 0, i32 1 %8 = extractvalue { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %call3, 1 store %"struct.std::_Rb_tree_node_base"* %8, %"struct.std::_Rb_tree_node_base"** %7, align 8 %second = getelementptr inbounds %"struct.std::pair.11", %"struct.std::pair.11"* %__res, i32 0, i32 1 %9 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %second, align 8 %tobool = icmp ne %"struct.std::_Rb_tree_node_base"* %9, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %first = getelementptr inbounds %"struct.std::pair.11", %"struct.std::pair.11"* %__res, i32 0, i32 0 %10 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %first, align 8 %second4 = getelementptr inbounds %"struct.std::pair.11", %"struct.std::pair.11"* %__res, i32 0, i32 1 %11 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %second4, align 8 %12 = load %"struct.std::pair"*, %"struct.std::pair"** %__v.addr, align 8 %13 = load %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"*, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"** %__node_gen.addr, align 8 %call5 = call %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE10_M_insert_INSB_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS5_EPSt18_Rb_tree_node_baseSH_RKS5_RT_(%"class.std::_Rb_tree"* %this1, %"struct.std::_Rb_tree_node_base"* %10, %"struct.std::_Rb_tree_node_base"* %11, %"struct.std::pair"* dereferenceable(48) %12, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* dereferenceable(8) %13) %coerce.dive6 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call5, %"struct.std::_Rb_tree_node_base"** %coerce.dive6, align 8 br label %return if.end: ; preds = %entry %first7 = getelementptr inbounds %"struct.std::pair.11", %"struct.std::pair.11"* %__res, i32 0, i32 0 %14 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %first7, align 8 call void @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2EPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_iterator"* %retval, %"struct.std::_Rb_tree_node_base"* %14) br label %return return: ; preds = %if.end, %if.then %coerce.dive8 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 %15 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive8, align 8 ret %"struct.std::_Rb_tree_node_base"* %15 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS1_(%"class.std::_Rb_tree"* %this, %"struct.std::_Rb_tree_node_base"* %__position.coerce, i8* dereferenceable(1) %__k) #0 comdat align 2 { entry: %retval = alloca %"struct.std::pair.11", align 8 %__position = alloca %"struct.std::_Rb_tree_const_iterator", align 8 %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__k.addr = alloca i8*, align 8 %__pos = alloca %"struct.std::_Rb_tree_iterator", align 8 %ref.tmp = alloca %"struct.std::_Rb_tree_node_base"*, align 8 %__before = alloca %"struct.std::_Rb_tree_iterator", align 8 %ref.tmp37 = alloca %"struct.std::_Rb_tree_node_base"*, align 8 %__after = alloca %"struct.std::_Rb_tree_iterator", align 8 %ref.tmp55 = alloca %"struct.std::_Rb_tree_node_base"*, align 8 %ref.tmp69 = alloca %"struct.std::_Rb_tree_node_base"*, align 8 %ref.tmp78 = alloca %"struct.std::_Rb_tree_node_base"*, align 8 %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %__position, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %__position.coerce, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store i8* %__k, i8** %__k.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %call = call %"struct.std::_Rb_tree_node_base"* @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEE13_M_const_castEv(%"struct.std::_Rb_tree_const_iterator"* %__position) %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__pos, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call, %"struct.std::_Rb_tree_node_base"** %coerce.dive2, align 8 %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__pos, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node, align 8 %call3 = call %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_M_endEv(%"class.std::_Rb_tree"* %this1) %cmp = icmp eq %"struct.std::_Rb_tree_node_base"* %0, %call3 br i1 %cmp, label %if.then, label %if.else12 if.then: ; preds = %entry %call4 = call i64 @_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE4sizeEv(%"class.std::_Rb_tree"* %this1) %cmp5 = icmp ugt i64 %call4, 0 br i1 %cmp5, label %land.lhs.true, label %if.else land.lhs.true: ; preds = %if.then %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %1 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to %"struct.std::_Rb_tree_key_compare"* %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_key_compare"* %1, i32 0, i32 0 %call6 = call dereferenceable(8) %"struct.std::_Rb_tree_node_base"** @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE12_M_rightmostEv(%"class.std::_Rb_tree"* %this1) %2 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %call6, align 8 %call7 = call dereferenceable(1) i8* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %2) %3 = load i8*, i8** %__k.addr, align 8 %call8 = call zeroext i1 @_ZNKSt4lessIhEclERKhS2_(%"struct.std::less"* %_M_key_compare, i8* dereferenceable(1) %call7, i8* dereferenceable(1) %3) br i1 %call8, label %if.then9, label %if.else if.then9: ; preds = %land.lhs.true store %"struct.std::_Rb_tree_node_base"* null, %"struct.std::_Rb_tree_node_base"** %ref.tmp, align 8 %call10 = call dereferenceable(8) %"struct.std::_Rb_tree_node_base"** @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE12_M_rightmostEv(%"class.std::_Rb_tree"* %this1) call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_(%"struct.std::pair.11"* %retval, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %ref.tmp, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %call10) br label %return if.else: ; preds = %land.lhs.true, %if.then %4 = load i8*, i8** %__k.addr, align 8 %call11 = call { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE24_M_get_insert_unique_posERS1_(%"class.std::_Rb_tree"* %this1, i8* dereferenceable(1) %4) %5 = bitcast %"struct.std::pair.11"* %retval to { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %6 = getelementptr inbounds { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }, { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %5, i32 0, i32 0 %7 = extractvalue { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %call11, 0 store %"struct.std::_Rb_tree_node_base"* %7, %"struct.std::_Rb_tree_node_base"** %6, align 8 %8 = getelementptr inbounds { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }, { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %5, i32 0, i32 1 %9 = extractvalue { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %call11, 1 store %"struct.std::_Rb_tree_node_base"* %9, %"struct.std::_Rb_tree_node_base"** %8, align 8 br label %return if.else12: ; preds = %entry %_M_impl13 = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %10 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl13 to %"struct.std::_Rb_tree_key_compare"* %_M_key_compare14 = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_key_compare"* %10, i32 0, i32 0 %11 = load i8*, i8** %__k.addr, align 8 %_M_node15 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__pos, i32 0, i32 0 %12 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node15, align 8 %call16 = call dereferenceable(1) i8* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %12) %call17 = call zeroext i1 @_ZNKSt4lessIhEclERKhS2_(%"struct.std::less"* %_M_key_compare14, i8* dereferenceable(1) %11, i8* dereferenceable(1) %call16) br i1 %call17, label %if.then18, label %if.else44 if.then18: ; preds = %if.else12 %13 = bitcast %"struct.std::_Rb_tree_iterator"* %__before to i8* %14 = bitcast %"struct.std::_Rb_tree_iterator"* %__pos to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 8, i1 false) %_M_node19 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__pos, i32 0, i32 0 %15 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node19, align 8 %call20 = call dereferenceable(8) %"struct.std::_Rb_tree_node_base"** @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_M_leftmostEv(%"class.std::_Rb_tree"* %this1) %16 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %call20, align 8 %cmp21 = icmp eq %"struct.std::_Rb_tree_node_base"* %15, %16 br i1 %cmp21, label %if.then22, label %if.else25 if.then22: ; preds = %if.then18 %call23 = call dereferenceable(8) %"struct.std::_Rb_tree_node_base"** @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_M_leftmostEv(%"class.std::_Rb_tree"* %this1) %call24 = call dereferenceable(8) %"struct.std::_Rb_tree_node_base"** @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_M_leftmostEv(%"class.std::_Rb_tree"* %this1) call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_(%"struct.std::pair.11"* %retval, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %call23, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %call24) br label %return if.else25: ; preds = %if.then18 %_M_impl26 = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %17 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl26 to %"struct.std::_Rb_tree_key_compare"* %_M_key_compare27 = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_key_compare"* %17, i32 0, i32 0 %call28 = call dereferenceable(8) %"struct.std::_Rb_tree_iterator"* @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEmmEv(%"struct.std::_Rb_tree_iterator"* %__before) %_M_node29 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %call28, i32 0, i32 0 %18 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node29, align 8 %call30 = call dereferenceable(1) i8* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %18) %19 = load i8*, i8** %__k.addr, align 8 %call31 = call zeroext i1 @_ZNKSt4lessIhEclERKhS2_(%"struct.std::less"* %_M_key_compare27, i8* dereferenceable(1) %call30, i8* dereferenceable(1) %19) br i1 %call31, label %if.then32, label %if.else42 if.then32: ; preds = %if.else25 %_M_node33 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__before, i32 0, i32 0 %20 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node33, align 8 %call34 = call %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %20) %cmp35 = icmp eq %"struct.std::_Rb_tree_node"* %call34, null br i1 %cmp35, label %if.then36, label %if.else39 if.then36: ; preds = %if.then32 store %"struct.std::_Rb_tree_node_base"* null, %"struct.std::_Rb_tree_node_base"** %ref.tmp37, align 8 %_M_node38 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__before, i32 0, i32 0 call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_(%"struct.std::pair.11"* %retval, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %ref.tmp37, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %_M_node38) br label %return if.else39: ; preds = %if.then32 %_M_node40 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__pos, i32 0, i32 0 %_M_node41 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__pos, i32 0, i32 0 call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_(%"struct.std::pair.11"* %retval, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %_M_node40, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %_M_node41) br label %return if.else42: ; preds = %if.else25 %21 = load i8*, i8** %__k.addr, align 8 %call43 = call { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE24_M_get_insert_unique_posERS1_(%"class.std::_Rb_tree"* %this1, i8* dereferenceable(1) %21) %22 = bitcast %"struct.std::pair.11"* %retval to { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %23 = getelementptr inbounds { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }, { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %22, i32 0, i32 0 %24 = extractvalue { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %call43, 0 store %"struct.std::_Rb_tree_node_base"* %24, %"struct.std::_Rb_tree_node_base"** %23, align 8 %25 = getelementptr inbounds { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }, { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %22, i32 0, i32 1 %26 = extractvalue { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %call43, 1 store %"struct.std::_Rb_tree_node_base"* %26, %"struct.std::_Rb_tree_node_base"** %25, align 8 br label %return if.else44: ; preds = %if.else12 %_M_impl45 = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %27 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl45 to %"struct.std::_Rb_tree_key_compare"* %_M_key_compare46 = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_key_compare"* %27, i32 0, i32 0 %_M_node47 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__pos, i32 0, i32 0 %28 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node47, align 8 %call48 = call dereferenceable(1) i8* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %28) %29 = load i8*, i8** %__k.addr, align 8 %call49 = call zeroext i1 @_ZNKSt4lessIhEclERKhS2_(%"struct.std::less"* %_M_key_compare46, i8* dereferenceable(1) %call48, i8* dereferenceable(1) %29) br i1 %call49, label %if.then50, label %if.else76 if.then50: ; preds = %if.else44 %30 = bitcast %"struct.std::_Rb_tree_iterator"* %__after to i8* %31 = bitcast %"struct.std::_Rb_tree_iterator"* %__pos to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %30, i8* align 8 %31, i64 8, i1 false) %_M_node51 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__pos, i32 0, i32 0 %32 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node51, align 8 %call52 = call dereferenceable(8) %"struct.std::_Rb_tree_node_base"** @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE12_M_rightmostEv(%"class.std::_Rb_tree"* %this1) %33 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %call52, align 8 %cmp53 = icmp eq %"struct.std::_Rb_tree_node_base"* %32, %33 br i1 %cmp53, label %if.then54, label %if.else57 if.then54: ; preds = %if.then50 store %"struct.std::_Rb_tree_node_base"* null, %"struct.std::_Rb_tree_node_base"** %ref.tmp55, align 8 %call56 = call dereferenceable(8) %"struct.std::_Rb_tree_node_base"** @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE12_M_rightmostEv(%"class.std::_Rb_tree"* %this1) call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_(%"struct.std::pair.11"* %retval, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %ref.tmp55, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %call56) br label %return if.else57: ; preds = %if.then50 %_M_impl58 = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %34 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl58 to %"struct.std::_Rb_tree_key_compare"* %_M_key_compare59 = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_key_compare"* %34, i32 0, i32 0 %35 = load i8*, i8** %__k.addr, align 8 %call60 = call dereferenceable(8) %"struct.std::_Rb_tree_iterator"* @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEppEv(%"struct.std::_Rb_tree_iterator"* %__after) %_M_node61 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %call60, i32 0, i32 0 %36 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node61, align 8 %call62 = call dereferenceable(1) i8* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %36) %call63 = call zeroext i1 @_ZNKSt4lessIhEclERKhS2_(%"struct.std::less"* %_M_key_compare59, i8* dereferenceable(1) %35, i8* dereferenceable(1) %call62) br i1 %call63, label %if.then64, label %if.else74 if.then64: ; preds = %if.else57 %_M_node65 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__pos, i32 0, i32 0 %37 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node65, align 8 %call66 = call %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %37) %cmp67 = icmp eq %"struct.std::_Rb_tree_node"* %call66, null br i1 %cmp67, label %if.then68, label %if.else71 if.then68: ; preds = %if.then64 store %"struct.std::_Rb_tree_node_base"* null, %"struct.std::_Rb_tree_node_base"** %ref.tmp69, align 8 %_M_node70 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__pos, i32 0, i32 0 call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_(%"struct.std::pair.11"* %retval, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %ref.tmp69, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %_M_node70) br label %return if.else71: ; preds = %if.then64 %_M_node72 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__after, i32 0, i32 0 %_M_node73 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__after, i32 0, i32 0 call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_(%"struct.std::pair.11"* %retval, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %_M_node72, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %_M_node73) br label %return if.else74: ; preds = %if.else57 %38 = load i8*, i8** %__k.addr, align 8 %call75 = call { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE24_M_get_insert_unique_posERS1_(%"class.std::_Rb_tree"* %this1, i8* dereferenceable(1) %38) %39 = bitcast %"struct.std::pair.11"* %retval to { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %40 = getelementptr inbounds { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }, { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %39, i32 0, i32 0 %41 = extractvalue { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %call75, 0 store %"struct.std::_Rb_tree_node_base"* %41, %"struct.std::_Rb_tree_node_base"** %40, align 8 %42 = getelementptr inbounds { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }, { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %39, i32 0, i32 1 %43 = extractvalue { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %call75, 1 store %"struct.std::_Rb_tree_node_base"* %43, %"struct.std::_Rb_tree_node_base"** %42, align 8 br label %return if.else76: ; preds = %if.else44 %_M_node77 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__pos, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* null, %"struct.std::_Rb_tree_node_base"** %ref.tmp78, align 8 call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_(%"struct.std::pair.11"* %retval, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %_M_node77, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %ref.tmp78) br label %return return: ; preds = %if.else76, %if.else74, %if.else71, %if.then68, %if.then54, %if.else42, %if.else39, %if.then36, %if.then22, %if.else, %if.then9 %44 = bitcast %"struct.std::pair.11"* %retval to { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %45 = load { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }, { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %44, align 8 ret { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %45 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE10_M_insert_INSB_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS5_EPSt18_Rb_tree_node_baseSH_RKS5_RT_(%"class.std::_Rb_tree"* %this, %"struct.std::_Rb_tree_node_base"* %__x, %"struct.std::_Rb_tree_node_base"* %__p, %"struct.std::pair"* dereferenceable(48) %__v, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* dereferenceable(8) %__node_gen) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__x.addr = alloca %"struct.std::_Rb_tree_node_base"*, align 8 %__p.addr = alloca %"struct.std::_Rb_tree_node_base"*, align 8 %__v.addr = alloca %"struct.std::pair"*, align 8 %__node_gen.addr = alloca %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"*, align 8 %__insert_left = alloca i8, align 1 %ref.tmp = alloca %"struct.std::_Select1st", align 1 %__z = alloca %"struct.std::_Rb_tree_node"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store %"struct.std::_Rb_tree_node_base"* %__x, %"struct.std::_Rb_tree_node_base"** %__x.addr, align 8 store %"struct.std::_Rb_tree_node_base"* %__p, %"struct.std::_Rb_tree_node_base"** %__p.addr, align 8 store %"struct.std::pair"* %__v, %"struct.std::pair"** %__v.addr, align 8 store %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* %__node_gen, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"** %__node_gen.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %__x.addr, align 8 %cmp = icmp ne %"struct.std::_Rb_tree_node_base"* %0, null br i1 %cmp, label %lor.end, label %lor.lhs.false lor.lhs.false: ; preds = %entry %1 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %__p.addr, align 8 %call = call %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_M_endEv(%"class.std::_Rb_tree"* %this1) %cmp2 = icmp eq %"struct.std::_Rb_tree_node_base"* %1, %call br i1 %cmp2, label %lor.end, label %lor.rhs lor.rhs: ; preds = %lor.lhs.false %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %2 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to %"struct.std::_Rb_tree_key_compare"* %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_key_compare"* %2, i32 0, i32 0 %3 = load %"struct.std::pair"*, %"struct.std::pair"** %__v.addr, align 8 %call3 = call dereferenceable(1) i8* @_ZNKSt10_Select1stISt4pairIKhSt6vectorIbSaIbEEEEclERKS5_(%"struct.std::_Select1st"* %ref.tmp, %"struct.std::pair"* dereferenceable(48) %3) %4 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %__p.addr, align 8 %call4 = call dereferenceable(1) i8* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %4) %call5 = call zeroext i1 @_ZNKSt4lessIhEclERKhS2_(%"struct.std::less"* %_M_key_compare, i8* dereferenceable(1) %call3, i8* dereferenceable(1) %call4) br label %lor.end lor.end: ; preds = %lor.rhs, %lor.lhs.false, %entry %5 = phi i1 [ true, %lor.lhs.false ], [ true, %entry ], [ %call5, %lor.rhs ] %frombool = zext i1 %5 to i8 store i8 %frombool, i8* %__insert_left, align 1 %6 = load %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"*, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"** %__node_gen.addr, align 8 %7 = load %"struct.std::pair"*, %"struct.std::pair"** %__v.addr, align 8 %call6 = call %"struct.std::_Rb_tree_node"* @_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_Alloc_nodeclIS5_EEPSt13_Rb_tree_nodeIS5_ERKT_(%"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* %6, %"struct.std::pair"* dereferenceable(48) %7) store %"struct.std::_Rb_tree_node"* %call6, %"struct.std::_Rb_tree_node"** %__z, align 8 %8 = load i8, i8* %__insert_left, align 1 %tobool = trunc i8 %8 to i1 %9 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__z, align 8 %10 = bitcast %"struct.std::_Rb_tree_node"* %9 to %"struct.std::_Rb_tree_node_base"* %11 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %__p.addr, align 8 %_M_impl7 = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %12 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl7 to i8* %add.ptr = getelementptr inbounds i8, i8* %12, i64 8 %13 = bitcast i8* %add.ptr to %"struct.std::_Rb_tree_header"* %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %13, i32 0, i32 0 call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 zeroext %tobool, %"struct.std::_Rb_tree_node_base"* %10, %"struct.std::_Rb_tree_node_base"* %11, %"struct.std::_Rb_tree_node_base"* dereferenceable(32) %_M_header) #3 %_M_impl8 = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %14 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl8 to i8* %add.ptr9 = getelementptr inbounds i8, i8* %14, i64 8 %15 = bitcast i8* %add.ptr9 to %"struct.std::_Rb_tree_header"* %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %15, i32 0, i32 1 %16 = load i64, i64* %_M_node_count, align 8 %inc = add i64 %16, 1 store i64 %inc, i64* %_M_node_count, align 8 %17 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__z, align 8 %18 = bitcast %"struct.std::_Rb_tree_node"* %17 to %"struct.std::_Rb_tree_node_base"* call void @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2EPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_iterator"* %retval, %"struct.std::_Rb_tree_node_base"* %18) %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 %19 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 ret %"struct.std::_Rb_tree_node_base"* %19 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node_base"* @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKhSt6vectorIbSaIbEEEE13_M_const_castEv(%"struct.std::_Rb_tree_const_iterator"* %this) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 %this.addr = alloca %"struct.std::_Rb_tree_const_iterator"*, align 8 store %"struct.std::_Rb_tree_const_iterator"* %this, %"struct.std::_Rb_tree_const_iterator"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree_const_iterator"*, %"struct.std::_Rb_tree_const_iterator"** %this.addr, align 8 %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", %"struct.std::_Rb_tree_const_iterator"* %this1, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node, align 8 call void @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2EPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_iterator"* %retval, %"struct.std::_Rb_tree_node_base"* %0) %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %retval, i32 0, i32 0 %1 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 ret %"struct.std::_Rb_tree_node_base"* %1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE4sizeEv(%"class.std::_Rb_tree"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to i8* %add.ptr = getelementptr inbounds i8, i8* %0, i64 8 %1 = bitcast i8* %add.ptr to %"struct.std::_Rb_tree_header"* %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %1, i32 0, i32 1 %2 = load i64, i64* %_M_node_count, align 8 ret i64 %2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local dereferenceable(1) i8* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %__x) #0 comdat align 2 { entry: %__x.addr = alloca %"struct.std::_Rb_tree_node_base"*, align 8 %ref.tmp = alloca %"struct.std::_Select1st", align 1 store %"struct.std::_Rb_tree_node_base"* %__x, %"struct.std::_Rb_tree_node_base"** %__x.addr, align 8 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %__x.addr, align 8 %call = call dereferenceable(48) %"struct.std::pair"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_valueEPKSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %0) %call1 = call dereferenceable(1) i8* @_ZNKSt10_Select1stISt4pairIKhSt6vectorIbSaIbEEEEclERKS5_(%"struct.std::_Select1st"* %ref.tmp, %"struct.std::pair"* dereferenceable(48) %call) ret i8* %call1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %"struct.std::_Rb_tree_node_base"** @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE12_M_rightmostEv(%"class.std::_Rb_tree"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to i8* %add.ptr = getelementptr inbounds i8, i8* %0, i64 8 %1 = bitcast i8* %add.ptr to %"struct.std::_Rb_tree_header"* %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %1, i32 0, i32 0 %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %_M_header, i32 0, i32 3 ret %"struct.std::_Rb_tree_node_base"** %_M_right } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_(%"struct.std::pair.11"* %this, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %__a, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %__b) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::pair.11"*, align 8 %__a.addr = alloca %"struct.std::_Rb_tree_node_base"**, align 8 %__b.addr = alloca %"struct.std::_Rb_tree_node_base"**, align 8 store %"struct.std::pair.11"* %this, %"struct.std::pair.11"** %this.addr, align 8 store %"struct.std::_Rb_tree_node_base"** %__a, %"struct.std::_Rb_tree_node_base"*** %__a.addr, align 8 store %"struct.std::_Rb_tree_node_base"** %__b, %"struct.std::_Rb_tree_node_base"*** %__b.addr, align 8 %this1 = load %"struct.std::pair.11"*, %"struct.std::pair.11"** %this.addr, align 8 %0 = bitcast %"struct.std::pair.11"* %this1 to %"class.std::__pair_base.12"* %first = getelementptr inbounds %"struct.std::pair.11", %"struct.std::pair.11"* %this1, i32 0, i32 0 %1 = load %"struct.std::_Rb_tree_node_base"**, %"struct.std::_Rb_tree_node_base"*** %__a.addr, align 8 %2 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %1, align 8 store %"struct.std::_Rb_tree_node_base"* %2, %"struct.std::_Rb_tree_node_base"** %first, align 8 %second = getelementptr inbounds %"struct.std::pair.11", %"struct.std::pair.11"* %this1, i32 0, i32 1 %3 = load %"struct.std::_Rb_tree_node_base"**, %"struct.std::_Rb_tree_node_base"*** %__b.addr, align 8 %4 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %3, align 8 store %"struct.std::_Rb_tree_node_base"* %4, %"struct.std::_Rb_tree_node_base"** %second, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE24_M_get_insert_unique_posERS1_(%"class.std::_Rb_tree"* %this, i8* dereferenceable(1) %__k) #0 comdat align 2 { entry: %retval = alloca %"struct.std::pair.11", align 8 %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__k.addr = alloca i8*, align 8 %__x = alloca %"struct.std::_Rb_tree_node"*, align 8 %__y = alloca %"struct.std::_Rb_tree_node_base"*, align 8 %__comp = alloca i8, align 1 %__j = alloca %"struct.std::_Rb_tree_iterator", align 8 %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 %ref.tmp11 = alloca %"struct.std::_Rb_tree_node_base"*, align 8 %ref.tmp19 = alloca %"struct.std::_Rb_tree_node_base"*, align 8 %ref.tmp22 = alloca %"struct.std::_Rb_tree_node_base"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store i8* %__k, i8** %__k.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %call = call %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_M_beginEv(%"class.std::_Rb_tree"* %this1) store %"struct.std::_Rb_tree_node"* %call, %"struct.std::_Rb_tree_node"** %__x, align 8 %call2 = call %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_M_endEv(%"class.std::_Rb_tree"* %this1) store %"struct.std::_Rb_tree_node_base"* %call2, %"struct.std::_Rb_tree_node_base"** %__y, align 8 store i8 1, i8* %__comp, align 1 br label %while.cond while.cond: ; preds = %cond.end, %entry %0 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x, align 8 %cmp = icmp ne %"struct.std::_Rb_tree_node"* %0, null br i1 %cmp, label %while.body, label %while.end while.body: ; preds = %while.cond %1 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x, align 8 %2 = bitcast %"struct.std::_Rb_tree_node"* %1 to %"struct.std::_Rb_tree_node_base"* store %"struct.std::_Rb_tree_node_base"* %2, %"struct.std::_Rb_tree_node_base"** %__y, align 8 %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %3 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to %"struct.std::_Rb_tree_key_compare"* %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_key_compare"* %3, i32 0, i32 0 %4 = load i8*, i8** %__k.addr, align 8 %5 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x, align 8 %call3 = call dereferenceable(1) i8* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E(%"struct.std::_Rb_tree_node"* %5) %call4 = call zeroext i1 @_ZNKSt4lessIhEclERKhS2_(%"struct.std::less"* %_M_key_compare, i8* dereferenceable(1) %4, i8* dereferenceable(1) %call3) %frombool = zext i1 %call4 to i8 store i8 %frombool, i8* %__comp, align 1 %6 = load i8, i8* %__comp, align 1 %tobool = trunc i8 %6 to i1 br i1 %tobool, label %cond.true, label %cond.false cond.true: ; preds = %while.body %7 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x, align 8 %8 = bitcast %"struct.std::_Rb_tree_node"* %7 to %"struct.std::_Rb_tree_node_base"* %call5 = call %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE7_S_leftEPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %8) br label %cond.end cond.false: ; preds = %while.body %9 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x, align 8 %10 = bitcast %"struct.std::_Rb_tree_node"* %9 to %"struct.std::_Rb_tree_node_base"* %call6 = call %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %10) br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi %"struct.std::_Rb_tree_node"* [ %call5, %cond.true ], [ %call6, %cond.false ] store %"struct.std::_Rb_tree_node"* %cond, %"struct.std::_Rb_tree_node"** %__x, align 8 br label %while.cond while.end: ; preds = %while.cond %11 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %__y, align 8 call void @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEC2EPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_iterator"* %__j, %"struct.std::_Rb_tree_node_base"* %11) %12 = load i8, i8* %__comp, align 1 %tobool7 = trunc i8 %12 to i1 br i1 %tobool7, label %if.then, label %if.end13 if.then: ; preds = %while.end %call8 = call %"struct.std::_Rb_tree_node_base"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE5beginEv(%"class.std::_Rb_tree"* %this1) %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %ref.tmp, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call8, %"struct.std::_Rb_tree_node_base"** %coerce.dive, align 8 %call9 = call zeroext i1 @_ZNKSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEeqERKS6_(%"struct.std::_Rb_tree_iterator"* %__j, %"struct.std::_Rb_tree_iterator"* dereferenceable(8) %ref.tmp) br i1 %call9, label %if.then10, label %if.else if.then10: ; preds = %if.then %13 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x, align 8 %14 = bitcast %"struct.std::_Rb_tree_node"* %13 to %"struct.std::_Rb_tree_node_base"* store %"struct.std::_Rb_tree_node_base"* %14, %"struct.std::_Rb_tree_node_base"** %ref.tmp11, align 8 call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_(%"struct.std::pair.11"* %retval, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %ref.tmp11, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %__y) br label %return if.else: ; preds = %if.then %call12 = call dereferenceable(8) %"struct.std::_Rb_tree_iterator"* @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEmmEv(%"struct.std::_Rb_tree_iterator"* %__j) br label %if.end if.end: ; preds = %if.else br label %if.end13 if.end13: ; preds = %if.end, %while.end %_M_impl14 = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %15 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl14 to %"struct.std::_Rb_tree_key_compare"* %_M_key_compare15 = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_key_compare"* %15, i32 0, i32 0 %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__j, i32 0, i32 0 %16 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node, align 8 %call16 = call dereferenceable(1) i8* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %16) %17 = load i8*, i8** %__k.addr, align 8 %call17 = call zeroext i1 @_ZNKSt4lessIhEclERKhS2_(%"struct.std::less"* %_M_key_compare15, i8* dereferenceable(1) %call16, i8* dereferenceable(1) %17) br i1 %call17, label %if.then18, label %if.end20 if.then18: ; preds = %if.end13 %18 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__x, align 8 %19 = bitcast %"struct.std::_Rb_tree_node"* %18 to %"struct.std::_Rb_tree_node_base"* store %"struct.std::_Rb_tree_node_base"* %19, %"struct.std::_Rb_tree_node_base"** %ref.tmp19, align 8 call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_(%"struct.std::pair.11"* %retval, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %ref.tmp19, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %__y) br label %return if.end20: ; preds = %if.end13 %_M_node21 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %__j, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* null, %"struct.std::_Rb_tree_node_base"** %ref.tmp22, align 8 call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2ERKS1_S4_(%"struct.std::pair.11"* %retval, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %_M_node21, %"struct.std::_Rb_tree_node_base"** dereferenceable(8) %ref.tmp22) br label %return return: ; preds = %if.end20, %if.then18, %if.then10 %20 = bitcast %"struct.std::pair.11"* %retval to { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %21 = load { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }, { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* }* %20, align 8 ret { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %21 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %"struct.std::_Rb_tree_node_base"** @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_M_leftmostEv(%"class.std::_Rb_tree"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", %"class.std::_Rb_tree"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Rb_tree_impl"* %_M_impl to i8* %add.ptr = getelementptr inbounds i8, i8* %0, i64 8 %1 = bitcast i8* %add.ptr to %"struct.std::_Rb_tree_header"* %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", %"struct.std::_Rb_tree_header"* %1, i32 0, i32 0 %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %_M_header, i32 0, i32 2 ret %"struct.std::_Rb_tree_node_base"** %_M_left } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %"struct.std::_Rb_tree_iterator"* @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEmmEv(%"struct.std::_Rb_tree_iterator"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_iterator"*, align 8 store %"struct.std::_Rb_tree_iterator"* %this, %"struct.std::_Rb_tree_iterator"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree_iterator"*, %"struct.std::_Rb_tree_iterator"** %this.addr, align 8 %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %this1, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node, align 8 %call = call %"struct.std::_Rb_tree_node_base"* @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %0) #10 %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %this1, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call, %"struct.std::_Rb_tree_node_base"** %_M_node2, align 8 ret %"struct.std::_Rb_tree_iterator"* %this1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %"struct.std::_Rb_tree_iterator"* @_ZNSt17_Rb_tree_iteratorISt4pairIKhSt6vectorIbSaIbEEEEppEv(%"struct.std::_Rb_tree_iterator"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree_iterator"*, align 8 store %"struct.std::_Rb_tree_iterator"* %this, %"struct.std::_Rb_tree_iterator"** %this.addr, align 8 %this1 = load %"struct.std::_Rb_tree_iterator"*, %"struct.std::_Rb_tree_iterator"** %this.addr, align 8 %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %this1, i32 0, i32 0 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %_M_node, align 8 %call = call %"struct.std::_Rb_tree_node_base"* @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %0) #10 %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", %"struct.std::_Rb_tree_iterator"* %this1, i32 0, i32 0 store %"struct.std::_Rb_tree_node_base"* %call, %"struct.std::_Rb_tree_node_base"** %_M_node2, align 8 ret %"struct.std::_Rb_tree_iterator"* %this1 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local dereferenceable(48) %"struct.std::pair"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE8_S_valueEPKSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"* %__x) #0 comdat align 2 { entry: %__x.addr = alloca %"struct.std::_Rb_tree_node_base"*, align 8 store %"struct.std::_Rb_tree_node_base"* %__x, %"struct.std::_Rb_tree_node_base"** %__x.addr, align 8 %0 = load %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"** %__x.addr, align 8 %1 = bitcast %"struct.std::_Rb_tree_node_base"* %0 to %"struct.std::_Rb_tree_node"* %call = call %"struct.std::pair"* @_ZNKSt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEE9_M_valptrEv(%"struct.std::_Rb_tree_node"* %1) ret %"struct.std::pair"* %call } ; Function Attrs: nounwind readonly declare dso_local %"struct.std::_Rb_tree_node_base"* @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"*) #14 ; Function Attrs: nounwind readonly declare dso_local %"struct.std::_Rb_tree_node_base"* @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(%"struct.std::_Rb_tree_node_base"*) #14 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node"* @_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_Alloc_nodeclIS5_EEPSt13_Rb_tree_nodeIS5_ERKT_(%"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* %this, %"struct.std::pair"* dereferenceable(48) %__arg) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"*, align 8 %__arg.addr = alloca %"struct.std::pair"*, align 8 store %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* %this, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"** %this.addr, align 8 store %"struct.std::pair"* %__arg, %"struct.std::pair"** %__arg.addr, align 8 %this1 = load %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"*, %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"** %this.addr, align 8 %_M_t = getelementptr inbounds %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node", %"struct.std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_Alloc_node"* %this1, i32 0, i32 0 %0 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %_M_t, align 8 %1 = load %"struct.std::pair"*, %"struct.std::pair"** %__arg.addr, align 8 %call = call %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE14_M_create_nodeERKS5_(%"class.std::_Rb_tree"* %0, %"struct.std::pair"* dereferenceable(48) %1) ret %"struct.std::_Rb_tree_node"* %call } ; Function Attrs: nounwind declare dso_local void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 zeroext, %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* dereferenceable(32)) #11 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE14_M_create_nodeERKS5_(%"class.std::_Rb_tree"* %this, %"struct.std::pair"* dereferenceable(48) %__x) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__x.addr = alloca %"struct.std::pair"*, align 8 %__tmp = alloca %"struct.std::_Rb_tree_node"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store %"struct.std::pair"* %__x, %"struct.std::pair"** %__x.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %call = call %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_M_get_nodeEv(%"class.std::_Rb_tree"* %this1) store %"struct.std::_Rb_tree_node"* %call, %"struct.std::_Rb_tree_node"** %__tmp, align 8 %0 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__tmp, align 8 %1 = load %"struct.std::pair"*, %"struct.std::pair"** %__x.addr, align 8 call void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE17_M_construct_nodeEPSt13_Rb_tree_nodeIS5_ERKS5_(%"class.std::_Rb_tree"* %this1, %"struct.std::_Rb_tree_node"* %0, %"struct.std::pair"* dereferenceable(48) %1) %2 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__tmp, align 8 ret %"struct.std::_Rb_tree_node"* %2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_M_get_nodeEv(%"class.std::_Rb_tree"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 %call = call dereferenceable(1) %"class.std::allocator.4"* @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE21_M_get_Node_allocatorEv(%"class.std::_Rb_tree"* %this1) %call2 = call %"struct.std::_Rb_tree_node"* @_ZN9__gnu_cxx14__alloc_traitsISaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEEE8allocateERS9_m(%"class.std::allocator.4"* dereferenceable(1) %call, i64 1) ret %"struct.std::_Rb_tree_node"* %call2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE17_M_construct_nodeEPSt13_Rb_tree_nodeIS5_ERKS5_(%"class.std::_Rb_tree"* %this, %"struct.std::_Rb_tree_node"* %__node, %"struct.std::pair"* dereferenceable(48) %__x) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::_Rb_tree"*, align 8 %__node.addr = alloca %"struct.std::_Rb_tree_node"*, align 8 %__x.addr = alloca %"struct.std::pair"*, align 8 %ref.tmp = alloca %"class.std::allocator.7", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.std::_Rb_tree"* %this, %"class.std::_Rb_tree"** %this.addr, align 8 store %"struct.std::_Rb_tree_node"* %__node, %"struct.std::_Rb_tree_node"** %__node.addr, align 8 store %"struct.std::pair"* %__x, %"struct.std::pair"** %__x.addr, align 8 %this1 = load %"class.std::_Rb_tree"*, %"class.std::_Rb_tree"** %this.addr, align 8 invoke void @_ZNKSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE13get_allocatorEv(%"class.std::allocator.7"* sret %ref.tmp, %"class.std::_Rb_tree"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %0 = bitcast %"class.std::allocator.7"* %ref.tmp to %"class.__gnu_cxx::new_allocator.8"* %1 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__node.addr, align 8 %call = invoke %"struct.std::pair"* @_ZNSt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEE9_M_valptrEv(%"struct.std::_Rb_tree_node"* %1) to label %invoke.cont3 unwind label %lpad2 invoke.cont3: ; preds = %invoke.cont %2 = load %"struct.std::pair"*, %"struct.std::pair"** %__x.addr, align 8 invoke void @_ZN9__gnu_cxx13new_allocatorISt4pairIKhSt6vectorIbSaIbEEEE9constructEPS6_RKS6_(%"class.__gnu_cxx::new_allocator.8"* %0, %"struct.std::pair"* %call, %"struct.std::pair"* dereferenceable(48) %2) to label %invoke.cont4 unwind label %lpad2 invoke.cont4: ; preds = %invoke.cont3 call void @_ZNSaISt4pairIKhSt6vectorIbSaIbEEEED2Ev(%"class.std::allocator.7"* %ref.tmp) #3 br label %try.cont lpad: ; preds = %entry %3 = landingpad { i8*, i32 } catch i8* null %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 br label %catch lpad2: ; preds = %invoke.cont3, %invoke.cont %6 = landingpad { i8*, i32 } catch i8* null %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 call void @_ZNSaISt4pairIKhSt6vectorIbSaIbEEEED2Ev(%"class.std::allocator.7"* %ref.tmp) #3 br label %catch catch: ; preds = %lpad2, %lpad %exn = load i8*, i8** %exn.slot, align 8 %9 = call i8* @__cxa_begin_catch(i8* %exn) #3 %10 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %__node.addr, align 8 invoke void @_ZNSt8_Rb_treeIhSt4pairIKhSt6vectorIbSaIbEEESt10_Select1stIS5_ESt4lessIhESaIS5_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS5_E(%"class.std::_Rb_tree"* %this1, %"struct.std::_Rb_tree_node"* %10) to label %invoke.cont6 unwind label %lpad5 invoke.cont6: ; preds = %catch invoke void @__cxa_rethrow() #19 to label %unreachable unwind label %lpad5 lpad5: ; preds = %invoke.cont6, %catch %11 = landingpad { i8*, i32 } cleanup %12 = extractvalue { i8*, i32 } %11, 0 store i8* %12, i8** %exn.slot, align 8 %13 = extractvalue { i8*, i32 } %11, 1 store i32 %13, i32* %ehselector.slot, align 4 invoke void @__cxa_end_catch() to label %invoke.cont7 unwind label %terminate.lpad invoke.cont7: ; preds = %lpad5 br label %eh.resume try.cont: ; preds = %invoke.cont4 ret void eh.resume: ; preds = %invoke.cont7 %exn8 = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn8, 0 %lpad.val9 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val9 terminate.lpad: ; preds = %lpad5 %14 = landingpad { i8*, i32 } catch i8* null %15 = extractvalue { i8*, i32 } %14, 0 call void @__clang_call_terminate(i8* %15) #16 unreachable unreachable: ; preds = %invoke.cont6 unreachable } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node"* @_ZN9__gnu_cxx14__alloc_traitsISaISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEEE8allocateERS9_m(%"class.std::allocator.4"* dereferenceable(1) %__a, i64 %__n) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator.4"*, align 8 %__n.addr = alloca i64, align 8 store %"class.std::allocator.4"* %__a, %"class.std::allocator.4"** %__a.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %0 = load %"class.std::allocator.4"*, %"class.std::allocator.4"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator.4"* %0 to %"class.__gnu_cxx::new_allocator.5"* %2 = load i64, i64* %__n.addr, align 8 %call = call %"struct.std::_Rb_tree_node"* @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.5"* %1, i64 %2, i8* null) ret %"struct.std::_Rb_tree_node"* %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %"struct.std::_Rb_tree_node"* @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.5"* %this, i64 %__n, i8* %0) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.5"*, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca i8*, align 8 store %"class.__gnu_cxx::new_allocator.5"* %this, %"class.__gnu_cxx::new_allocator.5"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 store i8* %0, i8** %.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.5"*, %"class.__gnu_cxx::new_allocator.5"** %this.addr, align 8 %1 = load i64, i64* %__n.addr, align 8 %call = call i64 @_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEE8max_sizeEv(%"class.__gnu_cxx::new_allocator.5"* %this1) #3 %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZSt17__throw_bad_allocv() #19 unreachable if.end: ; preds = %entry %2 = load i64, i64* %__n.addr, align 8 %mul = mul i64 %2, 80 %call2 = call i8* @_Znwm(i64 %mul) %3 = bitcast i8* %call2 to %"struct.std::_Rb_tree_node"* ret %"struct.std::_Rb_tree_node"* %3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKhSt6vectorIbSaIbEEEEE8max_sizeEv(%"class.__gnu_cxx::new_allocator.5"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.5"*, align 8 store %"class.__gnu_cxx::new_allocator.5"* %this, %"class.__gnu_cxx::new_allocator.5"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.5"*, %"class.__gnu_cxx::new_allocator.5"** %this.addr, align 8 ret i64 230584300921369395 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt4pairIKhSt6vectorIbSaIbEEEE9constructEPS6_RKS6_(%"class.__gnu_cxx::new_allocator.8"* %this, %"struct.std::pair"* %__p, %"struct.std::pair"* dereferenceable(48) %__val) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.8"*, align 8 %__p.addr = alloca %"struct.std::pair"*, align 8 %__val.addr = alloca %"struct.std::pair"*, align 8 store %"class.__gnu_cxx::new_allocator.8"* %this, %"class.__gnu_cxx::new_allocator.8"** %this.addr, align 8 store %"struct.std::pair"* %__p, %"struct.std::pair"** %__p.addr, align 8 store %"struct.std::pair"* %__val, %"struct.std::pair"** %__val.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.8"*, %"class.__gnu_cxx::new_allocator.8"** %this.addr, align 8 %0 = load %"struct.std::pair"*, %"struct.std::pair"** %__p.addr, align 8 %1 = bitcast %"struct.std::pair"* %0 to i8* %2 = bitcast i8* %1 to %"struct.std::pair"* %3 = load %"struct.std::pair"*, %"struct.std::pair"** %__val.addr, align 8 call void @_ZNSt4pairIKhSt6vectorIbSaIbEEEC2ERKS4_(%"struct.std::pair"* %2, %"struct.std::pair"* dereferenceable(48) %3) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt4pairIKhSt6vectorIbSaIbEEEC2ERKS4_(%"struct.std::pair"* %this, %"struct.std::pair"* dereferenceable(48) %0) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::pair"*, align 8 %.addr = alloca %"struct.std::pair"*, align 8 store %"struct.std::pair"* %this, %"struct.std::pair"** %this.addr, align 8 store %"struct.std::pair"* %0, %"struct.std::pair"** %.addr, align 8 %this1 = load %"struct.std::pair"*, %"struct.std::pair"** %this.addr, align 8 %1 = bitcast %"struct.std::pair"* %this1 to %"class.std::__pair_base"* %2 = load %"struct.std::pair"*, %"struct.std::pair"** %.addr, align 8 %3 = bitcast %"struct.std::pair"* %2 to %"class.std::__pair_base"* %first = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %this1, i32 0, i32 0 %4 = load %"struct.std::pair"*, %"struct.std::pair"** %.addr, align 8 %first2 = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %4, i32 0, i32 0 %5 = load i8, i8* %first2, align 8 store i8 %5, i8* %first, align 8 %second = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %this1, i32 0, i32 1 %6 = load %"struct.std::pair"*, %"struct.std::pair"** %.addr, align 8 %second3 = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %6, i32 0, i32 1 call void @_ZNSt6vectorIbSaIbEEC2ERKS1_(%"class.std::vector.0"* %second, %"class.std::vector.0"* dereferenceable(40) %second3) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(%"class.std::vector.0"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 %ref.tmp = alloca %"struct.std::_Bit_const_iterator", align 8 %ref.tmp2 = alloca %"struct.std::_Bit_const_iterator", align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %call = call { i64*, i32 } @_ZNKSt6vectorIbSaIbEE3endEv(%"class.std::vector.0"* %this1) %0 = bitcast %"struct.std::_Bit_const_iterator"* %ref.tmp to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 %2 = extractvalue { i64*, i32 } %call, 0 store i64* %2, i64** %1, align 8 %3 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 %4 = extractvalue { i64*, i32 } %call, 1 store i32 %4, i32* %3, align 8 %5 = bitcast %"struct.std::_Bit_const_iterator"* %ref.tmp to %"struct.std::_Bit_iterator_base"* %call3 = call { i64*, i32 } @_ZNKSt6vectorIbSaIbEE5beginEv(%"class.std::vector.0"* %this1) %6 = bitcast %"struct.std::_Bit_const_iterator"* %ref.tmp2 to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 %8 = extractvalue { i64*, i32 } %call3, 0 store i64* %8, i64** %7, align 8 %9 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 %10 = extractvalue { i64*, i32 } %call3, 1 store i32 %10, i32* %9, align 8 %11 = bitcast %"struct.std::_Bit_const_iterator"* %ref.tmp2 to %"struct.std::_Bit_iterator_base"* %call4 = call i64 @_ZStmiRKSt18_Bit_iterator_baseS1_(%"struct.std::_Bit_iterator_base"* dereferenceable(16) %5, %"struct.std::_Bit_iterator_base"* dereferenceable(16) %11) ret i64 %call4 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorIbSaIbEE8capacityEv(%"class.std::vector.0"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 %ref.tmp = alloca %"struct.std::_Bit_const_iterator", align 8 %ref.tmp2 = alloca %"struct.std::_Bit_const_iterator", align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %0, i32 0, i32 0 %call = call i64* @_ZNKSt13_Bvector_baseISaIbEE13_Bvector_impl11_M_end_addrEv(%"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl) call void @_ZNSt19_Bit_const_iteratorC2EPmj(%"struct.std::_Bit_const_iterator"* %ref.tmp, i64* %call, i32 0) %1 = bitcast %"struct.std::_Bit_const_iterator"* %ref.tmp to %"struct.std::_Bit_iterator_base"* %call3 = call { i64*, i32 } @_ZNKSt6vectorIbSaIbEE5beginEv(%"class.std::vector.0"* %this1) %2 = bitcast %"struct.std::_Bit_const_iterator"* %ref.tmp2 to { i64*, i32 }* %3 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %2, i32 0, i32 0 %4 = extractvalue { i64*, i32 } %call3, 0 store i64* %4, i64** %3, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %2, i32 0, i32 1 %6 = extractvalue { i64*, i32 } %call3, 1 store i32 %6, i32* %5, align 8 %7 = bitcast %"struct.std::_Bit_const_iterator"* %ref.tmp2 to %"struct.std::_Bit_iterator_base"* %call4 = call i64 @_ZStmiRKSt18_Bit_iterator_baseS1_(%"struct.std::_Bit_iterator_base"* dereferenceable(16) %1, %"struct.std::_Bit_iterator_base"* dereferenceable(16) %7) ret i64 %call4 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv(%"struct.std::_Bvector_base"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bvector_base"*, align 8 %__n = alloca i64, align 8 %ref.tmp = alloca %"struct.std::_Bit_iterator", align 8 store %"struct.std::_Bvector_base"* %this, %"struct.std::_Bvector_base"** %this.addr, align 8 %this1 = load %"struct.std::_Bvector_base"*, %"struct.std::_Bvector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl, i32 0, i32 0 %0 = bitcast %"struct.std::_Bit_iterator"* %_M_start to %"struct.std::_Bit_iterator_base"* %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %0, i32 0, i32 0 %1 = load i64*, i64** %_M_p, align 8 %tobool = icmp ne i64* %1, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %_M_impl2 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 %call = call i64* @_ZNKSt13_Bvector_baseISaIbEE13_Bvector_impl11_M_end_addrEv(%"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl2) %_M_impl3 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 %_M_start4 = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl3, i32 0, i32 0 %2 = bitcast %"struct.std::_Bit_iterator"* %_M_start4 to %"struct.std::_Bit_iterator_base"* %_M_p5 = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %2, i32 0, i32 0 %3 = load i64*, i64** %_M_p5, align 8 %sub.ptr.lhs.cast = ptrtoint i64* %call to i64 %sub.ptr.rhs.cast = ptrtoint i64* %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 store i64 %sub.ptr.div, i64* %__n, align 8 %_M_impl6 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 %4 = bitcast %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl6 to %"class.std::allocator.1"* %_M_impl7 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl7, i32 0, i32 2 %5 = load i64*, i64** %_M_end_of_storage, align 8 %6 = load i64, i64* %__n, align 8 %idx.neg = sub i64 0, %6 %add.ptr = getelementptr inbounds i64, i64* %5, i64 %idx.neg %7 = load i64, i64* %__n, align 8 call void @_ZN9__gnu_cxx14__alloc_traitsISaImEE10deallocateERS1_Pmm(%"class.std::allocator.1"* dereferenceable(1) %4, i64* %add.ptr, i64 %7) call void @_ZNSt13_Bit_iteratorC2Ev(%"struct.std::_Bit_iterator"* %ref.tmp) %_M_impl8 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl8, i32 0, i32 1 %8 = bitcast %"struct.std::_Bit_iterator"* %_M_finish to i8* %9 = bitcast %"struct.std::_Bit_iterator"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 12, i1 false) %_M_impl9 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 %_M_start10 = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl9, i32 0, i32 0 %10 = bitcast %"struct.std::_Bit_iterator"* %_M_start10 to i8* %11 = bitcast %"struct.std::_Bit_iterator"* %_M_finish to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %10, i8* align 8 %11, i64 12, i1 false) %_M_impl11 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 %_M_end_of_storage12 = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl11, i32 0, i32 2 store i64* null, i64** %_M_end_of_storage12, align 8 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorIbSaIbEE13_M_initializeEm(%"class.std::vector.0"* %this, i64 %__n) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 %__n.addr = alloca i64, align 8 %__q = alloca i64*, align 8 %ref.tmp = alloca %"struct.std::_Bit_iterator", align 8 %ref.tmp7 = alloca %"struct.std::_Bit_iterator", align 8 %ref.tmp10 = alloca %"struct.std::_Bit_iterator", align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = load i64, i64* %__n.addr, align 8 %tobool = icmp ne i64 %0, 0 br i1 %tobool, label %if.then, label %if.else if.then: ; preds = %entry %1 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %2 = load i64, i64* %__n.addr, align 8 %call = call i64* @_ZNSt13_Bvector_baseISaIbEE11_M_allocateEm(%"struct.std::_Bvector_base"* %1, i64 %2) store i64* %call, i64** %__q, align 8 %3 = load i64*, i64** %__q, align 8 %4 = load i64, i64* %__n.addr, align 8 %call2 = call i64 @_ZNSt13_Bvector_baseISaIbEE8_S_nwordEm(i64 %4) %add.ptr = getelementptr inbounds i64, i64* %3, i64 %call2 %5 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %5, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl, i32 0, i32 2 store i64* %add.ptr, i64** %_M_end_of_storage, align 8 %6 = load i64*, i64** %__q, align 8 %call3 = call i64* @_ZSt11__addressofImEPT_RS0_(i64* dereferenceable(8) %6) call void @_ZNSt13_Bit_iteratorC2EPmj(%"struct.std::_Bit_iterator"* %ref.tmp, i64* %call3, i32 0) %7 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl4 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %7, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl4, i32 0, i32 0 %8 = bitcast %"struct.std::_Bit_iterator"* %_M_start to i8* %9 = bitcast %"struct.std::_Bit_iterator"* %ref.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 12, i1 false) br label %if.end if.else: ; preds = %entry %10 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl5 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %10, i32 0, i32 0 %_M_end_of_storage6 = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl5, i32 0, i32 2 store i64* null, i64** %_M_end_of_storage6, align 8 call void @_ZNSt13_Bit_iteratorC2EPmj(%"struct.std::_Bit_iterator"* %ref.tmp7, i64* null, i32 0) %11 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl8 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %11, i32 0, i32 0 %_M_start9 = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl8, i32 0, i32 0 %12 = bitcast %"struct.std::_Bit_iterator"* %_M_start9 to i8* %13 = bitcast %"struct.std::_Bit_iterator"* %ref.tmp7 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %12, i8* align 8 %13, i64 12, i1 false) br label %if.end if.end: ; preds = %if.else, %if.then %14 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl11 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %14, i32 0, i32 0 %_M_start12 = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl11, i32 0, i32 0 %15 = load i64, i64* %__n.addr, align 8 %call13 = call { i64*, i32 } @_ZNKSt13_Bit_iteratorplEl(%"struct.std::_Bit_iterator"* %_M_start12, i64 %15) %16 = bitcast %"struct.std::_Bit_iterator"* %ref.tmp10 to { i64*, i32 }* %17 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 0 %18 = extractvalue { i64*, i32 } %call13, 0 store i64* %18, i64** %17, align 8 %19 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 1 %20 = extractvalue { i64*, i32 } %call13, 1 store i32 %20, i32* %19, align 8 %21 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl14 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %21, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl14, i32 0, i32 1 %22 = bitcast %"struct.std::_Bit_iterator"* %_M_finish to i8* %23 = bitcast %"struct.std::_Bit_iterator"* %ref.tmp10 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %22, i8* align 8 %23, i64 12, i1 false) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator(%"class.std::vector.0"* %this, i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, %"struct.std::_Bit_iterator"* byval(%"struct.std::_Bit_iterator") align 8 %__result) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_const_iterator", align 8 %__last = alloca %"struct.std::_Bit_const_iterator", align 8 %this.addr = alloca %"class.std::vector.0"*, align 8 %__q = alloca i64*, align 8 %agg.tmp = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp5 = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp6 = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_const_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_const_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %6 = bitcast %"struct.std::_Bit_const_iterator"* %__first to %"struct.std::_Bit_iterator_base"* %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %6, i32 0, i32 0 %7 = load i64*, i64** %_M_p, align 8 %8 = bitcast %"struct.std::_Bit_const_iterator"* %__last to %"struct.std::_Bit_iterator_base"* %_M_p2 = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %8, i32 0, i32 0 %9 = load i64*, i64** %_M_p2, align 8 %10 = bitcast %"struct.std::_Bit_iterator"* %__result to %"struct.std::_Bit_iterator_base"* %_M_p3 = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %10, i32 0, i32 0 %11 = load i64*, i64** %_M_p3, align 8 %call = call i64* @_ZSt4copyIPmS0_ET0_T_S2_S1_(i64* %7, i64* %9, i64* %11) store i64* %call, i64** %__q, align 8 %12 = bitcast %"struct.std::_Bit_const_iterator"* %__last to %"struct.std::_Bit_iterator_base"* %_M_p4 = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %12, i32 0, i32 0 %13 = load i64*, i64** %_M_p4, align 8 call void @_ZNSt19_Bit_const_iteratorC2EPmj(%"struct.std::_Bit_const_iterator"* %agg.tmp, i64* %13, i32 0) %14 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp5 to i8* %15 = bitcast %"struct.std::_Bit_const_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 %15, i64 16, i1 false) %16 = load i64*, i64** %__q, align 8 call void @_ZNSt13_Bit_iteratorC2EPmj(%"struct.std::_Bit_iterator"* %agg.tmp6, i64* %16, i32 0) %17 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %18 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %17, i32 0, i32 0 %19 = load i64*, i64** %18, align 8 %20 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %17, i32 0, i32 1 %21 = load i32, i32* %20, align 8 %22 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp5 to { i64*, i32 }* %23 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %22, i32 0, i32 0 %24 = load i64*, i64** %23, align 8 %25 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %22, i32 0, i32 1 %26 = load i32, i32* %25, align 8 %27 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp6 to { i64*, i32 }* %28 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %27, i32 0, i32 0 %29 = load i64*, i64** %28, align 8 %30 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %27, i32 0, i32 1 %31 = load i32, i32* %30, align 8 %call7 = call { i64*, i32 } @_ZSt4copyISt19_Bit_const_iteratorSt13_Bit_iteratorET0_T_S3_S2_(i64* %19, i32 %21, i64* %24, i32 %26, i64* %29, i32 %31) %32 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %33 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %32, i32 0, i32 0 %34 = extractvalue { i64*, i32 } %call7, 0 store i64* %34, i64** %33, align 8 %35 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %32, i32 0, i32 1 %36 = extractvalue { i64*, i32 } %call7, 1 store i32 %36, i32* %35, align 8 %37 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %38 = load { i64*, i32 }, { i64*, i32 }* %37, align 8 ret { i64*, i32 } %38 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(%"class.std::vector.0"* %this) #6 comdat align 2 { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %this.addr = alloca %"class.std::vector.0"*, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl, i32 0, i32 0 %1 = bitcast %"struct.std::_Bit_iterator"* %retval to i8* %2 = bitcast %"struct.std::_Bit_iterator"* %_M_start to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %1, i8* align 8 %2, i64 16, i1 false) %3 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %4 = load { i64*, i32 }, { i64*, i32 }* %3, align 8 ret { i64*, i32 } %4 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64* @_ZNKSt13_Bvector_baseISaIbEE13_Bvector_impl11_M_end_addrEv(%"struct.std::_Bvector_base >::_Bvector_impl"* %this) #0 comdat align 2 { entry: %retval = alloca i64*, align 8 %this.addr = alloca %"struct.std::_Bvector_base >::_Bvector_impl"*, align 8 store %"struct.std::_Bvector_base >::_Bvector_impl"* %this, %"struct.std::_Bvector_base >::_Bvector_impl"** %this.addr, align 8 %this1 = load %"struct.std::_Bvector_base >::_Bvector_impl"*, %"struct.std::_Bvector_base >::_Bvector_impl"** %this.addr, align 8 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %this1, i32 0, i32 2 %0 = load i64*, i64** %_M_end_of_storage, align 8 %tobool = icmp ne i64* %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %_M_end_of_storage2 = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %this1, i32 0, i32 2 %1 = load i64*, i64** %_M_end_of_storage2, align 8 %arrayidx = getelementptr inbounds i64, i64* %1, i64 -1 %call = call i64* @_ZSt11__addressofImEPT_RS0_(i64* dereferenceable(8) %arrayidx) %add.ptr = getelementptr inbounds i64, i64* %call, i64 1 store i64* %add.ptr, i64** %retval, align 8 br label %return if.end: ; preds = %entry store i64* null, i64** %retval, align 8 br label %return return: ; preds = %if.end, %if.then %2 = load i64*, i64** %retval, align 8 ret i64* %2 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64* @_ZSt11__addressofImEPT_RS0_(i64* dereferenceable(8) %__r) #6 comdat { entry: %__r.addr = alloca i64*, align 8 store i64* %__r, i64** %__r.addr, align 8 %0 = load i64*, i64** %__r.addr, align 8 ret i64* %0 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx14__alloc_traitsISaImEE10deallocateERS1_Pmm(%"class.std::allocator.1"* dereferenceable(1) %__a, i64* %__p, i64 %__n) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator.1"*, align 8 %__p.addr = alloca i64*, align 8 %__n.addr = alloca i64, align 8 store %"class.std::allocator.1"* %__a, %"class.std::allocator.1"** %__a.addr, align 8 store i64* %__p, i64** %__p.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %0 = load %"class.std::allocator.1"*, %"class.std::allocator.1"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator.1"* %0 to %"class.__gnu_cxx::new_allocator.2"* %2 = load i64*, i64** %__p.addr, align 8 %3 = load i64, i64* %__n.addr, align 8 call void @_ZN9__gnu_cxx13new_allocatorImE10deallocateEPmm(%"class.__gnu_cxx::new_allocator.2"* %1, i64* %2, i64 %3) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorImE10deallocateEPmm(%"class.__gnu_cxx::new_allocator.2"* %this, i64* %__p, i64 %0) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.2"*, align 8 %__p.addr = alloca i64*, align 8 %.addr = alloca i64, align 8 store %"class.__gnu_cxx::new_allocator.2"* %this, %"class.__gnu_cxx::new_allocator.2"** %this.addr, align 8 store i64* %__p, i64** %__p.addr, align 8 store i64 %0, i64* %.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.2"*, %"class.__gnu_cxx::new_allocator.2"** %this.addr, align 8 %1 = load i64*, i64** %__p.addr, align 8 %2 = bitcast i64* %1 to i8* call void @_ZdlPv(i8* %2) #3 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64* @_ZNSt13_Bvector_baseISaIbEE11_M_allocateEm(%"struct.std::_Bvector_base"* %this, i64 %__n) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bvector_base"*, align 8 %__n.addr = alloca i64, align 8 store %"struct.std::_Bvector_base"* %this, %"struct.std::_Bvector_base"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"struct.std::_Bvector_base"*, %"struct.std::_Bvector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl to %"class.std::allocator.1"* %1 = load i64, i64* %__n.addr, align 8 %call = call i64 @_ZNSt13_Bvector_baseISaIbEE8_S_nwordEm(i64 %1) %call2 = call i64* @_ZN9__gnu_cxx14__alloc_traitsISaImEE8allocateERS1_m(%"class.std::allocator.1"* dereferenceable(1) %0, i64 %call) ret i64* %call2 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZNSt13_Bvector_baseISaIbEE8_S_nwordEm(i64 %__n) #6 comdat align 2 { entry: %__n.addr = alloca i64, align 8 store i64 %__n, i64* %__n.addr, align 8 %0 = load i64, i64* %__n.addr, align 8 %add = add i64 %0, 64 %sub = sub i64 %add, 1 %div = udiv i64 %sub, 64 ret i64 %div } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt13_Bit_iteratorC2EPmj(%"struct.std::_Bit_iterator"* %this, i64* %__x, i32 %__y) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_iterator"*, align 8 %__x.addr = alloca i64*, align 8 %__y.addr = alloca i32, align 4 store %"struct.std::_Bit_iterator"* %this, %"struct.std::_Bit_iterator"** %this.addr, align 8 store i64* %__x, i64** %__x.addr, align 8 store i32 %__y, i32* %__y.addr, align 4 %this1 = load %"struct.std::_Bit_iterator"*, %"struct.std::_Bit_iterator"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* %1 = load i64*, i64** %__x.addr, align 8 %2 = load i32, i32* %__y.addr, align 4 call void @_ZNSt18_Bit_iterator_baseC2EPmj(%"struct.std::_Bit_iterator_base"* %0, i64* %1, i32 %2) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZNKSt13_Bit_iteratorplEl(%"struct.std::_Bit_iterator"* %this, i64 %__i) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %this.addr = alloca %"struct.std::_Bit_iterator"*, align 8 %__i.addr = alloca i64, align 8 %__tmp = alloca %"struct.std::_Bit_iterator", align 8 store %"struct.std::_Bit_iterator"* %this, %"struct.std::_Bit_iterator"** %this.addr, align 8 store i64 %__i, i64* %__i.addr, align 8 %this1 = load %"struct.std::_Bit_iterator"*, %"struct.std::_Bit_iterator"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %__tmp to i8* %1 = bitcast %"struct.std::_Bit_iterator"* %this1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 16, i1 false) %2 = load i64, i64* %__i.addr, align 8 %call = call dereferenceable(16) %"struct.std::_Bit_iterator"* @_ZNSt13_Bit_iteratorpLEl(%"struct.std::_Bit_iterator"* %__tmp, i64 %2) %3 = bitcast %"struct.std::_Bit_iterator"* %retval to i8* %4 = bitcast %"struct.std::_Bit_iterator"* %call to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %4, i64 16, i1 false) %5 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %6 = load { i64*, i32 }, { i64*, i32 }* %5, align 8 ret { i64*, i32 } %6 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64* @_ZN9__gnu_cxx14__alloc_traitsISaImEE8allocateERS1_m(%"class.std::allocator.1"* dereferenceable(1) %__a, i64 %__n) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator.1"*, align 8 %__n.addr = alloca i64, align 8 store %"class.std::allocator.1"* %__a, %"class.std::allocator.1"** %__a.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %0 = load %"class.std::allocator.1"*, %"class.std::allocator.1"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator.1"* %0 to %"class.__gnu_cxx::new_allocator.2"* %2 = load i64, i64* %__n.addr, align 8 %call = call i64* @_ZN9__gnu_cxx13new_allocatorImE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.2"* %1, i64 %2, i8* null) ret i64* %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64* @_ZN9__gnu_cxx13new_allocatorImE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.2"* %this, i64 %__n, i8* %0) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.2"*, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca i8*, align 8 store %"class.__gnu_cxx::new_allocator.2"* %this, %"class.__gnu_cxx::new_allocator.2"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 store i8* %0, i8** %.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.2"*, %"class.__gnu_cxx::new_allocator.2"** %this.addr, align 8 %1 = load i64, i64* %__n.addr, align 8 %call = call i64 @_ZNK9__gnu_cxx13new_allocatorImE8max_sizeEv(%"class.__gnu_cxx::new_allocator.2"* %this1) #3 %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZSt17__throw_bad_allocv() #19 unreachable if.end: ; preds = %entry %2 = load i64, i64* %__n.addr, align 8 %mul = mul i64 %2, 8 %call2 = call i8* @_Znwm(i64 %mul) %3 = bitcast i8* %call2 to i64* ret i64* %3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZNK9__gnu_cxx13new_allocatorImE8max_sizeEv(%"class.__gnu_cxx::new_allocator.2"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.2"*, align 8 store %"class.__gnu_cxx::new_allocator.2"* %this, %"class.__gnu_cxx::new_allocator.2"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.2"*, %"class.__gnu_cxx::new_allocator.2"** %this.addr, align 8 ret i64 2305843009213693951 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local dereferenceable(16) %"struct.std::_Bit_iterator"* @_ZNSt13_Bit_iteratorpLEl(%"struct.std::_Bit_iterator"* %this, i64 %__i) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_iterator"*, align 8 %__i.addr = alloca i64, align 8 store %"struct.std::_Bit_iterator"* %this, %"struct.std::_Bit_iterator"** %this.addr, align 8 store i64 %__i, i64* %__i.addr, align 8 %this1 = load %"struct.std::_Bit_iterator"*, %"struct.std::_Bit_iterator"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* %1 = load i64, i64* %__i.addr, align 8 call void @_ZNSt18_Bit_iterator_base7_M_incrEl(%"struct.std::_Bit_iterator_base"* %0, i64 %1) ret %"struct.std::_Bit_iterator"* %this1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt18_Bit_iterator_base7_M_incrEl(%"struct.std::_Bit_iterator_base"* %this, i64 %__i) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_iterator_base"*, align 8 %__i.addr = alloca i64, align 8 %__n = alloca i64, align 8 store %"struct.std::_Bit_iterator_base"* %this, %"struct.std::_Bit_iterator_base"** %this.addr, align 8 store i64 %__i, i64* %__i.addr, align 8 %this1 = load %"struct.std::_Bit_iterator_base"*, %"struct.std::_Bit_iterator_base"** %this.addr, align 8 %0 = load i64, i64* %__i.addr, align 8 %_M_offset = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %this1, i32 0, i32 1 %1 = load i32, i32* %_M_offset, align 8 %conv = zext i32 %1 to i64 %add = add nsw i64 %0, %conv store i64 %add, i64* %__n, align 8 %2 = load i64, i64* %__n, align 8 %div = sdiv i64 %2, 64 %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %this1, i32 0, i32 0 %3 = load i64*, i64** %_M_p, align 8 %add.ptr = getelementptr inbounds i64, i64* %3, i64 %div store i64* %add.ptr, i64** %_M_p, align 8 %4 = load i64, i64* %__n, align 8 %rem = srem i64 %4, 64 store i64 %rem, i64* %__n, align 8 %5 = load i64, i64* %__n, align 8 %cmp = icmp slt i64 %5, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %6 = load i64, i64* %__n, align 8 %add2 = add nsw i64 %6, 64 store i64 %add2, i64* %__n, align 8 %_M_p3 = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %this1, i32 0, i32 0 %7 = load i64*, i64** %_M_p3, align 8 %incdec.ptr = getelementptr inbounds i64, i64* %7, i32 -1 store i64* %incdec.ptr, i64** %_M_p3, align 8 br label %if.end if.end: ; preds = %if.then, %entry %8 = load i64, i64* %__n, align 8 %conv4 = trunc i64 %8 to i32 %_M_offset5 = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %this1, i32 0, i32 1 store i32 %conv4, i32* %_M_offset5, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64* @_ZSt4copyIPmS0_ET0_T_S2_S1_(i64* %__first, i64* %__last, i64* %__result) #0 comdat { entry: %__first.addr = alloca i64*, align 8 %__last.addr = alloca i64*, align 8 %__result.addr = alloca i64*, align 8 store i64* %__first, i64** %__first.addr, align 8 store i64* %__last, i64** %__last.addr, align 8 store i64* %__result, i64** %__result.addr, align 8 %0 = load i64*, i64** %__first.addr, align 8 %call = call i64* @_ZSt12__miter_baseIPmET_S1_(i64* %0) %1 = load i64*, i64** %__last.addr, align 8 %call1 = call i64* @_ZSt12__miter_baseIPmET_S1_(i64* %1) %2 = load i64*, i64** %__result.addr, align 8 %call2 = call i64* @_ZSt14__copy_move_a2ILb0EPmS0_ET1_T0_S2_S1_(i64* %call, i64* %call1, i64* %2) ret i64* %call2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt4copyISt19_Bit_const_iteratorSt13_Bit_iteratorET0_T_S3_S2_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, i64* %__result.coerce0, i32 %__result.coerce1) #0 comdat { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_const_iterator", align 8 %__last = alloca %"struct.std::_Bit_const_iterator", align 8 %__result = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp1 = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp2 = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp3 = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp5 = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_const_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_const_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_iterator"* %__result to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 store i64* %__result.coerce0, i64** %7, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 store i32 %__result.coerce1, i32* %8, align 8 %9 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp1 to i8* %10 = bitcast %"struct.std::_Bit_const_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) %11 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp1 to { i64*, i32 }* %12 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 0 %13 = load i64*, i64** %12, align 8 %14 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 1 %15 = load i32, i32* %14, align 8 %call = call { i64*, i32 } @_ZSt12__miter_baseISt19_Bit_const_iteratorET_S1_(i64* %13, i32 %15) %16 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %17 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 0 %18 = extractvalue { i64*, i32 } %call, 0 store i64* %18, i64** %17, align 8 %19 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 1 %20 = extractvalue { i64*, i32 } %call, 1 store i32 %20, i32* %19, align 8 %21 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp3 to i8* %22 = bitcast %"struct.std::_Bit_const_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %22, i64 16, i1 false) %23 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp3 to { i64*, i32 }* %24 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 0 %25 = load i64*, i64** %24, align 8 %26 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 1 %27 = load i32, i32* %26, align 8 %call4 = call { i64*, i32 } @_ZSt12__miter_baseISt19_Bit_const_iteratorET_S1_(i64* %25, i32 %27) %28 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp2 to { i64*, i32 }* %29 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 0 %30 = extractvalue { i64*, i32 } %call4, 0 store i64* %30, i64** %29, align 8 %31 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 1 %32 = extractvalue { i64*, i32 } %call4, 1 store i32 %32, i32* %31, align 8 %33 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp5 to i8* %34 = bitcast %"struct.std::_Bit_iterator"* %__result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %33, i8* align 8 %34, i64 16, i1 false) %35 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %36 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %35, i32 0, i32 0 %37 = load i64*, i64** %36, align 8 %38 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %35, i32 0, i32 1 %39 = load i32, i32* %38, align 8 %40 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp2 to { i64*, i32 }* %41 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %40, i32 0, i32 0 %42 = load i64*, i64** %41, align 8 %43 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %40, i32 0, i32 1 %44 = load i32, i32* %43, align 8 %45 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp5 to { i64*, i32 }* %46 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %45, i32 0, i32 0 %47 = load i64*, i64** %46, align 8 %48 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %45, i32 0, i32 1 %49 = load i32, i32* %48, align 8 %call6 = call { i64*, i32 } @_ZSt14__copy_move_a2ILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_(i64* %37, i32 %39, i64* %42, i32 %44, i64* %47, i32 %49) %50 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %51 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %50, i32 0, i32 0 %52 = extractvalue { i64*, i32 } %call6, 0 store i64* %52, i64** %51, align 8 %53 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %50, i32 0, i32 1 %54 = extractvalue { i64*, i32 } %call6, 1 store i32 %54, i32* %53, align 8 %55 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %56 = load { i64*, i32 }, { i64*, i32 }* %55, align 8 ret { i64*, i32 } %56 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64* @_ZSt14__copy_move_a2ILb0EPmS0_ET1_T0_S2_S1_(i64* %__first, i64* %__last, i64* %__result) #0 comdat { entry: %__first.addr = alloca i64*, align 8 %__last.addr = alloca i64*, align 8 %__result.addr = alloca i64*, align 8 store i64* %__first, i64** %__first.addr, align 8 store i64* %__last, i64** %__last.addr, align 8 store i64* %__result, i64** %__result.addr, align 8 %0 = load i64*, i64** %__first.addr, align 8 %call = call i64* @_ZSt12__niter_baseIPmET_S1_(i64* %0) %1 = load i64*, i64** %__last.addr, align 8 %call1 = call i64* @_ZSt12__niter_baseIPmET_S1_(i64* %1) %2 = load i64*, i64** %__result.addr, align 8 %call2 = call i64* @_ZSt12__niter_baseIPmET_S1_(i64* %2) %call3 = call i64* @_ZSt13__copy_move_aILb0EPmS0_ET1_T0_S2_S1_(i64* %call, i64* %call1, i64* %call2) ret i64* %call3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64* @_ZSt12__miter_baseIPmET_S1_(i64* %__it) #6 comdat { entry: %__it.addr = alloca i64*, align 8 store i64* %__it, i64** %__it.addr, align 8 %0 = load i64*, i64** %__it.addr, align 8 ret i64* %0 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64* @_ZSt13__copy_move_aILb0EPmS0_ET1_T0_S2_S1_(i64* %__first, i64* %__last, i64* %__result) #0 comdat { entry: %__first.addr = alloca i64*, align 8 %__last.addr = alloca i64*, align 8 %__result.addr = alloca i64*, align 8 %__simple = alloca i8, align 1 store i64* %__first, i64** %__first.addr, align 8 store i64* %__last, i64** %__last.addr, align 8 store i64* %__result, i64** %__result.addr, align 8 store i8 1, i8* %__simple, align 1 %0 = load i64*, i64** %__first.addr, align 8 %1 = load i64*, i64** %__last.addr, align 8 %2 = load i64*, i64** %__result.addr, align 8 %call = call i64* @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mImEEPT_PKS3_S6_S4_(i64* %0, i64* %1, i64* %2) ret i64* %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64* @_ZSt12__niter_baseIPmET_S1_(i64* %__it) #6 comdat { entry: %__it.addr = alloca i64*, align 8 store i64* %__it, i64** %__it.addr, align 8 %0 = load i64*, i64** %__it.addr, align 8 ret i64* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64* @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mImEEPT_PKS3_S6_S4_(i64* %__first, i64* %__last, i64* %__result) #6 comdat align 2 { entry: %__first.addr = alloca i64*, align 8 %__last.addr = alloca i64*, align 8 %__result.addr = alloca i64*, align 8 %_Num = alloca i64, align 8 store i64* %__first, i64** %__first.addr, align 8 store i64* %__last, i64** %__last.addr, align 8 store i64* %__result, i64** %__result.addr, align 8 %0 = load i64*, i64** %__last.addr, align 8 %1 = load i64*, i64** %__first.addr, align 8 %sub.ptr.lhs.cast = ptrtoint i64* %0 to i64 %sub.ptr.rhs.cast = ptrtoint i64* %1 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 store i64 %sub.ptr.div, i64* %_Num, align 8 %2 = load i64, i64* %_Num, align 8 %tobool = icmp ne i64 %2, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %3 = load i64*, i64** %__result.addr, align 8 %4 = bitcast i64* %3 to i8* %5 = load i64*, i64** %__first.addr, align 8 %6 = bitcast i64* %5 to i8* %7 = load i64, i64* %_Num, align 8 %mul = mul i64 8, %7 call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %4, i8* align 8 %6, i64 %mul, i1 false) br label %if.end if.end: ; preds = %if.then, %entry %8 = load i64*, i64** %__result.addr, align 8 %9 = load i64, i64* %_Num, align 8 %add.ptr = getelementptr inbounds i64, i64* %8, i64 %9 ret i64* %add.ptr } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt14__copy_move_a2ILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, i64* %__result.coerce0, i32 %__result.coerce1) #0 comdat { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_const_iterator", align 8 %__last = alloca %"struct.std::_Bit_const_iterator", align 8 %__result = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp1 = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp2 = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp3 = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp5 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp6 = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_const_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_const_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_iterator"* %__result to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 store i64* %__result.coerce0, i64** %7, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 store i32 %__result.coerce1, i32* %8, align 8 %9 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp1 to i8* %10 = bitcast %"struct.std::_Bit_const_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) %11 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp1 to { i64*, i32 }* %12 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 0 %13 = load i64*, i64** %12, align 8 %14 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 1 %15 = load i32, i32* %14, align 8 %call = call { i64*, i32 } @_ZSt12__niter_baseISt19_Bit_const_iteratorET_S1_(i64* %13, i32 %15) %16 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %17 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 0 %18 = extractvalue { i64*, i32 } %call, 0 store i64* %18, i64** %17, align 8 %19 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 1 %20 = extractvalue { i64*, i32 } %call, 1 store i32 %20, i32* %19, align 8 %21 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp3 to i8* %22 = bitcast %"struct.std::_Bit_const_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %22, i64 16, i1 false) %23 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp3 to { i64*, i32 }* %24 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 0 %25 = load i64*, i64** %24, align 8 %26 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 1 %27 = load i32, i32* %26, align 8 %call4 = call { i64*, i32 } @_ZSt12__niter_baseISt19_Bit_const_iteratorET_S1_(i64* %25, i32 %27) %28 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp2 to { i64*, i32 }* %29 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 0 %30 = extractvalue { i64*, i32 } %call4, 0 store i64* %30, i64** %29, align 8 %31 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 1 %32 = extractvalue { i64*, i32 } %call4, 1 store i32 %32, i32* %31, align 8 %33 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp6 to i8* %34 = bitcast %"struct.std::_Bit_iterator"* %__result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %33, i8* align 8 %34, i64 16, i1 false) %35 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp6 to { i64*, i32 }* %36 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %35, i32 0, i32 0 %37 = load i64*, i64** %36, align 8 %38 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %35, i32 0, i32 1 %39 = load i32, i32* %38, align 8 %call7 = call { i64*, i32 } @_ZSt12__niter_baseISt13_Bit_iteratorET_S1_(i64* %37, i32 %39) %40 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp5 to { i64*, i32 }* %41 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %40, i32 0, i32 0 %42 = extractvalue { i64*, i32 } %call7, 0 store i64* %42, i64** %41, align 8 %43 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %40, i32 0, i32 1 %44 = extractvalue { i64*, i32 } %call7, 1 store i32 %44, i32* %43, align 8 %45 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %46 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %45, i32 0, i32 0 %47 = load i64*, i64** %46, align 8 %48 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %45, i32 0, i32 1 %49 = load i32, i32* %48, align 8 %50 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp2 to { i64*, i32 }* %51 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %50, i32 0, i32 0 %52 = load i64*, i64** %51, align 8 %53 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %50, i32 0, i32 1 %54 = load i32, i32* %53, align 8 %55 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp5 to { i64*, i32 }* %56 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %55, i32 0, i32 0 %57 = load i64*, i64** %56, align 8 %58 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %55, i32 0, i32 1 %59 = load i32, i32* %58, align 8 %call8 = call { i64*, i32 } @_ZSt13__copy_move_aILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_(i64* %47, i32 %49, i64* %52, i32 %54, i64* %57, i32 %59) %60 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %61 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %60, i32 0, i32 0 %62 = extractvalue { i64*, i32 } %call8, 0 store i64* %62, i64** %61, align 8 %63 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %60, i32 0, i32 1 %64 = extractvalue { i64*, i32 } %call8, 1 store i32 %64, i32* %63, align 8 %65 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %66 = load { i64*, i32 }, { i64*, i32 }* %65, align 8 ret { i64*, i32 } %66 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt12__miter_baseISt19_Bit_const_iteratorET_S1_(i64* %__it.coerce0, i32 %__it.coerce1) #6 comdat { entry: %retval = alloca %"struct.std::_Bit_const_iterator", align 8 %__it = alloca %"struct.std::_Bit_const_iterator", align 8 %0 = bitcast %"struct.std::_Bit_const_iterator"* %__it to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__it.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__it.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_const_iterator"* %retval to i8* %4 = bitcast %"struct.std::_Bit_const_iterator"* %__it to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %4, i64 16, i1 false) %5 = bitcast %"struct.std::_Bit_const_iterator"* %retval to { i64*, i32 }* %6 = load { i64*, i32 }, { i64*, i32 }* %5, align 8 ret { i64*, i32 } %6 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt13__copy_move_aILb0ESt19_Bit_const_iteratorSt13_Bit_iteratorET1_T0_S3_S2_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, i64* %__result.coerce0, i32 %__result.coerce1) #0 comdat { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_const_iterator", align 8 %__last = alloca %"struct.std::_Bit_const_iterator", align 8 %__result = alloca %"struct.std::_Bit_iterator", align 8 %__simple = alloca i8, align 1 %agg.tmp = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp1 = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp2 = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_const_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_const_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_iterator"* %__result to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 store i64* %__result.coerce0, i64** %7, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 store i32 %__result.coerce1, i32* %8, align 8 store i8 0, i8* %__simple, align 1 %9 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to i8* %10 = bitcast %"struct.std::_Bit_const_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) %11 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp1 to i8* %12 = bitcast %"struct.std::_Bit_const_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 16, i1 false) %13 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to i8* %14 = bitcast %"struct.std::_Bit_iterator"* %__result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 16, i1 false) %15 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp to { i64*, i32 }* %16 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %15, i32 0, i32 0 %17 = load i64*, i64** %16, align 8 %18 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %15, i32 0, i32 1 %19 = load i32, i32* %18, align 8 %20 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp1 to { i64*, i32 }* %21 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %20, i32 0, i32 0 %22 = load i64*, i64** %21, align 8 %23 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %20, i32 0, i32 1 %24 = load i32, i32* %23, align 8 %25 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to { i64*, i32 }* %26 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %25, i32 0, i32 0 %27 = load i64*, i64** %26, align 8 %28 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %25, i32 0, i32 1 %29 = load i32, i32* %28, align 8 %call = call { i64*, i32 } @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt19_Bit_const_iteratorSt13_Bit_iteratorEET0_T_S6_S5_(i64* %17, i32 %19, i64* %22, i32 %24, i64* %27, i32 %29) %30 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %31 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %30, i32 0, i32 0 %32 = extractvalue { i64*, i32 } %call, 0 store i64* %32, i64** %31, align 8 %33 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %30, i32 0, i32 1 %34 = extractvalue { i64*, i32 } %call, 1 store i32 %34, i32* %33, align 8 %35 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %36 = load { i64*, i32 }, { i64*, i32 }* %35, align 8 ret { i64*, i32 } %36 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt12__niter_baseISt19_Bit_const_iteratorET_S1_(i64* %__it.coerce0, i32 %__it.coerce1) #6 comdat { entry: %retval = alloca %"struct.std::_Bit_const_iterator", align 8 %__it = alloca %"struct.std::_Bit_const_iterator", align 8 %0 = bitcast %"struct.std::_Bit_const_iterator"* %__it to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__it.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__it.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_const_iterator"* %retval to i8* %4 = bitcast %"struct.std::_Bit_const_iterator"* %__it to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %4, i64 16, i1 false) %5 = bitcast %"struct.std::_Bit_const_iterator"* %retval to { i64*, i32 }* %6 = load { i64*, i32 }, { i64*, i32 }* %5, align 8 ret { i64*, i32 } %6 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt12__niter_baseISt13_Bit_iteratorET_S1_(i64* %__it.coerce0, i32 %__it.coerce1) #6 comdat { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__it = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %__it to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__it.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__it.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_iterator"* %retval to i8* %4 = bitcast %"struct.std::_Bit_iterator"* %__it to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %4, i64 16, i1 false) %5 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %6 = load { i64*, i32 }, { i64*, i32 }* %5, align 8 ret { i64*, i32 } %6 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt19_Bit_const_iteratorSt13_Bit_iteratorEET0_T_S6_S5_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, i64* %__result.coerce0, i32 %__result.coerce1) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_const_iterator", align 8 %__last = alloca %"struct.std::_Bit_const_iterator", align 8 %__result = alloca %"struct.std::_Bit_iterator", align 8 %__n = alloca i64, align 8 %ref.tmp = alloca %"struct.std::_Bit_reference", align 8 %0 = bitcast %"struct.std::_Bit_const_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_const_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_iterator"* %__result to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 store i64* %__result.coerce0, i64** %7, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 store i32 %__result.coerce1, i32* %8, align 8 %9 = bitcast %"struct.std::_Bit_const_iterator"* %__last to %"struct.std::_Bit_iterator_base"* %10 = bitcast %"struct.std::_Bit_const_iterator"* %__first to %"struct.std::_Bit_iterator_base"* %call = call i64 @_ZStmiRKSt18_Bit_iterator_baseS1_(%"struct.std::_Bit_iterator_base"* dereferenceable(16) %9, %"struct.std::_Bit_iterator_base"* dereferenceable(16) %10) store i64 %call, i64* %__n, align 8 br label %for.cond for.cond: ; preds = %for.inc, %entry %11 = load i64, i64* %__n, align 8 %cmp = icmp sgt i64 %11, 0 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %call1 = call zeroext i1 @_ZNKSt19_Bit_const_iteratordeEv(%"struct.std::_Bit_const_iterator"* %__first) %call2 = call { i64*, i64 } @_ZNKSt13_Bit_iteratordeEv(%"struct.std::_Bit_iterator"* %__result) %12 = bitcast %"struct.std::_Bit_reference"* %ref.tmp to { i64*, i64 }* %13 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %12, i32 0, i32 0 %14 = extractvalue { i64*, i64 } %call2, 0 store i64* %14, i64** %13, align 8 %15 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %12, i32 0, i32 1 %16 = extractvalue { i64*, i64 } %call2, 1 store i64 %16, i64* %15, align 8 %call3 = call dereferenceable(16) %"struct.std::_Bit_reference"* @_ZNSt14_Bit_referenceaSEb(%"struct.std::_Bit_reference"* %ref.tmp, i1 zeroext %call1) %call4 = call dereferenceable(16) %"struct.std::_Bit_const_iterator"* @_ZNSt19_Bit_const_iteratorppEv(%"struct.std::_Bit_const_iterator"* %__first) %call5 = call dereferenceable(16) %"struct.std::_Bit_iterator"* @_ZNSt13_Bit_iteratorppEv(%"struct.std::_Bit_iterator"* %__result) br label %for.inc for.inc: ; preds = %for.body %17 = load i64, i64* %__n, align 8 %dec = add nsw i64 %17, -1 store i64 %dec, i64* %__n, align 8 br label %for.cond for.end: ; preds = %for.cond %18 = bitcast %"struct.std::_Bit_iterator"* %retval to i8* %19 = bitcast %"struct.std::_Bit_iterator"* %__result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %18, i8* align 8 %19, i64 16, i1 false) %20 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %21 = load { i64*, i32 }, { i64*, i32 }* %20, align 8 ret { i64*, i32 } %21 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i64 } @_ZNKSt13_Bit_iteratordeEv(%"struct.std::_Bit_iterator"* %this) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Bit_reference", align 8 %this.addr = alloca %"struct.std::_Bit_iterator"*, align 8 store %"struct.std::_Bit_iterator"* %this, %"struct.std::_Bit_iterator"** %this.addr, align 8 %this1 = load %"struct.std::_Bit_iterator"*, %"struct.std::_Bit_iterator"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %0, i32 0, i32 0 %1 = load i64*, i64** %_M_p, align 8 %2 = bitcast %"struct.std::_Bit_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* %_M_offset = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %2, i32 0, i32 1 %3 = load i32, i32* %_M_offset, align 8 %sh_prom = zext i32 %3 to i64 %shl = shl i64 1, %sh_prom call void @_ZNSt14_Bit_referenceC2EPmm(%"struct.std::_Bit_reference"* %retval, i64* %1, i64 %shl) %4 = bitcast %"struct.std::_Bit_reference"* %retval to { i64*, i64 }* %5 = load { i64*, i64 }, { i64*, i64 }* %4, align 8 ret { i64*, i64 } %5 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(16) %"struct.std::_Bit_reference"* @_ZNSt14_Bit_referenceaSEb(%"struct.std::_Bit_reference"* %this, i1 zeroext %__x) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_reference"*, align 8 %__x.addr = alloca i8, align 1 store %"struct.std::_Bit_reference"* %this, %"struct.std::_Bit_reference"** %this.addr, align 8 %frombool = zext i1 %__x to i8 store i8 %frombool, i8* %__x.addr, align 1 %this1 = load %"struct.std::_Bit_reference"*, %"struct.std::_Bit_reference"** %this.addr, align 8 %0 = load i8, i8* %__x.addr, align 1 %tobool = trunc i8 %0 to i1 br i1 %tobool, label %if.then, label %if.else if.then: ; preds = %entry %_M_mask = getelementptr inbounds %"struct.std::_Bit_reference", %"struct.std::_Bit_reference"* %this1, i32 0, i32 1 %1 = load i64, i64* %_M_mask, align 8 %_M_p = getelementptr inbounds %"struct.std::_Bit_reference", %"struct.std::_Bit_reference"* %this1, i32 0, i32 0 %2 = load i64*, i64** %_M_p, align 8 %3 = load i64, i64* %2, align 8 %or = or i64 %3, %1 store i64 %or, i64* %2, align 8 br label %if.end if.else: ; preds = %entry %_M_mask2 = getelementptr inbounds %"struct.std::_Bit_reference", %"struct.std::_Bit_reference"* %this1, i32 0, i32 1 %4 = load i64, i64* %_M_mask2, align 8 %neg = xor i64 %4, -1 %_M_p3 = getelementptr inbounds %"struct.std::_Bit_reference", %"struct.std::_Bit_reference"* %this1, i32 0, i32 0 %5 = load i64*, i64** %_M_p3, align 8 %6 = load i64, i64* %5, align 8 %and = and i64 %6, %neg store i64 %and, i64* %5, align 8 br label %if.end if.end: ; preds = %if.else, %if.then ret %"struct.std::_Bit_reference"* %this1 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local dereferenceable(16) %"struct.std::_Bit_const_iterator"* @_ZNSt19_Bit_const_iteratorppEv(%"struct.std::_Bit_const_iterator"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_const_iterator"*, align 8 store %"struct.std::_Bit_const_iterator"* %this, %"struct.std::_Bit_const_iterator"** %this.addr, align 8 %this1 = load %"struct.std::_Bit_const_iterator"*, %"struct.std::_Bit_const_iterator"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bit_const_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* call void @_ZNSt18_Bit_iterator_base10_M_bump_upEv(%"struct.std::_Bit_iterator_base"* %0) ret %"struct.std::_Bit_const_iterator"* %this1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(16) %"struct.std::_Bit_iterator"* @_ZNSt13_Bit_iteratorppEv(%"struct.std::_Bit_iterator"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_iterator"*, align 8 store %"struct.std::_Bit_iterator"* %this, %"struct.std::_Bit_iterator"** %this.addr, align 8 %this1 = load %"struct.std::_Bit_iterator"*, %"struct.std::_Bit_iterator"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* call void @_ZNSt18_Bit_iterator_base10_M_bump_upEv(%"struct.std::_Bit_iterator_base"* %0) ret %"struct.std::_Bit_iterator"* %this1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt18_Bit_iterator_base10_M_bump_upEv(%"struct.std::_Bit_iterator_base"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_iterator_base"*, align 8 store %"struct.std::_Bit_iterator_base"* %this, %"struct.std::_Bit_iterator_base"** %this.addr, align 8 %this1 = load %"struct.std::_Bit_iterator_base"*, %"struct.std::_Bit_iterator_base"** %this.addr, align 8 %_M_offset = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %this1, i32 0, i32 1 %0 = load i32, i32* %_M_offset, align 8 %inc = add i32 %0, 1 store i32 %inc, i32* %_M_offset, align 8 %cmp = icmp eq i32 %0, 63 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %_M_offset2 = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %this1, i32 0, i32 1 store i32 0, i32* %_M_offset2, align 8 %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %this1, i32 0, i32 0 %1 = load i64*, i64** %_M_p, align 8 %incdec.ptr = getelementptr inbounds i64, i64* %1, i32 1 store i64* %incdec.ptr, i64** %_M_p, align 8 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator.1"* @_ZN9__gnu_cxx14__alloc_traitsISaImEE17_S_select_on_copyERKS1_(%"class.std::allocator.1"* dereferenceable(1) %__a) #6 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator.1"*, align 8 store %"class.std::allocator.1"* %__a, %"class.std::allocator.1"** %__a.addr, align 8 %0 = load %"class.std::allocator.1"*, %"class.std::allocator.1"** %__a.addr, align 8 ret %"class.std::allocator.1"* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator.1"* @_ZNKSt13_Bvector_baseISaIbEE20_M_get_Bit_allocatorEv(%"struct.std::_Bvector_base"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bvector_base"*, align 8 store %"struct.std::_Bvector_base"* %this, %"struct.std::_Bvector_base"** %this.addr, align 8 %this1 = load %"struct.std::_Bvector_base"*, %"struct.std::_Bvector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl to %"class.std::allocator.1"* ret %"class.std::allocator.1"* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaIbEC2ImEERKSaIT_E(%"class.std::allocator.13"* %this, %"class.std::allocator.1"* dereferenceable(1) %0) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.13"*, align 8 %.addr = alloca %"class.std::allocator.1"*, align 8 store %"class.std::allocator.13"* %this, %"class.std::allocator.13"** %this.addr, align 8 store %"class.std::allocator.1"* %0, %"class.std::allocator.1"** %.addr, align 8 %this1 = load %"class.std::allocator.13"*, %"class.std::allocator.13"** %this.addr, align 8 %1 = bitcast %"class.std::allocator.13"* %this1 to %"class.__gnu_cxx::new_allocator.14"* call void @_ZN9__gnu_cxx13new_allocatorIbEC2Ev(%"class.__gnu_cxx::new_allocator.14"* %1) #3 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt13_Bvector_baseISaIbEEC2ERKS0_(%"struct.std::_Bvector_base"* %this, %"class.std::allocator.13"* dereferenceable(1) %__a) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"struct.std::_Bvector_base"*, align 8 %__a.addr = alloca %"class.std::allocator.13"*, align 8 %ref.tmp = alloca %"class.std::allocator.1", align 1 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"struct.std::_Bvector_base"* %this, %"struct.std::_Bvector_base"** %this.addr, align 8 store %"class.std::allocator.13"* %__a, %"class.std::allocator.13"** %__a.addr, align 8 %this1 = load %"struct.std::_Bvector_base"*, %"struct.std::_Bvector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 %0 = load %"class.std::allocator.13"*, %"class.std::allocator.13"** %__a.addr, align 8 call void @_ZNSaImEC2IbEERKSaIT_E(%"class.std::allocator.1"* %ref.tmp, %"class.std::allocator.13"* dereferenceable(1) %0) #3 invoke void @_ZNSt13_Bvector_baseISaIbEE13_Bvector_implC2ERKSaImE(%"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl, %"class.std::allocator.1"* dereferenceable(1) %ref.tmp) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry call void @_ZNSaImED2Ev(%"class.std::allocator.1"* %ref.tmp) #3 ret void lpad: ; preds = %entry %1 = landingpad { i8*, i32 } cleanup %2 = extractvalue { i8*, i32 } %1, 0 store i8* %2, i8** %exn.slot, align 8 %3 = extractvalue { i8*, i32 } %1, 1 store i32 %3, i32* %ehselector.slot, align 4 call void @_ZNSaImED2Ev(%"class.std::allocator.1"* %ref.tmp) #3 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val2 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val2 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaIbED2Ev(%"class.std::allocator.13"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.13"*, align 8 store %"class.std::allocator.13"* %this, %"class.std::allocator.13"** %this.addr, align 8 %this1 = load %"class.std::allocator.13"*, %"class.std::allocator.13"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.13"* %this1 to %"class.__gnu_cxx::new_allocator.14"* call void @_ZN9__gnu_cxx13new_allocatorIbED2Ev(%"class.__gnu_cxx::new_allocator.14"* %0) #3 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt13_Bvector_baseISaIbEED2Ev(%"struct.std::_Bvector_base"* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"struct.std::_Bvector_base"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"struct.std::_Bvector_base"* %this, %"struct.std::_Bvector_base"** %this.addr, align 8 %this1 = load %"struct.std::_Bvector_base"*, %"struct.std::_Bvector_base"** %this.addr, align 8 invoke void @_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv(%"struct.std::_Bvector_base"* %this1) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 call void @_ZNSt13_Bvector_baseISaIbEE13_Bvector_implD2Ev(%"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl) #3 ret void lpad: ; preds = %entry %0 = landingpad { i8*, i32 } cleanup %1 = extractvalue { i8*, i32 } %0, 0 store i8* %1, i8** %exn.slot, align 8 %2 = extractvalue { i8*, i32 } %0, 1 store i32 %2, i32* %ehselector.slot, align 4 %_M_impl2 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %this1, i32 0, i32 0 call void @_ZNSt13_Bvector_baseISaIbEE13_Bvector_implD2Ev(%"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl2) #3 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val3 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIbEC2Ev(%"class.__gnu_cxx::new_allocator.14"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.14"*, align 8 store %"class.__gnu_cxx::new_allocator.14"* %this, %"class.__gnu_cxx::new_allocator.14"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.14"*, %"class.__gnu_cxx::new_allocator.14"** %this.addr, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaImEC2IbEERKSaIT_E(%"class.std::allocator.1"* %this, %"class.std::allocator.13"* dereferenceable(1) %0) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.1"*, align 8 %.addr = alloca %"class.std::allocator.13"*, align 8 store %"class.std::allocator.1"* %this, %"class.std::allocator.1"** %this.addr, align 8 store %"class.std::allocator.13"* %0, %"class.std::allocator.13"** %.addr, align 8 %this1 = load %"class.std::allocator.1"*, %"class.std::allocator.1"** %this.addr, align 8 %1 = bitcast %"class.std::allocator.1"* %this1 to %"class.__gnu_cxx::new_allocator.2"* call void @_ZN9__gnu_cxx13new_allocatorImEC2Ev(%"class.__gnu_cxx::new_allocator.2"* %1) #3 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt13_Bvector_baseISaIbEE13_Bvector_implC2ERKSaImE(%"struct.std::_Bvector_base >::_Bvector_impl"* %this, %"class.std::allocator.1"* dereferenceable(1) %__a) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"struct.std::_Bvector_base >::_Bvector_impl"*, align 8 %__a.addr = alloca %"class.std::allocator.1"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"struct.std::_Bvector_base >::_Bvector_impl"* %this, %"struct.std::_Bvector_base >::_Bvector_impl"** %this.addr, align 8 store %"class.std::allocator.1"* %__a, %"class.std::allocator.1"** %__a.addr, align 8 %this1 = load %"struct.std::_Bvector_base >::_Bvector_impl"*, %"struct.std::_Bvector_base >::_Bvector_impl"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bvector_base >::_Bvector_impl"* %this1 to %"class.std::allocator.1"* %1 = load %"class.std::allocator.1"*, %"class.std::allocator.1"** %__a.addr, align 8 call void @_ZNSaImEC2ERKS_(%"class.std::allocator.1"* %0, %"class.std::allocator.1"* dereferenceable(1) %1) #3 %_M_start = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %this1, i32 0, i32 0 invoke void @_ZNSt13_Bit_iteratorC2Ev(%"struct.std::_Bit_iterator"* %_M_start) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %_M_finish = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %this1, i32 0, i32 1 invoke void @_ZNSt13_Bit_iteratorC2Ev(%"struct.std::_Bit_iterator"* %_M_finish) to label %invoke.cont2 unwind label %lpad invoke.cont2: ; preds = %invoke.cont %_M_end_of_storage = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %this1, i32 0, i32 2 store i64* null, i64** %_M_end_of_storage, align 8 ret void lpad: ; preds = %invoke.cont, %entry %2 = landingpad { i8*, i32 } cleanup %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 %5 = bitcast %"struct.std::_Bvector_base >::_Bvector_impl"* %this1 to %"class.std::allocator.1"* call void @_ZNSaImED2Ev(%"class.std::allocator.1"* %5) #3 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val3 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaImED2Ev(%"class.std::allocator.1"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.1"*, align 8 store %"class.std::allocator.1"* %this, %"class.std::allocator.1"** %this.addr, align 8 %this1 = load %"class.std::allocator.1"*, %"class.std::allocator.1"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.1"* %this1 to %"class.__gnu_cxx::new_allocator.2"* call void @_ZN9__gnu_cxx13new_allocatorImED2Ev(%"class.__gnu_cxx::new_allocator.2"* %0) #3 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaImEC2ERKS_(%"class.std::allocator.1"* %this, %"class.std::allocator.1"* dereferenceable(1) %__a) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.1"*, align 8 %__a.addr = alloca %"class.std::allocator.1"*, align 8 store %"class.std::allocator.1"* %this, %"class.std::allocator.1"** %this.addr, align 8 store %"class.std::allocator.1"* %__a, %"class.std::allocator.1"** %__a.addr, align 8 %this1 = load %"class.std::allocator.1"*, %"class.std::allocator.1"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.1"* %this1 to %"class.__gnu_cxx::new_allocator.2"* %1 = load %"class.std::allocator.1"*, %"class.std::allocator.1"** %__a.addr, align 8 %2 = bitcast %"class.std::allocator.1"* %1 to %"class.__gnu_cxx::new_allocator.2"* call void @_ZN9__gnu_cxx13new_allocatorImEC2ERKS1_(%"class.__gnu_cxx::new_allocator.2"* %0, %"class.__gnu_cxx::new_allocator.2"* dereferenceable(1) %2) #3 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorImEC2ERKS1_(%"class.__gnu_cxx::new_allocator.2"* %this, %"class.__gnu_cxx::new_allocator.2"* dereferenceable(1) %0) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.2"*, align 8 %.addr = alloca %"class.__gnu_cxx::new_allocator.2"*, align 8 store %"class.__gnu_cxx::new_allocator.2"* %this, %"class.__gnu_cxx::new_allocator.2"** %this.addr, align 8 store %"class.__gnu_cxx::new_allocator.2"* %0, %"class.__gnu_cxx::new_allocator.2"** %.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.2"*, %"class.__gnu_cxx::new_allocator.2"** %this.addr, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIbED2Ev(%"class.__gnu_cxx::new_allocator.14"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.14"*, align 8 store %"class.__gnu_cxx::new_allocator.14"* %this, %"class.__gnu_cxx::new_allocator.14"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.14"*, %"class.__gnu_cxx::new_allocator.14"** %this.addr, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt13_Bvector_baseISaIbEE13_Bvector_implD2Ev(%"struct.std::_Bvector_base >::_Bvector_impl"* %this) unnamed_addr #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bvector_base >::_Bvector_impl"*, align 8 store %"struct.std::_Bvector_base >::_Bvector_impl"* %this, %"struct.std::_Bvector_base >::_Bvector_impl"** %this.addr, align 8 %this1 = load %"struct.std::_Bvector_base >::_Bvector_impl"*, %"struct.std::_Bvector_base >::_Bvector_impl"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bvector_base >::_Bvector_impl"* %this1 to %"class.std::allocator.1"* call void @_ZNSaImED2Ev(%"class.std::allocator.1"* %0) #3 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZNSt13_Bit_iteratorppEi(%"struct.std::_Bit_iterator"* %this, i32 %0) #6 comdat align 2 { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %this.addr = alloca %"struct.std::_Bit_iterator"*, align 8 %.addr = alloca i32, align 4 store %"struct.std::_Bit_iterator"* %this, %"struct.std::_Bit_iterator"** %this.addr, align 8 store i32 %0, i32* %.addr, align 4 %this1 = load %"struct.std::_Bit_iterator"*, %"struct.std::_Bit_iterator"** %this.addr, align 8 %1 = bitcast %"struct.std::_Bit_iterator"* %retval to i8* %2 = bitcast %"struct.std::_Bit_iterator"* %this1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %1, i8* align 8 %2, i64 16, i1 false) %3 = bitcast %"struct.std::_Bit_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* call void @_ZNSt18_Bit_iterator_base10_M_bump_upEv(%"struct.std::_Bit_iterator_base"* %3) %4 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %5 = load { i64*, i32 }, { i64*, i32 }* %4, align 8 ret { i64*, i32 } %5 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorIbSaIbEE13_M_insert_auxESt13_Bit_iteratorb(%"class.std::vector.0"* %this, i64* %__position.coerce0, i32 %__position.coerce1, i1 zeroext %__x) #0 comdat align 2 { entry: %__position = alloca %"struct.std::_Bit_iterator", align 8 %this.addr = alloca %"class.std::vector.0"*, align 8 %__x.addr = alloca i8, align 1 %agg.tmp = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp3 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp6 = alloca %"struct.std::_Bit_iterator", align 8 %coerce = alloca %"struct.std::_Bit_iterator", align 8 %ref.tmp = alloca %"struct.std::_Bit_reference", align 8 %__len = alloca i64, align 8 %__q = alloca i64*, align 8 %__start = alloca %"struct.std::_Bit_iterator", align 8 %__i = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp19 = alloca %"struct.std::_Bit_const_iterator", align 8 %ref.tmp20 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp22 = alloca %"struct.std::_Bit_const_iterator", align 8 %agg.tmp23 = alloca %"struct.std::_Bit_iterator", align 8 %ref.tmp26 = alloca %"struct.std::_Bit_reference", align 8 %ref.tmp27 = alloca %"struct.std::_Bit_iterator", align 8 %__finish = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp31 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp32 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp34 = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %__position to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__position.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__position.coerce1, i32* %2, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %frombool = zext i1 %__x to i8 store i8 %frombool, i8* %__x.addr, align 1 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %3 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %3, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl, i32 0, i32 1 %4 = bitcast %"struct.std::_Bit_iterator"* %_M_finish to %"struct.std::_Bit_iterator_base"* %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %4, i32 0, i32 0 %5 = load i64*, i64** %_M_p, align 8 %6 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl2 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %6, i32 0, i32 0 %call = call i64* @_ZNKSt13_Bvector_baseISaIbEE13_Bvector_impl11_M_end_addrEv(%"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl2) %cmp = icmp ne i64* %5, %call br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %7 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to i8* %8 = bitcast %"struct.std::_Bit_iterator"* %__position to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %7, i8* align 8 %8, i64 16, i1 false) %9 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl4 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %9, i32 0, i32 0 %_M_finish5 = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl4, i32 0, i32 1 %10 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp3 to i8* %11 = bitcast %"struct.std::_Bit_iterator"* %_M_finish5 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %10, i8* align 8 %11, i64 16, i1 false) %12 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl7 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %12, i32 0, i32 0 %_M_finish8 = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl7, i32 0, i32 1 %call9 = call { i64*, i32 } @_ZNKSt13_Bit_iteratorplEl(%"struct.std::_Bit_iterator"* %_M_finish8, i64 1) %13 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp6 to { i64*, i32 }* %14 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %13, i32 0, i32 0 %15 = extractvalue { i64*, i32 } %call9, 0 store i64* %15, i64** %14, align 8 %16 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %13, i32 0, i32 1 %17 = extractvalue { i64*, i32 } %call9, 1 store i32 %17, i32* %16, align 8 %18 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %19 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %18, i32 0, i32 0 %20 = load i64*, i64** %19, align 8 %21 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %18, i32 0, i32 1 %22 = load i32, i32* %21, align 8 %23 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp3 to { i64*, i32 }* %24 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 0 %25 = load i64*, i64** %24, align 8 %26 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 1 %27 = load i32, i32* %26, align 8 %28 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp6 to { i64*, i32 }* %29 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 0 %30 = load i64*, i64** %29, align 8 %31 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 1 %32 = load i32, i32* %31, align 8 %call10 = call { i64*, i32 } @_ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_(i64* %20, i32 %22, i64* %25, i32 %27, i64* %30, i32 %32) %33 = bitcast %"struct.std::_Bit_iterator"* %coerce to { i64*, i32 }* %34 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %33, i32 0, i32 0 %35 = extractvalue { i64*, i32 } %call10, 0 store i64* %35, i64** %34, align 8 %36 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %33, i32 0, i32 1 %37 = extractvalue { i64*, i32 } %call10, 1 store i32 %37, i32* %36, align 8 %38 = load i8, i8* %__x.addr, align 1 %tobool = trunc i8 %38 to i1 %call11 = call { i64*, i64 } @_ZNKSt13_Bit_iteratordeEv(%"struct.std::_Bit_iterator"* %__position) %39 = bitcast %"struct.std::_Bit_reference"* %ref.tmp to { i64*, i64 }* %40 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %39, i32 0, i32 0 %41 = extractvalue { i64*, i64 } %call11, 0 store i64* %41, i64** %40, align 8 %42 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %39, i32 0, i32 1 %43 = extractvalue { i64*, i64 } %call11, 1 store i64 %43, i64* %42, align 8 %call12 = call dereferenceable(16) %"struct.std::_Bit_reference"* @_ZNSt14_Bit_referenceaSEb(%"struct.std::_Bit_reference"* %ref.tmp, i1 zeroext %tobool) %44 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl13 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %44, i32 0, i32 0 %_M_finish14 = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl13, i32 0, i32 1 %call15 = call dereferenceable(16) %"struct.std::_Bit_iterator"* @_ZNSt13_Bit_iteratorppEv(%"struct.std::_Bit_iterator"* %_M_finish14) br label %if.end if.else: ; preds = %entry %call16 = call i64 @_ZNKSt6vectorIbSaIbEE12_M_check_lenEmPKc(%"class.std::vector.0"* %this1, i64 1, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.27, i64 0, i64 0)) store i64 %call16, i64* %__len, align 8 %45 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %46 = load i64, i64* %__len, align 8 %call17 = call i64* @_ZNSt13_Bvector_baseISaIbEE11_M_allocateEm(%"struct.std::_Bvector_base"* %45, i64 %46) store i64* %call17, i64** %__q, align 8 %47 = load i64*, i64** %__q, align 8 %call18 = call i64* @_ZSt11__addressofImEPT_RS0_(i64* dereferenceable(8) %47) call void @_ZNSt13_Bit_iteratorC2EPmj(%"struct.std::_Bit_iterator"* %__start, i64* %call18, i32 0) %call21 = call { i64*, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(%"class.std::vector.0"* %this1) %48 = bitcast %"struct.std::_Bit_iterator"* %ref.tmp20 to { i64*, i32 }* %49 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %48, i32 0, i32 0 %50 = extractvalue { i64*, i32 } %call21, 0 store i64* %50, i64** %49, align 8 %51 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %48, i32 0, i32 1 %52 = extractvalue { i64*, i32 } %call21, 1 store i32 %52, i32* %51, align 8 call void @_ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator(%"struct.std::_Bit_const_iterator"* %agg.tmp19, %"struct.std::_Bit_iterator"* dereferenceable(16) %ref.tmp20) call void @_ZNSt19_Bit_const_iteratorC2ERKSt13_Bit_iterator(%"struct.std::_Bit_const_iterator"* %agg.tmp22, %"struct.std::_Bit_iterator"* dereferenceable(16) %__position) %53 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp23 to i8* %54 = bitcast %"struct.std::_Bit_iterator"* %__start to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %53, i8* align 8 %54, i64 16, i1 false) %55 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp19 to { i64*, i32 }* %56 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %55, i32 0, i32 0 %57 = load i64*, i64** %56, align 8 %58 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %55, i32 0, i32 1 %59 = load i32, i32* %58, align 8 %60 = bitcast %"struct.std::_Bit_const_iterator"* %agg.tmp22 to { i64*, i32 }* %61 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %60, i32 0, i32 0 %62 = load i64*, i64** %61, align 8 %63 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %60, i32 0, i32 1 %64 = load i32, i32* %63, align 8 %call24 = call { i64*, i32 } @_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator(%"class.std::vector.0"* %this1, i64* %57, i32 %59, i64* %62, i32 %64, %"struct.std::_Bit_iterator"* byval(%"struct.std::_Bit_iterator") align 8 %agg.tmp23) %65 = bitcast %"struct.std::_Bit_iterator"* %__i to { i64*, i32 }* %66 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %65, i32 0, i32 0 %67 = extractvalue { i64*, i32 } %call24, 0 store i64* %67, i64** %66, align 8 %68 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %65, i32 0, i32 1 %69 = extractvalue { i64*, i32 } %call24, 1 store i32 %69, i32* %68, align 8 %70 = load i8, i8* %__x.addr, align 1 %tobool25 = trunc i8 %70 to i1 %call28 = call { i64*, i32 } @_ZNSt13_Bit_iteratorppEi(%"struct.std::_Bit_iterator"* %__i, i32 0) %71 = bitcast %"struct.std::_Bit_iterator"* %ref.tmp27 to { i64*, i32 }* %72 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %71, i32 0, i32 0 %73 = extractvalue { i64*, i32 } %call28, 0 store i64* %73, i64** %72, align 8 %74 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %71, i32 0, i32 1 %75 = extractvalue { i64*, i32 } %call28, 1 store i32 %75, i32* %74, align 8 %call29 = call { i64*, i64 } @_ZNKSt13_Bit_iteratordeEv(%"struct.std::_Bit_iterator"* %ref.tmp27) %76 = bitcast %"struct.std::_Bit_reference"* %ref.tmp26 to { i64*, i64 }* %77 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %76, i32 0, i32 0 %78 = extractvalue { i64*, i64 } %call29, 0 store i64* %78, i64** %77, align 8 %79 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %76, i32 0, i32 1 %80 = extractvalue { i64*, i64 } %call29, 1 store i64 %80, i64* %79, align 8 %call30 = call dereferenceable(16) %"struct.std::_Bit_reference"* @_ZNSt14_Bit_referenceaSEb(%"struct.std::_Bit_reference"* %ref.tmp26, i1 zeroext %tobool25) %81 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp31 to i8* %82 = bitcast %"struct.std::_Bit_iterator"* %__position to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %81, i8* align 8 %82, i64 16, i1 false) %call33 = call { i64*, i32 } @_ZNSt6vectorIbSaIbEE3endEv(%"class.std::vector.0"* %this1) %83 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp32 to { i64*, i32 }* %84 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %83, i32 0, i32 0 %85 = extractvalue { i64*, i32 } %call33, 0 store i64* %85, i64** %84, align 8 %86 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %83, i32 0, i32 1 %87 = extractvalue { i64*, i32 } %call33, 1 store i32 %87, i32* %86, align 8 %88 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp34 to i8* %89 = bitcast %"struct.std::_Bit_iterator"* %__i to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %88, i8* align 8 %89, i64 16, i1 false) %90 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp31 to { i64*, i32 }* %91 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %90, i32 0, i32 0 %92 = load i64*, i64** %91, align 8 %93 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %90, i32 0, i32 1 %94 = load i32, i32* %93, align 8 %95 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp32 to { i64*, i32 }* %96 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %95, i32 0, i32 0 %97 = load i64*, i64** %96, align 8 %98 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %95, i32 0, i32 1 %99 = load i32, i32* %98, align 8 %100 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp34 to { i64*, i32 }* %101 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %100, i32 0, i32 0 %102 = load i64*, i64** %101, align 8 %103 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %100, i32 0, i32 1 %104 = load i32, i32* %103, align 8 %call35 = call { i64*, i32 } @_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_(i64* %92, i32 %94, i64* %97, i32 %99, i64* %102, i32 %104) %105 = bitcast %"struct.std::_Bit_iterator"* %__finish to { i64*, i32 }* %106 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %105, i32 0, i32 0 %107 = extractvalue { i64*, i32 } %call35, 0 store i64* %107, i64** %106, align 8 %108 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %105, i32 0, i32 1 %109 = extractvalue { i64*, i32 } %call35, 1 store i32 %109, i32* %108, align 8 %110 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* call void @_ZNSt13_Bvector_baseISaIbEE13_M_deallocateEv(%"struct.std::_Bvector_base"* %110) %111 = load i64*, i64** %__q, align 8 %112 = load i64, i64* %__len, align 8 %call36 = call i64 @_ZNSt13_Bvector_baseISaIbEE8_S_nwordEm(i64 %112) %add.ptr = getelementptr inbounds i64, i64* %111, i64 %call36 %113 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl37 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %113, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl37, i32 0, i32 2 store i64* %add.ptr, i64** %_M_end_of_storage, align 8 %114 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl38 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %114, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl38, i32 0, i32 0 %115 = bitcast %"struct.std::_Bit_iterator"* %_M_start to i8* %116 = bitcast %"struct.std::_Bit_iterator"* %__start to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %115, i8* align 8 %116, i64 12, i1 false) %117 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl39 = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %117, i32 0, i32 0 %_M_finish40 = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl39, i32 0, i32 1 %118 = bitcast %"struct.std::_Bit_iterator"* %_M_finish40 to i8* %119 = bitcast %"struct.std::_Bit_iterator"* %__finish to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %118, i8* align 8 %119, i64 12, i1 false) br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZNSt6vectorIbSaIbEE3endEv(%"class.std::vector.0"* %this) #6 comdat align 2 { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %this.addr = alloca %"class.std::vector.0"*, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Bvector_base", %"struct.std::_Bvector_base"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Bvector_base >::_Bvector_impl", %"struct.std::_Bvector_base >::_Bvector_impl"* %_M_impl, i32 0, i32 1 %1 = bitcast %"struct.std::_Bit_iterator"* %retval to i8* %2 = bitcast %"struct.std::_Bit_iterator"* %_M_finish to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %1, i8* align 8 %2, i64 16, i1 false) %3 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %4 = load { i64*, i32 }, { i64*, i32 }* %3, align 8 ret { i64*, i32 } %4 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, i64* %__result.coerce0, i32 %__result.coerce1) #0 comdat { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_iterator", align 8 %__last = alloca %"struct.std::_Bit_iterator", align 8 %__result = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp1 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp2 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp3 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp5 = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_iterator"* %__result to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 store i64* %__result.coerce0, i64** %7, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 store i32 %__result.coerce1, i32* %8, align 8 %9 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp1 to i8* %10 = bitcast %"struct.std::_Bit_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) %11 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp1 to { i64*, i32 }* %12 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 0 %13 = load i64*, i64** %12, align 8 %14 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 1 %15 = load i32, i32* %14, align 8 %call = call { i64*, i32 } @_ZSt12__miter_baseISt13_Bit_iteratorET_S1_(i64* %13, i32 %15) %16 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %17 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 0 %18 = extractvalue { i64*, i32 } %call, 0 store i64* %18, i64** %17, align 8 %19 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 1 %20 = extractvalue { i64*, i32 } %call, 1 store i32 %20, i32* %19, align 8 %21 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp3 to i8* %22 = bitcast %"struct.std::_Bit_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %22, i64 16, i1 false) %23 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp3 to { i64*, i32 }* %24 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 0 %25 = load i64*, i64** %24, align 8 %26 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 1 %27 = load i32, i32* %26, align 8 %call4 = call { i64*, i32 } @_ZSt12__miter_baseISt13_Bit_iteratorET_S1_(i64* %25, i32 %27) %28 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to { i64*, i32 }* %29 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 0 %30 = extractvalue { i64*, i32 } %call4, 0 store i64* %30, i64** %29, align 8 %31 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 1 %32 = extractvalue { i64*, i32 } %call4, 1 store i32 %32, i32* %31, align 8 %33 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp5 to i8* %34 = bitcast %"struct.std::_Bit_iterator"* %__result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %33, i8* align 8 %34, i64 16, i1 false) %35 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %36 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %35, i32 0, i32 0 %37 = load i64*, i64** %36, align 8 %38 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %35, i32 0, i32 1 %39 = load i32, i32* %38, align 8 %40 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to { i64*, i32 }* %41 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %40, i32 0, i32 0 %42 = load i64*, i64** %41, align 8 %43 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %40, i32 0, i32 1 %44 = load i32, i32* %43, align 8 %45 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp5 to { i64*, i32 }* %46 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %45, i32 0, i32 0 %47 = load i64*, i64** %46, align 8 %48 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %45, i32 0, i32 1 %49 = load i32, i32* %48, align 8 %call6 = call { i64*, i32 } @_ZSt23__copy_move_backward_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_(i64* %37, i32 %39, i64* %42, i32 %44, i64* %47, i32 %49) %50 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %51 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %50, i32 0, i32 0 %52 = extractvalue { i64*, i32 } %call6, 0 store i64* %52, i64** %51, align 8 %53 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %50, i32 0, i32 1 %54 = extractvalue { i64*, i32 } %call6, 1 store i32 %54, i32* %53, align 8 %55 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %56 = load { i64*, i32 }, { i64*, i32 }* %55, align 8 ret { i64*, i32 } %56 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorIbSaIbEE12_M_check_lenEmPKc(%"class.std::vector.0"* %this, i64 %__n, i8* %__s) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 %__n.addr = alloca i64, align 8 %__s.addr = alloca i8*, align 8 %__len = alloca i64, align 8 %ref.tmp = alloca i64, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 store i8* %__s, i8** %__s.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %call = call i64 @_ZNKSt6vectorIbSaIbEE8max_sizeEv(%"class.std::vector.0"* %this1) %call2 = call i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(%"class.std::vector.0"* %this1) %sub = sub i64 %call, %call2 %0 = load i64, i64* %__n.addr, align 8 %cmp = icmp ult i64 %sub, %0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load i8*, i8** %__s.addr, align 8 call void @_ZSt20__throw_length_errorPKc(i8* %1) #19 unreachable if.end: ; preds = %entry %call3 = call i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(%"class.std::vector.0"* %this1) %call4 = call i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(%"class.std::vector.0"* %this1) store i64 %call4, i64* %ref.tmp, align 8 %call5 = call dereferenceable(8) i64* @_ZSt3maxImERKT_S2_S2_(i64* dereferenceable(8) %ref.tmp, i64* dereferenceable(8) %__n.addr) %2 = load i64, i64* %call5, align 8 %add = add i64 %call3, %2 store i64 %add, i64* %__len, align 8 %3 = load i64, i64* %__len, align 8 %call6 = call i64 @_ZNKSt6vectorIbSaIbEE4sizeEv(%"class.std::vector.0"* %this1) %cmp7 = icmp ult i64 %3, %call6 br i1 %cmp7, label %cond.true, label %lor.lhs.false lor.lhs.false: ; preds = %if.end %4 = load i64, i64* %__len, align 8 %call8 = call i64 @_ZNKSt6vectorIbSaIbEE8max_sizeEv(%"class.std::vector.0"* %this1) %cmp9 = icmp ugt i64 %4, %call8 br i1 %cmp9, label %cond.true, label %cond.false cond.true: ; preds = %lor.lhs.false, %if.end %call10 = call i64 @_ZNKSt6vectorIbSaIbEE8max_sizeEv(%"class.std::vector.0"* %this1) br label %cond.end cond.false: ; preds = %lor.lhs.false %5 = load i64, i64* %__len, align 8 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i64 [ %call10, %cond.true ], [ %5, %cond.false ] ret i64 %cond } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt4copyISt13_Bit_iteratorS0_ET0_T_S2_S1_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, i64* %__result.coerce0, i32 %__result.coerce1) #0 comdat { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_iterator", align 8 %__last = alloca %"struct.std::_Bit_iterator", align 8 %__result = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp1 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp2 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp3 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp5 = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_iterator"* %__result to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 store i64* %__result.coerce0, i64** %7, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 store i32 %__result.coerce1, i32* %8, align 8 %9 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp1 to i8* %10 = bitcast %"struct.std::_Bit_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) %11 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp1 to { i64*, i32 }* %12 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 0 %13 = load i64*, i64** %12, align 8 %14 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 1 %15 = load i32, i32* %14, align 8 %call = call { i64*, i32 } @_ZSt12__miter_baseISt13_Bit_iteratorET_S1_(i64* %13, i32 %15) %16 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %17 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 0 %18 = extractvalue { i64*, i32 } %call, 0 store i64* %18, i64** %17, align 8 %19 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 1 %20 = extractvalue { i64*, i32 } %call, 1 store i32 %20, i32* %19, align 8 %21 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp3 to i8* %22 = bitcast %"struct.std::_Bit_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %22, i64 16, i1 false) %23 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp3 to { i64*, i32 }* %24 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 0 %25 = load i64*, i64** %24, align 8 %26 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 1 %27 = load i32, i32* %26, align 8 %call4 = call { i64*, i32 } @_ZSt12__miter_baseISt13_Bit_iteratorET_S1_(i64* %25, i32 %27) %28 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to { i64*, i32 }* %29 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 0 %30 = extractvalue { i64*, i32 } %call4, 0 store i64* %30, i64** %29, align 8 %31 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 1 %32 = extractvalue { i64*, i32 } %call4, 1 store i32 %32, i32* %31, align 8 %33 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp5 to i8* %34 = bitcast %"struct.std::_Bit_iterator"* %__result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %33, i8* align 8 %34, i64 16, i1 false) %35 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %36 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %35, i32 0, i32 0 %37 = load i64*, i64** %36, align 8 %38 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %35, i32 0, i32 1 %39 = load i32, i32* %38, align 8 %40 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to { i64*, i32 }* %41 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %40, i32 0, i32 0 %42 = load i64*, i64** %41, align 8 %43 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %40, i32 0, i32 1 %44 = load i32, i32* %43, align 8 %45 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp5 to { i64*, i32 }* %46 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %45, i32 0, i32 0 %47 = load i64*, i64** %46, align 8 %48 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %45, i32 0, i32 1 %49 = load i32, i32* %48, align 8 %call6 = call { i64*, i32 } @_ZSt14__copy_move_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_(i64* %37, i32 %39, i64* %42, i32 %44, i64* %47, i32 %49) %50 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %51 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %50, i32 0, i32 0 %52 = extractvalue { i64*, i32 } %call6, 0 store i64* %52, i64** %51, align 8 %53 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %50, i32 0, i32 1 %54 = extractvalue { i64*, i32 } %call6, 1 store i32 %54, i32* %53, align 8 %55 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %56 = load { i64*, i32 }, { i64*, i32 }* %55, align 8 ret { i64*, i32 } %56 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt23__copy_move_backward_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, i64* %__result.coerce0, i32 %__result.coerce1) #0 comdat { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_iterator", align 8 %__last = alloca %"struct.std::_Bit_iterator", align 8 %__result = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp1 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp2 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp3 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp5 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp6 = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_iterator"* %__result to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 store i64* %__result.coerce0, i64** %7, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 store i32 %__result.coerce1, i32* %8, align 8 %9 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp1 to i8* %10 = bitcast %"struct.std::_Bit_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) %11 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp1 to { i64*, i32 }* %12 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 0 %13 = load i64*, i64** %12, align 8 %14 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 1 %15 = load i32, i32* %14, align 8 %call = call { i64*, i32 } @_ZSt12__niter_baseISt13_Bit_iteratorET_S1_(i64* %13, i32 %15) %16 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %17 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 0 %18 = extractvalue { i64*, i32 } %call, 0 store i64* %18, i64** %17, align 8 %19 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 1 %20 = extractvalue { i64*, i32 } %call, 1 store i32 %20, i32* %19, align 8 %21 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp3 to i8* %22 = bitcast %"struct.std::_Bit_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %22, i64 16, i1 false) %23 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp3 to { i64*, i32 }* %24 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 0 %25 = load i64*, i64** %24, align 8 %26 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 1 %27 = load i32, i32* %26, align 8 %call4 = call { i64*, i32 } @_ZSt12__niter_baseISt13_Bit_iteratorET_S1_(i64* %25, i32 %27) %28 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to { i64*, i32 }* %29 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 0 %30 = extractvalue { i64*, i32 } %call4, 0 store i64* %30, i64** %29, align 8 %31 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 1 %32 = extractvalue { i64*, i32 } %call4, 1 store i32 %32, i32* %31, align 8 %33 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp6 to i8* %34 = bitcast %"struct.std::_Bit_iterator"* %__result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %33, i8* align 8 %34, i64 16, i1 false) %35 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp6 to { i64*, i32 }* %36 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %35, i32 0, i32 0 %37 = load i64*, i64** %36, align 8 %38 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %35, i32 0, i32 1 %39 = load i32, i32* %38, align 8 %call7 = call { i64*, i32 } @_ZSt12__niter_baseISt13_Bit_iteratorET_S1_(i64* %37, i32 %39) %40 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp5 to { i64*, i32 }* %41 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %40, i32 0, i32 0 %42 = extractvalue { i64*, i32 } %call7, 0 store i64* %42, i64** %41, align 8 %43 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %40, i32 0, i32 1 %44 = extractvalue { i64*, i32 } %call7, 1 store i32 %44, i32* %43, align 8 %45 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %46 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %45, i32 0, i32 0 %47 = load i64*, i64** %46, align 8 %48 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %45, i32 0, i32 1 %49 = load i32, i32* %48, align 8 %50 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to { i64*, i32 }* %51 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %50, i32 0, i32 0 %52 = load i64*, i64** %51, align 8 %53 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %50, i32 0, i32 1 %54 = load i32, i32* %53, align 8 %55 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp5 to { i64*, i32 }* %56 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %55, i32 0, i32 0 %57 = load i64*, i64** %56, align 8 %58 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %55, i32 0, i32 1 %59 = load i32, i32* %58, align 8 %call8 = call { i64*, i32 } @_ZSt22__copy_move_backward_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_(i64* %47, i32 %49, i64* %52, i32 %54, i64* %57, i32 %59) %60 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %61 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %60, i32 0, i32 0 %62 = extractvalue { i64*, i32 } %call8, 0 store i64* %62, i64** %61, align 8 %63 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %60, i32 0, i32 1 %64 = extractvalue { i64*, i32 } %call8, 1 store i32 %64, i32* %63, align 8 %65 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %66 = load { i64*, i32 }, { i64*, i32 }* %65, align 8 ret { i64*, i32 } %66 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt12__miter_baseISt13_Bit_iteratorET_S1_(i64* %__it.coerce0, i32 %__it.coerce1) #6 comdat { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__it = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %__it to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__it.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__it.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_iterator"* %retval to i8* %4 = bitcast %"struct.std::_Bit_iterator"* %__it to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %4, i64 16, i1 false) %5 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %6 = load { i64*, i32 }, { i64*, i32 }* %5, align 8 ret { i64*, i32 } %6 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt22__copy_move_backward_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, i64* %__result.coerce0, i32 %__result.coerce1) #0 comdat { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_iterator", align 8 %__last = alloca %"struct.std::_Bit_iterator", align 8 %__result = alloca %"struct.std::_Bit_iterator", align 8 %__simple = alloca i8, align 1 %agg.tmp = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp1 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp2 = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_iterator"* %__result to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 store i64* %__result.coerce0, i64** %7, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 store i32 %__result.coerce1, i32* %8, align 8 store i8 0, i8* %__simple, align 1 %9 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to i8* %10 = bitcast %"struct.std::_Bit_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) %11 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp1 to i8* %12 = bitcast %"struct.std::_Bit_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 16, i1 false) %13 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to i8* %14 = bitcast %"struct.std::_Bit_iterator"* %__result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 16, i1 false) %15 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %16 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %15, i32 0, i32 0 %17 = load i64*, i64** %16, align 8 %18 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %15, i32 0, i32 1 %19 = load i32, i32* %18, align 8 %20 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp1 to { i64*, i32 }* %21 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %20, i32 0, i32 0 %22 = load i64*, i64** %21, align 8 %23 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %20, i32 0, i32 1 %24 = load i32, i32* %23, align 8 %25 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to { i64*, i32 }* %26 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %25, i32 0, i32 0 %27 = load i64*, i64** %26, align 8 %28 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %25, i32 0, i32 1 %29 = load i32, i32* %28, align 8 %call = call { i64*, i32 } @_ZNSt20__copy_move_backwardILb0ELb0ESt26random_access_iterator_tagE13__copy_move_bISt13_Bit_iteratorS3_EET0_T_S5_S4_(i64* %17, i32 %19, i64* %22, i32 %24, i64* %27, i32 %29) %30 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %31 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %30, i32 0, i32 0 %32 = extractvalue { i64*, i32 } %call, 0 store i64* %32, i64** %31, align 8 %33 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %30, i32 0, i32 1 %34 = extractvalue { i64*, i32 } %call, 1 store i32 %34, i32* %33, align 8 %35 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %36 = load { i64*, i32 }, { i64*, i32 }* %35, align 8 ret { i64*, i32 } %36 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZNSt20__copy_move_backwardILb0ELb0ESt26random_access_iterator_tagE13__copy_move_bISt13_Bit_iteratorS3_EET0_T_S5_S4_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, i64* %__result.coerce0, i32 %__result.coerce1) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_iterator", align 8 %__last = alloca %"struct.std::_Bit_iterator", align 8 %__result = alloca %"struct.std::_Bit_iterator", align 8 %__n = alloca i64, align 8 %ref.tmp = alloca %"struct.std::_Bit_reference", align 8 %ref.tmp3 = alloca %"struct.std::_Bit_reference", align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_iterator"* %__result to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 store i64* %__result.coerce0, i64** %7, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 store i32 %__result.coerce1, i32* %8, align 8 %9 = bitcast %"struct.std::_Bit_iterator"* %__last to %"struct.std::_Bit_iterator_base"* %10 = bitcast %"struct.std::_Bit_iterator"* %__first to %"struct.std::_Bit_iterator_base"* %call = call i64 @_ZStmiRKSt18_Bit_iterator_baseS1_(%"struct.std::_Bit_iterator_base"* dereferenceable(16) %9, %"struct.std::_Bit_iterator_base"* dereferenceable(16) %10) store i64 %call, i64* %__n, align 8 br label %for.cond for.cond: ; preds = %for.inc, %entry %11 = load i64, i64* %__n, align 8 %cmp = icmp sgt i64 %11, 0 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %call1 = call dereferenceable(16) %"struct.std::_Bit_iterator"* @_ZNSt13_Bit_iteratormmEv(%"struct.std::_Bit_iterator"* %__last) %call2 = call { i64*, i64 } @_ZNKSt13_Bit_iteratordeEv(%"struct.std::_Bit_iterator"* %call1) %12 = bitcast %"struct.std::_Bit_reference"* %ref.tmp to { i64*, i64 }* %13 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %12, i32 0, i32 0 %14 = extractvalue { i64*, i64 } %call2, 0 store i64* %14, i64** %13, align 8 %15 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %12, i32 0, i32 1 %16 = extractvalue { i64*, i64 } %call2, 1 store i64 %16, i64* %15, align 8 %call4 = call dereferenceable(16) %"struct.std::_Bit_iterator"* @_ZNSt13_Bit_iteratormmEv(%"struct.std::_Bit_iterator"* %__result) %call5 = call { i64*, i64 } @_ZNKSt13_Bit_iteratordeEv(%"struct.std::_Bit_iterator"* %call4) %17 = bitcast %"struct.std::_Bit_reference"* %ref.tmp3 to { i64*, i64 }* %18 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %17, i32 0, i32 0 %19 = extractvalue { i64*, i64 } %call5, 0 store i64* %19, i64** %18, align 8 %20 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %17, i32 0, i32 1 %21 = extractvalue { i64*, i64 } %call5, 1 store i64 %21, i64* %20, align 8 %call6 = call dereferenceable(16) %"struct.std::_Bit_reference"* @_ZNSt14_Bit_referenceaSERKS_(%"struct.std::_Bit_reference"* %ref.tmp3, %"struct.std::_Bit_reference"* dereferenceable(16) %ref.tmp) br label %for.inc for.inc: ; preds = %for.body %22 = load i64, i64* %__n, align 8 %dec = add nsw i64 %22, -1 store i64 %dec, i64* %__n, align 8 br label %for.cond for.end: ; preds = %for.cond %23 = bitcast %"struct.std::_Bit_iterator"* %retval to i8* %24 = bitcast %"struct.std::_Bit_iterator"* %__result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false) %25 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %26 = load { i64*, i32 }, { i64*, i32 }* %25, align 8 ret { i64*, i32 } %26 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local dereferenceable(16) %"struct.std::_Bit_iterator"* @_ZNSt13_Bit_iteratormmEv(%"struct.std::_Bit_iterator"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_iterator"*, align 8 store %"struct.std::_Bit_iterator"* %this, %"struct.std::_Bit_iterator"** %this.addr, align 8 %this1 = load %"struct.std::_Bit_iterator"*, %"struct.std::_Bit_iterator"** %this.addr, align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %this1 to %"struct.std::_Bit_iterator_base"* call void @_ZNSt18_Bit_iterator_base12_M_bump_downEv(%"struct.std::_Bit_iterator_base"* %0) ret %"struct.std::_Bit_iterator"* %this1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(16) %"struct.std::_Bit_reference"* @_ZNSt14_Bit_referenceaSERKS_(%"struct.std::_Bit_reference"* %this, %"struct.std::_Bit_reference"* dereferenceable(16) %__x) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_reference"*, align 8 %__x.addr = alloca %"struct.std::_Bit_reference"*, align 8 store %"struct.std::_Bit_reference"* %this, %"struct.std::_Bit_reference"** %this.addr, align 8 store %"struct.std::_Bit_reference"* %__x, %"struct.std::_Bit_reference"** %__x.addr, align 8 %this1 = load %"struct.std::_Bit_reference"*, %"struct.std::_Bit_reference"** %this.addr, align 8 %0 = load %"struct.std::_Bit_reference"*, %"struct.std::_Bit_reference"** %__x.addr, align 8 %call = call zeroext i1 @_ZNKSt14_Bit_referencecvbEv(%"struct.std::_Bit_reference"* %0) %call2 = call dereferenceable(16) %"struct.std::_Bit_reference"* @_ZNSt14_Bit_referenceaSEb(%"struct.std::_Bit_reference"* %this1, i1 zeroext %call) ret %"struct.std::_Bit_reference"* %call2 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt18_Bit_iterator_base12_M_bump_downEv(%"struct.std::_Bit_iterator_base"* %this) #6 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Bit_iterator_base"*, align 8 store %"struct.std::_Bit_iterator_base"* %this, %"struct.std::_Bit_iterator_base"** %this.addr, align 8 %this1 = load %"struct.std::_Bit_iterator_base"*, %"struct.std::_Bit_iterator_base"** %this.addr, align 8 %_M_offset = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %this1, i32 0, i32 1 %0 = load i32, i32* %_M_offset, align 8 %dec = add i32 %0, -1 store i32 %dec, i32* %_M_offset, align 8 %cmp = icmp eq i32 %0, 0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %_M_offset2 = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %this1, i32 0, i32 1 store i32 63, i32* %_M_offset2, align 8 %_M_p = getelementptr inbounds %"struct.std::_Bit_iterator_base", %"struct.std::_Bit_iterator_base"* %this1, i32 0, i32 0 %1 = load i64*, i64** %_M_p, align 8 %incdec.ptr = getelementptr inbounds i64, i64* %1, i32 -1 store i64* %incdec.ptr, i64** %_M_p, align 8 br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorIbSaIbEE8max_sizeEv(%"class.std::vector.0"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 %__isize = alloca i64, align 8 %__asize = alloca i64, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 store i64 9223372036854775744, i64* %__isize, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Bvector_base"* %call = call dereferenceable(1) %"class.std::allocator.1"* @_ZNKSt13_Bvector_baseISaIbEE20_M_get_Bit_allocatorEv(%"struct.std::_Bvector_base"* %0) %call2 = call i64 @_ZN9__gnu_cxx14__alloc_traitsISaImEE8max_sizeERKS1_(%"class.std::allocator.1"* dereferenceable(1) %call) store i64 %call2, i64* %__asize, align 8 %1 = load i64, i64* %__asize, align 8 %cmp = icmp ule i64 %1, 144115188075855871 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %2 = load i64, i64* %__asize, align 8 %mul = mul i64 %2, 64 br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i64 [ %mul, %cond.true ], [ 9223372036854775744, %cond.false ] ret i64 %cond } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZN9__gnu_cxx14__alloc_traitsISaImEE8max_sizeERKS1_(%"class.std::allocator.1"* dereferenceable(1) %__a) #6 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator.1"*, align 8 store %"class.std::allocator.1"* %__a, %"class.std::allocator.1"** %__a.addr, align 8 %0 = load %"class.std::allocator.1"*, %"class.std::allocator.1"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator.1"* %0 to %"class.__gnu_cxx::new_allocator.2"* %call = call i64 @_ZNK9__gnu_cxx13new_allocatorImE8max_sizeEv(%"class.__gnu_cxx::new_allocator.2"* %1) #3 ret i64 %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt14__copy_move_a2ILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, i64* %__result.coerce0, i32 %__result.coerce1) #0 comdat { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_iterator", align 8 %__last = alloca %"struct.std::_Bit_iterator", align 8 %__result = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp1 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp2 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp3 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp5 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp6 = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_iterator"* %__result to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 store i64* %__result.coerce0, i64** %7, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 store i32 %__result.coerce1, i32* %8, align 8 %9 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp1 to i8* %10 = bitcast %"struct.std::_Bit_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) %11 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp1 to { i64*, i32 }* %12 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 0 %13 = load i64*, i64** %12, align 8 %14 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %11, i32 0, i32 1 %15 = load i32, i32* %14, align 8 %call = call { i64*, i32 } @_ZSt12__niter_baseISt13_Bit_iteratorET_S1_(i64* %13, i32 %15) %16 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %17 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 0 %18 = extractvalue { i64*, i32 } %call, 0 store i64* %18, i64** %17, align 8 %19 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %16, i32 0, i32 1 %20 = extractvalue { i64*, i32 } %call, 1 store i32 %20, i32* %19, align 8 %21 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp3 to i8* %22 = bitcast %"struct.std::_Bit_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %22, i64 16, i1 false) %23 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp3 to { i64*, i32 }* %24 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 0 %25 = load i64*, i64** %24, align 8 %26 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %23, i32 0, i32 1 %27 = load i32, i32* %26, align 8 %call4 = call { i64*, i32 } @_ZSt12__niter_baseISt13_Bit_iteratorET_S1_(i64* %25, i32 %27) %28 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to { i64*, i32 }* %29 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 0 %30 = extractvalue { i64*, i32 } %call4, 0 store i64* %30, i64** %29, align 8 %31 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %28, i32 0, i32 1 %32 = extractvalue { i64*, i32 } %call4, 1 store i32 %32, i32* %31, align 8 %33 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp6 to i8* %34 = bitcast %"struct.std::_Bit_iterator"* %__result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %33, i8* align 8 %34, i64 16, i1 false) %35 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp6 to { i64*, i32 }* %36 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %35, i32 0, i32 0 %37 = load i64*, i64** %36, align 8 %38 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %35, i32 0, i32 1 %39 = load i32, i32* %38, align 8 %call7 = call { i64*, i32 } @_ZSt12__niter_baseISt13_Bit_iteratorET_S1_(i64* %37, i32 %39) %40 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp5 to { i64*, i32 }* %41 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %40, i32 0, i32 0 %42 = extractvalue { i64*, i32 } %call7, 0 store i64* %42, i64** %41, align 8 %43 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %40, i32 0, i32 1 %44 = extractvalue { i64*, i32 } %call7, 1 store i32 %44, i32* %43, align 8 %45 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %46 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %45, i32 0, i32 0 %47 = load i64*, i64** %46, align 8 %48 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %45, i32 0, i32 1 %49 = load i32, i32* %48, align 8 %50 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to { i64*, i32 }* %51 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %50, i32 0, i32 0 %52 = load i64*, i64** %51, align 8 %53 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %50, i32 0, i32 1 %54 = load i32, i32* %53, align 8 %55 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp5 to { i64*, i32 }* %56 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %55, i32 0, i32 0 %57 = load i64*, i64** %56, align 8 %58 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %55, i32 0, i32 1 %59 = load i32, i32* %58, align 8 %call8 = call { i64*, i32 } @_ZSt13__copy_move_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_(i64* %47, i32 %49, i64* %52, i32 %54, i64* %57, i32 %59) %60 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %61 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %60, i32 0, i32 0 %62 = extractvalue { i64*, i32 } %call8, 0 store i64* %62, i64** %61, align 8 %63 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %60, i32 0, i32 1 %64 = extractvalue { i64*, i32 } %call8, 1 store i32 %64, i32* %63, align 8 %65 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %66 = load { i64*, i32 }, { i64*, i32 }* %65, align 8 ret { i64*, i32 } %66 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZSt13__copy_move_aILb0ESt13_Bit_iteratorS0_ET1_T0_S2_S1_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, i64* %__result.coerce0, i32 %__result.coerce1) #0 comdat { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_iterator", align 8 %__last = alloca %"struct.std::_Bit_iterator", align 8 %__result = alloca %"struct.std::_Bit_iterator", align 8 %__simple = alloca i8, align 1 %agg.tmp = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp1 = alloca %"struct.std::_Bit_iterator", align 8 %agg.tmp2 = alloca %"struct.std::_Bit_iterator", align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_iterator"* %__result to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 store i64* %__result.coerce0, i64** %7, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 store i32 %__result.coerce1, i32* %8, align 8 store i8 0, i8* %__simple, align 1 %9 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to i8* %10 = bitcast %"struct.std::_Bit_iterator"* %__first to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) %11 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp1 to i8* %12 = bitcast %"struct.std::_Bit_iterator"* %__last to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 16, i1 false) %13 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to i8* %14 = bitcast %"struct.std::_Bit_iterator"* %__result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 16, i1 false) %15 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp to { i64*, i32 }* %16 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %15, i32 0, i32 0 %17 = load i64*, i64** %16, align 8 %18 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %15, i32 0, i32 1 %19 = load i32, i32* %18, align 8 %20 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp1 to { i64*, i32 }* %21 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %20, i32 0, i32 0 %22 = load i64*, i64** %21, align 8 %23 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %20, i32 0, i32 1 %24 = load i32, i32* %23, align 8 %25 = bitcast %"struct.std::_Bit_iterator"* %agg.tmp2 to { i64*, i32 }* %26 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %25, i32 0, i32 0 %27 = load i64*, i64** %26, align 8 %28 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %25, i32 0, i32 1 %29 = load i32, i32* %28, align 8 %call = call { i64*, i32 } @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt13_Bit_iteratorS3_EET0_T_S5_S4_(i64* %17, i32 %19, i64* %22, i32 %24, i64* %27, i32 %29) %30 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %31 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %30, i32 0, i32 0 %32 = extractvalue { i64*, i32 } %call, 0 store i64* %32, i64** %31, align 8 %33 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %30, i32 0, i32 1 %34 = extractvalue { i64*, i32 } %call, 1 store i32 %34, i32* %33, align 8 %35 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %36 = load { i64*, i32 }, { i64*, i32 }* %35, align 8 ret { i64*, i32 } %36 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local { i64*, i32 } @_ZNSt11__copy_moveILb0ELb0ESt26random_access_iterator_tagE8__copy_mISt13_Bit_iteratorS3_EET0_T_S5_S4_(i64* %__first.coerce0, i32 %__first.coerce1, i64* %__last.coerce0, i32 %__last.coerce1, i64* %__result.coerce0, i32 %__result.coerce1) #0 comdat align 2 { entry: %retval = alloca %"struct.std::_Bit_iterator", align 8 %__first = alloca %"struct.std::_Bit_iterator", align 8 %__last = alloca %"struct.std::_Bit_iterator", align 8 %__result = alloca %"struct.std::_Bit_iterator", align 8 %__n = alloca i64, align 8 %ref.tmp = alloca %"struct.std::_Bit_reference", align 8 %ref.tmp2 = alloca %"struct.std::_Bit_reference", align 8 %0 = bitcast %"struct.std::_Bit_iterator"* %__first to { i64*, i32 }* %1 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 0 store i64* %__first.coerce0, i64** %1, align 8 %2 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %0, i32 0, i32 1 store i32 %__first.coerce1, i32* %2, align 8 %3 = bitcast %"struct.std::_Bit_iterator"* %__last to { i64*, i32 }* %4 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 0 store i64* %__last.coerce0, i64** %4, align 8 %5 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %3, i32 0, i32 1 store i32 %__last.coerce1, i32* %5, align 8 %6 = bitcast %"struct.std::_Bit_iterator"* %__result to { i64*, i32 }* %7 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 0 store i64* %__result.coerce0, i64** %7, align 8 %8 = getelementptr inbounds { i64*, i32 }, { i64*, i32 }* %6, i32 0, i32 1 store i32 %__result.coerce1, i32* %8, align 8 %9 = bitcast %"struct.std::_Bit_iterator"* %__last to %"struct.std::_Bit_iterator_base"* %10 = bitcast %"struct.std::_Bit_iterator"* %__first to %"struct.std::_Bit_iterator_base"* %call = call i64 @_ZStmiRKSt18_Bit_iterator_baseS1_(%"struct.std::_Bit_iterator_base"* dereferenceable(16) %9, %"struct.std::_Bit_iterator_base"* dereferenceable(16) %10) store i64 %call, i64* %__n, align 8 br label %for.cond for.cond: ; preds = %for.inc, %entry %11 = load i64, i64* %__n, align 8 %cmp = icmp sgt i64 %11, 0 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %call1 = call { i64*, i64 } @_ZNKSt13_Bit_iteratordeEv(%"struct.std::_Bit_iterator"* %__first) %12 = bitcast %"struct.std::_Bit_reference"* %ref.tmp to { i64*, i64 }* %13 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %12, i32 0, i32 0 %14 = extractvalue { i64*, i64 } %call1, 0 store i64* %14, i64** %13, align 8 %15 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %12, i32 0, i32 1 %16 = extractvalue { i64*, i64 } %call1, 1 store i64 %16, i64* %15, align 8 %call3 = call { i64*, i64 } @_ZNKSt13_Bit_iteratordeEv(%"struct.std::_Bit_iterator"* %__result) %17 = bitcast %"struct.std::_Bit_reference"* %ref.tmp2 to { i64*, i64 }* %18 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %17, i32 0, i32 0 %19 = extractvalue { i64*, i64 } %call3, 0 store i64* %19, i64** %18, align 8 %20 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %17, i32 0, i32 1 %21 = extractvalue { i64*, i64 } %call3, 1 store i64 %21, i64* %20, align 8 %call4 = call dereferenceable(16) %"struct.std::_Bit_reference"* @_ZNSt14_Bit_referenceaSERKS_(%"struct.std::_Bit_reference"* %ref.tmp2, %"struct.std::_Bit_reference"* dereferenceable(16) %ref.tmp) %call5 = call dereferenceable(16) %"struct.std::_Bit_iterator"* @_ZNSt13_Bit_iteratorppEv(%"struct.std::_Bit_iterator"* %__first) %call6 = call dereferenceable(16) %"struct.std::_Bit_iterator"* @_ZNSt13_Bit_iteratorppEv(%"struct.std::_Bit_iterator"* %__result) br label %for.inc for.inc: ; preds = %for.body %22 = load i64, i64* %__n, align 8 %dec = add nsw i64 %22, -1 store i64 %dec, i64* %__n, align 8 br label %for.cond for.end: ; preds = %for.cond %23 = bitcast %"struct.std::_Bit_iterator"* %retval to i8* %24 = bitcast %"struct.std::_Bit_iterator"* %__result to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false) %25 = bitcast %"struct.std::_Bit_iterator"* %retval to { i64*, i32 }* %26 = load { i64*, i32 }, { i64*, i32 }* %25, align 8 ret { i64*, i32 } %26 } ; Function Attrs: noinline uwtable define internal void @_GLOBAL__sub_I_main_test_cu.cu() #2 section ".text.startup" { entry: call void @__cxx_global_var_init() ret void } define internal void @__cuda_register_globals(i8** %0) { entry: %1 = call i32 @__cudaRegisterFunction(i8** %0, i8* bitcast (void (i8*, i64, i32*)* @_Z12histo_kernelPhlPj to i8*), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @0, i64 0, i64 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @0, i64 0, i64 0), i32 -1, i8* null, i8* null, i8* null, i8* null, i32* null) %2 = call i32 @__cudaRegisterFunction(i8** %0, i8* bitcast (void (i32*, i32*, i32*, i32*, i32*, i32*, i32*, i32*)* @_ZL26vlc_encode_kernel_sm64huffPjPKjS1_S_S_S_S_S_ to i8*), i8* getelementptr inbounds ([50 x i8], [50 x i8]* @1, i64 0, i64 0), i8* getelementptr inbounds ([50 x i8], [50 x i8]* @1, i64 0, i64 0), i32 -1, i8* null, i8* null, i8* null, i8* null, i32* null) %3 = call i32 @__cudaRegisterFunction(i8** %0, i8* bitcast (void (i32*, i32*, i32*, i32, i32, i32)* @_ZL7prescanILb1ELb0EEvPjPKjS0_iii to i8*), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @2, i64 0, i64 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @2, i64 0, i64 0), i32 -1, i8* null, i8* null, i8* null, i8* null, i32* null) %4 = call i32 @__cudaRegisterFunction(i8** %0, i8* bitcast (void (i32*, i32*, i32*, i32, i32, i32)* @_ZL7prescanILb1ELb1EEvPjPKjS0_iii to i8*), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @3, i64 0, i64 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @3, i64 0, i64 0), i32 -1, i8* null, i8* null, i8* null, i8* null, i32* null) %5 = call i32 @__cudaRegisterFunction(i8** %0, i8* bitcast (void (i32*, i32*, i32, i32, i32)* @_ZL10uniformAddPjS_iii to i8*), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @4, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @4, i64 0, i64 0), i32 -1, i8* null, i8* null, i8* null, i8* null, i32* null) %6 = call i32 @__cudaRegisterFunction(i8** %0, i8* bitcast (void (i32*, i32*, i32*, i32, i32, i32)* @_ZL7prescanILb0ELb0EEvPjPKjS0_iii to i8*), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @5, i64 0, i64 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @5, i64 0, i64 0), i32 -1, i8* null, i8* null, i8* null, i8* null, i32* null) %7 = call i32 @__cudaRegisterFunction(i8** %0, i8* bitcast (void (i32*, i32*, i32*, i32, i32, i32)* @_ZL7prescanILb0ELb1EEvPjPKjS0_iii to i8*), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @6, i64 0, i64 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @6, i64 0, i64 0), i32 -1, i8* null, i8* null, i8* null, i8* null, i32* null) %8 = call i32 @__cudaRegisterFunction(i8** %0, i8* bitcast (void (i32*, i32*, i32*, i32*, i32)* @_ZL5pack2PjS_S_S_j to i8*), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @7, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @7, i64 0, i64 0), i32 -1, i8* null, i8* null, i8* null, i8* null, i32* null) ret void } declare dso_local i32 @__cudaRegisterFunction(i8**, i8*, i8*, i8*, i32, i8*, i8*, i8*, i8*, i32*) declare dso_local i32 @__cudaRegisterVar(i8**, i8*, i8*, i8*, i32, i32, i32, i32) declare dso_local i8** @__cudaRegisterFatBinary(i8*) define internal void @__cuda_module_ctor(i8* %0) { entry: %1 = call i8** @__cudaRegisterFatBinary(i8* bitcast ({ i32, i32, i8*, i8* }* @__cuda_fatbin_wrapper to i8*)) store i8** %1, i8*** @__cuda_gpubin_handle, align 8 call void @__cuda_register_globals(i8** %1) call void @__cudaRegisterFatBinaryEnd(i8** %1) %2 = call i32 @atexit(void (i8*)* @__cuda_module_dtor) ret void } declare dso_local void @__cudaRegisterFatBinaryEnd(i8**) declare dso_local void @__cudaUnregisterFatBinary(i8**) define internal void @__cuda_module_dtor(i8* %0) { entry: %1 = load i8**, i8*** @__cuda_gpubin_handle, align 8 call void @__cudaUnregisterFatBinary(i8** %1) ret void } declare dso_local i32 @atexit(void (i8*)*) attributes #0 = { noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #2 = { noinline uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #3 = { nounwind } attributes #4 = { argmemonly nounwind willreturn } attributes #5 = { noreturn nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #6 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #7 = { noinline noreturn nounwind } attributes #8 = { nobuiltin "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #9 = { nobuiltin nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #10 = { nounwind readonly } attributes #11 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #12 = { noinline norecurse optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #13 = { nounwind readnone speculatable willreturn } attributes #14 = { nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #15 = { noreturn "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #16 = { noreturn nounwind } attributes #17 = { builtin } attributes #18 = { builtin nounwind } attributes #19 = { noreturn } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} !0 = !{i32 2, !"SDK Version", [2 x i32] [i32 10, i32 1]} !1 = !{i32 1, !"wchar_size", i32 4} !2 = !{!"clang version 10.0.1 (https://github.com/llvm/llvm-project.git ef32c611aa214dea855364efd7ba451ec5ec3f74)"}