; LLVM IR from gcp/Leela :: Attributes.ll (ZN10Attributes13get_from_moveEP9FastStateRSt6vectorIiSaIiEES5_i)

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

%"class.std::bitset<110>::reference" = type { ptr, i64 }
%"struct.std::pair" = type { i32, i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::insert_iterator" = type { ptr, %"class.__gnu_cxx::__normal_iterator" }
%class.Attributes = type { i32, %"class.std::bitset.17" }
%"class.std::bitset.17" = type { %"struct.std::_Base_bitset.18" }
%"struct.std::_Base_bitset.18" = type { [2 x i64] }
%class.FastState = type { %class.FullBoard, float, i32, i32, i32, i64, i32, i8, i32, %"class.std::vector.5", %"class.std::vector.10" }
%class.FullBoard = type { %class.FastBoard.base, i64, i64 }
%class.FastBoard.base = type <{ %"struct.std::array", i8, %"struct.std::array.0", %"struct.std::array.0", %"struct.std::array.0", %"struct.std::array.0", %"struct.std::array.1", %"struct.std::array.2", %"struct.std::array.3", %"struct.std::array.4", %"struct.std::array.4", [4 x i8], %"class.std::vector", %"struct.std::array.1", %"struct.std::array.1", i32, i32, i32, i32 }>
%"struct.std::array" = type { [729 x i8] }
%"struct.std::array.0" = type { [730 x i16] }
%"struct.std::array.2" = type { [4 x i32] }
%"struct.std::array.3" = type { [8 x i32] }
%"struct.std::array.4" = type { [2 x i32] }
%"struct.std::array.1" = type { [729 x i16] }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<MovewFeatures, std::allocator<MovewFeatures>>::_Vector_impl" }
%"struct.std::_Vector_base<MovewFeatures, std::allocator<MovewFeatures>>::_Vector_impl" = type { %"struct.std::_Vector_base<MovewFeatures, std::allocator<MovewFeatures>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MovewFeatures, std::allocator<MovewFeatures>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<std::pair<int, float>, std::allocator<std::pair<int, float>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<int, float>, std::allocator<std::pair<int, float>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<int, float>, std::allocator<std::pair<int, float>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<int, float>, std::allocator<std::pair<int, float>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN14BaseAttributes13move_distanceESt4pairIiiES1_(i64, i64) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN14BaseAttributes15border_distanceESt4pairIiiEi(i64, i32 noundef) #0 align 2

declare noundef i32 @_ZN9FastState11get_to_moveEv(ptr noundef nonnull align 8 dereferenceable(11160)) #2

declare noundef i32 @_ZN9FastState13get_last_moveEv(ptr noundef nonnull align 8 dereferenceable(11160)) #2

declare i64 @_ZNK9FastBoard6get_xyEi(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef) #2

declare noundef i32 @_ZN9FastBoard11saving_sizeEii(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef, i32 noundef) #2

declare noundef i32 @_ZN9FastBoard12capture_sizeEii(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef, i32 noundef) #2

declare noundef zeroext i1 @_ZN9FastBoard10self_atariEii(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef, i32 noundef) #2

declare noundef ptr @_ZN12MCOwnerTable7get_MCOEv() #2

declare noundef float @_ZNK12MCOwnerTable12get_blackownEii(ptr noundef nonnull align 8 dereferenceable(5848), i32 noundef, i32 noundef) #2

declare noundef i32 @_ZN9FastBoard18minimum_elib_countEii(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10Attributes13get_from_moveEP9FastStateRSt6vectorIiSaIiEES5_i(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %4) #0 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca float, align 4
  %14 = alloca %"class.std::bitset<110>::reference", align 8
  %15 = alloca %"class.std::bitset<110>::reference", align 8
  %16 = alloca %"class.std::bitset<110>::reference", align 8
  %17 = alloca %"class.std::bitset<110>::reference", align 8
  %18 = alloca %"class.std::bitset<110>::reference", align 8
  %19 = alloca %"class.std::bitset<110>::reference", align 8
  %20 = alloca %"class.std::bitset<110>::reference", align 8
  %21 = alloca %"class.std::bitset<110>::reference", align 8
  %22 = alloca %"class.std::bitset<110>::reference", align 8
  %23 = alloca %"class.std::bitset<110>::reference", align 8
  %24 = alloca float, align 4
  %25 = alloca %"class.std::bitset<110>::reference", align 8
  %26 = alloca %"class.std::bitset<110>::reference", align 8
  %27 = alloca %"class.std::bitset<110>::reference", align 8
  %28 = alloca %"class.std::bitset<110>::reference", align 8
  %29 = alloca %"class.std::bitset<110>::reference", align 8
  %30 = alloca %"class.std::bitset<110>::reference", align 8
  %31 = alloca %"class.std::bitset<110>::reference", align 8
  %32 = alloca i32, align 4
  %33 = alloca %"class.std::bitset<110>::reference", align 8
  %34 = alloca %"class.std::bitset<110>::reference", align 8
  %35 = alloca %"class.std::bitset<110>::reference", align 8
  %36 = alloca %"class.std::bitset<110>::reference", align 8
  %37 = alloca i32, align 4
  %38 = alloca %"class.std::bitset<110>::reference", align 8
  %39 = alloca %"class.std::bitset<110>::reference", align 8
  %40 = alloca %"class.std::bitset<110>::reference", align 8
  %41 = alloca %"class.std::bitset<110>::reference", align 8
  %42 = alloca %"class.std::bitset<110>::reference", align 8
  %43 = alloca %"class.std::bitset<110>::reference", align 8
  %44 = alloca %"class.std::bitset<110>::reference", align 8
  %45 = alloca %"class.std::bitset<110>::reference", align 8
  %46 = alloca %"class.std::bitset<110>::reference", align 8
  %47 = alloca %"class.std::bitset<110>::reference", align 8
  %48 = alloca i32, align 4
  %49 = alloca %"class.std::bitset<110>::reference", align 8
  %50 = alloca %"class.std::bitset<110>::reference", align 8
  %51 = alloca %"class.std::bitset<110>::reference", align 8
  %52 = alloca %"class.std::bitset<110>::reference", align 8
  %53 = alloca %"class.std::bitset<110>::reference", align 8
  %54 = alloca %"class.std::bitset<110>::reference", align 8
  %55 = alloca %"class.std::bitset<110>::reference", align 8
  %56 = alloca %"class.std::bitset<110>::reference", align 8
  %57 = alloca %"class.std::bitset<110>::reference", align 8
  %58 = alloca %"class.std::bitset<110>::reference", align 8
  %59 = alloca %"class.std::bitset<110>::reference", align 8
  %60 = alloca %"class.std::bitset<110>::reference", align 8
  %61 = alloca %"class.std::bitset<110>::reference", align 8
  %62 = alloca %"class.std::bitset<110>::reference", align 8
  %63 = alloca i32, align 4
  %64 = alloca %"class.std::bitset<110>::reference", align 8
  %65 = alloca %"class.std::bitset<110>::reference", align 8
  %66 = alloca %"class.std::bitset<110>::reference", align 8
  %67 = alloca %"class.std::bitset<110>::reference", align 8
  %68 = alloca %"class.std::bitset<110>::reference", align 8
  %69 = alloca %"class.std::bitset<110>::reference", align 8
  %70 = alloca %"class.std::bitset<110>::reference", align 8
  %71 = alloca %"class.std::bitset<110>::reference", align 8
  %72 = alloca %"class.std::bitset<110>::reference", align 8
  %73 = alloca %"class.std::bitset<110>::reference", align 8
  %74 = alloca i8, align 1
  %75 = alloca %"class.std::bitset<110>::reference", align 8
  %76 = alloca i32, align 4
  %77 = alloca %"class.std::bitset<110>::reference", align 8
  %78 = alloca %"class.std::bitset<110>::reference", align 8
  %79 = alloca %"class.std::bitset<110>::reference", align 8
  %80 = alloca %"class.std::bitset<110>::reference", align 8
  %81 = alloca %"class.std::bitset<110>::reference", align 8
  %82 = alloca %"class.std::bitset<110>::reference", align 8
  %83 = alloca %"class.std::bitset<110>::reference", align 8
  %84 = alloca %"class.std::bitset<110>::reference", align 8
  %85 = alloca %"class.std::bitset<110>::reference", align 8
  %86 = alloca %"class.std::bitset<110>::reference", align 8
  %87 = alloca %"class.std::bitset<110>::reference", align 8
  %88 = alloca %"class.std::bitset<110>::reference", align 8
  %89 = alloca %"class.std::bitset<110>::reference", align 8
  %90 = alloca %"class.std::bitset<110>::reference", align 8
  %91 = alloca %"class.std::bitset<110>::reference", align 8
  %92 = alloca %"class.std::bitset<110>::reference", align 8
  %93 = alloca %"class.std::bitset<110>::reference", align 8
  %94 = alloca %"class.std::bitset<110>::reference", align 8
  %95 = alloca %"class.std::bitset<110>::reference", align 8
  %96 = alloca %"class.std::bitset<110>::reference", align 8
  %97 = alloca %"class.std::bitset<110>::reference", align 8
  %98 = alloca %"class.std::bitset<110>::reference", align 8
  %99 = alloca %"class.std::bitset<110>::reference", align 8
  %100 = alloca %"class.std::bitset<110>::reference", align 8
  %101 = alloca i8, align 1
  %102 = alloca i8, align 1
  %103 = alloca %"class.std::bitset<110>::reference", align 8
  %104 = alloca %"class.std::bitset<110>::reference", align 8
  %105 = alloca i32, align 4
  %106 = alloca %"struct.std::pair", align 4
  %107 = alloca %"class.std::bitset<110>::reference", align 8
  %108 = alloca %"class.std::bitset<110>::reference", align 8
  %109 = alloca %"class.std::bitset<110>::reference", align 8
  %110 = alloca %"class.std::bitset<110>::reference", align 8
  %111 = alloca %"class.std::bitset<110>::reference", align 8
  %112 = alloca %"class.std::bitset<110>::reference", align 8
  %113 = alloca i32, align 4
  %114 = alloca %"class.std::bitset<110>::reference", align 8
  %115 = alloca %"class.std::bitset<110>::reference", align 8
  %116 = alloca i32, align 4
  %117 = alloca %"struct.std::pair", align 4
  %118 = alloca %"struct.std::pair", align 4
  %119 = alloca %"class.std::bitset<110>::reference", align 8
  %120 = alloca %"class.std::bitset<110>::reference", align 8
  %121 = alloca %"class.std::bitset<110>::reference", align 8
  %122 = alloca %"class.std::bitset<110>::reference", align 8
  %123 = alloca %"class.std::bitset<110>::reference", align 8
  %124 = alloca %"class.std::bitset<110>::reference", align 8
  %125 = alloca %"class.std::bitset<110>::reference", align 8
  %126 = alloca %"class.std::bitset<110>::reference", align 8
  %127 = alloca %"class.std::bitset<110>::reference", align 8
  %128 = alloca %"class.std::bitset<110>::reference", align 8
  %129 = alloca %"class.std::bitset<110>::reference", align 8
  %130 = alloca %"class.std::bitset<110>::reference", align 8
  %131 = alloca %"class.std::bitset<110>::reference", align 8
  %132 = alloca %"class.std::bitset<110>::reference", align 8
  %133 = alloca %"class.std::bitset<110>::reference", align 8
  %134 = alloca %"class.std::bitset<110>::reference", align 8
  %135 = alloca i32, align 4
  %136 = alloca %"struct.std::pair", align 4
  %137 = alloca %"struct.std::pair", align 4
  %138 = alloca %"class.std::bitset<110>::reference", align 8
  %139 = alloca %"class.std::bitset<110>::reference", align 8
  %140 = alloca %"class.std::bitset<110>::reference", align 8
  %141 = alloca %"class.std::bitset<110>::reference", align 8
  %142 = alloca %"class.std::bitset<110>::reference", align 8
  %143 = alloca %"class.std::bitset<110>::reference", align 8
  %144 = alloca %"class.std::bitset<110>::reference", align 8
  %145 = alloca %"class.std::bitset<110>::reference", align 8
  %146 = alloca %"class.std::bitset<110>::reference", align 8
  %147 = alloca %"class.std::bitset<110>::reference", align 8
  %148 = alloca %"class.std::bitset<110>::reference", align 8
  %149 = alloca %"class.std::bitset<110>::reference", align 8
  %150 = alloca %"class.std::bitset<110>::reference", align 8
  %151 = alloca %"class.std::bitset<110>::reference", align 8
  %152 = alloca %"class.std::bitset<110>::reference", align 8
  %153 = alloca %"class.std::bitset<110>::reference", align 8
  %154 = alloca i32, align 4
  %155 = alloca %"class.std::bitset<110>::reference", align 8
  %156 = alloca %"class.std::vector", align 8
  %157 = alloca %"class.std::vector", align 8
  %158 = alloca ptr, align 8
  %159 = alloca i32, align 4
  %160 = alloca %"class.std::vector", align 8
  %161 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %162 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %163 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %164 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %165 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %166 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %167 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %168 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %169 = alloca %"class.std::insert_iterator", align 8
  %170 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %171 = alloca %"class.std::insert_iterator", align 8
  %172 = alloca %"class.std::bitset<110>::reference", align 8
  %173 = alloca %"class.std::bitset<110>::reference", align 8
  %174 = alloca %"class.std::bitset<110>::reference", align 8
  %175 = alloca %"class.std::bitset<110>::reference", align 8
  %176 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store i32 %4, ptr %10, align 4, !tbaa !9
  %177 = load ptr, ptr %6, align 8
  %178 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %179 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16) %178) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %180 = load ptr, ptr %7, align 8, !tbaa !5
  %181 = call noundef i32 @_ZN9FastState11get_to_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %180)
  store i32 %181, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %182 = load i32, ptr %10, align 4, !tbaa !9
  %183 = icmp ne i32 %182, -1
  br i1 %183, label %184, label %189

184:                                              ; preds = %5
  %185 = call noundef ptr @_ZN12MCOwnerTable7get_MCOEv()
  %186 = load i32, ptr %11, align 4, !tbaa !9
  %187 = load i32, ptr %10, align 4, !tbaa !9
  %188 = call noundef float @_ZNK12MCOwnerTable12get_blackownEii(ptr noundef nonnull align 8 dereferenceable(5848) %185, i32 noundef %186, i32 noundef %187)
  store float %188, ptr %13, align 4, !tbaa !11
  br label %190

189:                                              ; preds = %5
  store float -1.000000e+00, ptr %13, align 4, !tbaa !11
  br label %190

190:                                              ; preds = %189, %184
  %191 = load float, ptr %13, align 4, !tbaa !11
  %192 = fcmp oge float %191, 0xBF847AE140000000
  br i1 %192, label %193, label %197

193:                                              ; preds = %190
  %194 = load float, ptr %13, align 4, !tbaa !11
  %195 = fpext float %194 to double
  %196 = fcmp olt double %195, 1.000000e-01
  br label %197

197:                                              ; preds = %193, %190
  %198 = phi i1 [ false, %190 ], [ %196, %193 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #5
  %199 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %200 = load i32, ptr %12, align 4, !tbaa !9
  %201 = add nsw i32 %200, 1
  store i32 %201, ptr %12, align 4, !tbaa !9
  %202 = sext i32 %200 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %14, ptr noundef nonnull align 8 dereferenceable(16) %199, i64 noundef %202)
  %203 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %14, i1 noundef zeroext %198) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #5
  %204 = load float, ptr %13, align 4, !tbaa !11
  %205 = fcmp oge float %204, 0x3FB99999A0000000
  br i1 %205, label %206, label %210

206:                                              ; preds = %197
  %207 = load float, ptr %13, align 4, !tbaa !11
  %208 = fpext float %207 to double
  %209 = fcmp olt double %208, 2.000000e-01
  br label %210

210:                                              ; preds = %206, %197
  %211 = phi i1 [ false, %197 ], [ %209, %206 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #5
  %212 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %213 = load i32, ptr %12, align 4, !tbaa !9
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %12, align 4, !tbaa !9
  %215 = sext i32 %213 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %15, ptr noundef nonnull align 8 dereferenceable(16) %212, i64 noundef %215)
  %216 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %15, i1 noundef zeroext %211) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #5
  %217 = load float, ptr %13, align 4, !tbaa !11
  %218 = fcmp oge float %217, 0x3FC99999A0000000
  br i1 %218, label %219, label %223

219:                                              ; preds = %210
  %220 = load float, ptr %13, align 4, !tbaa !11
  %221 = fpext float %220 to double
  %222 = fcmp olt double %221, 3.000000e-01
  br label %223

223:                                              ; preds = %219, %210
  %224 = phi i1 [ false, %210 ], [ %222, %219 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #5
  %225 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %226 = load i32, ptr %12, align 4, !tbaa !9
  %227 = add nsw i32 %226, 1
  store i32 %227, ptr %12, align 4, !tbaa !9
  %228 = sext i32 %226 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %16, ptr noundef nonnull align 8 dereferenceable(16) %225, i64 noundef %228)
  %229 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %16, i1 noundef zeroext %224) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #5
  %230 = load float, ptr %13, align 4, !tbaa !11
  %231 = fcmp oge float %230, 0x3FD3333340000000
  br i1 %231, label %232, label %236

232:                                              ; preds = %223
  %233 = load float, ptr %13, align 4, !tbaa !11
  %234 = fpext float %233 to double
  %235 = fcmp olt double %234, 4.000000e-01
  br label %236

236:                                              ; preds = %232, %223
  %237 = phi i1 [ false, %223 ], [ %235, %232 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #5
  %238 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %239 = load i32, ptr %12, align 4, !tbaa !9
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr %12, align 4, !tbaa !9
  %241 = sext i32 %239 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %17, ptr noundef nonnull align 8 dereferenceable(16) %238, i64 noundef %241)
  %242 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %17, i1 noundef zeroext %237) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #5
  %243 = load float, ptr %13, align 4, !tbaa !11
  %244 = fcmp oge float %243, 0x3FD99999A0000000
  br i1 %244, label %245, label %249

245:                                              ; preds = %236
  %246 = load float, ptr %13, align 4, !tbaa !11
  %247 = fpext float %246 to double
  %248 = fcmp olt double %247, 5.000000e-01
  br label %249

249:                                              ; preds = %245, %236
  %250 = phi i1 [ false, %236 ], [ %248, %245 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #5
  %251 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %252 = load i32, ptr %12, align 4, !tbaa !9
  %253 = add nsw i32 %252, 1
  store i32 %253, ptr %12, align 4, !tbaa !9
  %254 = sext i32 %252 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %18, ptr noundef nonnull align 8 dereferenceable(16) %251, i64 noundef %254)
  %255 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %18, i1 noundef zeroext %250) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #5
  %256 = load float, ptr %13, align 4, !tbaa !11
  %257 = fcmp oge float %256, 5.000000e-01
  br i1 %257, label %258, label %262

258:                                              ; preds = %249
  %259 = load float, ptr %13, align 4, !tbaa !11
  %260 = fpext float %259 to double
  %261 = fcmp olt double %260, 6.000000e-01
  br label %262

262:                                              ; preds = %258, %249
  %263 = phi i1 [ false, %249 ], [ %261, %258 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #5
  %264 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %265 = load i32, ptr %12, align 4, !tbaa !9
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %12, align 4, !tbaa !9
  %267 = sext i32 %265 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %264, i64 noundef %267)
  %268 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %19, i1 noundef zeroext %263) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #5
  %269 = load float, ptr %13, align 4, !tbaa !11
  %270 = fcmp oge float %269, 0x3FE3333340000000
  br i1 %270, label %271, label %275

271:                                              ; preds = %262
  %272 = load float, ptr %13, align 4, !tbaa !11
  %273 = fpext float %272 to double
  %274 = fcmp olt double %273, 0x3FE6666666666666
  br label %275

275:                                              ; preds = %271, %262
  %276 = phi i1 [ false, %262 ], [ %274, %271 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #5
  %277 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %278 = load i32, ptr %12, align 4, !tbaa !9
  %279 = add nsw i32 %278, 1
  store i32 %279, ptr %12, align 4, !tbaa !9
  %280 = sext i32 %278 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %20, ptr noundef nonnull align 8 dereferenceable(16) %277, i64 noundef %280)
  %281 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %20, i1 noundef zeroext %276) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #5
  %282 = load float, ptr %13, align 4, !tbaa !11
  %283 = fcmp oge float %282, 0x3FE6666660000000
  br i1 %283, label %284, label %288

284:                                              ; preds = %275
  %285 = load float, ptr %13, align 4, !tbaa !11
  %286 = fpext float %285 to double
  %287 = fcmp olt double %286, 8.000000e-01
  br label %288

288:                                              ; preds = %284, %275
  %289 = phi i1 [ false, %275 ], [ %287, %284 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #5
  %290 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %291 = load i32, ptr %12, align 4, !tbaa !9
  %292 = add nsw i32 %291, 1
  store i32 %292, ptr %12, align 4, !tbaa !9
  %293 = sext i32 %291 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %21, ptr noundef nonnull align 8 dereferenceable(16) %290, i64 noundef %293)
  %294 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %21, i1 noundef zeroext %289) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #5
  %295 = load float, ptr %13, align 4, !tbaa !11
  %296 = fcmp oge float %295, 0x3FE99999A0000000
  br i1 %296, label %297, label %301

297:                                              ; preds = %288
  %298 = load float, ptr %13, align 4, !tbaa !11
  %299 = fpext float %298 to double
  %300 = fcmp olt double %299, 9.000000e-01
  br label %301

