; LLVM IR from EricZinda/InductorHtn :: src/Tests/Prolog (HtnGoalResolverTests)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::shared_ptr.85" = type { %"class.std::__shared_ptr.86" }
%"class.std::__shared_ptr.86" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%class.HtnGoalResolver = type { %"class.std::enable_shared_from_this.15", %"class.std::map" }
%"class.std::enable_shared_from_this.15" = type { %"class.std::weak_ptr.16" }
%"class.std::weak_ptr.16" = type { %"class.std::__weak_ptr.17" }
%"class.std::__weak_ptr.17" = type { ptr, %"class.std::__weak_count" }
%"class.std::__weak_count" = type { ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::pair<std::vector<CustomRuleArgType>, std::function<void (ResolveState *)>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::vector<CustomRuleArgType>, std::function<void (ResolveState *)>>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::pair<std::vector<CustomRuleArgType>, std::function<void (ResolveState *)>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::vector<CustomRuleArgType>, std::function<void (ResolveState *)>>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::shared_ptr.21" = type { %"class.std::__shared_ptr.22" }
%"class.std::__shared_ptr.22" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.56" = type { %"class.std::__shared_ptr.57" }
%"class.std::__shared_ptr.57" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.77" = type { %"class.std::__shared_ptr.78" }
%"class.std::__shared_ptr.78" = type { ptr, %"class.std::__shared_count" }
%"class.UnitTest::TestDetails" = type <{ ptr, ptr, ptr, i32, i8, i8, [2 x i8] }>

@.str.59 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.346 = external hidden unnamed_addr constant [251 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.348 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [290 x i8], align 1
@.str.350 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.351 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.352 = external hidden unnamed_addr constant [265 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.354 = external hidden unnamed_addr constant [141 x i8], align 1
@.str.355 = external hidden unnamed_addr constant [249 x i8], align 1
@.str.356 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.357 = external hidden unnamed_addr constant [145 x i8], align 1
@.str.358 = external hidden unnamed_addr constant [254 x i8], align 1
@.str.359 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.360 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.361 = external hidden unnamed_addr constant [639 x i8], align 1
@.str.362 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.363 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.364 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.365 = external hidden unnamed_addr constant [169 x i8], align 1
@.str.366 = external hidden unnamed_addr constant [221 x i8], align 1

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

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

declare i32 @__gxx_personality_v0(...)

declare void @_ZN15HtnGoalResolverC1Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #1

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #2

declare void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088)) unnamed_addr #1

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10HtnRuleSetC2Ev(ptr noundef nonnull align 8 dereferenceable(144)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10shared_ptrI10HtnRuleSetEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEEC2EP14HtnTermFactoryP10HtnRuleSet(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10shared_ptrI18PrologCompilerBaseIN6Prolog11HtnVariableEEEC2IS3_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext) #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4 align 2

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv() #1

declare void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(30), ptr noundef) #1

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv() #1

declare void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(30), i32 noundef) unnamed_addr #1

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #6

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

declare void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, i1 noundef zeroext) #1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.85") align 8, ptr noundef nonnull align 8 dereferenceable(88)) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA12_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(30)) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA14_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(14), ptr noundef nonnull align 8 dereferenceable(30)) #4

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN25SuiteHtnGoalResolverTests31TestHtnGoalResolverFindAllTests7RunImplEv(ptr noundef nonnull align 8 dereferenceable(49) %0) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %class.HtnGoalResolver, align 8
  %4 = alloca %"class.std::shared_ptr.21", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::shared_ptr.56", align 8
  %8 = alloca %"class.std::shared_ptr.77", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::shared_ptr.85", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.UnitTest::TestDetails", align 8
  %17 = alloca %"class.UnitTest::TestDetails", align 8
  %18 = alloca %"class.std::shared_ptr.85", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.UnitTest::TestDetails", align 8
  %21 = alloca %"class.UnitTest::TestDetails", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.UnitTest::TestDetails", align 8
  %26 = alloca %"class.UnitTest::TestDetails", align 8
  %27 = alloca %"class.std::shared_ptr.85", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.UnitTest::TestDetails", align 8
  %30 = alloca %"class.UnitTest::TestDetails", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.UnitTest::TestDetails", align 8
  %35 = alloca %"class.UnitTest::TestDetails", align 8
  %36 = alloca %"class.std::shared_ptr.85", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.UnitTest::TestDetails", align 8
  %39 = alloca %"class.UnitTest::TestDetails", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.UnitTest::TestDetails", align 8
  %44 = alloca %"class.UnitTest::TestDetails", align 8
  %45 = alloca %"class.std::shared_ptr.85", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.UnitTest::TestDetails", align 8
  %48 = alloca %"class.UnitTest::TestDetails", align 8
  %49 = alloca %"class.std::__cxx11::basic_string", align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.UnitTest::TestDetails", align 8
  %53 = alloca %"class.UnitTest::TestDetails", align 8
  %54 = alloca %"class.std::shared_ptr.85", align 8
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.UnitTest::TestDetails", align 8
  %57 = alloca %"class.UnitTest::TestDetails", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.UnitTest::TestDetails", align 8
  %62 = alloca %"class.UnitTest::TestDetails", align 8
  %63 = alloca %"class.std::shared_ptr.85", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.UnitTest::TestDetails", align 8
  %66 = alloca %"class.UnitTest::TestDetails", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %67 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 64, ptr %3) #9
  call void @_ZN15HtnGoalResolverC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %3)
  call void @llvm.lifetime.start.p0(i64 16, ptr %4) #9
  %68 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 33088) #10
          to label %69 unwind label %106

69:                                               ; preds = %1
  invoke void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088) %68)
          to label %70 unwind label %110

70:                                               ; preds = %69
  invoke void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef %68)
          to label %71 unwind label %106

71:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #9
  %72 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 144) #10
          to label %73 unwind label %114

73:                                               ; preds = %71
  invoke void @_ZN10HtnRuleSetC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %72)
          to label %74 unwind label %118

74:                                               ; preds = %73
  invoke void @_ZNSt10shared_ptrI10HtnRuleSetEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef %72)
          to label %75 unwind label %114

75:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #9
  %76 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 88) #10
          to label %77 unwind label %122

77:                                               ; preds = %75
  %78 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  %79 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEEC2EP14HtnTermFactoryP10HtnRuleSet(ptr noundef nonnull align 8 dereferenceable(88) %76, ptr noundef %78, ptr noundef %79)
          to label %80 unwind label %126

80:                                               ; preds = %77
  invoke void @_ZNSt10shared_ptrI18PrologCompilerBaseIN6Prolog11HtnVariableEEEC2IS3_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef %76)
          to label %81 unwind label %122

81:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #9
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  %82 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  %83 = load ptr, ptr %82, align 8, !tbaa !9
  %84 = getelementptr inbounds ptr, ptr %83, i64 4
  %85 = load ptr, ptr %84, align 8
  invoke void %85(ptr noundef nonnull align 8 dereferenceable(88) %82)
          to label %86 unwind label %130

86:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef @.str.346)
          to label %87 unwind label %134

87:                                               ; preds = %86
  %88 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #9
  br label %89

89:                                               ; preds = %87
  %90 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %91 unwind label %138

91:                                               ; preds = %89
  %92 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef %15)
          to label %93 unwind label %142

93:                                               ; preds = %91
  %94 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %92)
          to label %95 unwind label %142

95:                                               ; preds = %93
  %96 = xor i1 %94, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  br i1 %96, label %97, label %180

97:                                               ; preds = %95
  %98 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %99 unwind label %138

99:                                               ; preds = %97
  %100 = load ptr, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #9
  %101 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %102 unwind label %146

102:                                              ; preds = %99
  %103 = load ptr, ptr %101, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %16, ptr noundef nonnull align 8 dereferenceable(30) %103, i32 noundef 1448)
          to label %104 unwind label %146

104:                                              ; preds = %102
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %100, ptr noundef nonnull align 8 dereferenceable(30) %16, ptr noundef @.str.59)
          to label %105 unwind label %146

105:                                              ; preds = %104
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #9
  br label %180

106:                                              ; preds = %70, %1
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %5, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %6, align 4
  br label %847

110:                                              ; preds = %69
  %111 = landingpad { ptr, i32 }
          cleanup
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %5, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %6, align 4
  call void @_ZdlPvm(ptr noundef %68, i64 noundef 33088) #11
  br label %847

114:                                              ; preds = %74, %71
  %115 = landingpad { ptr, i32 }
          cleanup
  %116 = extractvalue { ptr, i32 } %115, 0
  store ptr %116, ptr %5, align 8
  %117 = extractvalue { ptr, i32 } %115, 1
  store i32 %117, ptr %6, align 4
  br label %846

118:                                              ; preds = %73
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %5, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %6, align 4
  call void @_ZdlPvm(ptr noundef %72, i64 noundef 144) #11
  br label %846

122:                                              ; preds = %80, %75
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %5, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %6, align 4
  br label %845

126:                                              ; preds = %77
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %5, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %6, align 4
  call void @_ZdlPvm(ptr noundef %76, i64 noundef 88) #11
  br label %845

130:                                              ; preds = %829, %772, %715, %709, %705, %648, %587, %583, %526, %465, %461, %404, %343, %339, %282, %221, %217, %160, %81
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %5, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %6, align 4
  br label %844

134:                                              ; preds = %86
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %5, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #9
  br label %844

138:                                              ; preds = %97, %89
  %139 = landingpad { ptr, i32 }
          catch ptr null
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %5, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %6, align 4
  br label %150

142:                                              ; preds = %93, %91
  %143 = landingpad { ptr, i32 }
          catch ptr null
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %5, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  br label %150

146:                                              ; preds = %104, %102, %99
  %147 = landingpad { ptr, i32 }
          catch ptr null
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %5, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #9
  br label %150

150:                                              ; preds = %146, %142, %138
  %151 = load ptr, ptr %5, align 8
  %152 = call ptr @__cxa_begin_catch(ptr %151) #9
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %154 unwind label %181

154:                                              ; preds = %150
  %155 = load ptr, ptr %153, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #9
  %156 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %157 unwind label %185

157:                                              ; preds = %154
  %158 = load ptr, ptr %156, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %17, ptr noundef nonnull align 8 dereferenceable(30) %158, i32 noundef 1448)
          to label %159 unwind label %185

159:                                              ; preds = %157
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %155, ptr noundef nonnull align 8 dereferenceable(30) %17, ptr noundef @.str.60)
          to label %160 unwind label %185

160:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #9
  invoke void @__cxa_end_catch()
          to label %161 unwind label %130

161:                                              ; preds = %160
  br label %162

162:                                              ; preds = %180, %161
  br label %163

163:                                              ; preds = %162
  br label %164

164:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #9
  %165 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %18, ptr noundef nonnull align 8 dereferenceable(88) %165)
          to label %166 unwind label %191

166:                                              ; preds = %164
  %167 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #9
  %168 = call noundef ptr @_ZNKSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef %168, i1 noundef zeroext false)
          to label %169 unwind label %195

169:                                              ; preds = %166
  %170 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  br label %171

171:                                              ; preds = %169
  %172 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %173 unwind label %199

173:                                              ; preds = %171
  %174 = load ptr, ptr %172, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #9
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %176 unwind label %203

176:                                              ; preds = %173
  %177 = load ptr, ptr %175, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %20, ptr noundef nonnull align 8 dereferenceable(30) %177, i32 noundef 1451)
          to label %178 unwind label %203

178:                                              ; preds = %176
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA12_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %174, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(12) @.str.347, ptr noundef nonnull align 8 dereferenceable(30) %20)
          to label %179 unwind label %203

179:                                              ; preds = %178
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #9
  br label %219

180:                                              ; preds = %105, %95
  br label %162

181:                                              ; preds = %150
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %5, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %6, align 4
  br label %189

