; 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.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [57 x i8], align 1
@.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.172 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.431 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.432 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.433 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.434 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.435 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.436 = external hidden unnamed_addr constant [86 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 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 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 uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA5_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(5), ptr noundef nonnull align 8 dereferenceable(30)) #4

; 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 dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA55_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(55), ptr noundef nonnull align 8 dereferenceable(30)) #4

; 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
define dso_local void @_ZN25SuiteHtnGoalResolverTests30TestHtnGoalResolverSortByTests7RunImplEv(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.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.UnitTest::TestDetails", align 8
  %18 = alloca %"class.UnitTest::TestDetails", align 8
  %19 = alloca %"class.std::shared_ptr.85", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.UnitTest::TestDetails", align 8
  %22 = alloca %"class.UnitTest::TestDetails", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", 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::shared_ptr.85", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.UnitTest::TestDetails", align 8
  %34 = alloca %"class.UnitTest::TestDetails", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", 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.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.UnitTest::TestDetails", align 8
  %43 = alloca %"class.UnitTest::TestDetails", align 8
  %44 = alloca %"class.std::shared_ptr.85", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.UnitTest::TestDetails", align 8
  %47 = alloca %"class.UnitTest::TestDetails", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %48 = 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
  %49 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 33088) #10
          to label %50 unwind label %88

50:                                               ; preds = %1
  invoke void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088) %49)
          to label %51 unwind label %92

51:                                               ; preds = %50
  invoke void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef %49)
          to label %52 unwind label %88

52:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #9
  %53 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 144) #10
          to label %54 unwind label %96

54:                                               ; preds = %52
  invoke void @_ZN10HtnRuleSetC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %53)
          to label %55 unwind label %100

55:                                               ; preds = %54
  invoke void @_ZNSt10shared_ptrI10HtnRuleSetEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef %53)
          to label %56 unwind label %96

56:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #9
  %57 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 88) #10
          to label %58 unwind label %104

58:                                               ; preds = %56
  %59 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #9
  %60 = 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) %57, ptr noundef %59, ptr noundef %60)
          to label %61 unwind label %108

61:                                               ; preds = %58
  invoke void @_ZNSt10shared_ptrI18PrologCompilerBaseIN6Prolog11HtnVariableEEEC2IS3_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef %57)
          to label %62 unwind label %104

62:                                               ; preds = %61
  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
  %63 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  %64 = load ptr, ptr %63, align 8, !tbaa !9
  %65 = getelementptr inbounds ptr, ptr %64, i64 4
  %66 = load ptr, ptr %65, align 8
  invoke void %66(ptr noundef nonnull align 8 dereferenceable(88) %63)
          to label %67 unwind label %112

67:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.172)
          to label %68 unwind label %116

68:                                               ; preds = %67
  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.431)
          to label %69 unwind label %120

69:                                               ; preds = %68
  %70 = 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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #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 %71

71:                                               ; preds = %69
  %72 = 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) %16, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %73 unwind label %125

73:                                               ; preds = %71
  %74 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef %16)
          to label %75 unwind label %129

75:                                               ; preds = %73
  %76 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %74)
          to label %77 unwind label %129

77:                                               ; preds = %75
  %78 = xor i1 %76, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  br i1 %78, label %79, label %167

79:                                               ; preds = %77
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %81 unwind label %125

81:                                               ; preds = %79
  %82 = load ptr, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #9
  %83 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %84 unwind label %133

84:                                               ; preds = %81
  %85 = load ptr, ptr %83, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %17, ptr noundef nonnull align 8 dereferenceable(30) %85, i32 noundef 1940)
          to label %86 unwind label %133

86:                                               ; preds = %84
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %82, ptr noundef nonnull align 8 dereferenceable(30) %17, ptr noundef @.str.59)
          to label %87 unwind label %133

87:                                               ; preds = %86
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #9
  br label %167

88:                                               ; preds = %51, %1
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %5, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %6, align 4
  br label %508

92:                                               ; preds = %50
  %93 = landingpad { ptr, i32 }
          cleanup
  %94 = extractvalue { ptr, i32 } %93, 0
  store ptr %94, ptr %5, align 8
  %95 = extractvalue { ptr, i32 } %93, 1
  store i32 %95, ptr %6, align 4
  call void @_ZdlPvm(ptr noundef %49, i64 noundef 33088) #11
  br label %508

96:                                               ; preds = %55, %52
  %97 = landingpad { ptr, i32 }
          cleanup
  %98 = extractvalue { ptr, i32 } %97, 0
  store ptr %98, ptr %5, align 8
  %99 = extractvalue { ptr, i32 } %97, 1
  store i32 %99, ptr %6, align 4
  br label %507

100:                                              ; preds = %54
  %101 = landingpad { ptr, i32 }
          cleanup
  %102 = extractvalue { ptr, i32 } %101, 0
  store ptr %102, ptr %5, align 8
  %103 = extractvalue { ptr, i32 } %101, 1
  store i32 %103, ptr %6, align 4
  call void @_ZdlPvm(ptr noundef %53, i64 noundef 144) #11
  br label %507

104:                                              ; preds = %61, %56
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %5, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %6, align 4
  br label %506

108:                                              ; preds = %58
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %5, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %6, align 4
  call void @_ZdlPvm(ptr noundef %57, i64 noundef 88) #11
  br label %506

112:                                              ; preds = %490, %433, %348, %344, %287, %208, %204, %147, %62
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %5, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %6, align 4
  br label %505

116:                                              ; preds = %67
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %5, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %6, align 4
  br label %124

120:                                              ; preds = %68
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %5, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  br label %124

124:                                              ; preds = %120, %116
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #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 %505

125:                                              ; preds = %79, %71
  %126 = landingpad { ptr, i32 }
          catch ptr null
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %5, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %6, align 4
  br label %137

129:                                              ; preds = %75, %73
  %130 = landingpad { ptr, i32 }
          catch ptr null
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %5, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  br label %137

133:                                              ; preds = %86, %84, %81
  %134 = landingpad { ptr, i32 }
          catch ptr null
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %5, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #9
  br label %137