301:                                              ; preds = %297, %288
  %302 = phi i1 [ false, %288 ], [ %300, %297 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #5
  %303 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %304 = load i32, ptr %12, align 4, !tbaa !9
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr %12, align 4, !tbaa !9
  %306 = sext i32 %304 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %22, ptr noundef nonnull align 8 dereferenceable(16) %303, i64 noundef %306)
  %307 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %22, i1 noundef zeroext %302) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #5
  %308 = load float, ptr %13, align 4, !tbaa !11
  %309 = fcmp oge float %308, 0x3FECCCCCC0000000
  br i1 %309, label %310, label %314

310:                                              ; preds = %301
  %311 = load float, ptr %13, align 4, !tbaa !11
  %312 = fpext float %311 to double
  %313 = fcmp olt double %312, 1.010000e+00
  br label %314

314:                                              ; preds = %310, %301
  %315 = phi i1 [ false, %301 ], [ %313, %310 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #5
  %316 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %317 = load i32, ptr %12, align 4, !tbaa !9
  %318 = add nsw i32 %317, 1
  store i32 %318, ptr %12, align 4, !tbaa !9
  %319 = sext i32 %317 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %23, ptr noundef nonnull align 8 dereferenceable(16) %316, i64 noundef %319)
  %320 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %23, i1 noundef zeroext %315) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  %321 = load i32, ptr %10, align 4, !tbaa !9
  %322 = icmp ne i32 %321, -1
  br i1 %322, label %323, label %327

323:                                              ; preds = %314
  %324 = call noundef ptr @_ZN12MCOwnerTable7get_MCOEv()
  %325 = load i32, ptr %10, align 4, !tbaa !9
  %326 = call noundef float @_ZNK12MCOwnerTable17get_criticality_fEi(ptr noundef nonnull align 8 dereferenceable(5848) %324, i32 noundef %325)
  store float %326, ptr %24, align 4, !tbaa !11
  br label %328

327:                                              ; preds = %314
  store float 0.000000e+00, ptr %24, align 4, !tbaa !11
  br label %328

328:                                              ; preds = %327, %323
  %329 = load float, ptr %24, align 4, !tbaa !11
  %330 = fcmp oge float %329, 0xBF847AE140000000
  br i1 %330, label %331, label %335

331:                                              ; preds = %328
  %332 = load float, ptr %24, align 4, !tbaa !11
  %333 = fpext float %332 to double
  %334 = fcmp olt double %333, 3.000000e-02
  br label %335

335:                                              ; preds = %331, %328
  %336 = phi i1 [ false, %328 ], [ %334, %331 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #5
  %337 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %338 = load i32, ptr %12, align 4, !tbaa !9
  %339 = add nsw i32 %338, 1
  store i32 %339, ptr %12, align 4, !tbaa !9
  %340 = sext i32 %338 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %25, ptr noundef nonnull align 8 dereferenceable(16) %337, i64 noundef %340)
  %341 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %25, i1 noundef zeroext %336) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #5
  %342 = load float, ptr %24, align 4, !tbaa !11
  %343 = fcmp oge float %342, 0x3F9EB851E0000000
  br i1 %343, label %344, label %348

344:                                              ; preds = %335
  %345 = load float, ptr %24, align 4, !tbaa !11
  %346 = fpext float %345 to double
  %347 = fcmp olt double %346, 7.000000e-02
  br label %348

348:                                              ; preds = %344, %335
  %349 = phi i1 [ false, %335 ], [ %347, %344 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #5
  %350 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %351 = load i32, ptr %12, align 4, !tbaa !9
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %12, align 4, !tbaa !9
  %353 = sext i32 %351 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %26, ptr noundef nonnull align 8 dereferenceable(16) %350, i64 noundef %353)
  %354 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %26, i1 noundef zeroext %349) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #5
  %355 = load float, ptr %24, align 4, !tbaa !11
  %356 = fcmp oge float %355, 0x3FB1EB8520000000
  br i1 %356, label %357, label %361

357:                                              ; preds = %348
  %358 = load float, ptr %24, align 4, !tbaa !11
  %359 = fpext float %358 to double
  %360 = fcmp olt double %359, 1.100000e-01
  br label %361

361:                                              ; preds = %357, %348
  %362 = phi i1 [ false, %348 ], [ %360, %357 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #5
  %363 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %364 = load i32, ptr %12, align 4, !tbaa !9
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %12, align 4, !tbaa !9
  %366 = sext i32 %364 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %27, ptr noundef nonnull align 8 dereferenceable(16) %363, i64 noundef %366)
  %367 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %27, i1 noundef zeroext %362) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #5
  %368 = load float, ptr %24, align 4, !tbaa !11
  %369 = fcmp oge float %368, 0x3FBC28F5C0000000
  br i1 %369, label %370, label %374

370:                                              ; preds = %361
  %371 = load float, ptr %24, align 4, !tbaa !11
  %372 = fpext float %371 to double
  %373 = fcmp olt double %372, 1.500000e-01
  br label %374

374:                                              ; preds = %370, %361
  %375 = phi i1 [ false, %361 ], [ %373, %370 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #5
  %376 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %377 = load i32, ptr %12, align 4, !tbaa !9
  %378 = add nsw i32 %377, 1
  store i32 %378, ptr %12, align 4, !tbaa !9
  %379 = sext i32 %377 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %28, ptr noundef nonnull align 8 dereferenceable(16) %376, i64 noundef %379)
  %380 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %28, i1 noundef zeroext %375) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #5
  %381 = load float, ptr %24, align 4, !tbaa !11
  %382 = fcmp oge float %381, 0x3FC3333340000000
  br i1 %382, label %383, label %387

383:                                              ; preds = %374
  %384 = load float, ptr %24, align 4, !tbaa !11
  %385 = fpext float %384 to double
  %386 = fcmp olt double %385, 2.000000e-01
  br label %387

387:                                              ; preds = %383, %374
  %388 = phi i1 [ false, %374 ], [ %386, %383 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #5
  %389 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %390 = load i32, ptr %12, align 4, !tbaa !9
  %391 = add nsw i32 %390, 1
  store i32 %391, ptr %12, align 4, !tbaa !9
  %392 = sext i32 %390 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %29, ptr noundef nonnull align 8 dereferenceable(16) %389, i64 noundef %392)
  %393 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %29, i1 noundef zeroext %388) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #5
  %394 = load float, ptr %24, align 4, !tbaa !11
  %395 = fcmp oge float %394, 0x3FC99999A0000000
  br i1 %395, label %396, label %400

396:                                              ; preds = %387
  %397 = load float, ptr %24, align 4, !tbaa !11
  %398 = fpext float %397 to double
  %399 = fcmp olt double %398, 2.500000e-01
  br label %400

400:                                              ; preds = %396, %387
  %401 = phi i1 [ false, %387 ], [ %399, %396 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #5
  %402 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %403 = load i32, ptr %12, align 4, !tbaa !9
  %404 = add nsw i32 %403, 1
  store i32 %404, ptr %12, align 4, !tbaa !9
  %405 = sext i32 %403 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %30, ptr noundef nonnull align 8 dereferenceable(16) %402, i64 noundef %405)
  %406 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %30, i1 noundef zeroext %401) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #5
  %407 = load float, ptr %24, align 4, !tbaa !11
  %408 = fcmp oge float %407, 2.500000e-01
  br i1 %408, label %409, label %413

409:                                              ; preds = %400
  %410 = load float, ptr %24, align 4, !tbaa !11
  %411 = fpext float %410 to double
  %412 = fcmp olt double %411, 5.100000e-01
  br label %413

413:                                              ; preds = %409, %400
  %414 = phi i1 [ false, %400 ], [ %412, %409 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #5
  %415 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %416 = load i32, ptr %12, align 4, !tbaa !9
  %417 = add nsw i32 %416, 1
  store i32 %417, ptr %12, align 4, !tbaa !9
  %418 = sext i32 %416 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %31, ptr noundef nonnull align 8 dereferenceable(16) %415, i64 noundef %418)
  %419 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %31, i1 noundef zeroext %414) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  %420 = load i32, ptr %10, align 4, !tbaa !9
  %421 = icmp ne i32 %420, -1
  br i1 %421, label %422, label %428

422:                                              ; preds = %413
  %423 = load ptr, ptr %7, align 8, !tbaa !5
  %424 = getelementptr inbounds %class.FastState, ptr %423, i32 0, i32 0
  %425 = load i32, ptr %11, align 4, !tbaa !9
  %426 = load i32, ptr %10, align 4, !tbaa !9
  %427 = call noundef i32 @_ZN9FastBoard11saving_sizeEii(ptr noundef nonnull align 8 dereferenceable(11052) %424, i32 noundef %425, i32 noundef %426)
  store i32 %427, ptr %32, align 4, !tbaa !9
  br label %429

428:                                              ; preds = %413
  store i32 -1, ptr %32, align 4, !tbaa !9
  br label %429

429:                                              ; preds = %428, %422
  %430 = load i32, ptr %32, align 4, !tbaa !9
  %431 = icmp eq i32 %430, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #5
  %432 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %433 = load i32, ptr %12, align 4, !tbaa !9
  %434 = add nsw i32 %433, 1
  store i32 %434, ptr %12, align 4, !tbaa !9
  %435 = sext i32 %433 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %33, ptr noundef nonnull align 8 dereferenceable(16) %432, i64 noundef %435)
  %436 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %33, i1 noundef zeroext %431) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #5
  %437 = load i32, ptr %32, align 4, !tbaa !9
  %438 = icmp eq i32 %437, 2
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #5
  %439 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %440 = load i32, ptr %12, align 4, !tbaa !9
  %441 = add nsw i32 %440, 1
  store i32 %441, ptr %12, align 4, !tbaa !9
  %442 = sext i32 %440 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %34, ptr noundef nonnull align 8 dereferenceable(16) %439, i64 noundef %442)
  %443 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %34, i1 noundef zeroext %438) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #5
  %444 = load i32, ptr %32, align 4, !tbaa !9
  %445 = icmp eq i32 %444, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #5
  %446 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %447 = load i32, ptr %12, align 4, !tbaa !9
  %448 = add nsw i32 %447, 1
  store i32 %448, ptr %12, align 4, !tbaa !9
  %449 = sext i32 %447 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %35, ptr noundef nonnull align 8 dereferenceable(16) %446, i64 noundef %449)
  %450 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %35, i1 noundef zeroext %445) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #5
  %451 = load i32, ptr %32, align 4, !tbaa !9
  %452 = icmp sge i32 %451, 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #5
  %453 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %454 = load i32, ptr %12, align 4, !tbaa !9
  %455 = add nsw i32 %454, 1
  store i32 %455, ptr %12, align 4, !tbaa !9
  %456 = sext i32 %454 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %36, ptr noundef nonnull align 8 dereferenceable(16) %453, i64 noundef %456)
  %457 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %36, i1 noundef zeroext %452) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  %458 = load i32, ptr %10, align 4, !tbaa !9
  %459 = icmp ne i32 %458, -1
  br i1 %459, label %460, label %465

460:                                              ; preds = %429
  %461 = load ptr, ptr %7, align 8, !tbaa !5
  %462 = getelementptr inbounds %class.FastState, ptr %461, i32 0, i32 0
  %463 = load i32, ptr %10, align 4, !tbaa !9
  %464 = call noundef i32 @_ZN9FastBoard16count_plibertiesEi(ptr noundef nonnull align 8 dereferenceable(11052) %462, i32 noundef %463)
  store i32 %464, ptr %37, align 4, !tbaa !9
  br label %466

465:                                              ; preds = %429
  store i32 -1, ptr %37, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %465, %460
  %467 = load i32, ptr %32, align 4, !tbaa !9
  %468 = icmp sgt i32 %467, 0
  br i1 %468, label %469, label %472

469:                                              ; preds = %466
  %470 = load i32, ptr %37, align 4, !tbaa !9
  %471 = icmp eq i32 %470, 0
  br label %472

472:                                              ; preds = %469, %466
  %473 = phi i1 [ false, %466 ], [ %471, %469 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #5
  %474 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %475 = load i32, ptr %12, align 4, !tbaa !9
  %476 = add nsw i32 %475, 1
  store i32 %476, ptr %12, align 4, !tbaa !9
  %477 = sext i32 %475 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %38, ptr noundef nonnull align 8 dereferenceable(16) %474, i64 noundef %477)
  %478 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %38, i1 noundef zeroext %473) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #5
  %479 = load i32, ptr %32, align 4, !tbaa !9
  %480 = icmp sgt i32 %479, 0
  br i1 %480, label %481, label %484

481:                                              ; preds = %472
  %482 = load i32, ptr %37, align 4, !tbaa !9
  %483 = icmp eq i32 %482, 1
  br label %484

484:                                              ; preds = %481, %472
  %485 = phi i1 [ false, %472 ], [ %483, %481 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #5
  %486 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %487 = load i32, ptr %12, align 4, !tbaa !9
  %488 = add nsw i32 %487, 1
  store i32 %488, ptr %12, align 4, !tbaa !9
  %489 = sext i32 %487 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %39, ptr noundef nonnull align 8 dereferenceable(16) %486, i64 noundef %489)
  %490 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %39, i1 noundef zeroext %485) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #5
  %491 = load i32, ptr %32, align 4, !tbaa !9
  %492 = icmp sgt i32 %491, 0
  br i1 %492, label %493, label %496

493:                                              ; preds = %484
  %494 = load i32, ptr %37, align 4, !tbaa !9
  %495 = icmp eq i32 %494, 2
  br label %496

496:                                              ; preds = %493, %484
  %497 = phi i1 [ false, %484 ], [ %495, %493 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #5
  %498 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %499 = load i32, ptr %12, align 4, !tbaa !9
  %500 = add nsw i32 %499, 1
  store i32 %500, ptr %12, align 4, !tbaa !9
  %501 = sext i32 %499 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %40, ptr noundef nonnull align 8 dereferenceable(16) %498, i64 noundef %501)
  %502 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %40, i1 noundef zeroext %497) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #5
  %503 = load i32, ptr %32, align 4, !tbaa !9
  %504 = icmp sgt i32 %503, 0
  br i1 %504, label %505, label %508

505:                                              ; preds = %496
  %506 = load i32, ptr %37, align 4, !tbaa !9
  %507 = icmp eq i32 %506, 3
  br label %508

508:                                              ; preds = %505, %496
  %509 = phi i1 [ false, %496 ], [ %507, %505 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #5
  %510 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %511 = load i32, ptr %12, align 4, !tbaa !9
  %512 = add nsw i32 %511, 1
  store i32 %512, ptr %12, align 4, !tbaa !9
  %513 = sext i32 %511 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %41, ptr noundef nonnull align 8 dereferenceable(16) %510, i64 noundef %513)
  %514 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %41, i1 noundef zeroext %509) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #5
  %515 = load i32, ptr %10, align 4, !tbaa !9
  %516 = icmp eq i32 %515, -1
  br i1 %516, label %517, label %533

517:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #5
  %518 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %519 = load i32, ptr %12, align 4, !tbaa !9
  %520 = add nsw i32 %519, 1
  store i32 %520, ptr %12, align 4, !tbaa !9
  %521 = sext i32 %519 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %42, ptr noundef nonnull align 8 dereferenceable(16) %518, i64 noundef %521)
  %522 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %42, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #5
  %523 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %524 = load i32, ptr %12, align 4, !tbaa !9
  %525 = add nsw i32 %524, 1
  store i32 %525, ptr %12, align 4, !tbaa !9
  %526 = sext i32 %524 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %43, ptr noundef nonnull align 8 dereferenceable(16) %523, i64 noundef %526)
  %527 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %43, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #5
  %528 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %529 = load i32, ptr %12, align 4, !tbaa !9
  %530 = add nsw i32 %529, 1
  store i32 %530, ptr %12, align 4, !tbaa !9
  %531 = sext i32 %529 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %44, ptr noundef nonnull align 8 dereferenceable(16) %528, i64 noundef %531)
  %532 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %44, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #5
  br label %573

533:                                              ; preds = %508
  %534 = load i32, ptr %32, align 4, !tbaa !9
  %535 = icmp sgt i32 %534, 0
  br i1 %535, label %536, label %539

536:                                              ; preds = %533
  %537 = load float, ptr %13, align 4, !tbaa !11
  %538 = fcmp oge float %537, 0x3FE3333340000000
  br label %539

539:                                              ; preds = %536, %533
  %540 = phi i1 [ false, %533 ], [ %538, %536 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #5
  %541 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %542 = load i32, ptr %12, align 4, !tbaa !9
  %543 = add nsw i32 %542, 1
  store i32 %543, ptr %12, align 4, !tbaa !9
  %544 = sext i32 %542 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %45, ptr noundef nonnull align 8 dereferenceable(16) %541, i64 noundef %544)
  %545 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %45, i1 noundef zeroext %540) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #5
  %546 = load i32, ptr %32, align 4, !tbaa !9
  %547 = icmp sgt i32 %546, 0
  br i1 %547, label %548, label %554

548:                                              ; preds = %539
  %549 = load float, ptr %13, align 4, !tbaa !11
  %550 = fcmp ogt float %549, 0x3FD99999A0000000
  br i1 %550, label %551, label %554

551:                                              ; preds = %548
  %552 = load float, ptr %13, align 4, !tbaa !11
  %553 = fcmp olt float %552, 0x3FE3333340000000
  br label %554

554:                                              ; preds = %551, %548, %539
  %555 = phi i1 [ false, %548 ], [ false, %539 ], [ %553, %551 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #5
  %556 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %557 = load i32, ptr %12, align 4, !tbaa !9
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr %12, align 4, !tbaa !9
  %559 = sext i32 %557 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %46, ptr noundef nonnull align 8 dereferenceable(16) %556, i64 noundef %559)
  %560 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %46, i1 noundef zeroext %555) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #5
  %561 = load i32, ptr %32, align 4, !tbaa !9
  %562 = icmp sgt i32 %561, 0
  br i1 %562, label %563, label %566

563:                                              ; preds = %554
  %564 = load float, ptr %13, align 4, !tbaa !11
  %565 = fcmp ole float %564, 0x3FD99999A0000000
  br label %566

566:                                              ; preds = %563, %554
  %567 = phi i1 [ false, %554 ], [ %565, %563 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #5
  %568 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %569 = load i32, ptr %12, align 4, !tbaa !9
  %570 = add nsw i32 %569, 1
  store i32 %570, ptr %12, align 4, !tbaa !9
  %571 = sext i32 %569 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %47, ptr noundef nonnull align 8 dereferenceable(16) %568, i64 noundef %571)
  %572 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %47, i1 noundef zeroext %567) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #5
  br label %573

573:                                              ; preds = %566, %517
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #5
  %574 = load i32, ptr %10, align 4, !tbaa !9
  %575 = icmp ne i32 %574, -1
  br i1 %575, label %576, label %589

576:                                              ; preds = %573
  %577 = load ptr, ptr %7, align 8, !tbaa !5
  %578 = getelementptr inbounds %class.FastState, ptr %577, i32 0, i32 0
  %579 = load i32, ptr %11, align 4, !tbaa !9
  %580 = icmp ne i32 %579, 0
  %581 = xor i1 %580, true
  %582 = zext i1 %581 to i32
  %583 = load i32, ptr %10, align 4, !tbaa !9
  %584 = call noundef i32 @_ZN9FastBoard18minimum_elib_countEii(ptr noundef nonnull align 8 dereferenceable(11052) %578, i32 noundef %582, i32 noundef %583)
  store i32 %584, ptr %48, align 4, !tbaa !9
  %585 = load i32, ptr %48, align 4, !tbaa !9
  %586 = icmp eq i32 %585, 100
  br i1 %586, label %587, label %588

587:                                              ; preds = %576
  store i32 0, ptr %48, align 4, !tbaa !9
  br label %588

588:                                              ; preds = %587, %576
  br label %590

589:                                              ; preds = %573
  store i32 -1, ptr %48, align 4, !tbaa !9
  br label %590

590:                                              ; preds = %589, %588
  %591 = load i32, ptr %48, align 4, !tbaa !9
  %592 = icmp eq i32 %591, 2
  br i1 %592, label %593, label %596

593:                                              ; preds = %590
  %594 = load i32, ptr %37, align 4, !tbaa !9
  %595 = icmp eq i32 %594, 2
  br label %596

596:                                              ; preds = %593, %590
  %597 = phi i1 [ false, %590 ], [ %595, %593 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #5
  %598 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %599 = load i32, ptr %12, align 4, !tbaa !9
  %600 = add nsw i32 %599, 1
  store i32 %600, ptr %12, align 4, !tbaa !9
  %601 = sext i32 %599 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %49, ptr noundef nonnull align 8 dereferenceable(16) %598, i64 noundef %601)
  %602 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %49, i1 noundef zeroext %597) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #5
  %603 = load i32, ptr %48, align 4, !tbaa !9
  %604 = icmp eq i32 %603, 3
  br i1 %604, label %605, label %608

605:                                              ; preds = %596
  %606 = load i32, ptr %37, align 4, !tbaa !9
  %607 = icmp eq i32 %606, 2
  br label %608

608:                                              ; preds = %605, %596
  %609 = phi i1 [ false, %596 ], [ %607, %605 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #5
  %610 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %611 = load i32, ptr %12, align 4, !tbaa !9
  %612 = add nsw i32 %611, 1
  store i32 %612, ptr %12, align 4, !tbaa !9
  %613 = sext i32 %611 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %50, ptr noundef nonnull align 8 dereferenceable(16) %610, i64 noundef %613)
  %614 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %50, i1 noundef zeroext %609) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #5
  %615 = load i32, ptr %48, align 4, !tbaa !9
  %616 = icmp eq i32 %615, 4
  br i1 %616, label %617, label %620