185:                                              ; preds = %159, %157, %154
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %5, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #9
  br label %189

189:                                              ; preds = %185, %181
  invoke void @__cxa_end_catch()
          to label %190 unwind label %853

190:                                              ; preds = %189
  br label %844

191:                                              ; preds = %164
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %5, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #9
  br label %844

195:                                              ; preds = %166
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %5, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #9
  br label %844

199:                                              ; preds = %171
  %200 = landingpad { ptr, i32 }
          catch ptr null
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %5, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %6, align 4
  br label %207

203:                                              ; preds = %178, %176, %173
  %204 = landingpad { ptr, i32 }
          catch ptr null
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %5, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #9
  br label %207

207:                                              ; preds = %203, %199
  %208 = load ptr, ptr %5, align 8
  %209 = call ptr @__cxa_begin_catch(ptr %208) #9
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %211 unwind label %246

211:                                              ; preds = %207
  %212 = load ptr, ptr %210, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #9
  %213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %214 unwind label %250

214:                                              ; preds = %211
  %215 = load ptr, ptr %213, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %21, ptr noundef nonnull align 8 dereferenceable(30) %215, i32 noundef 1451)
          to label %216 unwind label %250

216:                                              ; preds = %214
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %212, ptr noundef nonnull align 8 dereferenceable(30) %21, ptr noundef @.str.348)
          to label %217 unwind label %250

217:                                              ; preds = %216
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #9
  invoke void @__cxa_end_catch()
          to label %218 unwind label %130

218:                                              ; preds = %217
  br label %219

219:                                              ; preds = %218, %179
  br label %220

220:                                              ; preds = %219
  br label %221

221:                                              ; preds = %220
  %222 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  %223 = load ptr, ptr %222, align 8, !tbaa !9
  %224 = getelementptr inbounds ptr, ptr %223, i64 4
  %225 = load ptr, ptr %224, align 8
  invoke void %225(ptr noundef nonnull align 8 dereferenceable(88) %222)
          to label %226 unwind label %130

226:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.349)
          to label %227 unwind label %256

227:                                              ; preds = %226
  %228 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #9
  br label %229

229:                                              ; preds = %227
  %230 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %231 unwind label %260

231:                                              ; preds = %229
  %232 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %230, ptr noundef %24)
          to label %233 unwind label %264

233:                                              ; preds = %231
  %234 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %232)
          to label %235 unwind label %264

235:                                              ; preds = %233
  %236 = xor i1 %234, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br i1 %236, label %237, label %302

237:                                              ; preds = %235
  %238 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %239 unwind label %260

239:                                              ; preds = %237
  %240 = load ptr, ptr %238, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #9
  %241 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %242 unwind label %268

242:                                              ; preds = %239
  %243 = load ptr, ptr %241, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %25, ptr noundef nonnull align 8 dereferenceable(30) %243, i32 noundef 1466)
          to label %244 unwind label %268

244:                                              ; preds = %242
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %240, ptr noundef nonnull align 8 dereferenceable(30) %25, ptr noundef @.str.59)
          to label %245 unwind label %268

245:                                              ; preds = %244
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  br label %302

246:                                              ; preds = %207
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %5, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %6, align 4
  br label %254

250:                                              ; preds = %216, %214, %211
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %5, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #9
  br label %254

254:                                              ; preds = %250, %246
  invoke void @__cxa_end_catch()
          to label %255 unwind label %853

255:                                              ; preds = %254
  br label %844

256:                                              ; preds = %226
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %5, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #9
  br label %844

260:                                              ; preds = %237, %229
  %261 = landingpad { ptr, i32 }
          catch ptr null
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %5, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %6, align 4
  br label %272

264:                                              ; preds = %233, %231
  %265 = landingpad { ptr, i32 }
          catch ptr null
  %266 = extractvalue { ptr, i32 } %265, 0
  store ptr %266, ptr %5, align 8
  %267 = extractvalue { ptr, i32 } %265, 1
  store i32 %267, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %272

268:                                              ; preds = %244, %242, %239
  %269 = landingpad { ptr, i32 }
          catch ptr null
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %5, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  br label %272

272:                                              ; preds = %268, %264, %260
  %273 = load ptr, ptr %5, align 8
  %274 = call ptr @__cxa_begin_catch(ptr %273) #9
  %275 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %276 unwind label %303

276:                                              ; preds = %272
  %277 = load ptr, ptr %275, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #9
  %278 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %279 unwind label %307

279:                                              ; preds = %276
  %280 = load ptr, ptr %278, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %26, ptr noundef nonnull align 8 dereferenceable(30) %280, i32 noundef 1466)
          to label %281 unwind label %307

281:                                              ; preds = %279
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %277, ptr noundef nonnull align 8 dereferenceable(30) %26, ptr noundef @.str.60)
          to label %282 unwind label %307

282:                                              ; preds = %281
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #9
  invoke void @__cxa_end_catch()
          to label %283 unwind label %130

283:                                              ; preds = %282
  br label %284

284:                                              ; preds = %302, %283
  br label %285

285:                                              ; preds = %284
  br label %286

286:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #9
  %287 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %27, ptr noundef nonnull align 8 dereferenceable(88) %287)
          to label %288 unwind label %313

288:                                              ; preds = %286
  %289 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %27) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #9
  %290 = call noundef ptr @_ZNKSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef %290, i1 noundef zeroext false)
          to label %291 unwind label %317

291:                                              ; preds = %288
  %292 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #9
  br label %293

293:                                              ; preds = %291
  %294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %295 unwind label %321

295:                                              ; preds = %293
  %296 = load ptr, ptr %294, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #9
  %297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %298 unwind label %325

298:                                              ; preds = %295
  %299 = load ptr, ptr %297, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %29, ptr noundef nonnull align 8 dereferenceable(30) %299, i32 noundef 1469)
          to label %300 unwind label %325

300:                                              ; preds = %298
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA68_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %296, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(68) @.str.350, ptr noundef nonnull align 8 dereferenceable(30) %29)
          to label %301 unwind label %325

301:                                              ; preds = %300
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  br label %341

302:                                              ; preds = %245, %235
  br label %284

303:                                              ; preds = %272
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %5, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %6, align 4
  br label %311

307:                                              ; preds = %281, %279, %276
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %5, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #9
  br label %311

311:                                              ; preds = %307, %303
  invoke void @__cxa_end_catch()
          to label %312 unwind label %853

312:                                              ; preds = %311
  br label %844

313:                                              ; preds = %286
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %5, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  br label %844

317:                                              ; preds = %288
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %5, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #9
  br label %844

321:                                              ; preds = %293
  %322 = landingpad { ptr, i32 }
          catch ptr null
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %5, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %6, align 4
  br label %329

325:                                              ; preds = %300, %298, %295
  %326 = landingpad { ptr, i32 }
          catch ptr null
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %5, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  br label %329

329:                                              ; preds = %325, %321
  %330 = load ptr, ptr %5, align 8
  %331 = call ptr @__cxa_begin_catch(ptr %330) #9
  %332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %333 unwind label %368

333:                                              ; preds = %329
  %334 = load ptr, ptr %332, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #9
  %335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %336 unwind label %372

336:                                              ; preds = %333
  %337 = load ptr, ptr %335, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %30, ptr noundef nonnull align 8 dereferenceable(30) %337, i32 noundef 1469)
          to label %338 unwind label %372

338:                                              ; preds = %336
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %334, ptr noundef nonnull align 8 dereferenceable(30) %30, ptr noundef @.str.351)
          to label %339 unwind label %372

339:                                              ; preds = %338
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  invoke void @__cxa_end_catch()
          to label %340 unwind label %130

340:                                              ; preds = %339
  br label %341

341:                                              ; preds = %340, %301
  br label %342

342:                                              ; preds = %341
  br label %343

343:                                              ; preds = %342
  %344 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  %345 = load ptr, ptr %344, align 8, !tbaa !9
  %346 = getelementptr inbounds ptr, ptr %345, i64 4
  %347 = load ptr, ptr %346, align 8
  invoke void %347(ptr noundef nonnull align 8 dereferenceable(88) %344)
          to label %348 unwind label %130

348:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str.352)
          to label %349 unwind label %378

349:                                              ; preds = %348
  %350 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #9
  br label %351

351:                                              ; preds = %349
  %352 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %353 unwind label %382

353:                                              ; preds = %351
  %354 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %352, ptr noundef %33)
          to label %355 unwind label %386

355:                                              ; preds = %353
  %356 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %354)
          to label %357 unwind label %386

357:                                              ; preds = %355
  %358 = xor i1 %356, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  br i1 %358, label %359, label %424

359:                                              ; preds = %357
  %360 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %361 unwind label %382

361:                                              ; preds = %359
  %362 = load ptr, ptr %360, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #9
  %363 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %364 unwind label %390

364:                                              ; preds = %361
  %365 = load ptr, ptr %363, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %34, ptr noundef nonnull align 8 dereferenceable(30) %365, i32 noundef 1483)
          to label %366 unwind label %390

366:                                              ; preds = %364
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %362, ptr noundef nonnull align 8 dereferenceable(30) %34, ptr noundef @.str.59)
          to label %367 unwind label %390

367:                                              ; preds = %366
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  br label %424

368:                                              ; preds = %329
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %5, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %6, align 4
  br label %376

372:                                              ; preds = %338, %336, %333
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %5, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  br label %376

376:                                              ; preds = %372, %368
  invoke void @__cxa_end_catch()
          to label %377 unwind label %853

377:                                              ; preds = %376
  br label %844

378:                                              ; preds = %348
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %5, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #9
  br label %844

382:                                              ; preds = %359, %351
  %383 = landingpad { ptr, i32 }
          catch ptr null
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %5, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %6, align 4
  br label %394

386:                                              ; preds = %355, %353
  %387 = landingpad { ptr, i32 }
          catch ptr null
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %5, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  br label %394

390:                                              ; preds = %366, %364, %361
  %391 = landingpad { ptr, i32 }
          catch ptr null
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %5, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  br label %394

394:                                              ; preds = %390, %386, %382
  %395 = load ptr, ptr %5, align 8
  %396 = call ptr @__cxa_begin_catch(ptr %395) #9
  %397 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %398 unwind label %425

398:                                              ; preds = %394
  %399 = load ptr, ptr %397, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #9
  %400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %401 unwind label %429

401:                                              ; preds = %398
  %402 = load ptr, ptr %400, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %35, ptr noundef nonnull align 8 dereferenceable(30) %402, i32 noundef 1483)
          to label %403 unwind label %429

403:                                              ; preds = %401
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %399, ptr noundef nonnull align 8 dereferenceable(30) %35, ptr noundef @.str.60)
          to label %404 unwind label %429

404:                                              ; preds = %403
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  invoke void @__cxa_end_catch()
          to label %405 unwind label %130

405:                                              ; preds = %404
  br label %406

406:                                              ; preds = %424, %405
  br label %407

407:                                              ; preds = %406
  br label %408

408:                                              ; preds = %407
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #9
  %409 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %36, ptr noundef nonnull align 8 dereferenceable(88) %409)
          to label %410 unwind label %435

410:                                              ; preds = %408
  %411 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %36) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #9
  %412 = call noundef ptr @_ZNKSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef %412, i1 noundef zeroext false)
          to label %413 unwind label %439

413:                                              ; preds = %410
  %414 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #9
  br label %415

415:                                              ; preds = %413
  %416 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %417 unwind label %443

417:                                              ; preds = %415
  %418 = load ptr, ptr %416, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #9
  %419 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %420 unwind label %447

420:                                              ; preds = %417
  %421 = load ptr, ptr %419, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %38, ptr noundef nonnull align 8 dereferenceable(30) %421, i32 noundef 1486)
          to label %422 unwind label %447