137:                                              ; preds = %133, %129, %125
  %138 = load ptr, ptr %5, align 8
  %139 = call ptr @__cxa_begin_catch(ptr %138) #9
  %140 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %141 unwind label %168

141:                                              ; preds = %137
  %142 = load ptr, ptr %140, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #9
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %144 unwind label %172

144:                                              ; preds = %141
  %145 = load ptr, ptr %143, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %18, ptr noundef nonnull align 8 dereferenceable(30) %145, i32 noundef 1940)
          to label %146 unwind label %172

146:                                              ; preds = %144
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %142, ptr noundef nonnull align 8 dereferenceable(30) %18, ptr noundef @.str.60)
          to label %147 unwind label %172

147:                                              ; preds = %146
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #9
  invoke void @__cxa_end_catch()
          to label %148 unwind label %112

148:                                              ; preds = %147
  br label %149

149:                                              ; preds = %167, %148
  br label %150

150:                                              ; preds = %149
  br label %151

151:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #9
  %152 = 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 %19, ptr noundef nonnull align 8 dereferenceable(88) %152)
          to label %153 unwind label %178

153:                                              ; preds = %151
  %154 = 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) %19) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #9
  %155 = 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 %20, ptr noundef %155, i1 noundef zeroext false)
          to label %156 unwind label %182

156:                                              ; preds = %153
  %157 = 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) %20) #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 %20) #9
  br label %158

158:                                              ; preds = %156
  %159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %160 unwind label %186

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

163:                                              ; preds = %160
  %164 = load ptr, ptr %162, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %21, ptr noundef nonnull align 8 dereferenceable(30) %164, i32 noundef 1943)
          to label %165 unwind label %190

165:                                              ; preds = %163
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA5_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %161, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(5) @.str.8, ptr noundef nonnull align 8 dereferenceable(30) %21)
          to label %166 unwind label %190

166:                                              ; preds = %165
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #9
  br label %206

167:                                              ; preds = %87, %77
  br label %149

168:                                              ; preds = %137
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %5, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %6, align 4
  br label %176

172:                                              ; preds = %146, %144, %141
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %5, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #9
  br label %176

176:                                              ; preds = %172, %168
  invoke void @__cxa_end_catch()
          to label %177 unwind label %514

177:                                              ; preds = %176
  br label %505

178:                                              ; preds = %151
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %5, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #9
  br label %505

182:                                              ; preds = %153
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %5, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #9
  br label %505

186:                                              ; preds = %158
  %187 = landingpad { ptr, i32 }
          catch ptr null
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %5, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %6, align 4
  br label %194

190:                                              ; preds = %165, %163, %160
  %191 = landingpad { ptr, i32 }
          catch ptr null
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %5, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #9
  br label %194

194:                                              ; preds = %190, %186
  %195 = load ptr, ptr %5, align 8
  %196 = call ptr @__cxa_begin_catch(ptr %195) #9
  %197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %198 unwind label %236

198:                                              ; preds = %194
  %199 = load ptr, ptr %197, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #9
  %200 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %201 unwind label %240

201:                                              ; preds = %198
  %202 = load ptr, ptr %200, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %22, ptr noundef nonnull align 8 dereferenceable(30) %202, i32 noundef 1943)
          to label %203 unwind label %240

203:                                              ; preds = %201
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %199, ptr noundef nonnull align 8 dereferenceable(30) %22, ptr noundef @.str.9)
          to label %204 unwind label %240

204:                                              ; preds = %203
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #9
  invoke void @__cxa_end_catch()
          to label %205 unwind label %112

205:                                              ; preds = %204
  br label %206

206:                                              ; preds = %205, %166
  br label %207

207:                                              ; preds = %206
  br label %208

208:                                              ; preds = %207
  %209 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  %210 = load ptr, ptr %209, align 8, !tbaa !9
  %211 = getelementptr inbounds ptr, ptr %210, i64 4
  %212 = load ptr, ptr %211, align 8
  invoke void %212(ptr noundef nonnull align 8 dereferenceable(88) %209)
          to label %213 unwind label %112

213:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.172)
          to label %214 unwind label %246

214:                                              ; preds = %213
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.173)
          to label %215 unwind label %250

215:                                              ; preds = %214
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.174)
          to label %216 unwind label %254

216:                                              ; preds = %215
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.431)
          to label %217 unwind label %258

217:                                              ; preds = %216
  %218 = 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) %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  br label %219

219:                                              ; preds = %217
  %220 = 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) %28, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %221 unwind label %265

221:                                              ; preds = %219
  %222 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %220, ptr noundef %28)
          to label %223 unwind label %269

223:                                              ; preds = %221
  %224 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %222)
          to label %225 unwind label %269

225:                                              ; preds = %223
  %226 = xor i1 %224, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  br i1 %226, label %227, label %307

227:                                              ; preds = %225
  %228 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %229 unwind label %265

229:                                              ; preds = %227
  %230 = load ptr, ptr %228, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #9
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %232 unwind label %273

232:                                              ; preds = %229
  %233 = load ptr, ptr %231, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %29, ptr noundef nonnull align 8 dereferenceable(30) %233, i32 noundef 1953)
          to label %234 unwind label %273

234:                                              ; preds = %232
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %230, ptr noundef nonnull align 8 dereferenceable(30) %29, ptr noundef @.str.59)
          to label %235 unwind label %273

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

236:                                              ; preds = %194
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %5, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %6, align 4
  br label %244

240:                                              ; preds = %203, %201, %198
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %5, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #9
  br label %244

244:                                              ; preds = %240, %236
  invoke void @__cxa_end_catch()
          to label %245 unwind label %514

245:                                              ; preds = %244
  br label %505

246:                                              ; preds = %213
  %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 %264

250:                                              ; preds = %214
  %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
  br label %263

254:                                              ; preds = %215
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %5, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %6, align 4
  br label %262

258:                                              ; preds = %216
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %5, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %262

262:                                              ; preds = %258, %254
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %263

263:                                              ; preds = %262, %250
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  br label %264

264:                                              ; preds = %263, %246
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  br label %505

265:                                              ; preds = %227, %219
  %266 = landingpad { ptr, i32 }
          catch ptr null
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %5, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %6, align 4
  br label %277