617:                                              ; preds = %608
  %618 = load i32, ptr %37, align 4, !tbaa !9
  %619 = icmp eq i32 %618, 2
  br label %620

620:                                              ; preds = %617, %608
  %621 = phi i1 [ false, %608 ], [ %619, %617 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #5
  %622 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %623 = load i32, ptr %12, align 4, !tbaa !9
  %624 = add nsw i32 %623, 1
  store i32 %624, ptr %12, align 4, !tbaa !9
  %625 = sext i32 %623 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %51, ptr noundef nonnull align 8 dereferenceable(16) %622, i64 noundef %625)
  %626 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %51, i1 noundef zeroext %621) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #5
  %627 = load i32, ptr %48, align 4, !tbaa !9
  %628 = icmp eq i32 %627, 5
  br i1 %628, label %629, label %632

629:                                              ; preds = %620
  %630 = load i32, ptr %37, align 4, !tbaa !9
  %631 = icmp eq i32 %630, 2
  br label %632

632:                                              ; preds = %629, %620
  %633 = phi i1 [ false, %620 ], [ %631, %629 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #5
  %634 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %635 = load i32, ptr %12, align 4, !tbaa !9
  %636 = add nsw i32 %635, 1
  store i32 %636, ptr %12, align 4, !tbaa !9
  %637 = sext i32 %635 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %52, ptr noundef nonnull align 8 dereferenceable(16) %634, i64 noundef %637)
  %638 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %52, i1 noundef zeroext %633) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #5
  %639 = load i32, ptr %48, align 4, !tbaa !9
  %640 = icmp eq i32 %639, 6
  br i1 %640, label %641, label %644

641:                                              ; preds = %632
  %642 = load i32, ptr %37, align 4, !tbaa !9
  %643 = icmp eq i32 %642, 2
  br label %644

644:                                              ; preds = %641, %632
  %645 = phi i1 [ false, %632 ], [ %643, %641 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #5
  %646 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %647 = load i32, ptr %12, align 4, !tbaa !9
  %648 = add nsw i32 %647, 1
  store i32 %648, ptr %12, align 4, !tbaa !9
  %649 = sext i32 %647 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %53, ptr noundef nonnull align 8 dereferenceable(16) %646, i64 noundef %649)
  %650 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %53, i1 noundef zeroext %645) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #5
  %651 = load i32, ptr %48, align 4, !tbaa !9
  %652 = icmp sgt i32 %651, 6
  br i1 %652, label %653, label %656

653:                                              ; preds = %644
  %654 = load i32, ptr %37, align 4, !tbaa !9
  %655 = icmp eq i32 %654, 2
  br label %656

656:                                              ; preds = %653, %644
  %657 = phi i1 [ false, %644 ], [ %655, %653 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #5
  %658 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %659 = load i32, ptr %12, align 4, !tbaa !9
  %660 = add nsw i32 %659, 1
  store i32 %660, ptr %12, align 4, !tbaa !9
  %661 = sext i32 %659 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %54, ptr noundef nonnull align 8 dereferenceable(16) %658, i64 noundef %661)
  %662 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %54, i1 noundef zeroext %657) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #5
  %663 = load i32, ptr %48, align 4, !tbaa !9
  %664 = icmp eq i32 %663, 2
  br i1 %664, label %665, label %668

665:                                              ; preds = %656
  %666 = load i32, ptr %37, align 4, !tbaa !9
  %667 = icmp eq i32 %666, 3
  br label %668

668:                                              ; preds = %665, %656
  %669 = phi i1 [ false, %656 ], [ %667, %665 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #5
  %670 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %671 = load i32, ptr %12, align 4, !tbaa !9
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr %12, align 4, !tbaa !9
  %673 = sext i32 %671 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %55, ptr noundef nonnull align 8 dereferenceable(16) %670, i64 noundef %673)
  %674 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %55, i1 noundef zeroext %669) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #5
  %675 = load i32, ptr %48, align 4, !tbaa !9
  %676 = icmp eq i32 %675, 3
  br i1 %676, label %677, label %680

677:                                              ; preds = %668
  %678 = load i32, ptr %37, align 4, !tbaa !9
  %679 = icmp eq i32 %678, 3
  br label %680

680:                                              ; preds = %677, %668
  %681 = phi i1 [ false, %668 ], [ %679, %677 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #5
  %682 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %683 = load i32, ptr %12, align 4, !tbaa !9
  %684 = add nsw i32 %683, 1
  store i32 %684, ptr %12, align 4, !tbaa !9
  %685 = sext i32 %683 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %56, ptr noundef nonnull align 8 dereferenceable(16) %682, i64 noundef %685)
  %686 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %56, i1 noundef zeroext %681) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #5
  %687 = load i32, ptr %48, align 4, !tbaa !9
  %688 = icmp eq i32 %687, 4
  br i1 %688, label %689, label %692

689:                                              ; preds = %680
  %690 = load i32, ptr %37, align 4, !tbaa !9
  %691 = icmp eq i32 %690, 3
  br label %692

692:                                              ; preds = %689, %680
  %693 = phi i1 [ false, %680 ], [ %691, %689 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #5
  %694 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %695 = load i32, ptr %12, align 4, !tbaa !9
  %696 = add nsw i32 %695, 1
  store i32 %696, ptr %12, align 4, !tbaa !9
  %697 = sext i32 %695 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %57, ptr noundef nonnull align 8 dereferenceable(16) %694, i64 noundef %697)
  %698 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %57, i1 noundef zeroext %693) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #5
  %699 = load i32, ptr %48, align 4, !tbaa !9
  %700 = icmp eq i32 %699, 5
  br i1 %700, label %701, label %704

701:                                              ; preds = %692
  %702 = load i32, ptr %37, align 4, !tbaa !9
  %703 = icmp eq i32 %702, 3
  br label %704

704:                                              ; preds = %701, %692
  %705 = phi i1 [ false, %692 ], [ %703, %701 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #5
  %706 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %707 = load i32, ptr %12, align 4, !tbaa !9
  %708 = add nsw i32 %707, 1
  store i32 %708, ptr %12, align 4, !tbaa !9
  %709 = sext i32 %707 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %58, ptr noundef nonnull align 8 dereferenceable(16) %706, i64 noundef %709)
  %710 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %58, i1 noundef zeroext %705) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #5
  %711 = load i32, ptr %48, align 4, !tbaa !9
  %712 = icmp eq i32 %711, 6
  br i1 %712, label %713, label %716

713:                                              ; preds = %704
  %714 = load i32, ptr %37, align 4, !tbaa !9
  %715 = icmp eq i32 %714, 3
  br label %716

716:                                              ; preds = %713, %704
  %717 = phi i1 [ false, %704 ], [ %715, %713 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #5
  %718 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %719 = load i32, ptr %12, align 4, !tbaa !9
  %720 = add nsw i32 %719, 1
  store i32 %720, ptr %12, align 4, !tbaa !9
  %721 = sext i32 %719 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %59, ptr noundef nonnull align 8 dereferenceable(16) %718, i64 noundef %721)
  %722 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %59, i1 noundef zeroext %717) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #5
  %723 = load i32, ptr %48, align 4, !tbaa !9
  %724 = icmp sgt i32 %723, 6
  br i1 %724, label %725, label %728

725:                                              ; preds = %716
  %726 = load i32, ptr %37, align 4, !tbaa !9
  %727 = icmp eq i32 %726, 3
  br label %728

728:                                              ; preds = %725, %716
  %729 = phi i1 [ false, %716 ], [ %727, %725 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #5
  %730 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %731 = load i32, ptr %12, align 4, !tbaa !9
  %732 = add nsw i32 %731, 1
  store i32 %732, ptr %12, align 4, !tbaa !9
  %733 = sext i32 %731 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %60, ptr noundef nonnull align 8 dereferenceable(16) %730, i64 noundef %733)
  %734 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %60, i1 noundef zeroext %729) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #5
  %735 = load i32, ptr %10, align 4, !tbaa !9
  %736 = icmp eq i32 %735, -1
  br i1 %736, label %737, label %743

737:                                              ; preds = %728
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #5
  %738 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %739 = load i32, ptr %12, align 4, !tbaa !9
  %740 = add nsw i32 %739, 1
  store i32 %740, ptr %12, align 4, !tbaa !9
  %741 = sext i32 %739 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %61, ptr noundef nonnull align 8 dereferenceable(16) %738, i64 noundef %741)
  %742 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %61, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #5
  br label %759

743:                                              ; preds = %728
  %744 = load i32, ptr %48, align 4, !tbaa !9
  %745 = icmp sgt i32 %744, 0
  br i1 %745, label %746, label %752

746:                                              ; preds = %743
  %747 = load i32, ptr %48, align 4, !tbaa !9
  %748 = icmp slt i32 %747, 7
  br i1 %748, label %749, label %752

749:                                              ; preds = %746
  %750 = load float, ptr %13, align 4, !tbaa !11
  %751 = fcmp ole float %750, 0x3FD99999A0000000
  br label %752

752:                                              ; preds = %749, %746, %743
  %753 = phi i1 [ false, %746 ], [ false, %743 ], [ %751, %749 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #5
  %754 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %755 = load i32, ptr %12, align 4, !tbaa !9
  %756 = add nsw i32 %755, 1
  store i32 %756, ptr %12, align 4, !tbaa !9
  %757 = sext i32 %755 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %62, ptr noundef nonnull align 8 dereferenceable(16) %754, i64 noundef %757)
  %758 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %62, i1 noundef zeroext %753) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #5
  br label %759

759:                                              ; preds = %752, %737
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #5
  %760 = load i32, ptr %10, align 4, !tbaa !9
  %761 = icmp ne i32 %760, -1
  br i1 %761, label %762, label %768

762:                                              ; preds = %759
  %763 = load ptr, ptr %7, align 8, !tbaa !5
  %764 = getelementptr inbounds %class.FastState, ptr %763, i32 0, i32 0
  %765 = load i32, ptr %11, align 4, !tbaa !9
  %766 = load i32, ptr %10, align 4, !tbaa !9
  %767 = call noundef i32 @_ZN9FastBoard12capture_sizeEii(ptr noundef nonnull align 8 dereferenceable(11052) %764, i32 noundef %765, i32 noundef %766)
  store i32 %767, ptr %63, align 4, !tbaa !9
  br label %769

768:                                              ; preds = %759
  store i32 -1, ptr %63, align 4, !tbaa !9
  br label %769

769:                                              ; preds = %768, %762
  %770 = load i32, ptr %63, align 4, !tbaa !9
  %771 = icmp eq i32 %770, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #5
  %772 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %773 = load i32, ptr %12, align 4, !tbaa !9
  %774 = add nsw i32 %773, 1
  store i32 %774, ptr %12, align 4, !tbaa !9
  %775 = sext i32 %773 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %64, ptr noundef nonnull align 8 dereferenceable(16) %772, i64 noundef %775)
  %776 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %64, i1 noundef zeroext %771) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #5
  %777 = load i32, ptr %63, align 4, !tbaa !9
  %778 = icmp eq i32 %777, 2
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #5
  %779 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %780 = load i32, ptr %12, align 4, !tbaa !9
  %781 = add nsw i32 %780, 1
  store i32 %781, ptr %12, align 4, !tbaa !9
  %782 = sext i32 %780 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %65, ptr noundef nonnull align 8 dereferenceable(16) %779, i64 noundef %782)
  %783 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %65, i1 noundef zeroext %778) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #5
  %784 = load i32, ptr %63, align 4, !tbaa !9
  %785 = icmp eq i32 %784, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #5
  %786 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %787 = load i32, ptr %12, align 4, !tbaa !9
  %788 = add nsw i32 %787, 1
  store i32 %788, ptr %12, align 4, !tbaa !9
  %789 = sext i32 %787 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %66, ptr noundef nonnull align 8 dereferenceable(16) %786, i64 noundef %789)
  %790 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %66, i1 noundef zeroext %785) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #5
  %791 = load i32, ptr %63, align 4, !tbaa !9
  %792 = icmp sge i32 %791, 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #5
  %793 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %794 = load i32, ptr %12, align 4, !tbaa !9
  %795 = add nsw i32 %794, 1
  store i32 %795, ptr %12, align 4, !tbaa !9
  %796 = sext i32 %794 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %67, ptr noundef nonnull align 8 dereferenceable(16) %793, i64 noundef %796)
  %797 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %67, i1 noundef zeroext %792) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #5
  %798 = load i32, ptr %10, align 4, !tbaa !9
  %799 = icmp eq i32 %798, -1
  br i1 %799, label %800, label %816

800:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #5
  %801 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %802 = load i32, ptr %12, align 4, !tbaa !9
  %803 = add nsw i32 %802, 1
  store i32 %803, ptr %12, align 4, !tbaa !9
  %804 = sext i32 %802 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %68, ptr noundef nonnull align 8 dereferenceable(16) %801, i64 noundef %804)
  %805 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %68, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #5
  %806 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %807 = load i32, ptr %12, align 4, !tbaa !9
  %808 = add nsw i32 %807, 1
  store i32 %808, ptr %12, align 4, !tbaa !9
  %809 = sext i32 %807 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %69, ptr noundef nonnull align 8 dereferenceable(16) %806, i64 noundef %809)
  %810 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %69, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #5
  %811 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %812 = load i32, ptr %12, align 4, !tbaa !9
  %813 = add nsw i32 %812, 1
  store i32 %813, ptr %12, align 4, !tbaa !9
  %814 = sext i32 %812 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %70, ptr noundef nonnull align 8 dereferenceable(16) %811, i64 noundef %814)
  %815 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %70, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #5
  br label %856

816:                                              ; preds = %769
  %817 = load i32, ptr %63, align 4, !tbaa !9
  %818 = icmp sgt i32 %817, 0
  br i1 %818, label %819, label %822

819:                                              ; preds = %816
  %820 = load float, ptr %13, align 4, !tbaa !11
  %821 = fcmp oge float %820, 0x3FE3333340000000
  br label %822

822:                                              ; preds = %819, %816
  %823 = phi i1 [ false, %816 ], [ %821, %819 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #5
  %824 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %825 = load i32, ptr %12, align 4, !tbaa !9
  %826 = add nsw i32 %825, 1
  store i32 %826, ptr %12, align 4, !tbaa !9
  %827 = sext i32 %825 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %71, ptr noundef nonnull align 8 dereferenceable(16) %824, i64 noundef %827)
  %828 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %71, i1 noundef zeroext %823) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %71) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #5
  %829 = load i32, ptr %63, align 4, !tbaa !9
  %830 = icmp sgt i32 %829, 0
  br i1 %830, label %831, label %837

831:                                              ; preds = %822
  %832 = load float, ptr %13, align 4, !tbaa !11
  %833 = fcmp ogt float %832, 0x3FD99999A0000000
  br i1 %833, label %834, label %837

834:                                              ; preds = %831
  %835 = load float, ptr %13, align 4, !tbaa !11
  %836 = fcmp olt float %835, 0x3FE3333340000000
  br label %837

837:                                              ; preds = %834, %831, %822
  %838 = phi i1 [ false, %831 ], [ false, %822 ], [ %836, %834 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #5
  %839 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %840 = load i32, ptr %12, align 4, !tbaa !9
  %841 = add nsw i32 %840, 1
  store i32 %841, ptr %12, align 4, !tbaa !9
  %842 = sext i32 %840 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %72, ptr noundef nonnull align 8 dereferenceable(16) %839, i64 noundef %842)
  %843 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %72, i1 noundef zeroext %838) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #5
  %844 = load i32, ptr %63, align 4, !tbaa !9
  %845 = icmp sgt i32 %844, 0
  br i1 %845, label %846, label %849

846:                                              ; preds = %837
  %847 = load float, ptr %13, align 4, !tbaa !11
  %848 = fcmp ole float %847, 0x3FD99999A0000000
  br label %849

849:                                              ; preds = %846, %837
  %850 = phi i1 [ false, %837 ], [ %848, %846 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #5
  %851 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %852 = load i32, ptr %12, align 4, !tbaa !9
  %853 = add nsw i32 %852, 1
  store i32 %853, ptr %12, align 4, !tbaa !9
  %854 = sext i32 %852 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %73, ptr noundef nonnull align 8 dereferenceable(16) %851, i64 noundef %854)
  %855 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %73, i1 noundef zeroext %850) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #5
  br label %856

856:                                              ; preds = %849, %800
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #5
  %857 = load i32, ptr %10, align 4, !tbaa !9
  %858 = icmp ne i32 %857, -1
  br i1 %858, label %859, label %866

859:                                              ; preds = %856
  %860 = load ptr, ptr %7, align 8, !tbaa !5
  %861 = getelementptr inbounds %class.FastState, ptr %860, i32 0, i32 0
  %862 = load i32, ptr %11, align 4, !tbaa !9
  %863 = load i32, ptr %10, align 4, !tbaa !9
  %864 = call noundef zeroext i1 @_ZN9FastBoard10self_atariEii(ptr noundef nonnull align 8 dereferenceable(11052) %861, i32 noundef %862, i32 noundef %863)
  %865 = zext i1 %864 to i8
  store i8 %865, ptr %74, align 1, !tbaa !13
  br label %867

866:                                              ; preds = %856
  store i8 0, ptr %74, align 1, !tbaa !13
  br label %867

867:                                              ; preds = %866, %859
  %868 = load i8, ptr %74, align 1, !tbaa !13, !range !15, !noundef !16
  %869 = trunc i8 %868 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %75) #5
  %870 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %871 = load i32, ptr %12, align 4, !tbaa !9
  %872 = add nsw i32 %871, 1
  store i32 %872, ptr %12, align 4, !tbaa !9
  %873 = sext i32 %871 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %75, ptr noundef nonnull align 8 dereferenceable(16) %870, i64 noundef %873)
  %874 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %75, i1 noundef zeroext %869) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #5
  %875 = load i32, ptr %10, align 4, !tbaa !9
  %876 = icmp ne i32 %875, -1
  br i1 %876, label %877, label %887

877:                                              ; preds = %867
  %878 = load ptr, ptr %7, align 8, !tbaa !5
  %879 = getelementptr inbounds %class.FastState, ptr %878, i32 0, i32 0
  %880 = load i32, ptr %11, align 4, !tbaa !9
  %881 = load i32, ptr %10, align 4, !tbaa !9
  %882 = call noundef i32 @_ZN9FastBoard18minimum_elib_countEii(ptr noundef nonnull align 8 dereferenceable(11052) %879, i32 noundef %880, i32 noundef %881)
  store i32 %882, ptr %76, align 4, !tbaa !9
  %883 = load i32, ptr %76, align 4, !tbaa !9
  %884 = icmp eq i32 %883, 100
  br i1 %884, label %885, label %886

885:                                              ; preds = %877
  store i32 0, ptr %76, align 4, !tbaa !9
  br label %886

886:                                              ; preds = %885, %877
  br label %888

887:                                              ; preds = %867
  store i32 -1, ptr %76, align 4, !tbaa !9
  br label %888

888:                                              ; preds = %887, %886
  %889 = load i32, ptr %76, align 4, !tbaa !9
  %890 = icmp eq i32 %889, 2
  br i1 %890, label %891, label %896

891:                                              ; preds = %888
  %892 = load ptr, ptr %7, align 8, !tbaa !5
  %893 = getelementptr inbounds %class.FastState, ptr %892, i32 0, i32 4
  %894 = load i32, ptr %893, align 4, !tbaa !17
  %895 = icmp ne i32 %894, -1
  br label %896

896:                                              ; preds = %891, %888
  %897 = phi i1 [ false, %888 ], [ %895, %891 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %77) #5
  %898 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %899 = load i32, ptr %12, align 4, !tbaa !9
  %900 = add nsw i32 %899, 1
  store i32 %900, ptr %12, align 4, !tbaa !9
  %901 = sext i32 %899 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %77, ptr noundef nonnull align 8 dereferenceable(16) %898, i64 noundef %901)
  %902 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %77, i1 noundef zeroext %897) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #5
  %903 = load i32, ptr %76, align 4, !tbaa !9
  %904 = icmp eq i32 %903, 3
  br i1 %904, label %905, label %910

905:                                              ; preds = %896
  %906 = load ptr, ptr %7, align 8, !tbaa !5
  %907 = getelementptr inbounds %class.FastState, ptr %906, i32 0, i32 4
  %908 = load i32, ptr %907, align 4, !tbaa !17
  %909 = icmp ne i32 %908, -1
  br label %910

