// File: /workspace/github_cpp_makefile_star2_O1/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 0x4789f
testb %al, %al
je 0x3f965
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 0x3fa8f
movq (%rdi), %rax
callq *0x78(%rax)
testb %al, %al
jne 0x3f98c
leaq 0x3e15c(%rip), %rdi     # 0x7daa9
leaq 0x3c581(%rip), %rsi     # 0x7bed5
leaq 0x3e0cb(%rip), %rcx     # 0x7da26
movl $0x3144, %edx           # imm = 0x3144
callq 0x1b320
movq (%r15), %rax
leaq -0x30(%rbp), %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq *0x60(%rax)
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x3f9ba
movq (%rdi), %rax
callq *0x78(%rax)
testb %al, %al
je 0x3faae
movq -0x30(%rbp), %r14
movq -0x28(%rbp), %rbx
testq %rbx, %rbx
je 0x3fa3a
movq 0x6c5ec(%rip), %rax     # 0xabf90
cmpb $0x0, (%rax)
je 0x3f9b1
incl 0x8(%rbx)
jmp 0x3fa3a
lock
incl 0x8(%rbx)
jmp 0x3fa3a
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 0x478fc
movq -0x40(%rbp), %r14
movq -0x38(%rbp), %rbx
xorps %xmm0, %xmm0
movaps %xmm0, -0x40(%rbp)
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x3f9fd
callq 0x43ca8
movq %r14, -0x40(%rbp)
movq %rbx, -0x38(%rbp)
testq %rbx, %rbx
je 0x3fa1f
movq 0x6c57f(%rip), %rax     # 0xabf90
cmpb $0x0, (%rax)
je 0x3fa1b
incl 0x8(%rbx)
jmp 0x3fa1f
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 0x3fa3a
callq 0x43ca8
movq -0x28(%rbp), %rdi
testq %rdi, %rdi
je 0x3fa48
callq 0x43ca8
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
testb %al, %al
jne 0x3fa74
movl $0x1, 0x60(%r14)
movq 0x38(%r14), %rax
movq %r14, 0x10(%rax)
movq 0x40(%r14), %rdi
testq %rdi, %rdi
je 0x3fa74
movq (%rdi), %rax
callq *0x68(%rax)
testq %rbx, %rbx
je 0x3fa81
movq %rbx, %rdi
callq 0x43ca8
movq %r14, %rax
addq $0x38, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x3df84(%rip), %rdi     # 0x7da1a
leaq 0x3c438(%rip), %rsi     # 0x7bed5
leaq 0x3df82(%rip), %rcx     # 0x7da26
movl $0x3143, %edx           # imm = 0x3143
callq 0x1b320
leaq 0x3e016(%rip), %rdi     # 0x7dacb
leaq 0x3c419(%rip), %rsi     # 0x7bed5
leaq 0x3df63(%rip), %rcx     # 0x7da26
movl $0x3148, %edx           # imm = 0x3148
callq 0x1b320
movq %rax, %r14
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x3fae7
callq 0x43ca8
jmp 0x3fae7
jmp 0x3fae2
movq %rax, %r14
xorl %ebx, %ebx
movq -0x28(%rbp), %rdi
testq %rdi, %rdi
je 0x3fb16
callq 0x43ca8
jmp 0x3fb16
movq %rax, %r14
movq -0x28(%rbp), %rdi
testq %rdi, %rdi
je 0x3fb0f
callq 0x43ca8
jmp 0x3fb0f
jmp 0x3fb0c
movq %rax, %r14
xorl %ebx, %ebx
jmp 0x3fb16
movq %rax, %r14
testq %rbx, %rbx
je 0x3fb23
movq %rbx, %rdi
callq 0x43ca8
movq %r14, %rdi
callq 0x1b910
nop