269:                                              ; preds = %223, %221
  %270 = landingpad { ptr, i32 }
          catch ptr null
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %5, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  br label %277

273:                                              ; preds = %234, %232, %229
  %274 = landingpad { ptr, i32 }
          catch ptr null
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %5, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  br label %277

277:                                              ; preds = %273, %269, %265
  %278 = load ptr, ptr %5, align 8
  %279 = call ptr @__cxa_begin_catch(ptr %278) #9
  %280 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %281 unwind label %308

281:                                              ; preds = %277
  %282 = load ptr, ptr %280, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #9
  %283 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %284 unwind label %312

284:                                              ; preds = %281
  %285 = load ptr, ptr %283, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %30, ptr noundef nonnull align 8 dereferenceable(30) %285, i32 noundef 1953)
          to label %286 unwind label %312

286:                                              ; preds = %284
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %282, ptr noundef nonnull align 8 dereferenceable(30) %30, ptr noundef @.str.60)
          to label %287 unwind label %312

287:                                              ; preds = %286
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #9
  invoke void @__cxa_end_catch()
          to label %288 unwind label %112

288:                                              ; preds = %287
  br label %289

289:                                              ; preds = %307, %288
  br label %290

290:                                              ; preds = %289
  br label %291

291:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #9
  %292 = 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 %31, ptr noundef nonnull align 8 dereferenceable(88) %292)
          to label %293 unwind label %318

293:                                              ; preds = %291
  %294 = 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) %31) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #9
  %295 = 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 %32, ptr noundef %295, i1 noundef zeroext false)
          to label %296 unwind label %322

296:                                              ; preds = %293
  %297 = 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) %32) #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
  br label %298

298:                                              ; preds = %296
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %300 unwind label %326

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

303:                                              ; preds = %300
  %304 = load ptr, ptr %302, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %33, ptr noundef nonnull align 8 dereferenceable(30) %304, i32 noundef 1956)
          to label %305 unwind label %330

305:                                              ; preds = %303
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA55_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %301, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(55) @.str.432, ptr noundef nonnull align 8 dereferenceable(30) %33)
          to label %306 unwind label %330

306:                                              ; preds = %305
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #9
  br label %346

307:                                              ; preds = %235, %225
  br label %289

308:                                              ; preds = %277
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %5, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %6, align 4
  br label %316

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

316:                                              ; preds = %312, %308
  invoke void @__cxa_end_catch()
          to label %317 unwind label %514

317:                                              ; preds = %316
  br label %505

318:                                              ; preds = %291
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %5, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #9
  br label %505

322:                                              ; preds = %293
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %5, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #9
  br label %505

326:                                              ; preds = %298
  %327 = landingpad { ptr, i32 }
          catch ptr null
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %5, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %6, align 4
  br label %334

330:                                              ; preds = %305, %303, %300
  %331 = landingpad { ptr, i32 }
          catch ptr null
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %5, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #9
  br label %334

334:                                              ; preds = %330, %326
  %335 = load ptr, ptr %5, align 8
  %336 = call ptr @__cxa_begin_catch(ptr %335) #9
  %337 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %338 unwind label %377

338:                                              ; preds = %334
  %339 = load ptr, ptr %337, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #9
  %340 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %341 unwind label %381

341:                                              ; preds = %338
  %342 = load ptr, ptr %340, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %34, ptr noundef nonnull align 8 dereferenceable(30) %342, i32 noundef 1956)
          to label %343 unwind label %381

343:                                              ; preds = %341
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %339, ptr noundef nonnull align 8 dereferenceable(30) %34, ptr noundef @.str.433)
          to label %344 unwind label %381

344:                                              ; preds = %343
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  invoke void @__cxa_end_catch()
          to label %345 unwind label %112

345:                                              ; preds = %344
  br label %346

346:                                              ; preds = %345, %306
  br label %347

347:                                              ; preds = %346
  br label %348

348:                                              ; preds = %347
  %349 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  %350 = load ptr, ptr %349, align 8, !tbaa !9
  %351 = getelementptr inbounds ptr, ptr %350, i64 4
  %352 = load ptr, ptr %351, align 8
  invoke void %352(ptr noundef nonnull align 8 dereferenceable(88) %349)
          to label %353 unwind label %112

353:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %39, ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.172)
          to label %354 unwind label %387

354:                                              ; preds = %353
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef @.str.173)
          to label %355 unwind label %391

355:                                              ; preds = %354
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.174)
          to label %356 unwind label %395

356:                                              ; preds = %355
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef @.str.175)
          to label %357 unwind label %399

357:                                              ; preds = %356
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.434)
          to label %358 unwind label %403

358:                                              ; preds = %357
  %359 = 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) %35) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  br label %360

360:                                              ; preds = %358
  %361 = 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) %41, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %362 unwind label %411

362:                                              ; preds = %360
  %363 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %361, ptr noundef %41)
          to label %364 unwind label %415

364:                                              ; preds = %362
  %365 = invoke noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %363)
          to label %366 unwind label %415

366:                                              ; preds = %364
  %367 = xor i1 %365, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  br i1 %367, label %368, label %453

368:                                              ; preds = %366
  %369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %370 unwind label %411

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

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

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

376:                                              ; preds = %375
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #9
  br label %453

377:                                              ; preds = %334
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %5, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %6, align 4
  br label %385

381:                                              ; preds = %343, %341, %338
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %5, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  br label %385

385:                                              ; preds = %381, %377
  invoke void @__cxa_end_catch()
          to label %386 unwind label %514

386:                                              ; preds = %385
  br label %505

387:                                              ; preds = %353
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %5, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %6, align 4
  br label %410

391:                                              ; preds = %354
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %5, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %6, align 4
  br label %409

395:                                              ; preds = %355
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %5, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %6, align 4
  br label %408

399:                                              ; preds = %356
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %5, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %6, align 4
  br label %407

403:                                              ; preds = %357
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %5, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  br label %407

407:                                              ; preds = %403, %399
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  br label %408

408:                                              ; preds = %407, %395
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  br label %409

409:                                              ; preds = %408, %391
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br label %410

410:                                              ; preds = %409, %387
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #9
  br label %505