910:                                              ; preds = %905, %896
  %911 = phi i1 [ false, %896 ], [ %909, %905 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #5
  %912 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %913 = load i32, ptr %12, align 4, !tbaa !9
  %914 = add nsw i32 %913, 1
  store i32 %914, ptr %12, align 4, !tbaa !9
  %915 = sext i32 %913 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %78, ptr noundef nonnull align 8 dereferenceable(16) %912, i64 noundef %915)
  %916 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %78, i1 noundef zeroext %911) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #5
  %917 = load i32, ptr %76, align 4, !tbaa !9
  %918 = icmp eq i32 %917, 2
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #5
  %919 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %920 = load i32, ptr %12, align 4, !tbaa !9
  %921 = add nsw i32 %920, 1
  store i32 %921, ptr %12, align 4, !tbaa !9
  %922 = sext i32 %920 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %79, ptr noundef nonnull align 8 dereferenceable(16) %919, i64 noundef %922)
  %923 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %79, i1 noundef zeroext %918) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #5
  %924 = load i32, ptr %76, align 4, !tbaa !9
  %925 = icmp eq i32 %924, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #5
  %926 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %927 = load i32, ptr %12, align 4, !tbaa !9
  %928 = add nsw i32 %927, 1
  store i32 %928, ptr %12, align 4, !tbaa !9
  %929 = sext i32 %927 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %80, ptr noundef nonnull align 8 dereferenceable(16) %926, i64 noundef %929)
  %930 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %80, i1 noundef zeroext %925) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #5
  %931 = load i32, ptr %76, align 4, !tbaa !9
  %932 = icmp eq i32 %931, 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #5
  %933 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %934 = load i32, ptr %12, align 4, !tbaa !9
  %935 = add nsw i32 %934, 1
  store i32 %935, ptr %12, align 4, !tbaa !9
  %936 = sext i32 %934 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %81, ptr noundef nonnull align 8 dereferenceable(16) %933, i64 noundef %936)
  %937 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %81, i1 noundef zeroext %932) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #5
  %938 = load i32, ptr %76, align 4, !tbaa !9
  %939 = icmp eq i32 %938, 5
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #5
  %940 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %941 = load i32, ptr %12, align 4, !tbaa !9
  %942 = add nsw i32 %941, 1
  store i32 %942, ptr %12, align 4, !tbaa !9
  %943 = sext i32 %941 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %82, ptr noundef nonnull align 8 dereferenceable(16) %940, i64 noundef %943)
  %944 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %82, i1 noundef zeroext %939) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %82) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #5
  %945 = load i32, ptr %76, align 4, !tbaa !9
  %946 = icmp eq i32 %945, 6
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #5
  %947 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %948 = load i32, ptr %12, align 4, !tbaa !9
  %949 = add nsw i32 %948, 1
  store i32 %949, ptr %12, align 4, !tbaa !9
  %950 = sext i32 %948 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %83, ptr noundef nonnull align 8 dereferenceable(16) %947, i64 noundef %950)
  %951 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %83, i1 noundef zeroext %946) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #5
  %952 = load i32, ptr %76, align 4, !tbaa !9
  %953 = icmp sgt i32 %952, 6
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #5
  %954 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %955 = load i32, ptr %12, align 4, !tbaa !9
  %956 = add nsw i32 %955, 1
  store i32 %956, ptr %12, align 4, !tbaa !9
  %957 = sext i32 %955 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %84, ptr noundef nonnull align 8 dereferenceable(16) %954, i64 noundef %957)
  %958 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %84, i1 noundef zeroext %953) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #5
  %959 = load i32, ptr %10, align 4, !tbaa !9
  %960 = icmp ne i32 %959, -1
  br i1 %960, label %961, label %1018

961:                                              ; preds = %910
  %962 = load i32, ptr %76, align 4, !tbaa !9
  %963 = icmp sgt i32 %962, 0
  br i1 %963, label %964, label %1018

964:                                              ; preds = %961
  %965 = load i32, ptr %48, align 4, !tbaa !9
  %966 = icmp sgt i32 %965, 0
  br i1 %966, label %967, label %1018

967:                                              ; preds = %964
  %968 = load i32, ptr %48, align 4, !tbaa !9
  %969 = icmp slt i32 %968, 7
  br i1 %969, label %973, label %970

970:                                              ; preds = %967
  %971 = load i32, ptr %76, align 4, !tbaa !9
  %972 = icmp slt i32 %971, 7
  br i1 %972, label %973, label %1018

973:                                              ; preds = %970, %967
  %974 = load i32, ptr %76, align 4, !tbaa !9
  %975 = load i32, ptr %48, align 4, !tbaa !9
  %976 = add nsw i32 %975, 1
  %977 = icmp sgt i32 %974, %976
  call void @llvm.lifetime.start.p0(i64 16, ptr %85) #5
  %978 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %979 = load i32, ptr %12, align 4, !tbaa !9
  %980 = add nsw i32 %979, 1
  store i32 %980, ptr %12, align 4, !tbaa !9
  %981 = sext i32 %979 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %85, ptr noundef nonnull align 8 dereferenceable(16) %978, i64 noundef %981)
  %982 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %85, i1 noundef zeroext %977) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #5
  %983 = load i32, ptr %76, align 4, !tbaa !9
  %984 = load i32, ptr %48, align 4, !tbaa !9
  %985 = add nsw i32 %984, 1
  %986 = icmp eq i32 %983, %985
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #5
  %987 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %988 = load i32, ptr %12, align 4, !tbaa !9
  %989 = add nsw i32 %988, 1
  store i32 %989, ptr %12, align 4, !tbaa !9
  %990 = sext i32 %988 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %86, ptr noundef nonnull align 8 dereferenceable(16) %987, i64 noundef %990)
  %991 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %86, i1 noundef zeroext %986) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #5
  %992 = load i32, ptr %76, align 4, !tbaa !9
  %993 = load i32, ptr %48, align 4, !tbaa !9
  %994 = icmp eq i32 %992, %993
  call void @llvm.lifetime.start.p0(i64 16, ptr %87) #5
  %995 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %996 = load i32, ptr %12, align 4, !tbaa !9
  %997 = add nsw i32 %996, 1
  store i32 %997, ptr %12, align 4, !tbaa !9
  %998 = sext i32 %996 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %87, ptr noundef nonnull align 8 dereferenceable(16) %995, i64 noundef %998)
  %999 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %87, i1 noundef zeroext %994) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #5
  %1000 = load i32, ptr %76, align 4, !tbaa !9
  %1001 = add nsw i32 %1000, 1
  %1002 = load i32, ptr %48, align 4, !tbaa !9
  %1003 = icmp eq i32 %1001, %1002
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #5
  %1004 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1005 = load i32, ptr %12, align 4, !tbaa !9
  %1006 = add nsw i32 %1005, 1
  store i32 %1006, ptr %12, align 4, !tbaa !9
  %1007 = sext i32 %1005 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %88, ptr noundef nonnull align 8 dereferenceable(16) %1004, i64 noundef %1007)
  %1008 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %88, i1 noundef zeroext %1003) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #5
  %1009 = load i32, ptr %76, align 4, !tbaa !9
  %1010 = add nsw i32 %1009, 1
  %1011 = load i32, ptr %48, align 4, !tbaa !9
  %1012 = icmp slt i32 %1010, %1011
  call void @llvm.lifetime.start.p0(i64 16, ptr %89) #5
  %1013 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1014 = load i32, ptr %12, align 4, !tbaa !9
  %1015 = add nsw i32 %1014, 1
  store i32 %1015, ptr %12, align 4, !tbaa !9
  %1016 = sext i32 %1014 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %89, ptr noundef nonnull align 8 dereferenceable(16) %1013, i64 noundef %1016)
  %1017 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %89, i1 noundef zeroext %1012) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %89) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #5
  br label %1044

1018:                                             ; preds = %970, %964, %961, %910
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #5
  %1019 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1020 = load i32, ptr %12, align 4, !tbaa !9
  %1021 = add nsw i32 %1020, 1
  store i32 %1021, ptr %12, align 4, !tbaa !9
  %1022 = sext i32 %1020 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %90, ptr noundef nonnull align 8 dereferenceable(16) %1019, i64 noundef %1022)
  %1023 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %90, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #5
  %1024 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1025 = load i32, ptr %12, align 4, !tbaa !9
  %1026 = add nsw i32 %1025, 1
  store i32 %1026, ptr %12, align 4, !tbaa !9
  %1027 = sext i32 %1025 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %91, ptr noundef nonnull align 8 dereferenceable(16) %1024, i64 noundef %1027)
  %1028 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %91, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %92) #5
  %1029 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1030 = load i32, ptr %12, align 4, !tbaa !9
  %1031 = add nsw i32 %1030, 1
  store i32 %1031, ptr %12, align 4, !tbaa !9
  %1032 = sext i32 %1030 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %92, ptr noundef nonnull align 8 dereferenceable(16) %1029, i64 noundef %1032)
  %1033 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %92, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #5
  %1034 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1035 = load i32, ptr %12, align 4, !tbaa !9
  %1036 = add nsw i32 %1035, 1
  store i32 %1036, ptr %12, align 4, !tbaa !9
  %1037 = sext i32 %1035 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %93, ptr noundef nonnull align 8 dereferenceable(16) %1034, i64 noundef %1037)
  %1038 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %93, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #5
  %1039 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1040 = load i32, ptr %12, align 4, !tbaa !9
  %1041 = add nsw i32 %1040, 1
  store i32 %1041, ptr %12, align 4, !tbaa !9
  %1042 = sext i32 %1040 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %94, ptr noundef nonnull align 8 dereferenceable(16) %1039, i64 noundef %1042)
  %1043 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %94, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #5
  br label %1044

1044:                                             ; preds = %1018, %973
  %1045 = load i32, ptr %10, align 4, !tbaa !9
  %1046 = icmp ne i32 %1045, -1
  br i1 %1046, label %1047, label %1077

1047:                                             ; preds = %1044
  %1048 = load i32, ptr %76, align 4, !tbaa !9
  %1049 = icmp sgt i32 %1048, 0
  br i1 %1049, label %1050, label %1077

1050:                                             ; preds = %1047
  %1051 = load float, ptr %13, align 4, !tbaa !11
  %1052 = fcmp oge float %1051, 0x3FE3333340000000
  call void @llvm.lifetime.start.p0(i64 16, ptr %95) #5
  %1053 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1054 = load i32, ptr %12, align 4, !tbaa !9
  %1055 = add nsw i32 %1054, 1
  store i32 %1055, ptr %12, align 4, !tbaa !9
  %1056 = sext i32 %1054 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %95, ptr noundef nonnull align 8 dereferenceable(16) %1053, i64 noundef %1056)
  %1057 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %95, i1 noundef zeroext %1052) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #5
  %1058 = load float, ptr %13, align 4, !tbaa !11
  %1059 = fcmp ogt float %1058, 0x3FD99999A0000000
  br i1 %1059, label %1060, label %1063

1060:                                             ; preds = %1050
  %1061 = load float, ptr %13, align 4, !tbaa !11
  %1062 = fcmp olt float %1061, 0x3FE3333340000000
  br label %1063

1063:                                             ; preds = %1060, %1050
  %1064 = phi i1 [ false, %1050 ], [ %1062, %1060 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %96) #5
  %1065 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1066 = load i32, ptr %12, align 4, !tbaa !9
  %1067 = add nsw i32 %1066, 1
  store i32 %1067, ptr %12, align 4, !tbaa !9
  %1068 = sext i32 %1066 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %96, ptr noundef nonnull align 8 dereferenceable(16) %1065, i64 noundef %1068)
  %1069 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %96, i1 noundef zeroext %1064) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #5
  %1070 = load float, ptr %13, align 4, !tbaa !11
  %1071 = fcmp ole float %1070, 0x3FD99999A0000000
  call void @llvm.lifetime.start.p0(i64 16, ptr %97) #5
  %1072 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1073 = load i32, ptr %12, align 4, !tbaa !9
  %1074 = add nsw i32 %1073, 1
  store i32 %1074, ptr %12, align 4, !tbaa !9
  %1075 = sext i32 %1073 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %97, ptr noundef nonnull align 8 dereferenceable(16) %1072, i64 noundef %1075)
  %1076 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %97, i1 noundef zeroext %1071) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #5
  br label %1093

1077:                                             ; preds = %1047, %1044
  call void @llvm.lifetime.start.p0(i64 16, ptr %98) #5
  %1078 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1079 = load i32, ptr %12, align 4, !tbaa !9
  %1080 = add nsw i32 %1079, 1
  store i32 %1080, ptr %12, align 4, !tbaa !9
  %1081 = sext i32 %1079 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %98, ptr noundef nonnull align 8 dereferenceable(16) %1078, i64 noundef %1081)
  %1082 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %98, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %99) #5
  %1083 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1084 = load i32, ptr %12, align 4, !tbaa !9
  %1085 = add nsw i32 %1084, 1
  store i32 %1085, ptr %12, align 4, !tbaa !9
  %1086 = sext i32 %1084 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %99, ptr noundef nonnull align 8 dereferenceable(16) %1083, i64 noundef %1086)
  %1087 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %99, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %99) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %100) #5
  %1088 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1089 = load i32, ptr %12, align 4, !tbaa !9
  %1090 = add nsw i32 %1089, 1
  store i32 %1090, ptr %12, align 4, !tbaa !9
  %1091 = sext i32 %1089 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %100, ptr noundef nonnull align 8 dereferenceable(16) %1088, i64 noundef %1091)
  %1092 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %100, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #5
  br label %1093

1093:                                             ; preds = %1077, %1063
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #5
  %1094 = load i32, ptr %10, align 4, !tbaa !9
  %1095 = icmp eq i32 %1094, -1
  br i1 %1095, label %1096, label %1100

1096:                                             ; preds = %1093
  %1097 = load ptr, ptr %7, align 8, !tbaa !5
  %1098 = call noundef i32 @_ZN9FastState10get_passesEv(ptr noundef nonnull align 8 dereferenceable(11160) %1097)
  %1099 = icmp eq i32 %1098, 0
  br label %1100

1100:                                             ; preds = %1096, %1093
  %1101 = phi i1 [ false, %1093 ], [ %1099, %1096 ]
  %1102 = zext i1 %1101 to i8
  store i8 %1102, ptr %101, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #5
  %1103 = load i32, ptr %10, align 4, !tbaa !9
  %1104 = icmp eq i32 %1103, -1
  br i1 %1104, label %1105, label %1109

1105:                                             ; preds = %1100
  %1106 = load ptr, ptr %7, align 8, !tbaa !5
  %1107 = call noundef i32 @_ZN9FastState10get_passesEv(ptr noundef nonnull align 8 dereferenceable(11160) %1106)
  %1108 = icmp eq i32 %1107, 1
  br label %1109

1109:                                             ; preds = %1105, %1100
  %1110 = phi i1 [ false, %1100 ], [ %1108, %1105 ]
  %1111 = zext i1 %1110 to i8
  store i8 %1111, ptr %102, align 1, !tbaa !13
  %1112 = load i8, ptr %101, align 1, !tbaa !13, !range !15, !noundef !16
  %1113 = trunc i8 %1112 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #5
  %1114 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1115 = load i32, ptr %12, align 4, !tbaa !9
  %1116 = add nsw i32 %1115, 1
  store i32 %1116, ptr %12, align 4, !tbaa !9
  %1117 = sext i32 %1115 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %103, ptr noundef nonnull align 8 dereferenceable(16) %1114, i64 noundef %1117)
  %1118 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %103, i1 noundef zeroext %1113) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #5
  %1119 = load i8, ptr %102, align 1, !tbaa !13, !range !15, !noundef !16
  %1120 = trunc i8 %1119 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %104) #5
  %1121 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1122 = load i32, ptr %12, align 4, !tbaa !9
  %1123 = add nsw i32 %1122, 1
  store i32 %1123, ptr %12, align 4, !tbaa !9
  %1124 = sext i32 %1122 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %104, ptr noundef nonnull align 8 dereferenceable(16) %1121, i64 noundef %1124)
  %1125 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %104, i1 noundef zeroext %1120) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #5
  %1126 = load i32, ptr %10, align 4, !tbaa !9
  %1127 = icmp ne i32 %1126, -1
  br i1 %1127, label %1128, label %1138

1128:                                             ; preds = %1109
  %1129 = load ptr, ptr %7, align 8, !tbaa !5
  %1130 = getelementptr inbounds %class.FastState, ptr %1129, i32 0, i32 0
  %1131 = load i32, ptr %10, align 4, !tbaa !9
  %1132 = call i64 @_ZNK9FastBoard6get_xyEi(ptr noundef nonnull align 8 dereferenceable(11052) %1130, i32 noundef %1131)
  store i64 %1132, ptr %106, align 4
  %1133 = load ptr, ptr %7, align 8, !tbaa !5
  %1134 = getelementptr inbounds %class.FastState, ptr %1133, i32 0, i32 0
  %1135 = call noundef i32 @_ZNK9FastBoard13get_boardsizeEv(ptr noundef nonnull align 8 dereferenceable(11052) %1134)
  %1136 = load i64, ptr %106, align 4
  %1137 = call noundef i32 @_ZN14BaseAttributes15border_distanceESt4pairIiiEi(i64 %1136, i32 noundef %1135)
  store i32 %1137, ptr %105, align 4, !tbaa !9
  br label %1139

1138:                                             ; preds = %1109
  store i32 -1, ptr %105, align 4, !tbaa !9
  br label %1139

1139:                                             ; preds = %1138, %1128
  %1140 = load i32, ptr %105, align 4, !tbaa !9
  %1141 = icmp eq i32 %1140, 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %107) #5
  %1142 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1143 = load i32, ptr %12, align 4, !tbaa !9
  %1144 = add nsw i32 %1143, 1
  store i32 %1144, ptr %12, align 4, !tbaa !9
  %1145 = sext i32 %1143 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %107, ptr noundef nonnull align 8 dereferenceable(16) %1142, i64 noundef %1145)
  %1146 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %107, i1 noundef zeroext %1141) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #5
  %1147 = load i32, ptr %105, align 4, !tbaa !9
  %1148 = icmp eq i32 %1147, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %108) #5
  %1149 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1150 = load i32, ptr %12, align 4, !tbaa !9
  %1151 = add nsw i32 %1150, 1
  store i32 %1151, ptr %12, align 4, !tbaa !9
  %1152 = sext i32 %1150 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %108, ptr noundef nonnull align 8 dereferenceable(16) %1149, i64 noundef %1152)
  %1153 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %108, i1 noundef zeroext %1148) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #5
  %1154 = load i32, ptr %105, align 4, !tbaa !9
  %1155 = icmp eq i32 %1154, 2
  call void @llvm.lifetime.start.p0(i64 16, ptr %109) #5
  %1156 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1157 = load i32, ptr %12, align 4, !tbaa !9
  %1158 = add nsw i32 %1157, 1
  store i32 %1158, ptr %12, align 4, !tbaa !9
  %1159 = sext i32 %1157 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %109, ptr noundef nonnull align 8 dereferenceable(16) %1156, i64 noundef %1159)
  %1160 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %109, i1 noundef zeroext %1155) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %109) #5
  %1161 = load i32, ptr %105, align 4, !tbaa !9
  %1162 = icmp eq i32 %1161, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr %110) #5
  %1163 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1164 = load i32, ptr %12, align 4, !tbaa !9
  %1165 = add nsw i32 %1164, 1
  store i32 %1165, ptr %12, align 4, !tbaa !9
  %1166 = sext i32 %1164 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %110, ptr noundef nonnull align 8 dereferenceable(16) %1163, i64 noundef %1166)
  %1167 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %110, i1 noundef zeroext %1162) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #5
  %1168 = load i32, ptr %105, align 4, !tbaa !9
  %1169 = icmp eq i32 %1168, 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %111) #5
  %1170 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1171 = load i32, ptr %12, align 4, !tbaa !9
  %1172 = add nsw i32 %1171, 1
  store i32 %1172, ptr %12, align 4, !tbaa !9
  %1173 = sext i32 %1171 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %111, ptr noundef nonnull align 8 dereferenceable(16) %1170, i64 noundef %1173)
  %1174 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %111, i1 noundef zeroext %1169) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #5
  %1175 = load i32, ptr %105, align 4, !tbaa !9
  %1176 = icmp sgt i32 %1175, 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %112) #5
  %1177 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1178 = load i32, ptr %12, align 4, !tbaa !9
  %1179 = add nsw i32 %1178, 1
  store i32 %1179, ptr %12, align 4, !tbaa !9
  %1180 = sext i32 %1178 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %112, ptr noundef nonnull align 8 dereferenceable(16) %1177, i64 noundef %1180)
  %1181 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %112, i1 noundef zeroext %1176) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #5
  %1182 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1182, ptr %113, align 4, !tbaa !9
  %1183 = load i32, ptr %10, align 4, !tbaa !9
  %1184 = icmp eq i32 %1183, -1
  br i1 %1184, label %1185, label %1186

1185:                                             ; preds = %1139
  store i32 0, ptr %113, align 4, !tbaa !9
  br label %1186

1186:                                             ; preds = %1185, %1139
  %1187 = load ptr, ptr %8, align 8, !tbaa !5
  %1188 = load i32, ptr %113, align 4, !tbaa !9
  %1189 = sext i32 %1188 to i64
  %1190 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1187, i64 noundef %1189) #5
  %1191 = load i32, ptr %1190, align 4, !tbaa !9
  %1192 = icmp ne i32 %1191, 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %114) #5
  %1193 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1194 = load i32, ptr %12, align 4, !tbaa !9
  %1195 = add nsw i32 %1194, 1
  store i32 %1195, ptr %12, align 4, !tbaa !9
  %1196 = sext i32 %1194 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %114, ptr noundef nonnull align 8 dereferenceable(16) %1193, i64 noundef %1196)
  %1197 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %114, i1 noundef zeroext %1192) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %114) #5
  %1198 = load ptr, ptr %9, align 8, !tbaa !5
  %1199 = load i32, ptr %113, align 4, !tbaa !9
  %1200 = sext i32 %1199 to i64
  %1201 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1198, i64 noundef %1200) #5
  %1202 = load i32, ptr %1201, align 4, !tbaa !9
  %1203 = icmp ne i32 %1202, 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %115) #5
  %1204 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1205 = load i32, ptr %12, align 4, !tbaa !9
  %1206 = add nsw i32 %1205, 1
  store i32 %1206, ptr %12, align 4, !tbaa !9
  %1207 = sext i32 %1205 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %115, ptr noundef nonnull align 8 dereferenceable(16) %1204, i64 noundef %1207)
  %1208 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %115, i1 noundef zeroext %1203) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #5
  %1209 = load ptr, ptr %7, align 8, !tbaa !5
  %1210 = call noundef i32 @_ZN9FastState13get_last_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1209)
  %1211 = icmp sgt i32 %1210, 0
  br i1 %1211, label %1212, label %1228