422:                                              ; preds = %420
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA89_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %418, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(89) @.str.353, ptr noundef nonnull align 8 dereferenceable(30) %38)
          to label %423 unwind label %447

423:                                              ; preds = %422
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #9
  br label %463

424:                                              ; preds = %367, %357
  br label %406

425:                                              ; preds = %394
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %5, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %6, align 4
  br label %433

429:                                              ; preds = %403, %401, %398
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %5, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  br label %433

433:                                              ; preds = %429, %425
  invoke void @__cxa_end_catch()
          to label %434 unwind label %853

434:                                              ; preds = %433
  br label %844

435:                                              ; preds = %408
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %5, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #9
  br label %844

439:                                              ; preds = %410
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %5, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #9
  br label %844

443:                                              ; preds = %415
  %444 = landingpad { ptr, i32 }
          catch ptr null
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %5, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %6, align 4
  br label %451

447:                                              ; preds = %422, %420, %417
  %448 = landingpad { ptr, i32 }
          catch ptr null
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %5, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #9
  br label %451

451:                                              ; preds = %447, %443
  %452 = load ptr, ptr %5, align 8
  %453 = call ptr @__cxa_begin_catch(ptr %452) #9
  %454 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %455 unwind label %490

455:                                              ; preds = %451
  %456 = load ptr, ptr %454, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #9
  %457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %458 unwind label %494

458:                                              ; preds = %455
  %459 = load ptr, ptr %457, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %39, ptr noundef nonnull align 8 dereferenceable(30) %459, i32 noundef 1486)
          to label %460 unwind label %494

460:                                              ; preds = %458
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %456, ptr noundef nonnull align 8 dereferenceable(30) %39, ptr noundef @.str.354)
          to label %461 unwind label %494

461:                                              ; preds = %460
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #9
  invoke void @__cxa_end_catch()
          to label %462 unwind label %130

462:                                              ; preds = %461
  br label %463

463:                                              ; preds = %462, %423
  br label %464

464:                                              ; preds = %463
  br label %465

465:                                              ; preds = %464
  %466 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  %467 = load ptr, ptr %466, align 8, !tbaa !9
  %468 = getelementptr inbounds ptr, ptr %467, i64 4
  %469 = load ptr, ptr %468, align 8
  invoke void %469(ptr noundef nonnull align 8 dereferenceable(88) %466)
          to label %470 unwind label %130

470:                                              ; preds = %465
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef @.str.355)
          to label %471 unwind label %500

471:                                              ; preds = %470
  %472 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #9
  br label %473

473:                                              ; preds = %471
  %474 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %475 unwind label %504

475:                                              ; preds = %473
  %476 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %474, ptr noundef %42)
          to label %477 unwind label %508

477:                                              ; preds = %475
  %478 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %476)
          to label %479 unwind label %508

479:                                              ; preds = %477
  %480 = xor i1 %478, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #9
  br i1 %480, label %481, label %546

481:                                              ; preds = %479
  %482 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %483 unwind label %504

483:                                              ; preds = %481
  %484 = load ptr, ptr %482, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #9
  %485 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %486 unwind label %512

486:                                              ; preds = %483
  %487 = load ptr, ptr %485, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %43, ptr noundef nonnull align 8 dereferenceable(30) %487, i32 noundef 1500)
          to label %488 unwind label %512

488:                                              ; preds = %486
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %484, ptr noundef nonnull align 8 dereferenceable(30) %43, ptr noundef @.str.59)
          to label %489 unwind label %512

489:                                              ; preds = %488
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #9
  br label %546

490:                                              ; preds = %451
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %5, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %6, align 4
  br label %498

494:                                              ; preds = %460, %458, %455
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %5, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #9
  br label %498

498:                                              ; preds = %494, %490
  invoke void @__cxa_end_catch()
          to label %499 unwind label %853

499:                                              ; preds = %498
  br label %844

500:                                              ; preds = %470
  %501 = landingpad { ptr, i32 }
          cleanup
  %502 = extractvalue { ptr, i32 } %501, 0
  store ptr %502, ptr %5, align 8
  %503 = extractvalue { ptr, i32 } %501, 1
  store i32 %503, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #9
  br label %844

504:                                              ; preds = %481, %473
  %505 = landingpad { ptr, i32 }
          catch ptr null
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %5, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %6, align 4
  br label %516

508:                                              ; preds = %477, %475
  %509 = landingpad { ptr, i32 }
          catch ptr null
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %5, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #9
  br label %516

512:                                              ; preds = %488, %486, %483
  %513 = landingpad { ptr, i32 }
          catch ptr null
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %5, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #9
  br label %516

516:                                              ; preds = %512, %508, %504
  %517 = load ptr, ptr %5, align 8
  %518 = call ptr @__cxa_begin_catch(ptr %517) #9
  %519 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %520 unwind label %547

520:                                              ; preds = %516
  %521 = load ptr, ptr %519, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #9
  %522 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %523 unwind label %551

523:                                              ; preds = %520
  %524 = load ptr, ptr %522, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %44, ptr noundef nonnull align 8 dereferenceable(30) %524, i32 noundef 1500)
          to label %525 unwind label %551

525:                                              ; preds = %523
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %521, ptr noundef nonnull align 8 dereferenceable(30) %44, ptr noundef @.str.60)
          to label %526 unwind label %551

526:                                              ; preds = %525
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #9
  invoke void @__cxa_end_catch()
          to label %527 unwind label %130

527:                                              ; preds = %526
  br label %528

528:                                              ; preds = %546, %527
  br label %529

529:                                              ; preds = %528
  br label %530

530:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #9
  %531 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %45, ptr noundef nonnull align 8 dereferenceable(88) %531)
          to label %532 unwind label %557

532:                                              ; preds = %530
  %533 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %45) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #9
  %534 = call noundef ptr @_ZNKSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef %534, i1 noundef zeroext false)
          to label %535 unwind label %561

535:                                              ; preds = %532
  %536 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #9
  br label %537

537:                                              ; preds = %535
  %538 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %539 unwind label %565

539:                                              ; preds = %537
  %540 = load ptr, ptr %538, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #9
  %541 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %542 unwind label %569

542:                                              ; preds = %539
  %543 = load ptr, ptr %541, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %47, ptr noundef nonnull align 8 dereferenceable(30) %543, i32 noundef 1503)
          to label %544 unwind label %569

544:                                              ; preds = %542
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA93_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %540, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(93) @.str.356, ptr noundef nonnull align 8 dereferenceable(30) %47)
          to label %545 unwind label %569

545:                                              ; preds = %544
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  br label %585

546:                                              ; preds = %489, %479
  br label %528

547:                                              ; preds = %516
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %5, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %6, align 4
  br label %555

551:                                              ; preds = %525, %523, %520
  %552 = landingpad { ptr, i32 }
          cleanup
  %553 = extractvalue { ptr, i32 } %552, 0
  store ptr %553, ptr %5, align 8
  %554 = extractvalue { ptr, i32 } %552, 1
  store i32 %554, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #9
  br label %555

555:                                              ; preds = %551, %547
  invoke void @__cxa_end_catch()
          to label %556 unwind label %853

556:                                              ; preds = %555
  br label %844

557:                                              ; preds = %530
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %5, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #9
  br label %844

561:                                              ; preds = %532
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %5, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #9
  br label %844

565:                                              ; preds = %537
  %566 = landingpad { ptr, i32 }
          catch ptr null
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %5, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %6, align 4
  br label %573

569:                                              ; preds = %544, %542, %539
  %570 = landingpad { ptr, i32 }
          catch ptr null
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %5, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  br label %573

573:                                              ; preds = %569, %565
  %574 = load ptr, ptr %5, align 8
  %575 = call ptr @__cxa_begin_catch(ptr %574) #9
  %576 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %577 unwind label %612

577:                                              ; preds = %573
  %578 = load ptr, ptr %576, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #9
  %579 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %580 unwind label %616

580:                                              ; preds = %577
  %581 = load ptr, ptr %579, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %48, ptr noundef nonnull align 8 dereferenceable(30) %581, i32 noundef 1503)
          to label %582 unwind label %616

582:                                              ; preds = %580
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %578, ptr noundef nonnull align 8 dereferenceable(30) %48, ptr noundef @.str.357)
          to label %583 unwind label %616

583:                                              ; preds = %582
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #9
  invoke void @__cxa_end_catch()
          to label %584 unwind label %130

584:                                              ; preds = %583
  br label %585

585:                                              ; preds = %584, %545
  br label %586

586:                                              ; preds = %585
  br label %587

587:                                              ; preds = %586
  %588 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  %589 = load ptr, ptr %588, align 8, !tbaa !9
  %590 = getelementptr inbounds ptr, ptr %589, i64 4
  %591 = load ptr, ptr %590, align 8
  invoke void %591(ptr noundef nonnull align 8 dereferenceable(88) %588)
          to label %592 unwind label %130

592:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %49, ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.358)
          to label %593 unwind label %622

593:                                              ; preds = %592
  %594 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #9
  br label %595

595:                                              ; preds = %593
  %596 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %597 unwind label %626

597:                                              ; preds = %595
  %598 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %596, ptr noundef %51)
          to label %599 unwind label %630

599:                                              ; preds = %597
  %600 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %598)
          to label %601 unwind label %630

601:                                              ; preds = %599
  %602 = xor i1 %600, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  br i1 %602, label %603, label %668

603:                                              ; preds = %601
  %604 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %605 unwind label %626

605:                                              ; preds = %603
  %606 = load ptr, ptr %604, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #9
  %607 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %608 unwind label %634

608:                                              ; preds = %605
  %609 = load ptr, ptr %607, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %52, ptr noundef nonnull align 8 dereferenceable(30) %609, i32 noundef 1518)
          to label %610 unwind label %634

610:                                              ; preds = %608
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %606, ptr noundef nonnull align 8 dereferenceable(30) %52, ptr noundef @.str.59)
          to label %611 unwind label %634

611:                                              ; preds = %610
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #9
  br label %668

612:                                              ; preds = %573
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %5, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %6, align 4
  br label %620

616:                                              ; preds = %582, %580, %577
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %5, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #9
  br label %620

620:                                              ; preds = %616, %612
  invoke void @__cxa_end_catch()
          to label %621 unwind label %853

621:                                              ; preds = %620
  br label %844

622:                                              ; preds = %592
  %623 = landingpad { ptr, i32 }
          cleanup
  %624 = extractvalue { ptr, i32 } %623, 0
  store ptr %624, ptr %5, align 8
  %625 = extractvalue { ptr, i32 } %623, 1
  store i32 %625, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #9
  br label %844

626:                                              ; preds = %603, %595
  %627 = landingpad { ptr, i32 }
          catch ptr null
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %5, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %6, align 4
  br label %638

630:                                              ; preds = %599, %597
  %631 = landingpad { ptr, i32 }
          catch ptr null
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %5, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  br label %638

634:                                              ; preds = %610, %608, %605
  %635 = landingpad { ptr, i32 }
          catch ptr null
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %5, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #9
  br label %638

638:                                              ; preds = %634, %630, %626
  %639 = load ptr, ptr %5, align 8
  %640 = call ptr @__cxa_begin_catch(ptr %639) #9
  %641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %642 unwind label %669

642:                                              ; preds = %638
  %643 = load ptr, ptr %641, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #9
  %644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %645 unwind label %673

645:                                              ; preds = %642
  %646 = load ptr, ptr %644, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %53, ptr noundef nonnull align 8 dereferenceable(30) %646, i32 noundef 1518)
          to label %647 unwind label %673

647:                                              ; preds = %645
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %643, ptr noundef nonnull align 8 dereferenceable(30) %53, ptr noundef @.str.60)
          to label %648 unwind label %673

648:                                              ; preds = %647
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #9
  invoke void @__cxa_end_catch()
          to label %649 unwind label %130