411:                                              ; preds = %368, %360
  %412 = landingpad { ptr, i32 }
          catch ptr null
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %5, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %6, align 4
  br label %423

415:                                              ; preds = %364, %362
  %416 = landingpad { ptr, i32 }
          catch ptr null
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %5, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  br label %423

419:                                              ; preds = %375, %373, %370
  %420 = landingpad { ptr, i32 }
          catch ptr null
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %5, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #9
  br label %423

423:                                              ; preds = %419, %415, %411
  %424 = load ptr, ptr %5, align 8
  %425 = call ptr @__cxa_begin_catch(ptr %424) #9
  %426 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %427 unwind label %454

427:                                              ; preds = %423
  %428 = load ptr, ptr %426, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #9
  %429 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %430 unwind label %458

430:                                              ; preds = %427
  %431 = load ptr, ptr %429, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %43, ptr noundef nonnull align 8 dereferenceable(30) %431, i32 noundef 1967)
          to label %432 unwind label %458

432:                                              ; preds = %430
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %428, ptr noundef nonnull align 8 dereferenceable(30) %43, ptr noundef @.str.60)
          to label %433 unwind label %458

433:                                              ; preds = %432
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #9
  invoke void @__cxa_end_catch()
          to label %434 unwind label %112

434:                                              ; preds = %433
  br label %435

435:                                              ; preds = %453, %434
  br label %436

436:                                              ; preds = %435
  br label %437

437:                                              ; preds = %436
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #9
  %438 = 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 %44, ptr noundef nonnull align 8 dereferenceable(88) %438)
          to label %439 unwind label %464

439:                                              ; preds = %437
  %440 = 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) %44) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #9
  %441 = 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 %45, ptr noundef %441, i1 noundef zeroext false)
          to label %442 unwind label %468

442:                                              ; preds = %439
  %443 = 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) %45) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #9
  br label %444

444:                                              ; preds = %442
  %445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %446 unwind label %472

446:                                              ; preds = %444
  %447 = load ptr, ptr %445, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #9
  %448 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %449 unwind label %476

449:                                              ; preds = %446
  %450 = load ptr, ptr %448, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %46, ptr noundef nonnull align 8 dereferenceable(30) %450, i32 noundef 1970)
          to label %451 unwind label %476

451:                                              ; preds = %449
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA34_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %447, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 1 dereferenceable(34) @.str.435, ptr noundef nonnull align 8 dereferenceable(30) %46)
          to label %452 unwind label %476

452:                                              ; preds = %451
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #9
  br label %492

453:                                              ; preds = %376, %366
  br label %435

454:                                              ; preds = %423
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %5, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %6, align 4
  br label %462

458:                                              ; preds = %432, %430, %427
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %5, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #9
  br label %462

462:                                              ; preds = %458, %454
  invoke void @__cxa_end_catch()
          to label %463 unwind label %514

463:                                              ; preds = %462
  br label %505

464:                                              ; preds = %437
  %465 = landingpad { ptr, i32 }
          cleanup
  %466 = extractvalue { ptr, i32 } %465, 0
  store ptr %466, ptr %5, align 8
  %467 = extractvalue { ptr, i32 } %465, 1
  store i32 %467, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #9
  br label %505

468:                                              ; preds = %439
  %469 = landingpad { ptr, i32 }
          cleanup
  %470 = extractvalue { ptr, i32 } %469, 0
  store ptr %470, ptr %5, align 8
  %471 = extractvalue { ptr, i32 } %469, 1
  store i32 %471, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #9
  br label %505

472:                                              ; preds = %444
  %473 = landingpad { ptr, i32 }
          catch ptr null
  %474 = extractvalue { ptr, i32 } %473, 0
  store ptr %474, ptr %5, align 8
  %475 = extractvalue { ptr, i32 } %473, 1
  store i32 %475, ptr %6, align 4
  br label %480

476:                                              ; preds = %451, %449, %446
  %477 = landingpad { ptr, i32 }
          catch ptr null
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %5, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #9
  br label %480

480:                                              ; preds = %476, %472
  %481 = load ptr, ptr %5, align 8
  %482 = call ptr @__cxa_begin_catch(ptr %481) #9
  %483 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %484 unwind label %495

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

487:                                              ; preds = %484
  %488 = load ptr, ptr %486, align 8, !tbaa !5
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %47, ptr noundef nonnull align 8 dereferenceable(30) %488, i32 noundef 1970)
          to label %489 unwind label %499

489:                                              ; preds = %487
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %485, ptr noundef nonnull align 8 dereferenceable(30) %47, ptr noundef @.str.436)
          to label %490 unwind label %499

490:                                              ; preds = %489
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  invoke void @__cxa_end_catch()
          to label %491 unwind label %112

491:                                              ; preds = %490
  br label %492

492:                                              ; preds = %491, %452
  br label %493

493:                                              ; preds = %492
  br label %494

494:                                              ; preds = %493
  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

495:                                              ; preds = %480
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %5, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %6, align 4
  br label %503

499:                                              ; preds = %489, %487, %484
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %5, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  br label %503

503:                                              ; preds = %499, %495
  invoke void @__cxa_end_catch()
          to label %504 unwind label %514

504:                                              ; preds = %503
  br label %505

505:                                              ; preds = %504, %468, %464, %463, %410, %386, %322, %318, %317, %264, %245, %182, %178, %177, %124, %112
  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 %506

506:                                              ; preds = %505, %108, %104
  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 %507

507:                                              ; preds = %506, %100, %96
  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 %508

508:                                              ; preds = %507, %92, %88
  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 %509

509:                                              ; preds = %508
  %510 = load ptr, ptr %5, align 8
  %511 = load i32, ptr %6, align 4
  %512 = insertvalue { ptr, i32 } poison, ptr %510, 0
  %513 = insertvalue { ptr, i32 } %512, i32 %511, 1
  resume { ptr, i32 } %513

514:                                              ; preds = %503, %462, %385, %316, %244, %176
  %515 = landingpad { ptr, i32 }
          catch ptr null
  %516 = extractvalue { ptr, i32 } %515, 0
  call void @__clang_call_terminate(ptr %516) #12
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA34_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(34), 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.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [57 x i8], align 1
@.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.172 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.431 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.432 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.433 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.434 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.435 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.436 = external hidden unnamed_addr constant [86 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 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 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 uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA5_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(5), ptr noundef nonnull align 8 dereferenceable(30)) local_unnamed_addr #4