1212:                                             ; preds = %1186
  %1213 = load i32, ptr %10, align 4, !tbaa !9
  %1214 = icmp sgt i32 %1213, 0
  br i1 %1214, label %1215, label %1228

1215:                                             ; preds = %1212
  %1216 = load ptr, ptr %7, align 8, !tbaa !5
  %1217 = getelementptr inbounds %class.FastState, ptr %1216, i32 0, i32 0
  %1218 = load ptr, ptr %7, align 8, !tbaa !5
  %1219 = call noundef i32 @_ZN9FastState13get_last_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1218)
  %1220 = call i64 @_ZNK9FastBoard6get_xyEi(ptr noundef nonnull align 8 dereferenceable(11052) %1217, i32 noundef %1219)
  store i64 %1220, ptr %117, align 4
  %1221 = load ptr, ptr %7, align 8, !tbaa !5
  %1222 = getelementptr inbounds %class.FastState, ptr %1221, i32 0, i32 0
  %1223 = load i32, ptr %10, align 4, !tbaa !9
  %1224 = call i64 @_ZNK9FastBoard6get_xyEi(ptr noundef nonnull align 8 dereferenceable(11052) %1222, i32 noundef %1223)
  store i64 %1224, ptr %118, align 4
  %1225 = load i64, ptr %117, align 4
  %1226 = load i64, ptr %118, align 4
  %1227 = call noundef i32 @_ZN14BaseAttributes13move_distanceESt4pairIiiES1_(i64 %1225, i64 %1226)
  store i32 %1227, ptr %116, align 4, !tbaa !9
  br label %1229

1228:                                             ; preds = %1212, %1186
  store i32 -1, ptr %116, align 4, !tbaa !9
  br label %1229

1229:                                             ; preds = %1228, %1215
  %1230 = load i32, ptr %116, align 4, !tbaa !9
  %1231 = icmp eq i32 %1230, 2
  call void @llvm.lifetime.start.p0(i64 16, ptr %119) #5
  %1232 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1233 = load i32, ptr %12, align 4, !tbaa !9
  %1234 = add nsw i32 %1233, 1
  store i32 %1234, ptr %12, align 4, !tbaa !9
  %1235 = sext i32 %1233 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %119, ptr noundef nonnull align 8 dereferenceable(16) %1232, i64 noundef %1235)
  %1236 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %119, i1 noundef zeroext %1231) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %119) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %119) #5
  %1237 = load i32, ptr %116, align 4, !tbaa !9
  %1238 = icmp eq i32 %1237, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #5
  %1239 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1240 = load i32, ptr %12, align 4, !tbaa !9
  %1241 = add nsw i32 %1240, 1
  store i32 %1241, ptr %12, align 4, !tbaa !9
  %1242 = sext i32 %1240 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %120, ptr noundef nonnull align 8 dereferenceable(16) %1239, i64 noundef %1242)
  %1243 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %120, i1 noundef zeroext %1238) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #5
  %1244 = load i32, ptr %116, align 4, !tbaa !9
  %1245 = icmp eq i32 %1244, 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %121) #5
  %1246 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1247 = load i32, ptr %12, align 4, !tbaa !9
  %1248 = add nsw i32 %1247, 1
  store i32 %1248, ptr %12, align 4, !tbaa !9
  %1249 = sext i32 %1247 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %121, ptr noundef nonnull align 8 dereferenceable(16) %1246, i64 noundef %1249)
  %1250 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %121, i1 noundef zeroext %1245) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #5
  %1251 = load i32, ptr %116, align 4, !tbaa !9
  %1252 = icmp eq i32 %1251, 5
  call void @llvm.lifetime.start.p0(i64 16, ptr %122) #5
  %1253 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1254 = load i32, ptr %12, align 4, !tbaa !9
  %1255 = add nsw i32 %1254, 1
  store i32 %1255, ptr %12, align 4, !tbaa !9
  %1256 = sext i32 %1254 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %122, ptr noundef nonnull align 8 dereferenceable(16) %1253, i64 noundef %1256)
  %1257 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %122, i1 noundef zeroext %1252) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %122) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %122) #5
  %1258 = load i32, ptr %116, align 4, !tbaa !9
  %1259 = icmp eq i32 %1258, 6
  call void @llvm.lifetime.start.p0(i64 16, ptr %123) #5
  %1260 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1261 = load i32, ptr %12, align 4, !tbaa !9
  %1262 = add nsw i32 %1261, 1
  store i32 %1262, ptr %12, align 4, !tbaa !9
  %1263 = sext i32 %1261 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %123, ptr noundef nonnull align 8 dereferenceable(16) %1260, i64 noundef %1263)
  %1264 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %123, i1 noundef zeroext %1259) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #5
  %1265 = load i32, ptr %116, align 4, !tbaa !9
  %1266 = icmp eq i32 %1265, 7
  call void @llvm.lifetime.start.p0(i64 16, ptr %124) #5
  %1267 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1268 = load i32, ptr %12, align 4, !tbaa !9
  %1269 = add nsw i32 %1268, 1
  store i32 %1269, ptr %12, align 4, !tbaa !9
  %1270 = sext i32 %1268 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %124, ptr noundef nonnull align 8 dereferenceable(16) %1267, i64 noundef %1270)
  %1271 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %124, i1 noundef zeroext %1266) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %124) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %124) #5
  %1272 = load i32, ptr %116, align 4, !tbaa !9
  %1273 = icmp eq i32 %1272, 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %125) #5
  %1274 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1275 = load i32, ptr %12, align 4, !tbaa !9
  %1276 = add nsw i32 %1275, 1
  store i32 %1276, ptr %12, align 4, !tbaa !9
  %1277 = sext i32 %1275 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %125, ptr noundef nonnull align 8 dereferenceable(16) %1274, i64 noundef %1277)
  %1278 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %125, i1 noundef zeroext %1273) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #5
  %1279 = load i32, ptr %116, align 4, !tbaa !9
  %1280 = icmp eq i32 %1279, 9
  call void @llvm.lifetime.start.p0(i64 16, ptr %126) #5
  %1281 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1282 = load i32, ptr %12, align 4, !tbaa !9
  %1283 = add nsw i32 %1282, 1
  store i32 %1283, ptr %12, align 4, !tbaa !9
  %1284 = sext i32 %1282 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %126, ptr noundef nonnull align 8 dereferenceable(16) %1281, i64 noundef %1284)
  %1285 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %126, i1 noundef zeroext %1280) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #5
  %1286 = load i32, ptr %116, align 4, !tbaa !9
  %1287 = icmp eq i32 %1286, 10
  call void @llvm.lifetime.start.p0(i64 16, ptr %127) #5
  %1288 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1289 = load i32, ptr %12, align 4, !tbaa !9
  %1290 = add nsw i32 %1289, 1
  store i32 %1290, ptr %12, align 4, !tbaa !9
  %1291 = sext i32 %1289 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %127, ptr noundef nonnull align 8 dereferenceable(16) %1288, i64 noundef %1291)
  %1292 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %127, i1 noundef zeroext %1287) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %127) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %127) #5
  %1293 = load i32, ptr %116, align 4, !tbaa !9
  %1294 = icmp eq i32 %1293, 11
  call void @llvm.lifetime.start.p0(i64 16, ptr %128) #5
  %1295 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1296 = load i32, ptr %12, align 4, !tbaa !9
  %1297 = add nsw i32 %1296, 1
  store i32 %1297, ptr %12, align 4, !tbaa !9
  %1298 = sext i32 %1296 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %128, ptr noundef nonnull align 8 dereferenceable(16) %1295, i64 noundef %1298)
  %1299 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %128, i1 noundef zeroext %1294) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %128) #5
  %1300 = load i32, ptr %116, align 4, !tbaa !9
  %1301 = icmp eq i32 %1300, 12
  call void @llvm.lifetime.start.p0(i64 16, ptr %129) #5
  %1302 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1303 = load i32, ptr %12, align 4, !tbaa !9
  %1304 = add nsw i32 %1303, 1
  store i32 %1304, ptr %12, align 4, !tbaa !9
  %1305 = sext i32 %1303 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %129, ptr noundef nonnull align 8 dereferenceable(16) %1302, i64 noundef %1305)
  %1306 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %129, i1 noundef zeroext %1301) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %129) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #5
  %1307 = load i32, ptr %116, align 4, !tbaa !9
  %1308 = icmp eq i32 %1307, 13
  call void @llvm.lifetime.start.p0(i64 16, ptr %130) #5
  %1309 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1310 = load i32, ptr %12, align 4, !tbaa !9
  %1311 = add nsw i32 %1310, 1
  store i32 %1311, ptr %12, align 4, !tbaa !9
  %1312 = sext i32 %1310 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %130, ptr noundef nonnull align 8 dereferenceable(16) %1309, i64 noundef %1312)
  %1313 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %130, i1 noundef zeroext %1308) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %130) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %130) #5
  %1314 = load i32, ptr %116, align 4, !tbaa !9
  %1315 = icmp eq i32 %1314, 14
  call void @llvm.lifetime.start.p0(i64 16, ptr %131) #5
  %1316 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1317 = load i32, ptr %12, align 4, !tbaa !9
  %1318 = add nsw i32 %1317, 1
  store i32 %1318, ptr %12, align 4, !tbaa !9
  %1319 = sext i32 %1317 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %131, ptr noundef nonnull align 8 dereferenceable(16) %1316, i64 noundef %1319)
  %1320 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %131, i1 noundef zeroext %1315) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %131) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #5
  %1321 = load i32, ptr %116, align 4, !tbaa !9
  %1322 = icmp eq i32 %1321, 15
  call void @llvm.lifetime.start.p0(i64 16, ptr %132) #5
  %1323 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1324 = load i32, ptr %12, align 4, !tbaa !9
  %1325 = add nsw i32 %1324, 1
  store i32 %1325, ptr %12, align 4, !tbaa !9
  %1326 = sext i32 %1324 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %132, ptr noundef nonnull align 8 dereferenceable(16) %1323, i64 noundef %1326)
  %1327 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %132, i1 noundef zeroext %1322) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %132) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %132) #5
  %1328 = load i32, ptr %116, align 4, !tbaa !9
  %1329 = icmp eq i32 %1328, 16
  call void @llvm.lifetime.start.p0(i64 16, ptr %133) #5
  %1330 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1331 = load i32, ptr %12, align 4, !tbaa !9
  %1332 = add nsw i32 %1331, 1
  store i32 %1332, ptr %12, align 4, !tbaa !9
  %1333 = sext i32 %1331 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %133, ptr noundef nonnull align 8 dereferenceable(16) %1330, i64 noundef %1333)
  %1334 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %133, i1 noundef zeroext %1329) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %133) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %133) #5
  %1335 = load i32, ptr %116, align 4, !tbaa !9
  %1336 = icmp sgt i32 %1335, 16
  call void @llvm.lifetime.start.p0(i64 16, ptr %134) #5
  %1337 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1338 = load i32, ptr %12, align 4, !tbaa !9
  %1339 = add nsw i32 %1338, 1
  store i32 %1339, ptr %12, align 4, !tbaa !9
  %1340 = sext i32 %1338 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %134, ptr noundef nonnull align 8 dereferenceable(16) %1337, i64 noundef %1340)
  %1341 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %134, i1 noundef zeroext %1336) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %134) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %134) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #5
  %1342 = load ptr, ptr %7, align 8, !tbaa !5
  %1343 = call noundef i32 @_ZN9FastState17get_prevlast_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1342)
  %1344 = icmp sgt i32 %1343, 0
  br i1 %1344, label %1345, label %1361

1345:                                             ; preds = %1229
  %1346 = load i32, ptr %10, align 4, !tbaa !9
  %1347 = icmp sgt i32 %1346, 0
  br i1 %1347, label %1348, label %1361

1348:                                             ; preds = %1345
  %1349 = load ptr, ptr %7, align 8, !tbaa !5
  %1350 = getelementptr inbounds %class.FastState, ptr %1349, i32 0, i32 0
  %1351 = load i32, ptr %10, align 4, !tbaa !9
  %1352 = call i64 @_ZNK9FastBoard6get_xyEi(ptr noundef nonnull align 8 dereferenceable(11052) %1350, i32 noundef %1351)
  store i64 %1352, ptr %136, align 4
  %1353 = load ptr, ptr %7, align 8, !tbaa !5
  %1354 = getelementptr inbounds %class.FastState, ptr %1353, i32 0, i32 0
  %1355 = load ptr, ptr %7, align 8, !tbaa !5
  %1356 = call noundef i32 @_ZN9FastState17get_prevlast_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1355)
  %1357 = call i64 @_ZNK9FastBoard6get_xyEi(ptr noundef nonnull align 8 dereferenceable(11052) %1354, i32 noundef %1356)
  store i64 %1357, ptr %137, align 4
  %1358 = load i64, ptr %136, align 4
  %1359 = load i64, ptr %137, align 4
  %1360 = call noundef i32 @_ZN14BaseAttributes13move_distanceESt4pairIiiES1_(i64 %1358, i64 %1359)
  store i32 %1360, ptr %135, align 4, !tbaa !9
  br label %1362

1361:                                             ; preds = %1345, %1229
  store i32 -1, ptr %135, align 4, !tbaa !9
  br label %1362

1362:                                             ; preds = %1361, %1348
  %1363 = load i32, ptr %135, align 4, !tbaa !9
  %1364 = icmp eq i32 %1363, 2
  call void @llvm.lifetime.start.p0(i64 16, ptr %138) #5
  %1365 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1366 = load i32, ptr %12, align 4, !tbaa !9
  %1367 = add nsw i32 %1366, 1
  store i32 %1367, ptr %12, align 4, !tbaa !9
  %1368 = sext i32 %1366 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %138, ptr noundef nonnull align 8 dereferenceable(16) %1365, i64 noundef %1368)
  %1369 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %138, i1 noundef zeroext %1364) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %138) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %138) #5
  %1370 = load i32, ptr %135, align 4, !tbaa !9
  %1371 = icmp eq i32 %1370, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr %139) #5
  %1372 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1373 = load i32, ptr %12, align 4, !tbaa !9
  %1374 = add nsw i32 %1373, 1
  store i32 %1374, ptr %12, align 4, !tbaa !9
  %1375 = sext i32 %1373 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %139, ptr noundef nonnull align 8 dereferenceable(16) %1372, i64 noundef %1375)
  %1376 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %139, i1 noundef zeroext %1371) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %139) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %139) #5
  %1377 = load i32, ptr %135, align 4, !tbaa !9
  %1378 = icmp eq i32 %1377, 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %140) #5
  %1379 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1380 = load i32, ptr %12, align 4, !tbaa !9
  %1381 = add nsw i32 %1380, 1
  store i32 %1381, ptr %12, align 4, !tbaa !9
  %1382 = sext i32 %1380 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %140, ptr noundef nonnull align 8 dereferenceable(16) %1379, i64 noundef %1382)
  %1383 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %140, i1 noundef zeroext %1378) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %140) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %140) #5
  %1384 = load i32, ptr %135, align 4, !tbaa !9
  %1385 = icmp eq i32 %1384, 5
  call void @llvm.lifetime.start.p0(i64 16, ptr %141) #5
  %1386 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1387 = load i32, ptr %12, align 4, !tbaa !9
  %1388 = add nsw i32 %1387, 1
  store i32 %1388, ptr %12, align 4, !tbaa !9
  %1389 = sext i32 %1387 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %141, ptr noundef nonnull align 8 dereferenceable(16) %1386, i64 noundef %1389)
  %1390 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %141, i1 noundef zeroext %1385) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %141) #5
  %1391 = load i32, ptr %135, align 4, !tbaa !9
  %1392 = icmp eq i32 %1391, 6
  call void @llvm.lifetime.start.p0(i64 16, ptr %142) #5
  %1393 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1394 = load i32, ptr %12, align 4, !tbaa !9
  %1395 = add nsw i32 %1394, 1
  store i32 %1395, ptr %12, align 4, !tbaa !9
  %1396 = sext i32 %1394 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %142, ptr noundef nonnull align 8 dereferenceable(16) %1393, i64 noundef %1396)
  %1397 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %142, i1 noundef zeroext %1392) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %142) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %142) #5
  %1398 = load i32, ptr %135, align 4, !tbaa !9
  %1399 = icmp eq i32 %1398, 7
  call void @llvm.lifetime.start.p0(i64 16, ptr %143) #5
  %1400 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1401 = load i32, ptr %12, align 4, !tbaa !9
  %1402 = add nsw i32 %1401, 1
  store i32 %1402, ptr %12, align 4, !tbaa !9
  %1403 = sext i32 %1401 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %143, ptr noundef nonnull align 8 dereferenceable(16) %1400, i64 noundef %1403)
  %1404 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %143, i1 noundef zeroext %1399) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %143) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %143) #5
  %1405 = load i32, ptr %135, align 4, !tbaa !9
  %1406 = icmp eq i32 %1405, 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %144) #5
  %1407 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1408 = load i32, ptr %12, align 4, !tbaa !9
  %1409 = add nsw i32 %1408, 1
  store i32 %1409, ptr %12, align 4, !tbaa !9
  %1410 = sext i32 %1408 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %144, ptr noundef nonnull align 8 dereferenceable(16) %1407, i64 noundef %1410)
  %1411 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %144, i1 noundef zeroext %1406) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %144) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %144) #5
  %1412 = load i32, ptr %135, align 4, !tbaa !9
  %1413 = icmp eq i32 %1412, 9
  call void @llvm.lifetime.start.p0(i64 16, ptr %145) #5
  %1414 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1415 = load i32, ptr %12, align 4, !tbaa !9
  %1416 = add nsw i32 %1415, 1
  store i32 %1416, ptr %12, align 4, !tbaa !9
  %1417 = sext i32 %1415 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %145, ptr noundef nonnull align 8 dereferenceable(16) %1414, i64 noundef %1417)
  %1418 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %145, i1 noundef zeroext %1413) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %145) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %145) #5
  %1419 = load i32, ptr %135, align 4, !tbaa !9
  %1420 = icmp eq i32 %1419, 10
  call void @llvm.lifetime.start.p0(i64 16, ptr %146) #5
  %1421 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1422 = load i32, ptr %12, align 4, !tbaa !9
  %1423 = add nsw i32 %1422, 1
  store i32 %1423, ptr %12, align 4, !tbaa !9
  %1424 = sext i32 %1422 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %146, ptr noundef nonnull align 8 dereferenceable(16) %1421, i64 noundef %1424)
  %1425 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %146, i1 noundef zeroext %1420) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %146) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %146) #5
  %1426 = load i32, ptr %135, align 4, !tbaa !9
  %1427 = icmp eq i32 %1426, 11
  call void @llvm.lifetime.start.p0(i64 16, ptr %147) #5
  %1428 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1429 = load i32, ptr %12, align 4, !tbaa !9
  %1430 = add nsw i32 %1429, 1
  store i32 %1430, ptr %12, align 4, !tbaa !9
  %1431 = sext i32 %1429 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %147, ptr noundef nonnull align 8 dereferenceable(16) %1428, i64 noundef %1431)
  %1432 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %147, i1 noundef zeroext %1427) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %147) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %147) #5
  %1433 = load i32, ptr %135, align 4, !tbaa !9
  %1434 = icmp eq i32 %1433, 12
  call void @llvm.lifetime.start.p0(i64 16, ptr %148) #5
  %1435 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1436 = load i32, ptr %12, align 4, !tbaa !9
  %1437 = add nsw i32 %1436, 1
  store i32 %1437, ptr %12, align 4, !tbaa !9
  %1438 = sext i32 %1436 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %148, ptr noundef nonnull align 8 dereferenceable(16) %1435, i64 noundef %1438)
  %1439 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %148, i1 noundef zeroext %1434) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %148) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %148) #5
  %1440 = load i32, ptr %135, align 4, !tbaa !9
  %1441 = icmp eq i32 %1440, 13
  call void @llvm.lifetime.start.p0(i64 16, ptr %149) #5
  %1442 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1443 = load i32, ptr %12, align 4, !tbaa !9
  %1444 = add nsw i32 %1443, 1
  store i32 %1444, ptr %12, align 4, !tbaa !9
  %1445 = sext i32 %1443 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %149, ptr noundef nonnull align 8 dereferenceable(16) %1442, i64 noundef %1445)
  %1446 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %149, i1 noundef zeroext %1441) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %149) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %149) #5
  %1447 = load i32, ptr %135, align 4, !tbaa !9
  %1448 = icmp eq i32 %1447, 14
  call void @llvm.lifetime.start.p0(i64 16, ptr %150) #5
  %1449 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1450 = load i32, ptr %12, align 4, !tbaa !9
  %1451 = add nsw i32 %1450, 1
  store i32 %1451, ptr %12, align 4, !tbaa !9
  %1452 = sext i32 %1450 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %150, ptr noundef nonnull align 8 dereferenceable(16) %1449, i64 noundef %1452)
  %1453 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %150, i1 noundef zeroext %1448) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %150) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %150) #5
  %1454 = load i32, ptr %135, align 4, !tbaa !9
  %1455 = icmp eq i32 %1454, 15
  call void @llvm.lifetime.start.p0(i64 16, ptr %151) #5
  %1456 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1457 = load i32, ptr %12, align 4, !tbaa !9
  %1458 = add nsw i32 %1457, 1
  store i32 %1458, ptr %12, align 4, !tbaa !9
  %1459 = sext i32 %1457 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %151, ptr noundef nonnull align 8 dereferenceable(16) %1456, i64 noundef %1459)
  %1460 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %151, i1 noundef zeroext %1455) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %151) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %151) #5
  %1461 = load i32, ptr %135, align 4, !tbaa !9
  %1462 = icmp eq i32 %1461, 16
  call void @llvm.lifetime.start.p0(i64 16, ptr %152) #5
  %1463 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1464 = load i32, ptr %12, align 4, !tbaa !9
  %1465 = add nsw i32 %1464, 1
  store i32 %1465, ptr %12, align 4, !tbaa !9
  %1466 = sext i32 %1464 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %152, ptr noundef nonnull align 8 dereferenceable(16) %1463, i64 noundef %1466)
  %1467 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %152, i1 noundef zeroext %1462) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %152) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #5
  %1468 = load i32, ptr %135, align 4, !tbaa !9
  %1469 = icmp sgt i32 %1468, 16
  call void @llvm.lifetime.start.p0(i64 16, ptr %153) #5
  %1470 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1471 = load i32, ptr %12, align 4, !tbaa !9
  %1472 = add nsw i32 %1471, 1
  store i32 %1472, ptr %12, align 4, !tbaa !9
  %1473 = sext i32 %1471 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %153, ptr noundef nonnull align 8 dereferenceable(16) %1470, i64 noundef %1473)
  %1474 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %153, i1 noundef zeroext %1469) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %153) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %153) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #5
  store i32 0, ptr %154, align 4, !tbaa !9
  %1475 = load i32, ptr %32, align 4, !tbaa !9
  %1476 = icmp sgt i32 %1475, 0
  br i1 %1476, label %1477, label %1487