649:                                              ; preds = %648
  br label %650

650:                                              ; preds = %668, %649
  br label %651

651:                                              ; preds = %650
  br label %652

652:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #9
  %653 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %54, ptr noundef nonnull align 8 dereferenceable(88) %653)
          to label %654 unwind label %679

654:                                              ; preds = %652
  %655 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %54) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #9
  %656 = call noundef ptr @_ZNKSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef %656, i1 noundef zeroext false)
          to label %657 unwind label %683

657:                                              ; preds = %654
  %658 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #9
  br label %659

659:                                              ; preds = %657
  %660 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %661 unwind label %687

661:                                              ; preds = %659
  %662 = load ptr, ptr %660, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #9
  %663 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %664 unwind label %691

664:                                              ; preds = %661
  %665 = load ptr, ptr %663, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %56, ptr noundef nonnull align 8 dereferenceable(30) %665, i32 noundef 1521)
          to label %666 unwind label %691

666:                                              ; preds = %664
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA14_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %662, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(14) @.str.359, ptr noundef nonnull align 8 dereferenceable(30) %56)
          to label %667 unwind label %691

667:                                              ; preds = %666
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #9
  br label %707

668:                                              ; preds = %611, %601
  br label %650

669:                                              ; preds = %638
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %5, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %6, align 4
  br label %677

673:                                              ; preds = %647, %645, %642
  %674 = landingpad { ptr, i32 }
          cleanup
  %675 = extractvalue { ptr, i32 } %674, 0
  store ptr %675, ptr %5, align 8
  %676 = extractvalue { ptr, i32 } %674, 1
  store i32 %676, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #9
  br label %677

677:                                              ; preds = %673, %669
  invoke void @__cxa_end_catch()
          to label %678 unwind label %853

678:                                              ; preds = %677
  br label %844

679:                                              ; preds = %652
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %5, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #9
  br label %844

683:                                              ; preds = %654
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %5, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #9
  br label %844

687:                                              ; preds = %659
  %688 = landingpad { ptr, i32 }
          catch ptr null
  %689 = extractvalue { ptr, i32 } %688, 0
  store ptr %689, ptr %5, align 8
  %690 = extractvalue { ptr, i32 } %688, 1
  store i32 %690, ptr %6, align 4
  br label %695

691:                                              ; preds = %666, %664, %661
  %692 = landingpad { ptr, i32 }
          catch ptr null
  %693 = extractvalue { ptr, i32 } %692, 0
  store ptr %693, ptr %5, align 8
  %694 = extractvalue { ptr, i32 } %692, 1
  store i32 %694, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #9
  br label %695

695:                                              ; preds = %691, %687
  %696 = load ptr, ptr %5, align 8
  %697 = call ptr @__cxa_begin_catch(ptr %696) #9
  %698 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %699 unwind label %736

699:                                              ; preds = %695
  %700 = load ptr, ptr %698, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #9
  %701 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %702 unwind label %740

702:                                              ; preds = %699
  %703 = load ptr, ptr %701, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %57, ptr noundef nonnull align 8 dereferenceable(30) %703, i32 noundef 1521)
          to label %704 unwind label %740

704:                                              ; preds = %702
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %700, ptr noundef nonnull align 8 dereferenceable(30) %57, ptr noundef @.str.360)
          to label %705 unwind label %740

705:                                              ; preds = %704
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #9
  invoke void @__cxa_end_catch()
          to label %706 unwind label %130

706:                                              ; preds = %705
  br label %707

707:                                              ; preds = %706, %667
  br label %708

708:                                              ; preds = %707
  br label %709

709:                                              ; preds = %708
  %710 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  %711 = load ptr, ptr %710, align 8, !tbaa !9
  %712 = getelementptr inbounds ptr, ptr %711, i64 4
  %713 = load ptr, ptr %712, align 8
  invoke void %713(ptr noundef nonnull align 8 dereferenceable(88) %710)
          to label %714 unwind label %130

714:                                              ; preds = %709
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef @.str.361)
          to label %715 unwind label %746

715:                                              ; preds = %714
  %716 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %58) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #9
  %717 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.362)
          to label %718 unwind label %130

718:                                              ; preds = %715
  br label %719

719:                                              ; preds = %718
  %720 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %721 unwind label %750

721:                                              ; preds = %719
  %722 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %720, ptr noundef %60)
          to label %723 unwind label %754

723:                                              ; preds = %721
  %724 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %722)
          to label %725 unwind label %754

725:                                              ; preds = %723
  %726 = xor i1 %724, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  br i1 %726, label %727, label %792

727:                                              ; preds = %725
  %728 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %729 unwind label %750

729:                                              ; preds = %727
  %730 = load ptr, ptr %728, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #9
  %731 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %732 unwind label %758

732:                                              ; preds = %729
  %733 = load ptr, ptr %731, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %61, ptr noundef nonnull align 8 dereferenceable(30) %733, i32 noundef 1555)
          to label %734 unwind label %758

734:                                              ; preds = %732
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %730, ptr noundef nonnull align 8 dereferenceable(30) %61, ptr noundef @.str.363)
          to label %735 unwind label %758

735:                                              ; preds = %734
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #9
  br label %792

736:                                              ; preds = %695
  %737 = landingpad { ptr, i32 }
          cleanup
  %738 = extractvalue { ptr, i32 } %737, 0
  store ptr %738, ptr %5, align 8
  %739 = extractvalue { ptr, i32 } %737, 1
  store i32 %739, ptr %6, align 4
  br label %744

740:                                              ; preds = %704, %702, %699
  %741 = landingpad { ptr, i32 }
          cleanup
  %742 = extractvalue { ptr, i32 } %741, 0
  store ptr %742, ptr %5, align 8
  %743 = extractvalue { ptr, i32 } %741, 1
  store i32 %743, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #9
  br label %744

744:                                              ; preds = %740, %736
  invoke void @__cxa_end_catch()
          to label %745 unwind label %853

745:                                              ; preds = %744
  br label %844

746:                                              ; preds = %714
  %747 = landingpad { ptr, i32 }
          cleanup
  %748 = extractvalue { ptr, i32 } %747, 0
  store ptr %748, ptr %5, align 8
  %749 = extractvalue { ptr, i32 } %747, 1
  store i32 %749, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #9
  br label %844

750:                                              ; preds = %727, %719
  %751 = landingpad { ptr, i32 }
          catch ptr null
  %752 = extractvalue { ptr, i32 } %751, 0
  store ptr %752, ptr %5, align 8
  %753 = extractvalue { ptr, i32 } %751, 1
  store i32 %753, ptr %6, align 4
  br label %762

754:                                              ; preds = %723, %721
  %755 = landingpad { ptr, i32 }
          catch ptr null
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %5, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  br label %762

758:                                              ; preds = %734, %732, %729
  %759 = landingpad { ptr, i32 }
          catch ptr null
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %5, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #9
  br label %762

762:                                              ; preds = %758, %754, %750
  %763 = load ptr, ptr %5, align 8
  %764 = call ptr @__cxa_begin_catch(ptr %763) #9
  %765 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %766 unwind label %793

766:                                              ; preds = %762
  %767 = load ptr, ptr %765, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #9
  %768 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %769 unwind label %797

769:                                              ; preds = %766
  %770 = load ptr, ptr %768, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %62, ptr noundef nonnull align 8 dereferenceable(30) %770, i32 noundef 1555)
          to label %771 unwind label %797

771:                                              ; preds = %769
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %767, ptr noundef nonnull align 8 dereferenceable(30) %62, ptr noundef @.str.364)
          to label %772 unwind label %797

772:                                              ; preds = %771
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #9
  invoke void @__cxa_end_catch()
          to label %773 unwind label %130

773:                                              ; preds = %772
  br label %774

774:                                              ; preds = %792, %773
  br label %775

775:                                              ; preds = %774
  br label %776

776:                                              ; preds = %775
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #9
  %777 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.85") align 8 %63, ptr noundef nonnull align 8 dereferenceable(88) %777)
          to label %778 unwind label %803

778:                                              ; preds = %776
  %779 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %63) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #9
  %780 = call noundef ptr @_ZNKSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %64, ptr noundef %780, i1 noundef zeroext false)
          to label %781 unwind label %807

781:                                              ; preds = %778
  %782 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %64) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #9
  br label %783

783:                                              ; preds = %781
  %784 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %785 unwind label %811

785:                                              ; preds = %783
  %786 = load ptr, ptr %784, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #9
  %787 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %788 unwind label %815

788:                                              ; preds = %785
  %789 = load ptr, ptr %787, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %65, ptr noundef nonnull align 8 dereferenceable(30) %789, i32 noundef 1558)
          to label %790 unwind label %815

790:                                              ; preds = %788
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA169_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %786, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(169) @.str.365, ptr noundef nonnull align 8 dereferenceable(30) %65)
          to label %791 unwind label %815

791:                                              ; preds = %790
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #9
  br label %831

792:                                              ; preds = %735, %725
  br label %774

793:                                              ; preds = %762
  %794 = landingpad { ptr, i32 }
          cleanup
  %795 = extractvalue { ptr, i32 } %794, 0
  store ptr %795, ptr %5, align 8
  %796 = extractvalue { ptr, i32 } %794, 1
  store i32 %796, ptr %6, align 4
  br label %801

797:                                              ; preds = %771, %769, %766
  %798 = landingpad { ptr, i32 }
          cleanup
  %799 = extractvalue { ptr, i32 } %798, 0
  store ptr %799, ptr %5, align 8
  %800 = extractvalue { ptr, i32 } %798, 1
  store i32 %800, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #9
  br label %801

801:                                              ; preds = %797, %793
  invoke void @__cxa_end_catch()
          to label %802 unwind label %853

802:                                              ; preds = %801
  br label %844

803:                                              ; preds = %776
  %804 = landingpad { ptr, i32 }
          cleanup
  %805 = extractvalue { ptr, i32 } %804, 0
  store ptr %805, ptr %5, align 8
  %806 = extractvalue { ptr, i32 } %804, 1
  store i32 %806, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #9
  br label %844

807:                                              ; preds = %778
  %808 = landingpad { ptr, i32 }
          cleanup
  %809 = extractvalue { ptr, i32 } %808, 0
  store ptr %809, ptr %5, align 8
  %810 = extractvalue { ptr, i32 } %808, 1
  store i32 %810, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #9
  br label %844

811:                                              ; preds = %783
  %812 = landingpad { ptr, i32 }
          catch ptr null
  %813 = extractvalue { ptr, i32 } %812, 0
  store ptr %813, ptr %5, align 8
  %814 = extractvalue { ptr, i32 } %812, 1
  store i32 %814, ptr %6, align 4
  br label %819

815:                                              ; preds = %790, %788, %785
  %816 = landingpad { ptr, i32 }
          catch ptr null
  %817 = extractvalue { ptr, i32 } %816, 0
  store ptr %817, ptr %5, align 8
  %818 = extractvalue { ptr, i32 } %816, 1
  store i32 %818, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #9
  br label %819

819:                                              ; preds = %815, %811
  %820 = load ptr, ptr %5, align 8
  %821 = call ptr @__cxa_begin_catch(ptr %820) #9
  %822 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %823 unwind label %834

823:                                              ; preds = %819
  %824 = load ptr, ptr %822, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #9
  %825 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %826 unwind label %838

826:                                              ; preds = %823
  %827 = load ptr, ptr %825, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %66, ptr noundef nonnull align 8 dereferenceable(30) %827, i32 noundef 1558)
          to label %828 unwind label %838

828:                                              ; preds = %826
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %824, ptr noundef nonnull align 8 dereferenceable(30) %66, ptr noundef @.str.366)
          to label %829 unwind label %838

829:                                              ; preds = %828
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #9
  invoke void @__cxa_end_catch()
          to label %830 unwind label %130