; 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 dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA55_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(55), ptr noundef nonnull align 8 dereferenceable(30)) local_unnamed_addr #4

; 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
define dso_local void @_ZN25SuiteHtnGoalResolverTests30TestHtnGoalResolverSortByTests7RunImplEv(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.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.UnitTest::TestDetails", align 8
  %15 = alloca %"class.UnitTest::TestDetails", align 8
  %16 = alloca %"class.std::shared_ptr.85", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.UnitTest::TestDetails", align 8
  %19 = alloca %"class.UnitTest::TestDetails", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", 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.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.UnitTest::TestDetails", align 8
  %27 = alloca %"class.UnitTest::TestDetails", align 8
  %28 = alloca %"class.std::shared_ptr.85", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.UnitTest::TestDetails", align 8
  %31 = alloca %"class.UnitTest::TestDetails", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.UnitTest::TestDetails", align 8
  %40 = alloca %"class.UnitTest::TestDetails", align 8
  %41 = alloca %"class.std::shared_ptr.85", 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
  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
  %45 = invoke noalias noundef nonnull dereferenceable(33088) ptr @_Znwm(i64 noundef 33088) #10
          to label %46 unwind label %80

46:                                               ; preds = %1
  invoke void @_ZN14HtnTermFactoryC1Ev(ptr noundef nonnull align 8 dereferenceable(33088) %45)
          to label %47 unwind label %82

47:                                               ; preds = %46
  invoke void @_ZNSt10shared_ptrI14HtnTermFactoryEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull %45)
          to label %48 unwind label %80

48:                                               ; preds = %47
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %49 = invoke noalias noundef nonnull dereferenceable(144) ptr @_Znwm(i64 noundef 144) #10
          to label %50 unwind label %84

50:                                               ; preds = %48
  invoke void @_ZN10HtnRuleSetC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %49)
          to label %51 unwind label %86

51:                                               ; preds = %50
  invoke void @_ZNSt10shared_ptrI10HtnRuleSetEC2IS0_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %49)
          to label %52 unwind label %84

52:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #9
  %53 = invoke noalias noundef nonnull dereferenceable(88) ptr @_Znwm(i64 noundef 88) #10
          to label %54 unwind label %88

54:                                               ; preds = %52
  %55 = call noundef ptr @_ZNKSt12__shared_ptrI14HtnTermFactoryLN9__gnu_cxx12_Lock_policyE2EE3getEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #9
  %56 = 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) %53, ptr noundef %55, ptr noundef %56)
  invoke void @_ZNSt10shared_ptrI18PrologCompilerBaseIN6Prolog11HtnVariableEEEC2IS3_vEEPT_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull %53)
          to label %57 unwind label %88

57:                                               ; preds = %54
  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
  %58 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  %59 = load ptr, ptr %58, align 8, !tbaa !5
  %60 = getelementptr inbounds i8, ptr %59, i64 32
  %61 = load ptr, ptr %60, align 8
  invoke void %61(ptr noundef nonnull align 8 dereferenceable(88) %58)
          to label %62 unwind label %90

62:                                               ; preds = %57
  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 @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #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 %11, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.172)
          to label %63 unwind label %92

63:                                               ; preds = %62
  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.431)
          to label %64 unwind label %94

64:                                               ; preds = %63
  %65 = 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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #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
  %66 = 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) %13, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %67 unwind label %97

67:                                               ; preds = %64
  %68 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull %13)
          to label %69 unwind label %99

69:                                               ; preds = %67
  %70 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %68)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br i1 %70, label %113, label %71

71:                                               ; preds = %69
  %72 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %73 unwind label %97

73:                                               ; preds = %71
  %74 = load ptr, ptr %72, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #9
  %75 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %76 unwind label %101

76:                                               ; preds = %73
  %77 = load ptr, ptr %75, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %14, ptr noundef nonnull align 8 dereferenceable(30) %77, i32 noundef 1940)
          to label %78 unwind label %101

78:                                               ; preds = %76
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %74, ptr noundef nonnull align 8 dereferenceable(30) %14, ptr noundef nonnull @.str.59)
          to label %79 unwind label %101

79:                                               ; preds = %78
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br label %113

80:                                               ; preds = %47, %1
  %81 = landingpad { ptr, i32 }
          cleanup
  br label %354

82:                                               ; preds = %46
  %83 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %45, i64 noundef 33088) #11
  br label %354

84:                                               ; preds = %51, %48
  %85 = landingpad { ptr, i32 }
          cleanup
  br label %353

86:                                               ; preds = %50
  %87 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %49, i64 noundef 144) #11
  br label %353

88:                                               ; preds = %54, %52
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %352

90:                                               ; preds = %344, %306, %246, %245, %207, %151, %150, %112, %57
  %91 = landingpad { ptr, i32 }
          cleanup
  br label %351

92:                                               ; preds = %62
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %96

94:                                               ; preds = %63
  %95 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  br label %96

96:                                               ; preds = %94, %92
  %.pn = phi { ptr, i32 } [ %95, %94 ], [ %93, %92 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #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 %351

97:                                               ; preds = %71, %64
  %98 = landingpad { ptr, i32 }
          catch ptr null
  br label %103

99:                                               ; preds = %67
  %100 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br label %103

101:                                              ; preds = %78, %76, %73
  %102 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #9
  br label %103

103:                                              ; preds = %101, %99, %97
  %.pn28 = phi { ptr, i32 } [ %102, %101 ], [ %98, %97 ], [ %100, %99 ]
  %.19 = extractvalue { ptr, i32 } %.pn28, 0
  %104 = call ptr @__cxa_begin_catch(ptr %.19) #9
  %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %106 unwind label %128

106:                                              ; preds = %103
  %107 = load ptr, ptr %105, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #9
  %108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %109 unwind label %130

109:                                              ; preds = %106
  %110 = load ptr, ptr %108, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %15, ptr noundef nonnull align 8 dereferenceable(30) %110, i32 noundef 1940)
          to label %111 unwind label %130

