// File: /workspace/github_cpp_makefile_star2_O3/xelia-it[P]mustache/third-party/catch2/single_include/catch2/catch.hpp
// Function: Catch::Generators::GeneratorTracker::acquire(Catch::TestCaseTracking::TrackerContext&, Catch::TestCaseTracking::NameAndLocation const&)
static GeneratorTracker& acquire( TrackerContext& ctx, TestCaseTracking::NameAndLocation const& nameAndLocation ) {
                std::shared_ptr<GeneratorTracker> tracker;

                ITracker& currentTracker = ctx.currentTracker();
                // Under specific circumstances, the generator we want
                // to acquire is also the current tracker. If this is
                // the case, we have to avoid looking through current
                // tracker's children, and instead return the current
                // tracker.
                // A case where this check is important is e.g.
                //     for (int i = 0; i < 5; ++i) {
                //         int n = GENERATE(1, 2);
                //     }
                //
                // without it, the code above creates 5 nested generators.
                if (currentTracker.nameAndLocation() == nameAndLocation) {
                    auto thisTracker = currentTracker.parent().findChild(nameAndLocation);
                    assert(thisTracker);
                    assert(thisTracker->isGeneratorTracker());
                    tracker = std::static_pointer_cast<GeneratorTracker>(thisTracker);
                } else if ( TestCaseTracking::ITrackerPtr childTracker = currentTracker.findChild( nameAndLocation ) ) {
                    assert( childTracker );
                    assert( childTracker->isGeneratorTracker() );
                    tracker = std::static_pointer_cast<GeneratorTracker>( childTracker );
                } else {
                    tracker = std::make_shared<GeneratorTracker>( nameAndLocation, ctx, &currentTracker );
                    currentTracker.addChild( tracker );
                }

                if( !tracker->isComplete() ) {
                    tracker->open();
                }

                return *tracker;
            }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x38, %rsp
movq %rsi, %rbx
movq %rdi, %r14
movq 0x10(%rdi), %r15
leaq 0x8(%r15), %rdi
callq 0x473e5
testb %al, %al
je 0x3f686
movq (%r15), %rax
movq %r15, %rdi
callq *0x38(%rax)
movq (%rax), %rcx
leaq -0x30(%rbp), %rdi
movq %rax, %rsi
movq %rbx, %rdx
callq *0x60(%rcx)
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x3f795
movq (%rdi), %rax
callq *0x78(%rax)
testb %al, %al
je 0x3f7b4
movq -0x30(%rbp), %r14
movq -0x28(%rbp), %rbx
testq %rbx, %rbx
je 0x3f74e
movq 0x6a91a(%rip), %rax     # 0xa9f90
cmpb $0x0, (%rax)
je 0x3f6cb
incl 0x8(%rbx)
movq %rbx, %rdi
jmp 0x3f749
movq (%r15), %rax
leaq -0x30(%rbp), %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq *0x60(%rax)
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x3f6d1
movq (%rdi), %rax
callq *0x78(%rax)
testb %al, %al
je 0x3f7d3
movq -0x30(%rbp), %r14
movq -0x28(%rbp), %rbx
testq %rbx, %rbx
je 0x3f71d
movq 0x6a8cf(%rip), %rax     # 0xa9f90
cmpb $0x0, (%rax)
je 0x3f6cb
incl 0x8(%rbx)
jmp 0x3f740
lock
incl 0x8(%rbx)
jmp 0x3f740
leaq -0x48(%rbp), %r9
movq %r15, (%r9)
leaq -0x38(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x40(%rbp), %rsi
leaq -0x19(%rbp), %rdx
movq %rbx, %rcx
movq %r14, %r8
callq 0x47442
movq -0x40(%rbp), %r14
movq -0x38(%rbp), %rbx
movq %r14, -0x40(%rbp)
movq %rbx, -0x38(%rbp)
testq %rbx, %rbx
je 0x3f725
movq 0x6a87d(%rip), %rax     # 0xa9f90
cmpb $0x0, (%rax)
je 0x3f721
incl 0x8(%rbx)
jmp 0x3f725
xorl %ebx, %ebx
jmp 0x3f740
lock
incl 0x8(%rbx)
movq (%r15), %rax
leaq -0x40(%rbp), %rsi
movq %r15, %rdi
callq *0x58(%rax)
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x3f740
callq 0x43a1a
movq -0x28(%rbp), %rdi
testq %rdi, %rdi
je 0x3f74e
callq 0x43a1a
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
testb %al, %al
jne 0x3f77a
movl $0x1, 0x60(%r14)
movq 0x38(%r14), %rax
movq %r14, 0x10(%rax)
movq 0x40(%r14), %rdi
testq %rdi, %rdi
je 0x3f77a
movq (%rdi), %rax
callq *0x68(%rax)
testq %rbx, %rbx
je 0x3f787
movq %rbx, %rdi
callq 0x43a1a
movq %r14, %rax
addq $0x38, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x3d27e(%rip), %rdi     # 0x7ca1a
leaq 0x3b732(%rip), %rsi     # 0x7aed5
leaq 0x3d27c(%rip), %rcx     # 0x7ca26
movl $0x3143, %edx           # imm = 0x3143
callq 0x1b320
leaq 0x3d2ee(%rip), %rdi     # 0x7caa9
leaq 0x3b713(%rip), %rsi     # 0x7aed5
leaq 0x3d25d(%rip), %rcx     # 0x7ca26
movl $0x3144, %edx           # imm = 0x3144
callq 0x1b320
leaq 0x3d2f1(%rip), %rdi     # 0x7cacb
leaq 0x3b6f4(%rip), %rsi     # 0x7aed5
leaq 0x3d23e(%rip), %rcx     # 0x7ca26
movl $0x3148, %edx           # imm = 0x3148
callq 0x1b320
movq %rax, %r14
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x3f80c
callq 0x43a1a
jmp 0x3f80c
jmp 0x3f807
movq %rax, %r14
xorl %ebx, %ebx
movq -0x28(%rbp), %rdi
testq %rdi, %rdi
je 0x3f839
callq 0x43a1a
jmp 0x3f839
movq %rax, %r14
movq -0x28(%rbp), %rdi
testq %rdi, %rdi
jne 0x3f841
jmp 0x3f846
movq %rax, %r14
xorl %ebx, %ebx
jmp 0x3f839
movq %rax, %r14
jmp 0x3f846
movq %rax, %r14
testq %rbx, %rbx
je 0x3f846
movq %rbx, %rdi
callq 0x43a1a
movq %r14, %rdi
callq 0x1b910