830:                                              ; preds = %829
  br label %831

831:                                              ; preds = %830, %791
  br label %832

832:                                              ; preds = %831
  br label %833

833:                                              ; preds = %832
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #9
  call void @_ZNSt12__shared_ptrI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #9
  call void @_ZNSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #9
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #9
  call void @_ZN15HtnGoalResolverD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %3) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %3) #9
  ret void

834:                                              ; preds = %819
  %835 = landingpad { ptr, i32 }
          cleanup
  %836 = extractvalue { ptr, i32 } %835, 0
  store ptr %836, ptr %5, align 8
  %837 = extractvalue { ptr, i32 } %835, 1
  store i32 %837, ptr %6, align 4
  br label %842

838:                                              ; preds = %828, %826, %823
  %839 = landingpad { ptr, i32 }
          cleanup
  %840 = extractvalue { ptr, i32 } %839, 0
  store ptr %840, ptr %5, align 8
  %841 = extractvalue { ptr, i32 } %839, 1
  store i32 %841, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #9
  br label %842

842:                                              ; preds = %838, %834
  invoke void @__cxa_end_catch()
          to label %843 unwind label %853

843:                                              ; preds = %842
  br label %844

844:                                              ; preds = %843, %807, %803, %802, %746, %745, %683, %679, %678, %622, %621, %561, %557, %556, %500, %499, %439, %435, %434, %378, %377, %317, %313, %312, %256, %255, %195, %191, %190, %134, %130
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #9
  call void @_ZNSt12__shared_ptrI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #9
  br label %845

845:                                              ; preds = %844, %126, %122
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #9
  call void @_ZNSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #9
  br label %846

846:                                              ; preds = %845, %118, %114
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #9
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  br label %847

847:                                              ; preds = %846, %110, %106
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #9
  call void @_ZN15HtnGoalResolverD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %3) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %3) #9
  br label %848

848:                                              ; preds = %847
  %849 = load ptr, ptr %5, align 8
  %850 = load i32, ptr %6, align 4
  %851 = insertvalue { ptr, i32 } poison, ptr %849, 0
  %852 = insertvalue { ptr, i32 } %851, i32 %850, 1
  resume { ptr, i32 } %852

853:                                              ; preds = %842, %801, %744, %677, %620, %555, %498, %433, %376, %311, %254, %189
  %854 = landingpad { ptr, i32 }
          catch ptr null
  %855 = extractvalue { ptr, i32 } %854, 0
  call void @__clang_call_terminate(ptr %855) #12
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA68_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(68), ptr noundef nonnull align 8 dereferenceable(30)) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA89_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(30)) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA93_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(93), ptr noundef nonnull align 8 dereferenceable(30)) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA169_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(169), ptr noundef nonnull align 8 dereferenceable(30)) #4

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 = { 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 #6 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin nounwind }
attributes #12 = { noreturn 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 = !{!"vtable pointer", !8, 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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::shared_ptr.85" = type { %"class.std::__shared_ptr.86" }
%"class.std::__shared_ptr.86" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%class.HtnGoalResolver = type { %"class.std::enable_shared_from_this.15", %"class.std::map" }
%"class.std::enable_shared_from_this.15" = type { %"class.std::weak_ptr.16" }
%"class.std::weak_ptr.16" = type { %"class.std::__weak_ptr.17" }
%"class.std::__weak_ptr.17" = type { ptr, %"class.std::__weak_count" }
%"class.std::__weak_count" = type { ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::pair<std::vector<CustomRuleArgType>, std::function<void (ResolveState *)>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::vector<CustomRuleArgType>, std::function<void (ResolveState *)>>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::pair<std::vector<CustomRuleArgType>, std::function<void (ResolveState *)>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::pair<std::vector<CustomRuleArgType>, std::function<void (ResolveState *)>>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::shared_ptr.21" = type { %"class.std::__shared_ptr.22" }
%"class.std::__shared_ptr.22" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.56" = type { %"class.std::__shared_ptr.57" }
%"class.std::__shared_ptr.57" = type { ptr, %"class.std::__shared_count" }
%"class.std::shared_ptr.77" = type { %"class.std::__shared_ptr.78" }
%"class.std::__shared_ptr.78" = type { ptr, %"class.std::__shared_count" }
%"class.UnitTest::TestDetails" = type <{ ptr, ptr, ptr, i32, i8, i8, [2 x i8] }>

@.str.59 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.346 = external hidden unnamed_addr constant [251 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.348 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [290 x i8], align 1
@.str.350 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.351 = external hidden unnamed_addr constant [120 x i8], align 1
@.str.352 = external hidden unnamed_addr constant [265 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.354 = external hidden unnamed_addr constant [141 x i8], align 1
@.str.355 = external hidden unnamed_addr constant [249 x i8], align 1
@.str.356 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.357 = external hidden unnamed_addr constant [145 x i8], align 1
@.str.358 = external hidden unnamed_addr constant [254 x i8], align 1
@.str.359 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.360 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.361 = external hidden unnamed_addr constant [639 x i8], align 1
@.str.362 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.363 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.364 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.365 = external hidden unnamed_addr constant [169 x i8], align 1
@.str.366 = external hidden unnamed_addr constant [221 x i8], align 1

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

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

declare i32 @__gxx_personality_v0(...)

declare void @_ZN15HtnGoalResolverC1Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #1

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #2

declare void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088)) unnamed_addr #1

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10HtnRuleSetC2Ev(ptr noundef nonnull align 8 dereferenceable(144)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10shared_ptrI10HtnRuleSetEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEEC2EP14HtnTermFactoryP10HtnRuleSet(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10shared_ptrI18PrologCompilerBaseIN6Prolog11HtnVariableEEEC2IS3_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #4 align 2

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv() local_unnamed_addr #1

declare void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(30), ptr noundef) local_unnamed_addr #1

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv() local_unnamed_addr #1

declare void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30), ptr noundef nonnull align 8 dereferenceable(30), i32 noundef) unnamed_addr #1

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #6

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

declare void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, i1 noundef zeroext) local_unnamed_addr #1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.85") align 8, ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA12_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(30)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA14_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(14), ptr noundef nonnull align 8 dereferenceable(30)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN25SuiteHtnGoalResolverTests31TestHtnGoalResolverFindAllTests7RunImplEv(ptr nocapture noundef nonnull readnone align 8 dereferenceable(49) %0) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %class.HtnGoalResolver, align 8
  %3 = alloca %"class.std::shared_ptr.21", align 8
  %4 = alloca %"class.std::shared_ptr.56", align 8
  %5 = alloca %"class.std::shared_ptr.77", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::shared_ptr.85", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.UnitTest::TestDetails", align 8
  %14 = alloca %"class.UnitTest::TestDetails", align 8
  %15 = alloca %"class.std::shared_ptr.85", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.UnitTest::TestDetails", align 8
  %18 = alloca %"class.UnitTest::TestDetails", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.UnitTest::TestDetails", align 8
  %23 = alloca %"class.UnitTest::TestDetails", align 8
  %24 = alloca %"class.std::shared_ptr.85", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.UnitTest::TestDetails", align 8
  %27 = alloca %"class.UnitTest::TestDetails", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.UnitTest::TestDetails", align 8
  %32 = alloca %"class.UnitTest::TestDetails", align 8
  %33 = alloca %"class.std::shared_ptr.85", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.UnitTest::TestDetails", align 8
  %36 = alloca %"class.UnitTest::TestDetails", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.UnitTest::TestDetails", align 8
  %41 = alloca %"class.UnitTest::TestDetails", align 8
  %42 = alloca %"class.std::shared_ptr.85", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.UnitTest::TestDetails", align 8
  %45 = alloca %"class.UnitTest::TestDetails", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.UnitTest::TestDetails", align 8
  %50 = alloca %"class.UnitTest::TestDetails", align 8
  %51 = alloca %"class.std::shared_ptr.85", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.UnitTest::TestDetails", align 8
  %54 = alloca %"class.UnitTest::TestDetails", align 8
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.UnitTest::TestDetails", align 8
  %59 = alloca %"class.UnitTest::TestDetails", align 8
  %60 = alloca %"class.std::shared_ptr.85", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.UnitTest::TestDetails", align 8
  %63 = alloca %"class.UnitTest::TestDetails", align 8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %2) #9
  call void @_ZN15HtnGoalResolverC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %2)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #9
  %64 = invoke noalias noundef nonnull dereferenceable(33088) ptr @_Znwm(i64 noundef 33088) #10
          to label %65 unwind label %98

65:                                               ; preds = %1
  invoke void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088) %64)
          to label %66 unwind label %100

66:                                               ; preds = %65
  invoke void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull %64)
          to label %67 unwind label %98

67:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %68 = invoke noalias noundef nonnull dereferenceable(144) ptr @_Znwm(i64 noundef 144) #10
          to label %69 unwind label %102

69:                                               ; preds = %67
  invoke void @_ZN10HtnRuleSetC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %68)
          to label %70 unwind label %104

70:                                               ; preds = %69
  invoke void @_ZNSt10shared_ptrI10HtnRuleSetEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %68)
          to label %71 unwind label %102

71:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #9
  %72 = invoke noalias noundef nonnull dereferenceable(88) ptr @_Znwm(i64 noundef 88) #10
          to label %73 unwind label %106

73:                                               ; preds = %71
  %74 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %75 = call noundef ptr @_ZNKSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  call void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEEC2EP14HtnTermFactoryP10HtnRuleSet(ptr noundef nonnull align 8 dereferenceable(88) %72, ptr noundef %74, ptr noundef %75)
  invoke void @_ZNSt10shared_ptrI18PrologCompilerBaseIN6Prolog11HtnVariableEEEC2IS3_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull %72)
          to label %76 unwind label %106

76:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #9
  call void @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  %77 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  %78 = load ptr, ptr %77, align 8, !tbaa !5
  %79 = getelementptr inbounds i8, ptr %78, i64 32
  %80 = load ptr, ptr %79, align 8
  invoke void %80(ptr noundef nonnull align 8 dereferenceable(88) %77)
          to label %81 unwind label %108

81:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.346)
          to label %82 unwind label %110

82:                                               ; preds = %81
  %83 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  %84 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %85 unwind label %112

85:                                               ; preds = %82
  %86 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull %12)
          to label %87 unwind label %114

87:                                               ; preds = %85
  %88 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %86)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br i1 %88, label %128, label %89

89:                                               ; preds = %87
  %90 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %91 unwind label %112

91:                                               ; preds = %89
  %92 = load ptr, ptr %90, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #9
  %93 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %94 unwind label %116

94:                                               ; preds = %91
  %95 = load ptr, ptr %93, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %13, ptr noundef nonnull align 8 dereferenceable(30) %95, i32 noundef 1448)
          to label %96 unwind label %116

96:                                               ; preds = %94
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %92, ptr noundef nonnull align 8 dereferenceable(30) %13, ptr noundef nonnull @.str.59)
          to label %97 unwind label %116

97:                                               ; preds = %96
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  br label %128

98:                                               ; preds = %66, %1
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %592

100:                                              ; preds = %65
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %64, i64 noundef 33088) #11
  br label %592

102:                                              ; preds = %70, %67
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %591

104:                                              ; preds = %69
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %68, i64 noundef 144) #11
  br label %591

106:                                              ; preds = %73, %71
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %590

108:                                              ; preds = %582, %544, %504, %498, %497, %459, %415, %414, %376, %332, %331, %293, %249, %248, %210, %166, %165, %127, %76
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %589

110:                                              ; preds = %81
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br label %589

112:                                              ; preds = %89, %82
  %113 = landingpad { ptr, i32 }
          catch ptr null
  br label %118

114:                                              ; preds = %85
  %115 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %118

116:                                              ; preds = %96, %94, %91
  %117 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  br label %118