111:                                              ; preds = %109
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %107, ptr noundef nonnull align 8 dereferenceable(30) %15, ptr noundef nonnull @.str.60)
          to label %112 unwind label %130

112:                                              ; preds = %111
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  invoke void @__cxa_end_catch()
          to label %113 unwind label %90

113:                                              ; preds = %69, %79, %112
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #9
  %114 = 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 %16, ptr noundef nonnull align 8 dereferenceable(88) %114)
          to label %115 unwind label %133

115:                                              ; preds = %113
  %116 = 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) %16) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #9
  %117 = 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 %17, ptr noundef %117, i1 noundef zeroext false)
          to label %118 unwind label %135

118:                                              ; preds = %115
  %119 = 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) %17) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %121 unwind label %137

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

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

126:                                              ; preds = %124
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA5_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %122, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(5) @.str.8, ptr noundef nonnull align 8 dereferenceable(30) %18)
          to label %127 unwind label %139

127:                                              ; preds = %126
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  br label %151

128:                                              ; preds = %103
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %132

130:                                              ; preds = %111, %109, %106
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  br label %132

132:                                              ; preds = %130, %128
  %.pn29 = phi { ptr, i32 } [ %131, %130 ], [ %129, %128 ]
  invoke void @__cxa_end_catch()
          to label %351 unwind label %355

133:                                              ; preds = %113
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #9
  br label %351

135:                                              ; preds = %115
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #9
  br label %351

137:                                              ; preds = %118
  %138 = landingpad { ptr, i32 }
          catch ptr null
  br label %141

139:                                              ; preds = %126, %124, %121
  %140 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #9
  br label %141

141:                                              ; preds = %139, %137
  %.pn31 = phi { ptr, i32 } [ %140, %139 ], [ %138, %137 ]
  %.311 = extractvalue { ptr, i32 } %.pn31, 0
  %142 = call ptr @__cxa_begin_catch(ptr %.311) #9
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %144 unwind label %176

144:                                              ; preds = %141
  %145 = load ptr, ptr %143, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #9
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %147 unwind label %178

147:                                              ; preds = %144
  %148 = load ptr, ptr %146, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %19, ptr noundef nonnull align 8 dereferenceable(30) %148, i32 noundef 1943)
          to label %149 unwind label %178

149:                                              ; preds = %147
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %145, ptr noundef nonnull align 8 dereferenceable(30) %19, ptr noundef nonnull @.str.9)
          to label %150 unwind label %178

150:                                              ; preds = %149
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  invoke void @__cxa_end_catch()
          to label %151 unwind label %90

151:                                              ; preds = %150, %127
  %152 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  %153 = load ptr, ptr %152, align 8, !tbaa !5
  %154 = getelementptr inbounds i8, ptr %153, i64 32
  %155 = load ptr, ptr %154, align 8
  invoke void %155(ptr noundef nonnull align 8 dereferenceable(88) %152)
          to label %156 unwind label %90

156:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #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 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.172)
          to label %157 unwind label %181

157:                                              ; preds = %156
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.173)
          to label %158 unwind label %183

158:                                              ; preds = %157
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.174)
          to label %159 unwind label %185

159:                                              ; preds = %158
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.431)
          to label %160 unwind label %187

160:                                              ; preds = %159
  %161 = 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) %20) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #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 @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  %162 = 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) %25, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %163 unwind label %192

163:                                              ; preds = %160
  %164 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef nonnull %25)
          to label %165 unwind label %194

165:                                              ; preds = %163
  %166 = call noundef zeroext i1 @_ZN8UnitTest5CheckIbEEbT_(i1 noundef zeroext %164)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br i1 %166, label %208, label %167

167:                                              ; preds = %165
  %168 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %169 unwind label %192

169:                                              ; preds = %167
  %170 = load ptr, ptr %168, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #9
  %171 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %172 unwind label %196

172:                                              ; preds = %169
  %173 = load ptr, ptr %171, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %26, ptr noundef nonnull align 8 dereferenceable(30) %173, i32 noundef 1953)
          to label %174 unwind label %196

174:                                              ; preds = %172
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %170, ptr noundef nonnull align 8 dereferenceable(30) %26, ptr noundef nonnull @.str.59)
          to label %175 unwind label %196

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

176:                                              ; preds = %141
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %180

178:                                              ; preds = %149, %147, %144
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  br label %180

180:                                              ; preds = %178, %176
  %.pn32 = phi { ptr, i32 } [ %179, %178 ], [ %177, %176 ]
  invoke void @__cxa_end_catch()
          to label %351 unwind label %355

181:                                              ; preds = %156
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %191

183:                                              ; preds = %157
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %190

185:                                              ; preds = %158
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %189

187:                                              ; preds = %159
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %189

189:                                              ; preds = %187, %185
  %.pn34 = phi { ptr, i32 } [ %188, %187 ], [ %186, %185 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  br label %190

190:                                              ; preds = %189, %183
  %.pn34.pn = phi { ptr, i32 } [ %.pn34, %189 ], [ %184, %183 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %191

191:                                              ; preds = %190, %181
  %.pn34.pn.pn = phi { ptr, i32 } [ %.pn34.pn, %190 ], [ %182, %181 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  br label %351

192:                                              ; preds = %167, %160
  %193 = landingpad { ptr, i32 }
          catch ptr null
  br label %198

194:                                              ; preds = %163
  %195 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %198

196:                                              ; preds = %174, %172, %169
  %197 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #9
  br label %198

198:                                              ; preds = %196, %194, %192
  %.pn38 = phi { ptr, i32 } [ %197, %196 ], [ %193, %192 ], [ %195, %194 ]
  %.816 = extractvalue { ptr, i32 } %.pn38, 0
  %199 = call ptr @__cxa_begin_catch(ptr %.816) #9
  %200 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %201 unwind label %223

201:                                              ; preds = %198
  %202 = load ptr, ptr %200, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #9
  %203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %204 unwind label %225

204:                                              ; preds = %201
  %205 = load ptr, ptr %203, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %27, ptr noundef nonnull align 8 dereferenceable(30) %205, i32 noundef 1953)
          to label %206 unwind label %225

206:                                              ; preds = %204
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %202, ptr noundef nonnull align 8 dereferenceable(30) %27, ptr noundef nonnull @.str.60)
          to label %207 unwind label %225

207:                                              ; preds = %206
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  invoke void @__cxa_end_catch()
          to label %208 unwind label %90

208:                                              ; preds = %165, %175, %207
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #9
  %209 = 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 %28, ptr noundef nonnull align 8 dereferenceable(88) %209)
          to label %210 unwind label %228