1477:                                             ; preds = %1362
  %1478 = load i32, ptr %37, align 4, !tbaa !9
  %1479 = icmp eq i32 %1478, 2
  br i1 %1479, label %1480, label %1487

1480:                                             ; preds = %1477
  %1481 = load ptr, ptr %7, align 8, !tbaa !5
  %1482 = getelementptr inbounds %class.FastState, ptr %1481, i32 0, i32 0
  %1483 = load i32, ptr %11, align 4, !tbaa !9
  %1484 = load i32, ptr %10, align 4, !tbaa !9
  %1485 = call noundef zeroext i1 @_ZN9FastBoard19check_losing_ladderEiii(ptr noundef nonnull align 8 dereferenceable(11052) %1482, i32 noundef %1483, i32 noundef %1484, i32 noundef 0)
  %1486 = zext i1 %1485 to i32
  store i32 %1486, ptr %154, align 4, !tbaa !9
  br label %1487

1487:                                             ; preds = %1480, %1477, %1362
  %1488 = load i32, ptr %154, align 4, !tbaa !9
  %1489 = icmp ne i32 %1488, 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %155) #5
  %1490 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1491 = load i32, ptr %12, align 4, !tbaa !9
  %1492 = add nsw i32 %1491, 1
  store i32 %1492, ptr %12, align 4, !tbaa !9
  %1493 = sext i32 %1491 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %155, ptr noundef nonnull align 8 dereferenceable(16) %1490, i64 noundef %1493)
  %1494 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %155, i1 noundef zeroext %1489) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %155) #5
  %1495 = load i32, ptr %10, align 4, !tbaa !9
  %1496 = icmp sgt i32 %1495, 0
  br i1 %1496, label %1497, label %1598

1497:                                             ; preds = %1487
  %1498 = load ptr, ptr %7, align 8, !tbaa !5
  %1499 = call noundef i32 @_ZN9FastState13get_last_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1498)
  %1500 = icmp sgt i32 %1499, 0
  br i1 %1500, label %1501, label %1598

1501:                                             ; preds = %1497
  call void @llvm.lifetime.start.p0(i64 24, ptr %156) #5
  %1502 = load ptr, ptr %7, align 8, !tbaa !5
  %1503 = getelementptr inbounds %class.FastState, ptr %1502, i32 0, i32 0
  %1504 = load ptr, ptr %7, align 8, !tbaa !5
  %1505 = call noundef i32 @_ZN9FastState13get_last_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1504)
  call void @_ZN9FastBoard17get_neighbour_idsEi(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %156, ptr noundef nonnull align 8 dereferenceable(11052) %1503, i32 noundef %1505)
  call void @llvm.lifetime.start.p0(i64 24, ptr %157) #5
  %1506 = load ptr, ptr %7, align 8, !tbaa !5
  %1507 = getelementptr inbounds %class.FastState, ptr %1506, i32 0, i32 0
  %1508 = load i32, ptr %10, align 4, !tbaa !9
  invoke void @_ZN9FastBoard17get_neighbour_idsEi(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %157, ptr noundef nonnull align 8 dereferenceable(11052) %1507, i32 noundef %1508)
          to label %1509 unwind label %1580

1509:                                             ; preds = %1501
  call void @llvm.lifetime.start.p0(i64 24, ptr %160) #5
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %160) #5
  %1510 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %156) #5
  %1511 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %161, i32 0, i32 0
  store ptr %1510, ptr %1511, align 8
  %1512 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %156) #5
  %1513 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %162, i32 0, i32 0
  store ptr %1512, ptr %1513, align 8
  %1514 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %161, i32 0, i32 0
  %1515 = load ptr, ptr %1514, align 8
  %1516 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %162, i32 0, i32 0
  %1517 = load ptr, ptr %1516, align 8
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_(ptr %1515, ptr %1517)
          to label %1518 unwind label %1584

1518:                                             ; preds = %1509
  %1519 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %157) #5
  %1520 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %163, i32 0, i32 0
  store ptr %1519, ptr %1520, align 8
  %1521 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %157) #5
  %1522 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %164, i32 0, i32 0
  store ptr %1521, ptr %1522, align 8
  %1523 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %163, i32 0, i32 0
  %1524 = load ptr, ptr %1523, align 8
  %1525 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %164, i32 0, i32 0
  %1526 = load ptr, ptr %1525, align 8
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_(ptr %1524, ptr %1526)
          to label %1527 unwind label %1584

1527:                                             ; preds = %1518
  %1528 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %156) #5
  %1529 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %165, i32 0, i32 0
  store ptr %1528, ptr %1529, align 8
  %1530 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %156) #5
  %1531 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %166, i32 0, i32 0
  store ptr %1530, ptr %1531, align 8
  %1532 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %157) #5
  %1533 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %167, i32 0, i32 0
  store ptr %1532, ptr %1533, align 8
  %1534 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %157) #5
  %1535 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %168, i32 0, i32 0
  store ptr %1534, ptr %1535, align 8
  %1536 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #5
  %1537 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %170, i32 0, i32 0
  store ptr %1536, ptr %1537, align 8
  %1538 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %170, i32 0, i32 0
  %1539 = load ptr, ptr %1538, align 8
  %1540 = invoke { ptr, ptr } @_ZSt8inserterISt6vectorIiSaIiEEESt15insert_iteratorIT_ERS4_NS4_8iteratorE(ptr noundef nonnull align 8 dereferenceable(24) %160, ptr %1539)
          to label %1541 unwind label %1584

1541:                                             ; preds = %1527
  %1542 = getelementptr inbounds { ptr, ptr }, ptr %169, i32 0, i32 0
  %1543 = extractvalue { ptr, ptr } %1540, 0
  store ptr %1543, ptr %1542, align 8
  %1544 = getelementptr inbounds { ptr, ptr }, ptr %169, i32 0, i32 1
  %1545 = extractvalue { ptr, ptr } %1540, 1
  store ptr %1545, ptr %1544, align 8
  %1546 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %165, i32 0, i32 0
  %1547 = load ptr, ptr %1546, align 8
  %1548 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %166, i32 0, i32 0
  %1549 = load ptr, ptr %1548, align 8
  %1550 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %167, i32 0, i32 0
  %1551 = load ptr, ptr %1550, align 8
  %1552 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %168, i32 0, i32 0
  %1553 = load ptr, ptr %1552, align 8
  %1554 = getelementptr inbounds { ptr, ptr }, ptr %169, i32 0, i32 0
  %1555 = load ptr, ptr %1554, align 8
  %1556 = getelementptr inbounds { ptr, ptr }, ptr %169, i32 0, i32 1
  %1557 = load ptr, ptr %1556, align 8
  %1558 = invoke { ptr, ptr } @_ZSt16set_intersectionIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_St15insert_iteratorIS5_EET1_T_SA_T0_SB_S9_(ptr %1547, ptr %1549, ptr %1551, ptr %1553, ptr %1555, ptr %1557)
          to label %1559 unwind label %1584

1559:                                             ; preds = %1541
  %1560 = getelementptr inbounds { ptr, ptr }, ptr %171, i32 0, i32 0
  %1561 = extractvalue { ptr, ptr } %1558, 0
  store ptr %1561, ptr %1560, align 8
  %1562 = getelementptr inbounds { ptr, ptr }, ptr %171, i32 0, i32 1
  %1563 = extractvalue { ptr, ptr } %1558, 1
  store ptr %1563, ptr %1562, align 8
  %1564 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #5
  %1565 = icmp eq i64 %1564, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %172) #5
  %1566 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1567 = load i32, ptr %12, align 4, !tbaa !9
  %1568 = add nsw i32 %1567, 1
  store i32 %1568, ptr %12, align 4, !tbaa !9
  %1569 = sext i32 %1567 to i64
  invoke void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %172, ptr noundef nonnull align 8 dereferenceable(16) %1566, i64 noundef %1569)
          to label %1570 unwind label %1588

1570:                                             ; preds = %1559
  %1571 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %172, i1 noundef zeroext %1565) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %172) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %172) #5
  %1572 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #5
  %1573 = icmp ugt i64 %1572, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %173) #5
  %1574 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1575 = load i32, ptr %12, align 4, !tbaa !9
  %1576 = add nsw i32 %1575, 1
  store i32 %1576, ptr %12, align 4, !tbaa !9
  %1577 = sext i32 %1575 to i64
  invoke void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %173, ptr noundef nonnull align 8 dereferenceable(16) %1574, i64 noundef %1577)
          to label %1578 unwind label %1592

1578:                                             ; preds = %1570
  %1579 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %173, i1 noundef zeroext %1573) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %173) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %173) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %160) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %160) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %157) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %157) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %156) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %156) #5
  br label %1609

1580:                                             ; preds = %1501
  %1581 = landingpad { ptr, i32 }
          cleanup
  %1582 = extractvalue { ptr, i32 } %1581, 0
  store ptr %1582, ptr %158, align 8
  %1583 = extractvalue { ptr, i32 } %1581, 1
  store i32 %1583, ptr %159, align 4
  br label %1597

1584:                                             ; preds = %1541, %1527, %1518, %1509
  %1585 = landingpad { ptr, i32 }
          cleanup
  %1586 = extractvalue { ptr, i32 } %1585, 0
  store ptr %1586, ptr %158, align 8
  %1587 = extractvalue { ptr, i32 } %1585, 1
  store i32 %1587, ptr %159, align 4
  br label %1596

1588:                                             ; preds = %1559
  %1589 = landingpad { ptr, i32 }
          cleanup
  %1590 = extractvalue { ptr, i32 } %1589, 0
  store ptr %1590, ptr %158, align 8
  %1591 = extractvalue { ptr, i32 } %1589, 1
  store i32 %1591, ptr %159, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %172) #5
  br label %1596

1592:                                             ; preds = %1570
  %1593 = landingpad { ptr, i32 }
          cleanup
  %1594 = extractvalue { ptr, i32 } %1593, 0
  store ptr %1594, ptr %158, align 8
  %1595 = extractvalue { ptr, i32 } %1593, 1
  store i32 %1595, ptr %159, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %173) #5
  br label %1596

1596:                                             ; preds = %1592, %1588, %1584
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %160) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %160) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %157) #5
  br label %1597

1597:                                             ; preds = %1596, %1580
  call void @llvm.lifetime.end.p0(i64 24, ptr %157) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %156) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %156) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %1625

1598:                                             ; preds = %1497, %1487
  call void @llvm.lifetime.start.p0(i64 16, ptr %174) #5
  %1599 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1600 = load i32, ptr %12, align 4, !tbaa !9
  %1601 = add nsw i32 %1600, 1
  store i32 %1601, ptr %12, align 4, !tbaa !9
  %1602 = sext i32 %1600 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %174, ptr noundef nonnull align 8 dereferenceable(16) %1599, i64 noundef %1602)
  %1603 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %174, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %174) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %174) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %175) #5
  %1604 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 1
  %1605 = load i32, ptr %12, align 4, !tbaa !9
  %1606 = add nsw i32 %1605, 1
  store i32 %1606, ptr %12, align 4, !tbaa !9
  %1607 = sext i32 %1605 to i64
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind writable sret(%"class.std::bitset<110>::reference") align 8 %175, ptr noundef nonnull align 8 dereferenceable(16) %1604, i64 noundef %1607)
  %1608 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %175, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %175) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %175) #5
  br label %1609

1609:                                             ; preds = %1598, %1578
  call void @llvm.lifetime.start.p0(i64 4, ptr %176) #5
  %1610 = load i32, ptr %10, align 4, !tbaa !9
  %1611 = icmp ne i32 %1610, -1
  br i1 %1611, label %1612, label %1621

1612:                                             ; preds = %1609
  %1613 = load ptr, ptr %7, align 8, !tbaa !5
  %1614 = getelementptr inbounds %class.FastState, ptr %1613, i32 0, i32 0
  %1615 = load i32, ptr %10, align 4, !tbaa !9
  %1616 = load ptr, ptr %7, align 8, !tbaa !5
  %1617 = getelementptr inbounds %class.FastState, ptr %1616, i32 0, i32 0
  %1618 = call noundef zeroext i1 @_ZN9FastBoard13black_to_moveEv(ptr noundef nonnull align 8 dereferenceable(11052) %1617)
  %1619 = xor i1 %1618, true
  %1620 = call noundef i32 @_ZN9FastBoard12get_pattern4Eib(ptr noundef nonnull align 8 dereferenceable(11052) %1614, i32 noundef %1615, i1 noundef zeroext %1619)
  store i32 %1620, ptr %176, align 4, !tbaa !9
  br label %1622

1621:                                             ; preds = %1609
  store i32 16777215, ptr %176, align 4, !tbaa !9
  br label %1622

1622:                                             ; preds = %1621, %1612
  %1623 = load i32, ptr %176, align 4, !tbaa !9
  %1624 = getelementptr inbounds %class.Attributes, ptr %177, i32 0, i32 0
  store i32 %1623, ptr %1624, align 8, !tbaa !41
  call void @llvm.lifetime.end.p0(i64 4, ptr %176) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  ret void

1625:                                             ; preds = %1597
  %1626 = load ptr, ptr %158, align 8
  %1627 = load i32, ptr %159, align 4
  %1628 = insertvalue { ptr, i32 } poison, ptr %1626, 0
  %1629 = insertvalue { ptr, i32 } %1628, i32 %1627, 1
  resume { ptr, i32 } %1629
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind noalias writable sret(%"class.std::bitset<110>::reference") align 8, ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) #3 align 2

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

declare noundef float @_ZNK12MCOwnerTable17get_criticality_fEi(ptr noundef nonnull align 8 dereferenceable(5848), i32 noundef) #2

declare noundef i32 @_ZN9FastBoard16count_plibertiesEi(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef) #2

declare noundef i32 @_ZN9FastState10get_passesEv(ptr noundef nonnull align 8 dereferenceable(11160)) #2