118:                                              ; preds = %116, %114, %112
  %.pn = phi { ptr, i32 } [ %117, %116 ], [ %113, %112 ], [ %115, %114 ]
  %.014 = extractvalue { ptr, i32 } %.pn, 0
  %119 = call ptr @__cxa_begin_catch(ptr %.014) #9
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %121 unwind label %143

121:                                              ; preds = %118
  %122 = load ptr, ptr %120, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #9
  %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %124 unwind label %145

124:                                              ; preds = %121
  %125 = load ptr, ptr %123, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %14, ptr noundef nonnull align 8 dereferenceable(30) %125, i32 noundef 1448)
          to label %126 unwind label %145

126:                                              ; preds = %124
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %122, ptr noundef nonnull align 8 dereferenceable(30) %14, ptr noundef nonnull @.str.60)
          to label %127 unwind label %145

127:                                              ; preds = %126
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  invoke void @__cxa_end_catch()
          to label %128 unwind label %108

128:                                              ; preds = %87, %97, %127
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #9
  %129 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %15, ptr noundef nonnull align 8 dereferenceable(88) %129)
          to label %130 unwind label %148

130:                                              ; preds = %128
  %131 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #9
  %132 = call noundef ptr @_ZNKSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef %132, i1 noundef zeroext false)
          to label %133 unwind label %150

133:                                              ; preds = %130
  %134 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #9
  %135 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %136 unwind label %152

136:                                              ; preds = %133
  %137 = load ptr, ptr %135, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #9
  %138 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %139 unwind label %154

139:                                              ; preds = %136
  %140 = load ptr, ptr %138, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %17, ptr noundef nonnull align 8 dereferenceable(30) %140, i32 noundef 1451)
          to label %141 unwind label %154

141:                                              ; preds = %139
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA12_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %137, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(12) @.str.347, ptr noundef nonnull align 8 dereferenceable(30) %17)
          to label %142 unwind label %154

142:                                              ; preds = %141
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  br label %166

143:                                              ; preds = %118
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %147

145:                                              ; preds = %126, %124, %121
  %146 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br label %147

147:                                              ; preds = %145, %143
  %.pn30 = phi { ptr, i32 } [ %146, %145 ], [ %144, %143 ]
  invoke void @__cxa_end_catch()
          to label %589 unwind label %593

148:                                              ; preds = %128
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  br label %589

150:                                              ; preds = %130
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #9
  br label %589

152:                                              ; preds = %133
  %153 = landingpad { ptr, i32 }
          catch ptr null
  br label %156

154:                                              ; preds = %141, %139, %136
  %155 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  br label %156

156:                                              ; preds = %154, %152
  %.pn32 = phi { ptr, i32 } [ %155, %154 ], [ %153, %152 ]
  %.216 = extractvalue { ptr, i32 } %.pn32, 0
  %157 = call ptr @__cxa_begin_catch(ptr %.216) #9
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %159 unwind label %188

159:                                              ; preds = %156
  %160 = load ptr, ptr %158, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #9
  %161 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %162 unwind label %190

162:                                              ; preds = %159
  %163 = load ptr, ptr %161, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %18, ptr noundef nonnull align 8 dereferenceable(30) %163, i32 noundef 1451)
          to label %164 unwind label %190

164:                                              ; preds = %162
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %160, ptr noundef nonnull align 8 dereferenceable(30) %18, ptr noundef nonnull @.str.348)
          to label %165 unwind label %190

165:                                              ; preds = %164
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  invoke void @__cxa_end_catch()
          to label %166 unwind label %108

166:                                              ; preds = %165, %142
  %167 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  %168 = load ptr, ptr %167, align 8, !tbaa !5
  %169 = getelementptr inbounds i8, ptr %168, i64 32
  %170 = load ptr, ptr %169, align 8
  invoke void %170(ptr noundef nonnull align 8 dereferenceable(88) %167)
          to label %171 unwind label %108

171:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str.349)
          to label %172 unwind label %193

172:                                              ; preds = %171
  %173 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  %174 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %175 unwind label %195

175:                                              ; preds = %172
  %176 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull %21)
          to label %177 unwind label %197

177:                                              ; preds = %175
  %178 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %176)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br i1 %178, label %211, label %179

179:                                              ; preds = %177
  %180 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %181 unwind label %195

181:                                              ; preds = %179
  %182 = load ptr, ptr %180, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #9
  %183 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %184 unwind label %199

184:                                              ; preds = %181
  %185 = load ptr, ptr %183, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %22, ptr noundef nonnull align 8 dereferenceable(30) %185, i32 noundef 1466)
          to label %186 unwind label %199

186:                                              ; preds = %184
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %182, ptr noundef nonnull align 8 dereferenceable(30) %22, ptr noundef nonnull @.str.59)
          to label %187 unwind label %199

187:                                              ; preds = %186
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  br label %211

188:                                              ; preds = %156
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %192

190:                                              ; preds = %164, %162, %159
  %191 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  br label %192

192:                                              ; preds = %190, %188
  %.pn33 = phi { ptr, i32 } [ %191, %190 ], [ %189, %188 ]
  invoke void @__cxa_end_catch()
          to label %589 unwind label %593

193:                                              ; preds = %171
  %194 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  br label %589

195:                                              ; preds = %179, %172
  %196 = landingpad { ptr, i32 }
          catch ptr null
  br label %201

197:                                              ; preds = %175
  %198 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %201

199:                                              ; preds = %186, %184, %181
  %200 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  br label %201

201:                                              ; preds = %199, %197, %195
  %.pn35 = phi { ptr, i32 } [ %200, %199 ], [ %196, %195 ], [ %198, %197 ]
  %.418 = extractvalue { ptr, i32 } %.pn35, 0
  %202 = call ptr @__cxa_begin_catch(ptr %.418) #9
  %203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %204 unwind label %226

204:                                              ; preds = %201
  %205 = load ptr, ptr %203, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #9
  %206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %207 unwind label %228

207:                                              ; preds = %204
  %208 = load ptr, ptr %206, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %23, ptr noundef nonnull align 8 dereferenceable(30) %208, i32 noundef 1466)
          to label %209 unwind label %228

209:                                              ; preds = %207
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %205, ptr noundef nonnull align 8 dereferenceable(30) %23, ptr noundef nonnull @.str.60)
          to label %210 unwind label %228

210:                                              ; preds = %209
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  invoke void @__cxa_end_catch()
          to label %211 unwind label %108

211:                                              ; preds = %177, %187, %210
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #9
  %212 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %24, ptr noundef nonnull align 8 dereferenceable(88) %212)
          to label %213 unwind label %231

213:                                              ; preds = %211
  %214 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %24) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #9
  %215 = call noundef ptr @_ZNKSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef %215, i1 noundef zeroext false)
          to label %216 unwind label %233

216:                                              ; preds = %213
  %217 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %219 unwind label %235

219:                                              ; preds = %216
  %220 = load ptr, ptr %218, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #9
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %222 unwind label %237

222:                                              ; preds = %219
  %223 = load ptr, ptr %221, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %26, ptr noundef nonnull align 8 dereferenceable(30) %223, i32 noundef 1469)
          to label %224 unwind label %237

224:                                              ; preds = %222
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA68_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %220, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(68) @.str.350, ptr noundef nonnull align 8 dereferenceable(30) %26)
          to label %225 unwind label %237

225:                                              ; preds = %224
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #9
  br label %249

226:                                              ; preds = %201
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %230

228:                                              ; preds = %209, %207, %204
  %229 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  br label %230

230:                                              ; preds = %228, %226
  %.pn36 = phi { ptr, i32 } [ %229, %228 ], [ %227, %226 ]
  invoke void @__cxa_end_catch()
          to label %589 unwind label %593

231:                                              ; preds = %211
  %232 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #9
  br label %589

233:                                              ; preds = %213
  %234 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  br label %589

235:                                              ; preds = %216
  %236 = landingpad { ptr, i32 }
          catch ptr null
  br label %239

237:                                              ; preds = %224, %222, %219
  %238 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #9
  br label %239

239:                                              ; preds = %237, %235
  %.pn38 = phi { ptr, i32 } [ %238, %237 ], [ %236, %235 ]
  %.620 = extractvalue { ptr, i32 } %.pn38, 0
  %240 = call ptr @__cxa_begin_catch(ptr %.620) #9
  %241 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %242 unwind label %271

242:                                              ; preds = %239
  %243 = load ptr, ptr %241, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #9
  %244 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %245 unwind label %273

245:                                              ; preds = %242
  %246 = load ptr, ptr %244, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %27, ptr noundef nonnull align 8 dereferenceable(30) %246, i32 noundef 1469)
          to label %247 unwind label %273

247:                                              ; preds = %245
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %243, ptr noundef nonnull align 8 dereferenceable(30) %27, ptr noundef nonnull @.str.351)
          to label %248 unwind label %273

248:                                              ; preds = %247
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  invoke void @__cxa_end_catch()
          to label %249 unwind label %108

249:                                              ; preds = %248, %225
  %250 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  %251 = load ptr, ptr %250, align 8, !tbaa !5
  %252 = getelementptr inbounds i8, ptr %251, i64 32
  %253 = load ptr, ptr %252, align 8
  invoke void %253(ptr noundef nonnull align 8 dereferenceable(88) %250)
          to label %254 unwind label %108

254:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.352)
          to label %255 unwind label %276

255:                                              ; preds = %254
  %256 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #9
  %257 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %258 unwind label %278

258:                                              ; preds = %255
  %259 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %257, ptr noundef nonnull %30)
          to label %260 unwind label %280

260:                                              ; preds = %258
  %261 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %259)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  br i1 %261, label %294, label %262

262:                                              ; preds = %260
  %263 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %264 unwind label %278

264:                                              ; preds = %262
  %265 = load ptr, ptr %263, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #9
  %266 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %267 unwind label %282

267:                                              ; preds = %264
  %268 = load ptr, ptr %266, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %31, ptr noundef nonnull align 8 dereferenceable(30) %268, i32 noundef 1483)
          to label %269 unwind label %282

269:                                              ; preds = %267
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %265, ptr noundef nonnull align 8 dereferenceable(30) %31, ptr noundef nonnull @.str.59)
          to label %270 unwind label %282

270:                                              ; preds = %269
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  br label %294

271:                                              ; preds = %239
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %275

273:                                              ; preds = %247, %245, %242
  %274 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  br label %275

275:                                              ; preds = %273, %271
  %.pn39 = phi { ptr, i32 } [ %274, %273 ], [ %272, %271 ]
  invoke void @__cxa_end_catch()
          to label %589 unwind label %593

276:                                              ; preds = %254
  %277 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #9
  br label %589

278:                                              ; preds = %262, %255
  %279 = landingpad { ptr, i32 }
          catch ptr null
  br label %284

280:                                              ; preds = %258
  %281 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  br label %284

282:                                              ; preds = %269, %267, %264
  %283 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  br label %284

284:                                              ; preds = %282, %280, %278
  %.pn41 = phi { ptr, i32 } [ %283, %282 ], [ %279, %278 ], [ %281, %280 ]
  %.822 = extractvalue { ptr, i32 } %.pn41, 0
  %285 = call ptr @__cxa_begin_catch(ptr %.822) #9
  %286 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %287 unwind label %309

287:                                              ; preds = %284
  %288 = load ptr, ptr %286, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #9
  %289 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %290 unwind label %311

290:                                              ; preds = %287
  %291 = load ptr, ptr %289, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %32, ptr noundef nonnull align 8 dereferenceable(30) %291, i32 noundef 1483)
          to label %292 unwind label %311

292:                                              ; preds = %290
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %288, ptr noundef nonnull align 8 dereferenceable(30) %32, ptr noundef nonnull @.str.60)
          to label %293 unwind label %311