210:                                              ; preds = %208
  %211 = 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) %28) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #9
  %212 = 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 %29, ptr noundef %212, i1 noundef zeroext false)
          to label %213 unwind label %230

213:                                              ; preds = %210
  %214 = 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) %29) #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
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %216 unwind label %232

216:                                              ; preds = %213
  %217 = load ptr, ptr %215, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #9
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %219 unwind label %234

219:                                              ; preds = %216
  %220 = load ptr, ptr %218, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %30, ptr noundef nonnull align 8 dereferenceable(30) %220, i32 noundef 1956)
          to label %221 unwind label %234

221:                                              ; preds = %219
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA55_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %217, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(55) @.str.432, ptr noundef nonnull align 8 dereferenceable(30) %30)
          to label %222 unwind label %234

222:                                              ; preds = %221
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #9
  br label %246

223:                                              ; preds = %198
  %224 = landingpad { ptr, i32 }
          cleanup
  br label %227

225:                                              ; preds = %206, %204, %201
  %226 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  br label %227

227:                                              ; preds = %225, %223
  %.pn39 = phi { ptr, i32 } [ %226, %225 ], [ %224, %223 ]
  invoke void @__cxa_end_catch()
          to label %351 unwind label %355

228:                                              ; preds = %208
  %229 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #9
  br label %351

230:                                              ; preds = %210
  %231 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #9
  br label %351

232:                                              ; preds = %213
  %233 = landingpad { ptr, i32 }
          catch ptr null
  br label %236

234:                                              ; preds = %221, %219, %216
  %235 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #9
  br label %236

236:                                              ; preds = %234, %232
  %.pn41 = phi { ptr, i32 } [ %235, %234 ], [ %233, %232 ]
  %.1018 = extractvalue { ptr, i32 } %.pn41, 0
  %237 = call ptr @__cxa_begin_catch(ptr %.1018) #9
  %238 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %239 unwind label %272

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

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

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

245:                                              ; preds = %244
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  invoke void @__cxa_end_catch()
          to label %246 unwind label %90

246:                                              ; preds = %245, %222
  %247 = call noundef ptr @_ZNKSt19__shared_ptr_accessI18PrologCompilerBaseIN6Prolog11HtnVariableEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  %248 = load ptr, ptr %247, align 8, !tbaa !5
  %249 = getelementptr inbounds i8, ptr %248, i64 32
  %250 = load ptr, ptr %249, align 8
  invoke void %250(ptr noundef nonnull align 8 dereferenceable(88) %247)
          to label %251 unwind label %90

251:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #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 %36, ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull @.str.172)
          to label %252 unwind label %277

252:                                              ; preds = %251
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull @.str.173)
          to label %253 unwind label %279

253:                                              ; preds = %252
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull @.str.174)
          to label %254 unwind label %281

254:                                              ; preds = %253
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.175)
          to label %255 unwind label %283

255:                                              ; preds = %254
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.434)
          to label %256 unwind label %285

256:                                              ; preds = %255
  %257 = 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) %32) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #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 nonnull %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #9
  %258 = 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) %38, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %259 unwind label %291

259:                                              ; preds = %256
  %260 = invoke noundef zeroext i1 @_ZN6FXPlat8CompilerIN6Prolog14PrologDocumentINS1_11HtnVariableEEEE7CompileENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %258, ptr noundef nonnull %38)
          to label %261 unwind label %293

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

263:                                              ; preds = %261
  %264 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %265 unwind label %291

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

268:                                              ; preds = %265
  %269 = load ptr, ptr %267, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %39, ptr noundef nonnull align 8 dereferenceable(30) %269, i32 noundef 1967)
          to label %270 unwind label %295

270:                                              ; preds = %268
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %266, ptr noundef nonnull align 8 dereferenceable(30) %39, ptr noundef nonnull @.str.59)
          to label %271 unwind label %295

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

272:                                              ; preds = %236
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %276

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

276:                                              ; preds = %274, %272
  %.pn42 = phi { ptr, i32 } [ %275, %274 ], [ %273, %272 ]
  invoke void @__cxa_end_catch()
          to label %351 unwind label %355

277:                                              ; preds = %251
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %290

279:                                              ; preds = %252
  %280 = landingpad { ptr, i32 }
          cleanup
  br label %289

281:                                              ; preds = %253
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %288

283:                                              ; preds = %254
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %287

285:                                              ; preds = %255
  %286 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  br label %287

287:                                              ; preds = %285, %283
  %.pn44 = phi { ptr, i32 } [ %286, %285 ], [ %284, %283 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  br label %288

288:                                              ; preds = %287, %281
  %.pn44.pn = phi { ptr, i32 } [ %.pn44, %287 ], [ %282, %281 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  br label %289

289:                                              ; preds = %288, %279
  %.pn44.pn.pn = phi { ptr, i32 } [ %.pn44.pn, %288 ], [ %280, %279 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  br label %290

290:                                              ; preds = %289, %277
  %.pn44.pn.pn.pn = phi { ptr, i32 } [ %.pn44.pn.pn, %289 ], [ %278, %277 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #9
  br label %351

291:                                              ; preds = %263, %256
  %292 = landingpad { ptr, i32 }
          catch ptr null
  br label %297

293:                                              ; preds = %259
  %294 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  br label %297

295:                                              ; preds = %270, %268, %265
  %296 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #9
  br label %297

297:                                              ; preds = %295, %293, %291
  %.pn49 = phi { ptr, i32 } [ %296, %295 ], [ %292, %291 ], [ %294, %293 ]
  %.1624 = extractvalue { ptr, i32 } %.pn49, 0
  %298 = call ptr @__cxa_begin_catch(ptr %.1624) #9
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %300 unwind label %322

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

303:                                              ; preds = %300
  %304 = load ptr, ptr %302, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %40, ptr noundef nonnull align 8 dereferenceable(30) %304, i32 noundef 1967)
          to label %305 unwind label %324

305:                                              ; preds = %303
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %301, ptr noundef nonnull align 8 dereferenceable(30) %40, ptr noundef nonnull @.str.60)
          to label %306 unwind label %324

306:                                              ; preds = %305
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #9
  invoke void @__cxa_end_catch()
          to label %307 unwind label %90

307:                                              ; preds = %261, %271, %306
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #9
  %308 = 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 %41, ptr noundef nonnull align 8 dereferenceable(88) %308)
          to label %309 unwind label %327

309:                                              ; preds = %307
  %310 = 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) %41) #9
  call void @_ZNSt12__shared_ptrISt6vectorIS0_ISt4pairISt10shared_ptrI7HtnTermES4_ESaIS5_EESaIS7_EELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #9
  %311 = 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 %42, ptr noundef %311, i1 noundef zeroext false)
          to label %312 unwind label %329