declare noundef i32 @_ZNK9FastBoard13get_boardsizeEv(ptr noundef nonnull align 8 dereferenceable(11052)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

declare noundef i32 @_ZN9FastState17get_prevlast_moveEv(ptr noundef nonnull align 8 dereferenceable(11160)) #2

declare noundef zeroext i1 @_ZN9FastBoard19check_losing_ladderEiii(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef, i32 noundef, i32 noundef) #2

declare void @_ZN9FastBoard17get_neighbour_idsEi(ptr dead_on_unwind writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef) #2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_(ptr, ptr) #4

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZSt16set_intersectionIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_St15insert_iteratorIS5_EET1_T_SA_T0_SB_S9_(ptr, ptr, ptr, ptr, ptr, ptr) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZSt8inserterISt6vectorIiSaIiEEESt15insert_iteratorIT_ERS4_NS4_8iteratorE(ptr noundef nonnull align 8 dereferenceable(24), ptr) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

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

declare noundef i32 @_ZN9FastBoard12get_pattern4Eib(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef, i1 noundef zeroext) #2

declare noundef zeroext i1 @_ZN9FastBoard13black_to_moveEv(ptr noundef nonnull align 8 dereferenceable(11052)) #2

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = !{!18, !10, i64 11084}
!18 = !{!"_ZTS9FastState", !19, i64 0, !12, i64 11072, !10, i64 11076, !10, i64 11080, !10, i64 11084, !32, i64 11088, !10, i64 11096, !14, i64 11100, !10, i64 11104, !33, i64 11112, !37, i64 11136}
!19 = !{!"_ZTS9FullBoard", !20, i64 0, !31, i64 11056, !31, i64 11064}
!20 = !{!"_ZTS9FastBoard", !21, i64 0, !22, i64 730, !22, i64 2190, !22, i64 3650, !22, i64 5110, !23, i64 6570, !24, i64 8028, !25, i64 8044, !26, i64 8076, !26, i64 8084, !27, i64 8096, !23, i64 8120, !23, i64 9578, !10, i64 11036, !10, i64 11040, !10, i64 11044, !10, i64 11048}
!21 = !{!"_ZTSSt5arrayIN9FastBoard8square_tELm729EE", !7, i64 0}
!22 = !{!"_ZTSSt5arrayItLm730EE", !7, i64 0}
!23 = !{!"_ZTSSt5arrayItLm729EE", !7, i64 0}
!24 = !{!"_ZTSSt5arrayIiLm4EE", !7, i64 0}
!25 = !{!"_ZTSSt5arrayIiLm8EE", !7, i64 0}
!26 = !{!"_ZTSSt5arrayIiLm2EE", !7, i64 0}
!27 = !{!"_ZTSSt6vectorIiSaIiEE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"long long", !7, i64 0}
!32 = !{!"long", !7, i64 0}
!33 = !{!"_ZTSSt6vectorI13MovewFeaturesSaIS0_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseI13MovewFeaturesSaIS0_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseI13MovewFeaturesSaIS0_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseI13MovewFeaturesSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTSSt6vectorISt4pairIifESaIS1_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseISt4pairIifESaIS1_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseISt4pairIifESaIS1_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt4pairIifESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!42, !10, i64 0}
!42 = !{!"_ZTS10Attributes", !10, i64 0, !43, i64 8}
!43 = !{!"_ZTSSt6bitsetILm110EE", !44, i64 0}
!44 = !{!"_ZTSSt12_Base_bitsetILm2EE", !7, i64 0}


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

%"class.std::bitset<110>::reference" = type { ptr, i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN14BaseAttributes13move_distanceESt4pairIiiES1_(i64, i64) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN14BaseAttributes15border_distanceESt4pairIiiEi(i64, i32 noundef) local_unnamed_addr #0 align 2

declare noundef i32 @_ZN9FastState11get_to_moveEv(ptr noundef nonnull align 8 dereferenceable(11160)) local_unnamed_addr #2

declare noundef i32 @_ZN9FastState13get_last_moveEv(ptr noundef nonnull align 8 dereferenceable(11160)) local_unnamed_addr #2

declare i64 @_ZNK9FastBoard6get_xyEi(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef) local_unnamed_addr #2

declare noundef i32 @_ZN9FastBoard11saving_sizeEii(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef, i32 noundef) local_unnamed_addr #2

declare noundef i32 @_ZN9FastBoard12capture_sizeEii(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef, i32 noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN9FastBoard10self_atariEii(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef, i32 noundef) local_unnamed_addr #2

declare noundef ptr @_ZN12MCOwnerTable7get_MCOEv() local_unnamed_addr #2

declare noundef float @_ZNK12MCOwnerTable12get_blackownEii(ptr noundef nonnull align 8 dereferenceable(5848), i32 noundef, i32 noundef) local_unnamed_addr #2

declare noundef i32 @_ZN9FastBoard18minimum_elib_countEii(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10Attributes13get_from_moveEP9FastStateRSt6vectorIiSaIiEES5_i(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %4) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.std::bitset<110>::reference", align 8
  %7 = alloca %"class.std::bitset<110>::reference", align 8
  %8 = alloca %"class.std::bitset<110>::reference", align 8
  %9 = alloca %"class.std::bitset<110>::reference", align 8
  %10 = alloca %"class.std::bitset<110>::reference", align 8
  %11 = alloca %"class.std::bitset<110>::reference", align 8
  %12 = alloca %"class.std::bitset<110>::reference", align 8
  %13 = alloca %"class.std::bitset<110>::reference", align 8
  %14 = alloca %"class.std::bitset<110>::reference", align 8
  %15 = alloca %"class.std::bitset<110>::reference", align 8
  %16 = alloca %"class.std::bitset<110>::reference", align 8
  %17 = alloca %"class.std::bitset<110>::reference", align 8
  %18 = alloca %"class.std::bitset<110>::reference", align 8
  %19 = alloca %"class.std::bitset<110>::reference", align 8
  %20 = alloca %"class.std::bitset<110>::reference", align 8
  %21 = alloca %"class.std::bitset<110>::reference", align 8
  %22 = alloca %"class.std::bitset<110>::reference", align 8
  %23 = alloca %"class.std::bitset<110>::reference", align 8
  %24 = alloca %"class.std::bitset<110>::reference", align 8
  %25 = alloca %"class.std::bitset<110>::reference", align 8
  %26 = alloca %"class.std::bitset<110>::reference", align 8
  %27 = alloca %"class.std::bitset<110>::reference", align 8
  %28 = alloca %"class.std::bitset<110>::reference", align 8
  %29 = alloca %"class.std::bitset<110>::reference", align 8
  %30 = alloca %"class.std::bitset<110>::reference", align 8
  %31 = alloca %"class.std::bitset<110>::reference", align 8
  %32 = alloca %"class.std::bitset<110>::reference", align 8
  %33 = alloca %"class.std::bitset<110>::reference", align 8
  %34 = alloca %"class.std::bitset<110>::reference", align 8
  %35 = alloca %"class.std::bitset<110>::reference", align 8
  %36 = alloca %"class.std::bitset<110>::reference", align 8
  %37 = alloca %"class.std::bitset<110>::reference", align 8
  %38 = alloca %"class.std::bitset<110>::reference", align 8
  %39 = alloca %"class.std::bitset<110>::reference", align 8
  %40 = alloca %"class.std::bitset<110>::reference", align 8
  %41 = alloca %"class.std::bitset<110>::reference", align 8
  %42 = alloca %"class.std::bitset<110>::reference", align 8
  %43 = alloca %"class.std::bitset<110>::reference", align 8
  %44 = alloca %"class.std::bitset<110>::reference", align 8
  %45 = alloca %"class.std::bitset<110>::reference", align 8
  %46 = alloca %"class.std::bitset<110>::reference", align 8
  %47 = alloca %"class.std::bitset<110>::reference", align 8
  %48 = alloca %"class.std::bitset<110>::reference", align 8
  %49 = alloca %"class.std::bitset<110>::reference", align 8
  %50 = alloca %"class.std::bitset<110>::reference", align 8
  %51 = alloca %"class.std::bitset<110>::reference", align 8
  %52 = alloca %"class.std::bitset<110>::reference", align 8
  %53 = alloca %"class.std::bitset<110>::reference", align 8
  %54 = alloca %"class.std::bitset<110>::reference", align 8
  %55 = alloca %"class.std::bitset<110>::reference", align 8
  %56 = alloca %"class.std::bitset<110>::reference", align 8
  %57 = alloca %"class.std::bitset<110>::reference", align 8
  %58 = alloca %"class.std::bitset<110>::reference", align 8
  %59 = alloca %"class.std::bitset<110>::reference", align 8
  %60 = alloca %"class.std::bitset<110>::reference", align 8
  %61 = alloca %"class.std::bitset<110>::reference", align 8
  %62 = alloca %"class.std::bitset<110>::reference", align 8
  %63 = alloca %"class.std::bitset<110>::reference", align 8
  %64 = alloca %"class.std::bitset<110>::reference", align 8
  %65 = alloca %"class.std::bitset<110>::reference", align 8
  %66 = alloca %"class.std::bitset<110>::reference", align 8
  %67 = alloca %"class.std::bitset<110>::reference", align 8
  %68 = alloca %"class.std::bitset<110>::reference", align 8
  %69 = alloca %"class.std::bitset<110>::reference", align 8
  %70 = alloca %"class.std::bitset<110>::reference", align 8
  %71 = alloca %"class.std::bitset<110>::reference", align 8
  %72 = alloca %"class.std::bitset<110>::reference", align 8
  %73 = alloca %"class.std::bitset<110>::reference", align 8
  %74 = alloca %"class.std::bitset<110>::reference", align 8
  %75 = alloca %"class.std::bitset<110>::reference", align 8
  %76 = alloca %"class.std::bitset<110>::reference", align 8
  %77 = alloca %"class.std::bitset<110>::reference", align 8
  %78 = alloca %"class.std::bitset<110>::reference", align 8
  %79 = alloca %"class.std::bitset<110>::reference", align 8
  %80 = alloca %"class.std::bitset<110>::reference", align 8
  %81 = alloca %"class.std::bitset<110>::reference", align 8
  %82 = alloca %"class.std::bitset<110>::reference", align 8
  %83 = alloca %"class.std::bitset<110>::reference", align 8
  %84 = alloca %"class.std::bitset<110>::reference", align 8
  %85 = alloca %"class.std::bitset<110>::reference", align 8
  %86 = alloca %"class.std::bitset<110>::reference", align 8
  %87 = alloca %"class.std::bitset<110>::reference", align 8
  %88 = alloca %"class.std::bitset<110>::reference", align 8
  %89 = alloca %"class.std::bitset<110>::reference", align 8
  %90 = alloca %"class.std::bitset<110>::reference", align 8
  %91 = alloca %"class.std::bitset<110>::reference", align 8
  %92 = alloca %"class.std::bitset<110>::reference", align 8
  %93 = alloca %"class.std::bitset<110>::reference", align 8
  %94 = alloca %"class.std::bitset<110>::reference", align 8
  %95 = alloca %"class.std::bitset<110>::reference", align 8
  %96 = alloca %"class.std::bitset<110>::reference", align 8
  %97 = alloca %"class.std::bitset<110>::reference", align 8
  %98 = alloca %"class.std::bitset<110>::reference", align 8
  %99 = alloca %"class.std::bitset<110>::reference", align 8
  %100 = alloca %"class.std::bitset<110>::reference", align 8
  %101 = alloca %"class.std::bitset<110>::reference", align 8
  %102 = alloca %"class.std::bitset<110>::reference", align 8
  %103 = alloca %"class.std::bitset<110>::reference", align 8
  %104 = alloca %"class.std::bitset<110>::reference", align 8
  %105 = alloca %"class.std::bitset<110>::reference", align 8
  %106 = alloca %"class.std::bitset<110>::reference", align 8
  %107 = alloca %"class.std::bitset<110>::reference", align 8
  %108 = alloca %"class.std::bitset<110>::reference", align 8
  %109 = alloca %"class.std::bitset<110>::reference", align 8
  %110 = alloca %"class.std::bitset<110>::reference", align 8
  %111 = alloca %"class.std::bitset<110>::reference", align 8
  %112 = alloca %"class.std::bitset<110>::reference", align 8
  %113 = alloca %"class.std::bitset<110>::reference", align 8
  %114 = alloca %"class.std::bitset<110>::reference", align 8
  %115 = alloca %"class.std::bitset<110>::reference", align 8
  %116 = alloca %"class.std::bitset<110>::reference", align 8
  %117 = alloca %"class.std::bitset<110>::reference", align 8
  %118 = alloca %"class.std::bitset<110>::reference", align 8
  %119 = alloca %"class.std::bitset<110>::reference", align 8
  %120 = alloca %"class.std::bitset<110>::reference", align 8
  %121 = alloca %"class.std::bitset<110>::reference", align 8
  %122 = alloca %"class.std::bitset<110>::reference", align 8
  %123 = alloca %"class.std::bitset<110>::reference", align 8
  %124 = alloca %"class.std::bitset<110>::reference", align 8
  %125 = alloca %"class.std::bitset<110>::reference", align 8
  %126 = alloca %"class.std::bitset<110>::reference", align 8
  %127 = alloca %"class.std::bitset<110>::reference", align 8
  %128 = alloca %"class.std::bitset<110>::reference", align 8
  %129 = alloca %"class.std::vector", align 8
  %130 = alloca %"class.std::vector", align 8
  %131 = alloca %"class.std::vector", align 8
  %132 = alloca %"class.std::bitset<110>::reference", align 8
  %133 = alloca %"class.std::bitset<110>::reference", align 8
  %134 = alloca %"class.std::bitset<110>::reference", align 8
  %135 = alloca %"class.std::bitset<110>::reference", align 8
  %136 = getelementptr inbounds i8, ptr %0, i64 8
  %137 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16) %136) #5
  %138 = tail call noundef i32 @_ZN9FastState11get_to_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1)
  %139 = icmp ne i32 %4, -1
  br i1 %139, label %140, label %143

140:                                              ; preds = %5
  %141 = tail call noundef ptr @_ZN12MCOwnerTable7get_MCOEv()
  %142 = tail call noundef float @_ZNK12MCOwnerTable12get_blackownEii(ptr noundef nonnull align 8 dereferenceable(5848) %141, i32 noundef %138, i32 noundef %4)
  br label %143

143:                                              ; preds = %5, %140
  %.0406 = phi float [ %142, %140 ], [ -1.000000e+00, %5 ]
  %144 = fcmp oge float %.0406, 0xBF847AE140000000
  %145 = fpext float %.0406 to double
  %146 = fcmp olt double %145, 1.000000e-01
  %147 = and i1 %144, %146
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %6, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 0)
  %148 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %6, i1 noundef zeroext %147) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #5
  %149 = fcmp oge float %.0406, 0x3FB99999A0000000
  %150 = fcmp olt double %145, 2.000000e-01
  %151 = and i1 %149, %150
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %7, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 1)
  %152 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %7, i1 noundef zeroext %151) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #5
  %153 = fcmp oge float %.0406, 0x3FC99999A0000000
  %154 = fcmp olt double %145, 3.000000e-01
  %155 = and i1 %153, %154
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %8, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 2)
  %156 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %8, i1 noundef zeroext %155) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #5
  %157 = fcmp oge float %.0406, 0x3FD3333340000000
  %158 = fcmp olt double %145, 4.000000e-01
  %159 = and i1 %157, %158
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %9, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 3)
  %160 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %9, i1 noundef zeroext %159) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #5
  %161 = fcmp oge float %.0406, 0x3FD99999A0000000
  %162 = fcmp olt float %.0406, 5.000000e-01
  %163 = and i1 %161, %162
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %10, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 4)
  %164 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %10, i1 noundef zeroext %163) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #5
  %165 = fcmp oge float %.0406, 5.000000e-01
  %166 = fcmp olt double %145, 6.000000e-01
  %167 = and i1 %165, %166
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %11, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 5)
  %168 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %11, i1 noundef zeroext %167) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #5
  %169 = fcmp oge float %.0406, 0x3FE3333340000000
  %170 = fcmp olt double %145, 0x3FE6666666666666
  %171 = and i1 %169, %170
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %12, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 6)
  %172 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %12, i1 noundef zeroext %171) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  %173 = fcmp oge float %.0406, 0x3FE6666660000000
  %174 = fcmp olt double %145, 8.000000e-01
  %175 = and i1 %173, %174
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %13, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 7)
  %176 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %13, i1 noundef zeroext %175) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #5
  %177 = fcmp oge float %.0406, 0x3FE99999A0000000
  %178 = fcmp olt double %145, 9.000000e-01
  %179 = and i1 %177, %178
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %14, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 8)
  %180 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %14, i1 noundef zeroext %179) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #5
  %181 = fcmp oge float %.0406, 0x3FECCCCCC0000000
  %182 = fcmp olt double %145, 1.010000e+00
  %183 = and i1 %181, %182
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %15, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 9)
  %184 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %15, i1 noundef zeroext %183) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #5
  br i1 %139, label %185, label %188

185:                                              ; preds = %143
  %186 = call noundef ptr @_ZN12MCOwnerTable7get_MCOEv()
  %187 = call noundef float @_ZNK12MCOwnerTable17get_criticality_fEi(ptr noundef nonnull align 8 dereferenceable(5848) %186, i32 noundef %4)
  br label %188

188:                                              ; preds = %143, %185
  %.0407 = phi float [ %187, %185 ], [ 0.000000e+00, %143 ]
  %189 = fcmp oge float %.0407, 0xBF847AE140000000
  %190 = fpext float %.0407 to double
  %191 = fcmp olt double %190, 3.000000e-02
  %192 = and i1 %189, %191
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %16, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 10)
  %193 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %16, i1 noundef zeroext %192) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #5
  %194 = fcmp oge float %.0407, 0x3F9EB851E0000000
  %195 = fcmp olt double %190, 7.000000e-02
  %196 = and i1 %194, %195
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %17, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 11)
  %197 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %17, i1 noundef zeroext %196) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  %198 = fcmp oge float %.0407, 0x3FB1EB8520000000
  %199 = fcmp olt double %190, 1.100000e-01
  %200 = and i1 %198, %199
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %18, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 12)
  %201 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %18, i1 noundef zeroext %200) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #5
  %202 = fcmp oge float %.0407, 0x3FBC28F5C0000000
  %203 = fcmp olt double %190, 1.500000e-01
  %204 = and i1 %202, %203
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %19, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 13)
  %205 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %19, i1 noundef zeroext %204) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #5
  %206 = fcmp oge float %.0407, 0x3FC3333340000000
  %207 = fcmp olt double %190, 2.000000e-01
  %208 = and i1 %206, %207
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %20, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 14)
  %209 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %20, i1 noundef zeroext %208) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #5
  %210 = fcmp oge float %.0407, 0x3FC99999A0000000
  %211 = fcmp olt float %.0407, 2.500000e-01
  %212 = and i1 %210, %211
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %21, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 15)
  %213 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %21, i1 noundef zeroext %212) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #5
  %214 = fcmp oge float %.0407, 2.500000e-01
  %215 = fcmp olt double %190, 5.100000e-01
  %216 = and i1 %214, %215
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %22, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 16)
  %217 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %22, i1 noundef zeroext %216) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #5
  br i1 %139, label %218, label %220

218:                                              ; preds = %188
  %219 = call noundef i32 @_ZN9FastBoard11saving_sizeEii(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %138, i32 noundef %4)
  br label %220

220:                                              ; preds = %188, %218
  %.0408 = phi i32 [ %219, %218 ], [ -1, %188 ]
  %221 = icmp eq i32 %.0408, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %23, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 17)
  %222 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %23, i1 noundef zeroext %221) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #5
  %223 = icmp eq i32 %.0408, 2
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %24, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 18)
  %224 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %24, i1 noundef zeroext %223) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #5
  %225 = icmp eq i32 %.0408, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %25, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 19)
  %226 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %25, i1 noundef zeroext %225) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #5
  %227 = icmp sgt i32 %.0408, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %26, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 20)
  %228 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %26, i1 noundef zeroext %227) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #5
  br i1 %139, label %229, label %231

229:                                              ; preds = %220
  %230 = call noundef i32 @_ZN9FastBoard16count_plibertiesEi(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %4)
  br label %231

231:                                              ; preds = %220, %229
  %.0409 = phi i32 [ %230, %229 ], [ -1, %220 ]
  %232 = icmp sgt i32 %.0408, 0
  %233 = icmp eq i32 %.0409, 0
  %234 = and i1 %232, %233
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %27, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 21)
  %235 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %27, i1 noundef zeroext %234) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #5
  %236 = icmp eq i32 %.0409, 1
  %237 = and i1 %232, %236
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %28, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 22)
  %238 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %28, i1 noundef zeroext %237) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #5
  %239 = icmp eq i32 %.0409, 2
  %240 = and i1 %232, %239
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %29, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 23)
  %241 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %29, i1 noundef zeroext %240) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #5
  %242 = icmp eq i32 %.0409, 3
  %243 = and i1 %232, %242
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %30, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 24)
  %244 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %30, i1 noundef zeroext %243) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #5
  %245 = icmp eq i32 %4, -1
  br i1 %245, label %246, label %250

246:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %31, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 25)
  %247 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %31, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %32, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 26)
  %248 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %32, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %33, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 27)
  %249 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %33, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #5
  br label %263

250:                                              ; preds = %231
  %251 = and i1 %169, %232
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %34, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 25)
  %252 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %34, i1 noundef zeroext %251) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #5
  %253 = fcmp ogt float %.0406, 0x3FD99999A0000000
  %254 = fcmp olt float %.0406, 0x3FE3333340000000
  %255 = and i1 %253, %254
  %spec.select = and i1 %255, %232
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %35, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 26)
  %256 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %35, i1 noundef zeroext %spec.select) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #5
  %257 = fcmp ole float %.0406, 0x3FD99999A0000000
  %258 = and i1 %257, %232
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %36, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 27)
  %259 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %36, i1 noundef zeroext %258) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #5
  %.not = icmp eq i32 %138, 0
  %260 = zext i1 %.not to i32
  %261 = call noundef i32 @_ZN9FastBoard18minimum_elib_countEii(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %260, i32 noundef %4)
  %262 = icmp eq i32 %261, 100
  %spec.store.select = select i1 %262, i32 0, i32 %261
  br label %263

263:                                              ; preds = %246, %250
  %.0410 = phi i32 [ %spec.store.select, %250 ], [ -1, %246 ]
  %264 = icmp eq i32 %.0410, 2
  %265 = and i1 %239, %264
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %37, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 28)
  %266 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %37, i1 noundef zeroext %265) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #5
  %267 = icmp eq i32 %.0410, 3
  %268 = and i1 %239, %267
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %38, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 29)
  %269 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %38, i1 noundef zeroext %268) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #5
  %270 = icmp eq i32 %.0410, 4
  %271 = and i1 %239, %270
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %39, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 30)
  %272 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %39, i1 noundef zeroext %271) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %39) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #5
  %273 = icmp eq i32 %.0410, 5
  %274 = and i1 %239, %273
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %40, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 31)
  %275 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %40, i1 noundef zeroext %274) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #5
  %276 = icmp eq i32 %.0410, 6
  %277 = and i1 %239, %276
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %41, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 32)
  %278 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %41, i1 noundef zeroext %277) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #5
  %279 = icmp sgt i32 %.0410, 6
  %280 = and i1 %239, %279
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %42, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 33)
  %281 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %42, i1 noundef zeroext %280) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #5
  %282 = and i1 %242, %264
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %43, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 34)
  %283 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %43, i1 noundef zeroext %282) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #5
  %284 = and i1 %242, %267
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %44, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 35)
  %285 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %44, i1 noundef zeroext %284) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #5
  %286 = and i1 %242, %270
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %45, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 36)
  %287 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %45, i1 noundef zeroext %286) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #5
  %288 = and i1 %242, %273
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %46, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 37)
  %289 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %46, i1 noundef zeroext %288) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #5
  %290 = and i1 %242, %276
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %47, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 38)
  %291 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %47, i1 noundef zeroext %290) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #5
  %292 = and i1 %242, %279
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %48, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 39)
  %293 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %48, i1 noundef zeroext %292) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #5
  br i1 %245, label %294, label %296

294:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %49, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 40)
  %295 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %49, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #5
  br label %301

296:                                              ; preds = %263
  %297 = add i32 %.0410, -1
  %or.cond3 = icmp ult i32 %297, 6
  %298 = fcmp ole float %.0406, 0x3FD99999A0000000
  %spec.select426 = and i1 %298, %or.cond3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %50, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 40)
  %299 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %50, i1 noundef zeroext %spec.select426) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #5
  %300 = call noundef i32 @_ZN9FastBoard12capture_sizeEii(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %138, i32 noundef %4)
  br label %301

301:                                              ; preds = %294, %296
  %.0411 = phi i32 [ %300, %296 ], [ -1, %294 ]
  %302 = icmp eq i32 %.0411, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %51, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 41)
  %303 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %51, i1 noundef zeroext %302) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #5
  %304 = icmp eq i32 %.0411, 2
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %52, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 42)
  %305 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %52, i1 noundef zeroext %304) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #5
  %306 = icmp eq i32 %.0411, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %53, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 43)
  %307 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %53, i1 noundef zeroext %306) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #5
  %308 = icmp sgt i32 %.0411, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %54) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %54, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 44)
  %309 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %54, i1 noundef zeroext %308) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #5
  br i1 %245, label %.critedge, label %310

310:                                              ; preds = %301
  %311 = icmp sgt i32 %.0411, 0
  %312 = and i1 %169, %311
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %58) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %58, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 45)
  %313 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %58, i1 noundef zeroext %312) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #5
  %314 = fcmp ogt float %.0406, 0x3FD99999A0000000
  %315 = fcmp olt float %.0406, 0x3FE3333340000000
  %316 = and i1 %314, %315
  %spec.select427 = and i1 %316, %311
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %59) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %59, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 46)
  %317 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %59, i1 noundef zeroext %spec.select427) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #5
  %318 = fcmp ole float %.0406, 0x3FD99999A0000000
  %319 = and i1 %318, %311
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %60, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 47)
  %320 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %60, i1 noundef zeroext %319) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #5
  %321 = call noundef zeroext i1 @_ZN9FastBoard10self_atariEii(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %138, i32 noundef %4)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %61) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %61, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 48)
  %322 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %61, i1 noundef zeroext %321) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #5
  %323 = call noundef i32 @_ZN9FastBoard18minimum_elib_countEii(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %138, i32 noundef %4)
  switch i32 %323, label %.thread430.fold.split [
    i32 100, label %.thread430
    i32 2, label %328
  ]

.critedge:                                        ; preds = %301
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %55, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 45)
  %324 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %55, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %56, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 46)
  %325 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %56, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %57, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 47)
  %326 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %57, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %61) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %61, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 48)
  %327 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %61, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #5
  br label %.thread430

328:                                              ; preds = %310
  %329 = getelementptr inbounds i8, ptr %1, i64 11084
  %330 = load i32, ptr %329, align 4, !tbaa !5
  %331 = icmp ne i32 %330, -1
  br label %.thread430

.thread430.fold.split:                            ; preds = %310
  br label %.thread430

.thread430:                                       ; preds = %310, %.thread430.fold.split, %.critedge, %328
  %332 = phi i1 [ true, %328 ], [ false, %.critedge ], [ false, %310 ], [ false, %.thread430.fold.split ]
  %.0413432 = phi i32 [ 2, %328 ], [ -1, %.critedge ], [ 0, %310 ], [ %323, %.thread430.fold.split ]
  %333 = phi i1 [ %331, %328 ], [ false, %.critedge ], [ false, %310 ], [ false, %.thread430.fold.split ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %62) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %62, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 49)
  %334 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %62, i1 noundef zeroext %333) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #5
  %335 = icmp eq i32 %.0413432, 3
  br i1 %335, label %336, label %340

336:                                              ; preds = %.thread430
  %337 = getelementptr inbounds i8, ptr %1, i64 11084
  %338 = load i32, ptr %337, align 4, !tbaa !5
  %339 = icmp ne i32 %338, -1
  br label %340