293:                                              ; preds = %292
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #9
  invoke void @__cxa_end_catch()
          to label %294 unwind label %108

294:                                              ; preds = %260, %270, %293
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #9
  %295 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %33, ptr noundef nonnull align 8 dereferenceable(88) %295)
          to label %296 unwind label %314

296:                                              ; preds = %294
  %297 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %33) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #9
  %298 = call noundef ptr @_ZNKSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef %298, i1 noundef zeroext false)
          to label %299 unwind label %316

299:                                              ; preds = %296
  %300 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #9
  %301 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %302 unwind label %318

302:                                              ; preds = %299
  %303 = load ptr, ptr %301, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #9
  %304 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %305 unwind label %320

305:                                              ; preds = %302
  %306 = load ptr, ptr %304, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %35, ptr noundef nonnull align 8 dereferenceable(30) %306, i32 noundef 1486)
          to label %307 unwind label %320

307:                                              ; preds = %305
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA89_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %303, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(89) @.str.353, ptr noundef nonnull align 8 dereferenceable(30) %35)
          to label %308 unwind label %320

308:                                              ; preds = %307
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #9
  br label %332

309:                                              ; preds = %284
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %313

311:                                              ; preds = %292, %290, %287
  %312 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #9
  br label %313

313:                                              ; preds = %311, %309
  %.pn42 = phi { ptr, i32 } [ %312, %311 ], [ %310, %309 ]
  invoke void @__cxa_end_catch()
          to label %589 unwind label %593

314:                                              ; preds = %294
  %315 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #9
  br label %589

316:                                              ; preds = %296
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #9
  br label %589

318:                                              ; preds = %299
  %319 = landingpad { ptr, i32 }
          catch ptr null
  br label %322

320:                                              ; preds = %307, %305, %302
  %321 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #9
  br label %322

322:                                              ; preds = %320, %318
  %.pn44 = phi { ptr, i32 } [ %321, %320 ], [ %319, %318 ]
  %.1024 = extractvalue { ptr, i32 } %.pn44, 0
  %323 = call ptr @__cxa_begin_catch(ptr %.1024) #9
  %324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %325 unwind label %354

325:                                              ; preds = %322
  %326 = load ptr, ptr %324, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #9
  %327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %328 unwind label %356

328:                                              ; preds = %325
  %329 = load ptr, ptr %327, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %36, ptr noundef nonnull align 8 dereferenceable(30) %329, i32 noundef 1486)
          to label %330 unwind label %356

330:                                              ; preds = %328
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %326, ptr noundef nonnull align 8 dereferenceable(30) %36, ptr noundef nonnull @.str.354)
          to label %331 unwind label %356

331:                                              ; preds = %330
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  invoke void @__cxa_end_catch()
          to label %332 unwind label %108

332:                                              ; preds = %331, %308
  %333 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  %334 = load ptr, ptr %333, align 8, !tbaa !5
  %335 = getelementptr inbounds i8, ptr %334, i64 32
  %336 = load ptr, ptr %335, align 8
  invoke void %336(ptr noundef nonnull align 8 dereferenceable(88) %333)
          to label %337 unwind label %108

337:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.355)
          to label %338 unwind label %359

338:                                              ; preds = %337
  %339 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #9
  %340 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %341 unwind label %361

341:                                              ; preds = %338
  %342 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %340, ptr noundef nonnull %39)
          to label %343 unwind label %363

343:                                              ; preds = %341
  %344 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %342)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br i1 %344, label %377, label %345

345:                                              ; preds = %343
  %346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %347 unwind label %361

347:                                              ; preds = %345
  %348 = load ptr, ptr %346, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #9
  %349 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %350 unwind label %365

350:                                              ; preds = %347
  %351 = load ptr, ptr %349, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %40, ptr noundef nonnull align 8 dereferenceable(30) %351, i32 noundef 1500)
          to label %352 unwind label %365

352:                                              ; preds = %350
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %348, ptr noundef nonnull align 8 dereferenceable(30) %40, ptr noundef nonnull @.str.59)
          to label %353 unwind label %365

353:                                              ; preds = %352
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #9
  br label %377

354:                                              ; preds = %322
  %355 = landingpad { ptr, i32 }
          cleanup
  br label %358

356:                                              ; preds = %330, %328, %325
  %357 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  br label %358

358:                                              ; preds = %356, %354
  %.pn45 = phi { ptr, i32 } [ %357, %356 ], [ %355, %354 ]
  invoke void @__cxa_end_catch()
          to label %589 unwind label %593

359:                                              ; preds = %337
  %360 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #9
  br label %589

361:                                              ; preds = %345, %338
  %362 = landingpad { ptr, i32 }
          catch ptr null
  br label %367

363:                                              ; preds = %341
  %364 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br label %367

365:                                              ; preds = %352, %350, %347
  %366 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #9
  br label %367

367:                                              ; preds = %365, %363, %361
  %.pn47 = phi { ptr, i32 } [ %366, %365 ], [ %362, %361 ], [ %364, %363 ]
  %.1226 = extractvalue { ptr, i32 } %.pn47, 0
  %368 = call ptr @__cxa_begin_catch(ptr %.1226) #9
  %369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %370 unwind label %392

370:                                              ; preds = %367
  %371 = load ptr, ptr %369, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #9
  %372 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %373 unwind label %394

373:                                              ; preds = %370
  %374 = load ptr, ptr %372, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %41, ptr noundef nonnull align 8 dereferenceable(30) %374, i32 noundef 1500)
          to label %375 unwind label %394

375:                                              ; preds = %373
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %371, ptr noundef nonnull align 8 dereferenceable(30) %41, ptr noundef nonnull @.str.60)
          to label %376 unwind label %394

376:                                              ; preds = %375
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #9
  invoke void @__cxa_end_catch()
          to label %377 unwind label %108

377:                                              ; preds = %343, %353, %376
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #9
  %378 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %42, ptr noundef nonnull align 8 dereferenceable(88) %378)
          to label %379 unwind label %397

379:                                              ; preds = %377
  %380 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #9
  %381 = call noundef ptr @_ZNKSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef %381, i1 noundef zeroext false)
          to label %382 unwind label %399

382:                                              ; preds = %379
  %383 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #9
  %384 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %385 unwind label %401

385:                                              ; preds = %382
  %386 = load ptr, ptr %384, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #9
  %387 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %388 unwind label %403

388:                                              ; preds = %385
  %389 = load ptr, ptr %387, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %44, ptr noundef nonnull align 8 dereferenceable(30) %389, i32 noundef 1503)
          to label %390 unwind label %403

390:                                              ; preds = %388
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA93_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %386, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(93) @.str.356, ptr noundef nonnull align 8 dereferenceable(30) %44)
          to label %391 unwind label %403

391:                                              ; preds = %390
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  br label %415

392:                                              ; preds = %367
  %393 = landingpad { ptr, i32 }
          cleanup
  br label %396

394:                                              ; preds = %375, %373, %370
  %395 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #9
  br label %396

396:                                              ; preds = %394, %392
  %.pn48 = phi { ptr, i32 } [ %395, %394 ], [ %393, %392 ]
  invoke void @__cxa_end_catch()
          to label %589 unwind label %593

397:                                              ; preds = %377
  %398 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #9
  br label %589

399:                                              ; preds = %379
  %400 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #9
  br label %589

401:                                              ; preds = %382
  %402 = landingpad { ptr, i32 }
          catch ptr null
  br label %405

403:                                              ; preds = %390, %388, %385
  %404 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  br label %405

405:                                              ; preds = %403, %401
  %.pn50 = phi { ptr, i32 } [ %404, %403 ], [ %402, %401 ]
  %.1428 = extractvalue { ptr, i32 } %.pn50, 0
  %406 = call ptr @__cxa_begin_catch(ptr %.1428) #9
  %407 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %408 unwind label %437

408:                                              ; preds = %405
  %409 = load ptr, ptr %407, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #9
  %410 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %411 unwind label %439

411:                                              ; preds = %408
  %412 = load ptr, ptr %410, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %45, ptr noundef nonnull align 8 dereferenceable(30) %412, i32 noundef 1503)
          to label %413 unwind label %439

413:                                              ; preds = %411
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %409, ptr noundef nonnull align 8 dereferenceable(30) %45, ptr noundef nonnull @.str.357)
          to label %414 unwind label %439

414:                                              ; preds = %413
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #9
  invoke void @__cxa_end_catch()
          to label %415 unwind label %108

415:                                              ; preds = %414, %391
  %416 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  %417 = load ptr, ptr %416, align 8, !tbaa !5
  %418 = getelementptr inbounds i8, ptr %417, i64 32
  %419 = load ptr, ptr %418, align 8
  invoke void %419(ptr noundef nonnull align 8 dereferenceable(88) %416)
          to label %420 unwind label %108

420:                                              ; preds = %415
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull @.str.358)
          to label %421 unwind label %442

421:                                              ; preds = %420
  %422 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #9
  %423 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %424 unwind label %444

424:                                              ; preds = %421
  %425 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %423, ptr noundef nonnull %48)
          to label %426 unwind label %446

426:                                              ; preds = %424
  %427 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %425)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  br i1 %427, label %460, label %428

428:                                              ; preds = %426
  %429 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %430 unwind label %444

430:                                              ; preds = %428
  %431 = load ptr, ptr %429, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %49) #9
  %432 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %433 unwind label %448

433:                                              ; preds = %430
  %434 = load ptr, ptr %432, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %49, ptr noundef nonnull align 8 dereferenceable(30) %434, i32 noundef 1518)
          to label %435 unwind label %448

435:                                              ; preds = %433
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %431, ptr noundef nonnull align 8 dereferenceable(30) %49, ptr noundef nonnull @.str.59)
          to label %436 unwind label %448

436:                                              ; preds = %435
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #9
  br label %460

437:                                              ; preds = %405
  %438 = landingpad { ptr, i32 }
          cleanup
  br label %441

439:                                              ; preds = %413, %411, %408
  %440 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #9
  br label %441

441:                                              ; preds = %439, %437
  %.pn51 = phi { ptr, i32 } [ %440, %439 ], [ %438, %437 ]
  invoke void @__cxa_end_catch()
          to label %589 unwind label %593

442:                                              ; preds = %420
  %443 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #9
  br label %589

444:                                              ; preds = %428, %421
  %445 = landingpad { ptr, i32 }
          catch ptr null
  br label %450

446:                                              ; preds = %424
  %447 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  br label %450

448:                                              ; preds = %435, %433, %430
  %449 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %49) #9
  br label %450

450:                                              ; preds = %448, %446, %444
  %.pn53 = phi { ptr, i32 } [ %449, %448 ], [ %445, %444 ], [ %447, %446 ]
  %.16 = extractvalue { ptr, i32 } %.pn53, 0
  %451 = call ptr @__cxa_begin_catch(ptr %.16) #9
  %452 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %453 unwind label %475

453:                                              ; preds = %450
  %454 = load ptr, ptr %452, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #9
  %455 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %456 unwind label %477

456:                                              ; preds = %453
  %457 = load ptr, ptr %455, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %50, ptr noundef nonnull align 8 dereferenceable(30) %457, i32 noundef 1518)
          to label %458 unwind label %477

458:                                              ; preds = %456
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %454, ptr noundef nonnull align 8 dereferenceable(30) %50, ptr noundef nonnull @.str.60)
          to label %459 unwind label %477

459:                                              ; preds = %458
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #9
  invoke void @__cxa_end_catch()
          to label %460 unwind label %108

460:                                              ; preds = %426, %436, %459
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #9
  %461 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %51, ptr noundef nonnull align 8 dereferenceable(88) %461)
          to label %462 unwind label %480

462:                                              ; preds = %460
  %463 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #9
  %464 = call noundef ptr @_ZNKSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef %464, i1 noundef zeroext false)
          to label %465 unwind label %482