312:                                              ; preds = %309
  %313 = 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) %42) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #9
  %314 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %315 unwind label %331

315:                                              ; preds = %312
  %316 = load ptr, ptr %314, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #9
  %317 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %318 unwind label %333

318:                                              ; preds = %315
  %319 = load ptr, ptr %317, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %43, ptr noundef nonnull align 8 dereferenceable(30) %319, i32 noundef 1970)
          to label %320 unwind label %333

320:                                              ; preds = %318
  invoke void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA34_cEEvRNS_11TestResultsERKT_RKT0_RKNS_11TestDetailsE(ptr noundef nonnull align 8 dereferenceable(21) %316, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(34) @.str.435, ptr noundef nonnull align 8 dereferenceable(30) %43)
          to label %321 unwind label %333

321:                                              ; preds = %320
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #9
  br label %345

322:                                              ; preds = %297
  %323 = landingpad { ptr, i32 }
          cleanup
  br label %326

324:                                              ; preds = %305, %303, %300
  %325 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #9
  br label %326

326:                                              ; preds = %324, %322
  %.pn50 = phi { ptr, i32 } [ %325, %324 ], [ %323, %322 ]
  invoke void @__cxa_end_catch()
          to label %351 unwind label %355

327:                                              ; preds = %307
  %328 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #9
  br label %351

329:                                              ; preds = %309
  %330 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #9
  br label %351

331:                                              ; preds = %312
  %332 = landingpad { ptr, i32 }
          catch ptr null
  br label %335

333:                                              ; preds = %320, %318, %315
  %334 = landingpad { ptr, i32 }
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #9
  br label %335

335:                                              ; preds = %333, %331
  %.pn52 = phi { ptr, i32 } [ %334, %333 ], [ %332, %331 ]
  %.18 = extractvalue { ptr, i32 } %.pn52, 0
  %336 = call ptr @__cxa_begin_catch(ptr %.18) #9
  %337 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7ResultsEv()
          to label %338 unwind label %346

338:                                              ; preds = %335
  %339 = load ptr, ptr %337, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #9
  %340 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8UnitTest11CurrentTest7DetailsEv()
          to label %341 unwind label %348

341:                                              ; preds = %338
  %342 = load ptr, ptr %340, align 8, !tbaa !8
  invoke void @_ZN8UnitTest11TestDetailsC1ERKS0_i(ptr noundef nonnull align 8 dereferenceable(30) %44, ptr noundef nonnull align 8 dereferenceable(30) %342, i32 noundef 1970)
          to label %343 unwind label %348

343:                                              ; preds = %341
  invoke void @_ZN8UnitTest11TestResults13OnTestFailureERKNS_11TestDetailsEPKc(ptr noundef nonnull align 8 dereferenceable(21) %339, ptr noundef nonnull align 8 dereferenceable(30) %44, ptr noundef nonnull @.str.436)
          to label %344 unwind label %348

344:                                              ; preds = %343
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  invoke void @__cxa_end_catch()
          to label %345 unwind label %90

345:                                              ; preds = %344, %321
  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

346:                                              ; preds = %335
  %347 = landingpad { ptr, i32 }
          cleanup
  br label %350

348:                                              ; preds = %343, %341, %338
  %349 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #9
  br label %350

350:                                              ; preds = %348, %346
  %.pn53 = phi { ptr, i32 } [ %349, %348 ], [ %347, %346 ]
  invoke void @__cxa_end_catch()
          to label %351 unwind label %355

351:                                              ; preds = %350, %326, %276, %227, %180, %132, %329, %327, %290, %230, %228, %191, %135, %133, %96, %90
  %.pn55 = phi { ptr, i32 } [ %91, %90 ], [ %.pn53, %350 ], [ %330, %329 ], [ %328, %327 ], [ %.pn50, %326 ], [ %.pn44.pn.pn.pn, %290 ], [ %.pn42, %276 ], [ %231, %230 ], [ %229, %228 ], [ %.pn39, %227 ], [ %.pn34.pn.pn, %191 ], [ %.pn32, %180 ], [ %136, %135 ], [ %134, %133 ], [ %.pn29, %132 ], [ %.pn, %96 ]
  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 %352

352:                                              ; preds = %351, %88
  %.pn55.pn = phi { ptr, i32 } [ %.pn55, %351 ], [ %89, %88 ]
  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 %353

353:                                              ; preds = %352, %86, %84
  %.pn55.pn.pn = phi { ptr, i32 } [ %.pn55.pn, %352 ], [ %85, %84 ], [ %87, %86 ]
  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 %354

354:                                              ; preds = %353, %82, %80
  %.pn55.pn.pn.pn = phi { ptr, i32 } [ %.pn55.pn.pn, %353 ], [ %81, %80 ], [ %83, %82 ]
  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 } %.pn55.pn.pn.pn

355:                                              ; preds = %350, %326, %276, %227, %180, %132
  %356 = landingpad { ptr, i32 }
          catch ptr null
  %357 = extractvalue { ptr, i32 } %356, 0
  call void @__clang_call_terminate(ptr %357) #12
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8UnitTest10CheckEqualINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEA34_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(34), 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