340:                                              ; preds = %336, %.thread430
  %341 = phi i1 [ false, %.thread430 ], [ %339, %336 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %63) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %63, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 50)
  %342 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %63, i1 noundef zeroext %341) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %64) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %64, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 51)
  %343 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %64, i1 noundef zeroext %332) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %65) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %65, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 52)
  %344 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %65, i1 noundef zeroext %335) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #5
  %345 = icmp eq i32 %.0413432, 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %66) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %66, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 53)
  %346 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %66, i1 noundef zeroext %345) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #5
  %347 = icmp eq i32 %.0413432, 5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %67) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %67, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 54)
  %348 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %67, i1 noundef zeroext %347) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #5
  %349 = icmp eq i32 %.0413432, 6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %68) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %68, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 55)
  %350 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %68, i1 noundef zeroext %349) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %68) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #5
  %351 = icmp sgt i32 %.0413432, 6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %69, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 56)
  %352 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %69, i1 noundef zeroext %351) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #5
  %353 = icmp sgt i32 %.0413432, 0
  %or.cond8 = and i1 %139, %353
  %354 = icmp sgt i32 %.0410, 0
  %or.cond10 = and i1 %354, %or.cond8
  br i1 %or.cond10, label %355, label %371

355:                                              ; preds = %340
  %356 = icmp ult i32 %.0410, 7
  %357 = icmp ult i32 %.0413432, 7
  %or.cond12 = or i1 %356, %357
  br i1 %or.cond12, label %358, label %371

358:                                              ; preds = %355
  %359 = add nuw nsw i32 %.0410, 1
  %360 = icmp ugt i32 %.0413432, %359
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %70) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %70, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 57)
  %361 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %70, i1 noundef zeroext %360) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #5
  %362 = icmp eq i32 %.0413432, %359
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %71) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %71, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 58)
  %363 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %71, i1 noundef zeroext %362) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %71) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #5
  %364 = icmp eq i32 %.0413432, %.0410
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %72) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %72, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 59)
  %365 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %72, i1 noundef zeroext %364) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %72) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #5
  %366 = add nuw nsw i32 %.0413432, 1
  %367 = icmp eq i32 %366, %.0410
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %73) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %73, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 60)
  %368 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %73, i1 noundef zeroext %367) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #5
  %369 = icmp ult i32 %366, %.0410
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %74) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %74, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 61)
  %370 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %74, i1 noundef zeroext %369) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %74) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #5
  br label %377

371:                                              ; preds = %355, %340
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %75) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %75, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 57)
  %372 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %75, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %76) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %76, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 58)
  %373 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %76, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %76) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %77, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 59)
  %374 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %77, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %77) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %78) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %78, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 60)
  %375 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %78, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %78) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %79) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %79, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 61)
  %376 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %79, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %79) #5
  br label %377

377:                                              ; preds = %371, %358
  br i1 %or.cond8, label %.thread433, label %385

.thread433:                                       ; preds = %377
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %80) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %80, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 62)
  %378 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %80, i1 noundef zeroext %169) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #5
  %379 = fcmp ogt float %.0406, 0x3FD99999A0000000
  %380 = fcmp olt float %.0406, 0x3FE3333340000000
  %381 = and i1 %379, %380
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %81, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 63)
  %382 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %81, i1 noundef zeroext %381) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #5
  %383 = fcmp ole float %.0406, 0x3FD99999A0000000
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %82) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %82, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 64)
  %384 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %82, i1 noundef zeroext %383) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %82) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %82) #5
  br label %.thread435

385:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %83) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %83, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 62)
  %386 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %83, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %83) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %84) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %84, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 63)
  %387 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %84, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %85) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %85, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 64)
  %388 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %85, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %85) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #5
  br i1 %245, label %389, label %.thread435

389:                                              ; preds = %385
  %390 = call noundef i32 @_ZN9FastState10get_passesEv(ptr noundef nonnull align 8 dereferenceable(11160) %1)
  %391 = icmp eq i32 %390, 0
  %392 = call noundef i32 @_ZN9FastState10get_passesEv(ptr noundef nonnull align 8 dereferenceable(11160) %1)
  %393 = icmp eq i32 %392, 1
  br label %.thread435

.thread435:                                       ; preds = %385, %.thread433, %389
  %394 = phi i1 [ %391, %389 ], [ false, %.thread433 ], [ false, %385 ]
  %395 = phi i1 [ %393, %389 ], [ false, %.thread433 ], [ false, %385 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %86) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %86, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 65)
  %396 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %86, i1 noundef zeroext %394) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %87) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %87, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 66)
  %397 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %87, i1 noundef zeroext %395) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %87) #5
  br i1 %139, label %398, label %402

398:                                              ; preds = %.thread435
  %399 = call i64 @_ZNK9FastBoard6get_xyEi(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %4)
  %400 = call noundef i32 @_ZNK9FastBoard13get_boardsizeEv(ptr noundef nonnull align 8 dereferenceable(11052) %1)
  %401 = call noundef i32 @_ZN14BaseAttributes15border_distanceESt4pairIiiEi(i64 %399, i32 noundef %400)
  br label %402

402:                                              ; preds = %.thread435, %398
  %.0414 = phi i32 [ %401, %398 ], [ -1, %.thread435 ]
  %403 = icmp eq i32 %.0414, 0
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %88) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %88, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 67)
  %404 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %88, i1 noundef zeroext %403) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %88) #5
  %405 = icmp eq i32 %.0414, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %89) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %89, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 68)
  %406 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %89, i1 noundef zeroext %405) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %89) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %89) #5
  %407 = icmp eq i32 %.0414, 2
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %90) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %90, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 69)
  %408 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %90, i1 noundef zeroext %407) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %90) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #5
  %409 = icmp eq i32 %.0414, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %91) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %91, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 70)
  %410 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %91, i1 noundef zeroext %409) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %91) #5
  %411 = icmp eq i32 %.0414, 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %92) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %92, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 71)
  %412 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %92, i1 noundef zeroext %411) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %92) #5
  %413 = icmp sgt i32 %.0414, 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %93) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %93, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 72)
  %414 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %93, i1 noundef zeroext %413) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #5
  %spec.store.select15 = select i1 %245, i32 0, i32 %4
  %415 = sext i32 %spec.store.select15 to i64
  %416 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %415) #5
  %417 = load i32, ptr %416, align 4, !tbaa !35
  %418 = icmp ne i32 %417, 0
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %94) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %94, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 73)
  %419 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %94, i1 noundef zeroext %418) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #5
  %420 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %415) #5
  %421 = load i32, ptr %420, align 4, !tbaa !35
  %422 = icmp ne i32 %421, 0
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %95) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %95, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 74)
  %423 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %95, i1 noundef zeroext %422) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %95) #5
  %424 = call noundef i32 @_ZN9FastState13get_last_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1)
  %425 = icmp sgt i32 %424, 0
  %426 = icmp sgt i32 %4, 0
  %or.cond17 = and i1 %426, %425
  br i1 %or.cond17, label %427, label %432

427:                                              ; preds = %402
  %428 = call noundef i32 @_ZN9FastState13get_last_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1)
  %429 = call i64 @_ZNK9FastBoard6get_xyEi(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %428)
  %430 = call i64 @_ZNK9FastBoard6get_xyEi(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %4)
  %431 = call noundef i32 @_ZN14BaseAttributes13move_distanceESt4pairIiiES1_(i64 %429, i64 %430)
  br label %432

432:                                              ; preds = %402, %427
  %.0415 = phi i32 [ %431, %427 ], [ -1, %402 ]
  %433 = icmp eq i32 %.0415, 2
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %96, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 75)
  %434 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %96, i1 noundef zeroext %433) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #5
  %435 = icmp eq i32 %.0415, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %97) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %97, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 76)
  %436 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %97, i1 noundef zeroext %435) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %97) #5
  %437 = icmp eq i32 %.0415, 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %98) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %98, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 77)
  %438 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %98, i1 noundef zeroext %437) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %98) #5
  %439 = icmp eq i32 %.0415, 5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %99) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %99, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 78)
  %440 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %99, i1 noundef zeroext %439) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %99) #5
  %441 = icmp eq i32 %.0415, 6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %100) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %100, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 79)
  %442 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %100, i1 noundef zeroext %441) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %100) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #5
  %443 = icmp eq i32 %.0415, 7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %101) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %101, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 80)
  %444 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %101, i1 noundef zeroext %443) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %101) #5
  %445 = icmp eq i32 %.0415, 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %102) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %102, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 81)
  %446 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %102, i1 noundef zeroext %445) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %102) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %102) #5
  %447 = icmp eq i32 %.0415, 9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %103) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %103, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 82)
  %448 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %103, i1 noundef zeroext %447) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %103) #5
  %449 = icmp eq i32 %.0415, 10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %104) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %104, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 83)
  %450 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %104, i1 noundef zeroext %449) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %104) #5
  %451 = icmp eq i32 %.0415, 11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %105) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %105, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 84)
  %452 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %105, i1 noundef zeroext %451) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %105) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %105) #5
  %453 = icmp eq i32 %.0415, 12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %106) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %106, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 85)
  %454 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %106, i1 noundef zeroext %453) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %106) #5
  %455 = icmp eq i32 %.0415, 13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %107) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %107, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 86)
  %456 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %107, i1 noundef zeroext %455) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %107) #5
  %457 = icmp eq i32 %.0415, 14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %108) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %108, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 87)
  %458 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %108, i1 noundef zeroext %457) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %108) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %108) #5
  %459 = icmp eq i32 %.0415, 15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %109) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %109, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 88)
  %460 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %109, i1 noundef zeroext %459) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %109) #5
  %461 = icmp eq i32 %.0415, 16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %110) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %110, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 89)
  %462 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %110, i1 noundef zeroext %461) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %110) #5
  %463 = icmp sgt i32 %.0415, 16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %111) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %111, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 90)
  %464 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %111, i1 noundef zeroext %463) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #5
  %465 = call noundef i32 @_ZN9FastState17get_prevlast_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1)
  %466 = icmp sgt i32 %465, 0
  %or.cond19 = and i1 %426, %466
  br i1 %or.cond19, label %467, label %472

467:                                              ; preds = %432
  %468 = call i64 @_ZNK9FastBoard6get_xyEi(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %4)
  %469 = call noundef i32 @_ZN9FastState17get_prevlast_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1)
  %470 = call i64 @_ZNK9FastBoard6get_xyEi(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %469)
  %471 = call noundef i32 @_ZN14BaseAttributes13move_distanceESt4pairIiiES1_(i64 %468, i64 %470)
  br label %472

472:                                              ; preds = %432, %467
  %.0416 = phi i32 [ %471, %467 ], [ -1, %432 ]
  %473 = icmp eq i32 %.0416, 2
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %112) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %112, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 91)
  %474 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %112, i1 noundef zeroext %473) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %112) #5
  %475 = icmp eq i32 %.0416, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %113) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %113, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 92)
  %476 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %113, i1 noundef zeroext %475) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %113) #5
  %477 = icmp eq i32 %.0416, 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %114) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %114, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 93)
  %478 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %114, i1 noundef zeroext %477) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %114) #5
  %479 = icmp eq i32 %.0416, 5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %115) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %115, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 94)
  %480 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %115, i1 noundef zeroext %479) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %115) #5
  %481 = icmp eq i32 %.0416, 6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %116) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %116, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 95)
  %482 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %116, i1 noundef zeroext %481) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %116) #5
  %483 = icmp eq i32 %.0416, 7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %117) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %117, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 96)
  %484 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %117, i1 noundef zeroext %483) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %117) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %117) #5
  %485 = icmp eq i32 %.0416, 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %118) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %118, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 97)
  %486 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %118, i1 noundef zeroext %485) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %118) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #5
  %487 = icmp eq i32 %.0416, 9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %119) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %119, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 98)
  %488 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %119, i1 noundef zeroext %487) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %119) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %119) #5
  %489 = icmp eq i32 %.0416, 10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %120) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %120, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 99)
  %490 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %120, i1 noundef zeroext %489) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %120) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %120) #5
  %491 = icmp eq i32 %.0416, 11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %121) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %121, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 100)
  %492 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %121, i1 noundef zeroext %491) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %121) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %121) #5
  %493 = icmp eq i32 %.0416, 12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %122) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %122, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 101)
  %494 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %122, i1 noundef zeroext %493) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %122) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %122) #5
  %495 = icmp eq i32 %.0416, 13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %123) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %123, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 102)
  %496 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %123, i1 noundef zeroext %495) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %123) #5
  %497 = icmp eq i32 %.0416, 14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %124) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %124, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 103)
  %498 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %124, i1 noundef zeroext %497) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %124) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %124) #5
  %499 = icmp eq i32 %.0416, 15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %125) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %125, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 104)
  %500 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %125, i1 noundef zeroext %499) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %125) #5
  %501 = icmp eq i32 %.0416, 16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %126) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %126, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 105)
  %502 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %126, i1 noundef zeroext %501) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %126) #5
  %503 = icmp sgt i32 %.0416, 16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %127) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %127, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 106)
  %504 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %127, i1 noundef zeroext %503) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %127) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %127) #5
  br i1 %240, label %505, label %507

505:                                              ; preds = %472
  %506 = call noundef zeroext i1 @_ZN9FastBoard19check_losing_ladderEiii(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %138, i32 noundef %4, i32 noundef 0)
  br label %507

507:                                              ; preds = %505, %472
  %.0417 = phi i1 [ %506, %505 ], [ false, %472 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %128) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %128, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 107)
  %508 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %128, i1 noundef zeroext %.0417) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %128) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %128) #5
  br i1 %426, label %509, label %542

509:                                              ; preds = %507
  %510 = call noundef i32 @_ZN9FastState13get_last_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1)
  %511 = icmp sgt i32 %510, 0
  br i1 %511, label %512, label %542

512:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %129) #5
  %513 = call noundef i32 @_ZN9FastState13get_last_moveEv(ptr noundef nonnull align 8 dereferenceable(11160) %1)
  call void @_ZN9FastBoard17get_neighbour_idsEi(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %129, ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %513)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %130) #5
  invoke void @_ZN9FastBoard17get_neighbour_idsEi(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %130, ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %4)
          to label %514 unwind label %537

514:                                              ; preds = %512
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %131) #5
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %131) #5
  %515 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %129) #5
  %516 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %129) #5
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_(ptr %515, ptr %516)
          to label %517 unwind label %539

517:                                              ; preds = %514
  %518 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %130) #5
  %519 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %130) #5
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_(ptr %518, ptr %519)
          to label %520 unwind label %539

520:                                              ; preds = %517
  %521 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %129) #5
  %522 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %129) #5
  %523 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %130) #5
  %524 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %130) #5
  %525 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #5
  %526 = invoke { ptr, ptr } @_ZSt8inserterISt6vectorIiSaIiEEESt15insert_iteratorIT_ERS4_NS4_8iteratorE(ptr noundef nonnull align 8 dereferenceable(24) %131, ptr %525)
          to label %527 unwind label %539

527:                                              ; preds = %520
  %528 = extractvalue { ptr, ptr } %526, 0
  %529 = extractvalue { ptr, ptr } %526, 1
  %530 = invoke { ptr, ptr } @_ZSt16set_intersectionIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_St15insert_iteratorIS5_EET1_T_SA_T0_SB_S9_(ptr %521, ptr %522, ptr %523, ptr %524, ptr %528, ptr %529)
          to label %.thread436 unwind label %539

.thread436:                                       ; preds = %527
  %531 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #5
  %532 = icmp eq i64 %531, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %132) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %132, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 108)
  %533 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %132, i1 noundef zeroext %532) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %132) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %132) #5
  %534 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #5
  %535 = icmp ugt i64 %534, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %133) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %133, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 109)
  %536 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %133, i1 noundef zeroext %535) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %133) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %133) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %131) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %131) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %130) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %130) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %129) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %129) #5
  br label %545

537:                                              ; preds = %512
  %538 = landingpad { ptr, i32 }
          cleanup
  br label %541

539:                                              ; preds = %527, %520, %517, %514
  %540 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %131) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %131) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %130) #5
  br label %541

541:                                              ; preds = %539, %537
  %.pn = phi { ptr, i32 } [ %540, %539 ], [ %538, %537 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %130) #5
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %129) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %129) #5
  resume { ptr, i32 } %.pn

542:                                              ; preds = %507, %509
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %134) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %134, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 108)
  %543 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %134, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %134) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %134) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %135) #5
  call void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind nonnull writable sret(%"class.std::bitset<110>::reference") align 8 %135, ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 109)
  %544 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %135, i1 noundef zeroext false) #5
  call void @_ZNSt6bitsetILm110EE9referenceD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %135) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %135) #5
  br i1 %139, label %545, label %549

545:                                              ; preds = %.thread436, %542
  %546 = call noundef zeroext i1 @_ZN9FastBoard13black_to_moveEv(ptr noundef nonnull align 8 dereferenceable(11052) %1)
  %547 = xor i1 %546, true
  %548 = call noundef i32 @_ZN9FastBoard12get_pattern4Eib(ptr noundef nonnull align 8 dereferenceable(11052) %1, i32 noundef %4, i1 noundef zeroext %547)
  br label %549

549:                                              ; preds = %542, %545
  %.0 = phi i32 [ %548, %545 ], [ 16777215, %542 ]
  store i32 %.0, ptr %0, align 8, !tbaa !36
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE5resetEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6bitsetILm110EEixEm(ptr dead_on_unwind noalias writable sret(%"class.std::bitset<110>::reference") align 8, ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6bitsetILm110EE9referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) local_unnamed_addr #3 align 2

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

declare noundef float @_ZNK12MCOwnerTable17get_criticality_fEi(ptr noundef nonnull align 8 dereferenceable(5848), i32 noundef) local_unnamed_addr #2

declare noundef i32 @_ZN9FastBoard16count_plibertiesEi(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef) local_unnamed_addr #2

declare noundef i32 @_ZN9FastState10get_passesEv(ptr noundef nonnull align 8 dereferenceable(11160)) local_unnamed_addr #2

declare noundef i32 @_ZNK9FastBoard13get_boardsizeEv(ptr noundef nonnull align 8 dereferenceable(11052)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

declare noundef i32 @_ZN9FastState17get_prevlast_moveEv(ptr noundef nonnull align 8 dereferenceable(11160)) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN9FastBoard19check_losing_ladderEiii(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @_ZN9FastBoard17get_neighbour_idsEi(ptr dead_on_unwind writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef) local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_(ptr, ptr) local_unnamed_addr #4

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZSt16set_intersectionIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_St15insert_iteratorIS5_EET1_T_SA_T0_SB_S9_(ptr, ptr, ptr, ptr, ptr, ptr) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZSt8inserterISt6vectorIiSaIiEEESt15insert_iteratorIT_ERS4_NS4_8iteratorE(ptr noundef nonnull align 8 dereferenceable(24), ptr) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

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

declare noundef i32 @_ZN9FastBoard12get_pattern4Eib(ptr noundef nonnull align 8 dereferenceable(11052), i32 noundef, i1 noundef zeroext) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN9FastBoard13black_to_moveEv(ptr noundef nonnull align 8 dereferenceable(11052)) local_unnamed_addr #2

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !22, i64 11084}
!6 = !{!"_ZTS9FastState", !7, i64 0, !24, i64 11072, !22, i64 11076, !22, i64 11080, !22, i64 11084, !25, i64 11088, !22, i64 11096, !26, i64 11100, !22, i64 11104, !27, i64 11112, !31, i64 11136}
!7 = !{!"_ZTS9FullBoard", !8, i64 0, !23, i64 11056, !23, i64 11064}
!8 = !{!"_ZTS9FastBoard", !9, i64 0, !12, i64 730, !12, i64 2190, !12, i64 3650, !12, i64 5110, !13, i64 6570, !14, i64 8028, !15, i64 8044, !16, i64 8076, !16, i64 8084, !17, i64 8096, !13, i64 8120, !13, i64 9578, !22, i64 11036, !22, i64 11040, !22, i64 11044, !22, i64 11048}
!9 = !{!"_ZTSSt5arrayIN9FastBoard8square_tELm729EE", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTSSt5arrayItLm730EE", !10, i64 0}
!13 = !{!"_ZTSSt5arrayItLm729EE", !10, i64 0}
!14 = !{!"_ZTSSt5arrayIiLm4EE", !10, i64 0}
!15 = !{!"_ZTSSt5arrayIiLm8EE", !10, i64 0}
!16 = !{!"_ZTSSt5arrayIiLm2EE", !10, i64 0}
!17 = !{!"_ZTSSt6vectorIiSaIiEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!21 = !{!"any pointer", !10, i64 0}
!22 = !{!"int", !10, i64 0}
!23 = !{!"long long", !10, i64 0}
!24 = !{!"float", !10, i64 0}
!25 = !{!"long", !10, i64 0}
!26 = !{!"bool", !10, i64 0}
!27 = !{!"_ZTSSt6vectorI13MovewFeaturesSaIS0_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseI13MovewFeaturesSaIS0_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseI13MovewFeaturesSaIS0_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseI13MovewFeaturesSaIS0_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!31 = !{!"_ZTSSt6vectorISt4pairIifESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseISt4pairIifESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt4pairIifESaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseISt4pairIifESaIS1_EE17_Vector_impl_dataE", !21, i64 0, !21, i64 8, !21, i64 16}
!35 = !{!22, !22, i64 0}
!36 = !{!37, !22, i64 0}
!37 = !{!"_ZTS10Attributes", !22, i64 0, !38, i64 8}
!38 = !{!"_ZTSSt6bitsetILm110EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Base_bitsetILm2EE", !10, i64 0}


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