465:                                              ; preds = %462
  %466 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #9
  %467 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %468 unwind label %484

468:                                              ; preds = %465
  %469 = load ptr, ptr %467, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #9
  %470 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %471 unwind label %486

471:                                              ; preds = %468
  %472 = load ptr, ptr %470, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %53, ptr noundef nonnull align 8 dereferenceable(30) %472, i32 noundef 1521)
          to label %473 unwind label %486

473:                                              ; preds = %471
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA14_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %469, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(14) @.str.359, ptr noundef nonnull align 8 dereferenceable(30) %53)
          to label %474 unwind label %486

474:                                              ; preds = %473
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #9
  br label %498

475:                                              ; preds = %450
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %479

477:                                              ; preds = %458, %456, %453
  %478 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #9
  br label %479

479:                                              ; preds = %477, %475
  %.pn54 = phi { ptr, i32 } [ %478, %477 ], [ %476, %475 ]
  invoke void @__cxa_end_catch()
          to label %589 unwind label %593

480:                                              ; preds = %460
  %481 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #9
  br label %589

482:                                              ; preds = %462
  %483 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #9
  br label %589

484:                                              ; preds = %465
  %485 = landingpad { ptr, i32 }
          catch ptr null
  br label %488

486:                                              ; preds = %473, %471, %468
  %487 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #9
  br label %488

488:                                              ; preds = %486, %484
  %.pn56 = phi { ptr, i32 } [ %487, %486 ], [ %485, %484 ]
  %.18 = extractvalue { ptr, i32 } %.pn56, 0
  %489 = call ptr @__cxa_begin_catch(ptr %.18) #9
  %490 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %491 unwind label %522

491:                                              ; preds = %488
  %492 = load ptr, ptr %490, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %54) #9
  %493 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %494 unwind label %524

494:                                              ; preds = %491
  %495 = load ptr, ptr %493, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %54, ptr noundef nonnull align 8 dereferenceable(30) %495, i32 noundef 1521)
          to label %496 unwind label %524

496:                                              ; preds = %494
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %492, ptr noundef nonnull align 8 dereferenceable(30) %54, ptr noundef nonnull @.str.360)
          to label %497 unwind label %524

497:                                              ; preds = %496
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #9
  invoke void @__cxa_end_catch()
          to label %498 unwind label %108

498:                                              ; preds = %497, %474
  %499 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  %500 = load ptr, ptr %499, align 8, !tbaa !5
  %501 = getelementptr inbounds i8, ptr %500, i64 32
  %502 = load ptr, ptr %501, align 8
  invoke void %502(ptr noundef nonnull align 8 dereferenceable(88) %499)
          to label %503 unwind label %108

503:                                              ; preds = %498
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull @.str.361)
          to label %504 unwind label %527

504:                                              ; preds = %503
  %505 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #9
  %506 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.362)
          to label %507 unwind label %108

507:                                              ; preds = %504
  %508 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %509 unwind label %529

509:                                              ; preds = %507
  %510 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %508, ptr noundef nonnull %57)
          to label %511 unwind label %531

511:                                              ; preds = %509
  %512 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %510)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  br i1 %512, label %545, label %513

513:                                              ; preds = %511
  %514 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %515 unwind label %529

515:                                              ; preds = %513
  %516 = load ptr, ptr %514, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %58) #9
  %517 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %518 unwind label %533

518:                                              ; preds = %515
  %519 = load ptr, ptr %517, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %58, ptr noundef nonnull align 8 dereferenceable(30) %519, i32 noundef 1555)
          to label %520 unwind label %533

520:                                              ; preds = %518
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %516, ptr noundef nonnull align 8 dereferenceable(30) %58, ptr noundef nonnull @.str.363)
          to label %521 unwind label %533

521:                                              ; preds = %520
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #9
  br label %545

522:                                              ; preds = %488
  %523 = landingpad { ptr, i32 }
          cleanup
  br label %526

524:                                              ; preds = %496, %494, %491
  %525 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #9
  br label %526

526:                                              ; preds = %524, %522
  %.pn57 = phi { ptr, i32 } [ %525, %524 ], [ %523, %522 ]
  invoke void @__cxa_end_catch()
          to label %589 unwind label %593

527:                                              ; preds = %503
  %528 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #9
  br label %589

529:                                              ; preds = %513, %507
  %530 = landingpad { ptr, i32 }
          catch ptr null
  br label %535

531:                                              ; preds = %509
  %532 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  br label %535

533:                                              ; preds = %520, %518, %515
  %534 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #9
  br label %535

535:                                              ; preds = %533, %531, %529
  %.pn59 = phi { ptr, i32 } [ %534, %533 ], [ %530, %529 ], [ %532, %531 ]
  %.20 = extractvalue { ptr, i32 } %.pn59, 0
  %536 = call ptr @__cxa_begin_catch(ptr %.20) #9
  %537 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %538 unwind label %560

538:                                              ; preds = %535
  %539 = load ptr, ptr %537, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #9
  %540 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %541 unwind label %562

541:                                              ; preds = %538
  %542 = load ptr, ptr %540, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %59, ptr noundef nonnull align 8 dereferenceable(30) %542, i32 noundef 1555)
          to label %543 unwind label %562

543:                                              ; preds = %541
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %539, ptr noundef nonnull align 8 dereferenceable(30) %59, ptr noundef nonnull @.str.364)
          to label %544 unwind label %562

544:                                              ; preds = %543
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #9
  invoke void @__cxa_end_catch()
          to label %545 unwind label %108

545:                                              ; preds = %511, %521, %544
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #9
  %546 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZN18PrologCompilerBaseIN6Prolog11HtnVariableEE10SolveGoalsEv(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.85") align 8 %60, ptr noundef nonnull align 8 dereferenceable(88) %546)
          to label %547 unwind label %565

547:                                              ; preds = %545
  %548 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrISt6vectorIS0_ISt4pairIS_I7HtnTermES3_ESaIS4_EESaIS6_EEEaSEOS9_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %60) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #9
  %549 = call noundef ptr @_ZNKSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  invoke void @_ZN15HtnGoalResolver8ToStringB5cxx11EPKSt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EEb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef %549, i1 noundef zeroext false)
          to label %550 unwind label %567

550:                                              ; preds = %547
  %551 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #9
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %553 unwind label %569

553:                                              ; preds = %550
  %554 = load ptr, ptr %552, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #9
  %555 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %556 unwind label %571

556:                                              ; preds = %553
  %557 = load ptr, ptr %555, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %62, ptr noundef nonnull align 8 dereferenceable(30) %557, i32 noundef 1558)
          to label %558 unwind label %571

558:                                              ; preds = %556
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA169_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %554, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(169) @.str.365, ptr noundef nonnull align 8 dereferenceable(30) %62)
          to label %559 unwind label %571

559:                                              ; preds = %558
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #9
  br label %583

560:                                              ; preds = %535
  %561 = landingpad { ptr, i32 }
          cleanup
  br label %564

562:                                              ; preds = %543, %541, %538
  %563 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #9
  br label %564

564:                                              ; preds = %562, %560
  %.pn60 = phi { ptr, i32 } [ %563, %562 ], [ %561, %560 ]
  invoke void @__cxa_end_catch()
          to label %589 unwind label %593

565:                                              ; preds = %545
  %566 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #9
  br label %589

567:                                              ; preds = %547
  %568 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #9
  br label %589

569:                                              ; preds = %550
  %570 = landingpad { ptr, i32 }
          catch ptr null
  br label %573

571:                                              ; preds = %558, %556, %553
  %572 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #9
  br label %573

573:                                              ; preds = %571, %569
  %.pn62 = phi { ptr, i32 } [ %572, %571 ], [ %570, %569 ]
  %.22 = extractvalue { ptr, i32 } %.pn62, 0
  %574 = call ptr @__cxa_begin_catch(ptr %.22) #9
  %575 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %576 unwind label %584

576:                                              ; preds = %573
  %577 = load ptr, ptr %575, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #9
  %578 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %579 unwind label %586

579:                                              ; preds = %576
  %580 = load ptr, ptr %578, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %63, ptr noundef nonnull align 8 dereferenceable(30) %580, i32 noundef 1558)
          to label %581 unwind label %586

581:                                              ; preds = %579
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %577, ptr noundef nonnull align 8 dereferenceable(30) %63, ptr noundef nonnull @.str.366)
          to label %582 unwind label %586

582:                                              ; preds = %581
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #9
  invoke void @__cxa_end_catch()
          to label %583 unwind label %108

583:                                              ; preds = %582, %559
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  call void @_ZNSt12__shared_ptrI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #9
  call void @_ZNSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #9
  call void @_ZN15HtnGoalResolverD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %2) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %2) #9
  ret void

584:                                              ; preds = %573
  %585 = landingpad { ptr, i32 }
          cleanup
  br label %588

586:                                              ; preds = %581, %579, %576
  %587 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #9
  br label %588

588:                                              ; preds = %586, %584
  %.pn63 = phi { ptr, i32 } [ %587, %586 ], [ %585, %584 ]
  invoke void @__cxa_end_catch()
          to label %589 unwind label %593

589:                                              ; preds = %588, %564, %526, %479, %441, %396, %358, %313, %275, %230, %192, %147, %567, %565, %527, %482, %480, %442, %399, %397, %359, %316, %314, %276, %233, %231, %193, %150, %148, %110, %108
  %.pn65 = phi { ptr, i32 } [ %109, %108 ], [ %.pn63, %588 ], [ %568, %567 ], [ %566, %565 ], [ %.pn60, %564 ], [ %528, %527 ], [ %.pn57, %526 ], [ %483, %482 ], [ %481, %480 ], [ %.pn54, %479 ], [ %443, %442 ], [ %.pn51, %441 ], [ %400, %399 ], [ %398, %397 ], [ %.pn48, %396 ], [ %360, %359 ], [ %.pn45, %358 ], [ %317, %316 ], [ %315, %314 ], [ %.pn42, %313 ], [ %277, %276 ], [ %.pn39, %275 ], [ %234, %233 ], [ %232, %231 ], [ %.pn36, %230 ], [ %194, %193 ], [ %.pn33, %192 ], [ %151, %150 ], [ %149, %148 ], [ %.pn30, %147 ], [ %111, %110 ]
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #9
  call void @_ZNSt12__shared_ptrI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #9
  br label %590

590:                                              ; preds = %589, %106
  %.pn65.pn = phi { ptr, i32 } [ %.pn65, %589 ], [ %107, %106 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #9
  call void @_ZNSt12__shared_ptrI10HtnRuleSetLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  br label %591

591:                                              ; preds = %590, %104, %102
  %.pn65.pn.pn = phi { ptr, i32 } [ %.pn65.pn, %590 ], [ %103, %102 ], [ %105, %104 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @_ZNSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  br label %592

592:                                              ; preds = %591, %100, %98
  %.pn65.pn.pn.pn = phi { ptr, i32 } [ %.pn65.pn.pn, %591 ], [ %99, %98 ], [ %101, %100 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #9
  call void @_ZN15HtnGoalResolverD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %2) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %2) #9
  resume { ptr, i32 } %.pn65.pn.pn.pn

593:                                              ; preds = %588, %564, %526, %479, %441, %396, %358, %313, %275, %230, %192, %147
  %594 = landingpad { ptr, i32 }
          catch ptr null
  %595 = extractvalue { ptr, i32 } %594, 0
  call void @__clang_call_terminate(ptr %595) #12
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA68_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(68), ptr noundef nonnull align 8 dereferenceable(30)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA89_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(30)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA93_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(93), ptr noundef nonnull align 8 dereferenceable(30)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA169_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(169), ptr noundef nonnull align 8 dereferenceable(30)) local_unnamed_addr #4

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 = { 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 #6 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin nounwind }
attributes #12 = { noreturn 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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass