// File: minimind[P]simple-graph/unittest/catch.hpp
// Function: Catch::RunContext::runCurrentTest(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
void runCurrentTest( std::string& redirectedCout, std::string& redirectedCerr ) {
            TestCaseInfo const& testCaseInfo = m_activeTestCase->getTestCaseInfo();
            SectionInfo testCaseSection( testCaseInfo.lineInfo, testCaseInfo.name, testCaseInfo.description );
            m_reporter->sectionStarting( testCaseSection );
            Counts prevAssertions = m_totals.assertions;
            double duration = 0;
            try {
                m_lastAssertionInfo = AssertionInfo( "TEST_CASE", testCaseInfo.lineInfo, "", ResultDisposition::Normal );
                TestCaseTracker::Guard guard( *m_testCaseTracker );

                Timer timer;
                timer.start();
                if( m_reporter->getPreferences().shouldRedirectStdOut ) {
                    StreamRedirect coutRedir( std::cout, redirectedCout );
                    StreamRedirect cerrRedir( std::cerr, redirectedCerr );
                    m_activeTestCase->invoke();
                }
                else {
                    m_activeTestCase->invoke();
                }
                duration = timer.getElapsedSeconds();
            }
            catch( TestFailureException& ) {
                // This just means the test was aborted due to failure
            }
            catch(...) {
                ResultBuilder exResult( m_lastAssertionInfo.macroName.c_str(),
                                        m_lastAssertionInfo.lineInfo,
                                        m_lastAssertionInfo.capturedExpression.c_str(),
                                        m_lastAssertionInfo.resultDisposition );
                exResult.useActiveException();
            }
            // If sections ended prematurely due to an exception we stored their
            // infos here so we can tear them down outside the unwind process.
            for( std::vector<UnfinishedSections>::const_reverse_iterator it = m_unfinishedSections.rbegin(),
                        itEnd = m_unfinishedSections.rend();
                    it != itEnd;
                    ++it )
                sectionEnded( it->info, it->prevAssertions, it->durationInSeconds );
            m_unfinishedSections.clear();
            m_messages.clear();

            Counts assertions = m_totals.assertions - prevAssertions;
            bool missingAssertions = testForMissingAssertions( assertions );

            if( testCaseInfo.okToFail() ) {
                std::swap( assertions.failedButOk, assertions.failed );
                m_totals.assertions.failed -= assertions.failedButOk;
                m_totals.assertions.failedButOk += assertions.failedButOk;
            }

            SectionStats testCaseSectionStats( testCaseSection, assertions, duration, missingAssertions );
            m_reporter->sectionEnded( testCaseSectionStats );
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x8d0, %rsp            # imm = 0x8D0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x840(%rbp)
movq 0x38(%rax), %rdi
callq 0xe410
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdx
movq %rdx, %rsi
addq $0xe0, %rsi
movq %rdx, %rcx
addq $0x40, %rcx
leaq -0x88(%rbp), %rdi
movq %rdi, -0x838(%rbp)
callq 0xf500
movq -0x840(%rbp), %rdi
addq $0x1a8, %rdi            # imm = 0x1A8
callq 0x37d10
movq -0x838(%rbp), %rsi
movq %rax, %rdi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
jmp 0x3d12f
movq -0x840(%rbp), %rax
movq 0x188(%rax), %rcx
movq %rcx, -0xa0(%rbp)
movups 0x178(%rax), %xmm0
movaps %xmm0, -0xb0(%rbp)
movq $0x0, -0xb8(%rbp)
leaq -0x149(%rbp), %rdi
movq %rdi, -0x848(%rbp)
callq 0xb930
movq -0x848(%rbp), %rdx
leaq 0x3bfb0(%rip), %rsi     # 0x7912e
leaq -0x148(%rbp), %rdi
callq 0x134e0
jmp 0x3d18c
movq -0x20(%rbp), %rax
addq $0xe0, %rax
movq %rax, -0x858(%rbp)
leaq -0x171(%rbp), %rdi
movq %rdi, -0x850(%rbp)
callq 0xb930
movq -0x850(%rbp), %rdx
leaq 0x3c36a(%rip), %rsi     # 0x79528
leaq -0x170(%rbp), %rdi
callq 0x134e0
jmp 0x3d1cc
movq -0x858(%rbp), %rdx
leaq -0x128(%rbp), %rdi
leaq -0x148(%rbp), %rsi
leaq -0x170(%rbp), %rcx
xorl %r8d, %r8d
callq 0xd410
jmp 0x3d1f2
movq -0x840(%rbp), %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
leaq -0x128(%rbp), %rsi
movq %rsi, -0x868(%rbp)
callq 0x390b0
movq -0x868(%rbp), %rdi
callq 0x13930
leaq -0x170(%rbp), %rdi
callq 0xb330
leaq -0x171(%rbp), %rdi
callq 0xb5c0
leaq -0x148(%rbp), %rdi
callq 0xb330
leaq -0x149(%rbp), %rdi
callq 0xb5c0
movq -0x840(%rbp), %rdi
addq $0x40, %rdi
callq 0x3e250
movq %rax, -0x860(%rbp)
jmp 0x3d268
movq -0x860(%rbp), %rsi
leaq -0x180(%rbp), %rdi
callq 0x3e270
jmp 0x3d27d
leaq -0x188(%rbp), %rdi
callq 0x14840
jmp 0x3d28b
leaq -0x188(%rbp), %rdi
callq 0xedf0
jmp 0x3d299
movq -0x840(%rbp), %rdi
addq $0x1a8, %rdi            # imm = 0x1A8
callq 0x37d10
movq %rax, %rdi
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
movb %al, -0x869(%rbp)
jmp 0x3d2c0
movb -0x869(%rbp), %al
movb %al, -0x189(%rbp)
testb $0x1, -0x189(%rbp)
je 0x3d42e
movq -0x10(%rbp), %rdx
movq 0x6fcd4(%rip), %rsi     # 0xacfb8
leaq -0x320(%rbp), %rdi
callq 0x3e2a0
jmp 0x3d2f2
movq -0x18(%rbp), %rdx
movq 0x6fceb(%rip), %rsi     # 0xacfe8
leaq -0x4b0(%rbp), %rdi
callq 0x3e2a0
jmp 0x3d30b
movq -0x840(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0xe290
jmp 0x3d31d
leaq -0x4b0(%rbp), %rdi
callq 0x3e350
leaq -0x320(%rbp), %rdi
callq 0x3e350
jmp 0x3d442
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x3d82d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x3d3af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x3d397
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x170(%rbp), %rdi
callq 0xb330
leaq -0x171(%rbp), %rdi
callq 0xb5c0
leaq -0x148(%rbp), %rdi
callq 0xb330
leaq -0x149(%rbp), %rdi
callq 0xb5c0
jmp 0x3d482
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x3d482
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x3d476
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x3d420
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0x3e350
leaq -0x320(%rbp), %rdi
callq 0x3e350
jmp 0x3d476
movq -0x840(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0xe290
jmp 0x3d440
jmp 0x3d442
leaq -0x188(%rbp), %rdi
callq 0xeeb0
movsd %xmm0, -0x878(%rbp)
jmp 0x3d458
movsd -0x878(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x3e3d0
jmp 0x3d4b1
leaq -0x180(%rbp), %rdi
callq 0x3e3d0
movl -0x94(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x3d5ec
movq -0x90(%rbp), %rdi
callq 0xb1e0
movq %rax, -0x758(%rbp)
callq 0xb870
jmp 0x3d4af
jmp 0x3d4b1
movq -0x840(%rbp), %rsi
addq $0x250, %rsi            # imm = 0x250
leaq -0x768(%rbp), %rdi
movq %rdi, -0x880(%rbp)
callq 0x3e400
movq -0x880(%rbp), %rsi
leaq -0x760(%rbp), %rdi
callq 0x3e450
jmp 0x3d4e7
movq -0x840(%rbp), %rsi
addq $0x250, %rsi            # imm = 0x250
leaq -0x778(%rbp), %rdi
movq %rdi, -0x888(%rbp)
callq 0x3e480
movq -0x888(%rbp), %rsi
leaq -0x770(%rbp), %rdi
callq 0x3e450
jmp 0x3d51d
jmp 0x3d51f
leaq -0x760(%rbp), %rdi
leaq -0x770(%rbp), %rsi
callq 0x3e4d0
movb %al, -0x889(%rbp)
jmp 0x3d53a
movb -0x889(%rbp), %al
testb $0x1, %al
jne 0x3d549
jmp 0x3d6c8
leaq -0x760(%rbp), %rdi
callq 0x3e500
movq %rax, -0x898(%rbp)
jmp 0x3d55e
movq -0x898(%rbp), %rax
movq %rax, -0x8a8(%rbp)
leaq -0x760(%rbp), %rdi
callq 0x3e500
movq %rax, -0x8a0(%rbp)
jmp 0x3d581
movq -0x8a0(%rbp), %rax
addq $0x68, %rax
movq %rax, -0x8b8(%rbp)
leaq -0x760(%rbp), %rdi
callq 0x3e500
movq %rax, -0x8b0(%rbp)
jmp 0x3d5a8
movq -0x8b8(%rbp), %rdx
movq -0x8a8(%rbp), %rsi
movq -0x840(%rbp), %rdi
movq -0x8b0(%rbp), %rax
movsd 0x80(%rax), %xmm0
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
jmp 0x3d5d7
jmp 0x3d5d9
leaq -0x760(%rbp), %rdi
callq 0x3e540
jmp 0x3d5e7
jmp 0x3d51f
movq -0x90(%rbp), %rdi
callq 0xb1e0
movq -0x840(%rbp), %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
callq 0xb200
movq -0x840(%rbp), %rdi
movq %rax, -0x8c8(%rbp)
movq %rdi, %rax
addq $0x200, %rax            # imm = 0x200
movq %rax, -0x8c0(%rbp)
addq $0x228, %rdi            # imm = 0x228
callq 0xb200
movq -0x8c8(%rbp), %rsi
movq -0x8c0(%rbp), %rdx
movq %rax, %rcx
movq -0x840(%rbp), %rax
movl 0x248(%rax), %r8d
leaq -0x750(%rbp), %rdi
callq 0x104e0
jmp 0x3d662
leaq -0x750(%rbp), %rdi
xorl %esi, %esi
callq 0x109d0
jmp 0x3d672
leaq -0x750(%rbp), %rdi
callq 0x14670
callq 0xb870
jmp 0x3d685
jmp 0x3d4b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x3d6bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x750(%rbp), %rdi
callq 0x14670
callq 0xb870
jmp 0x3d6c3
jmp 0x3d82d
movq -0x840(%rbp), %rdi
addq $0x250, %rdi            # imm = 0x250
callq 0x3e570
movq -0x840(%rbp), %rdi
addq $0x1b0, %rdi            # imm = 0x1B0
callq 0x39090
movq -0x840(%rbp), %rsi
addq $0x178, %rsi            # imm = 0x178
leaq -0x790(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x3b400
jmp 0x3d711
movq -0x840(%rbp), %rdi
leaq -0x790(%rbp), %rsi
callq 0x3b470
movb %al, -0x8c9(%rbp)
jmp 0x3d72c
movb -0x8c9(%rbp), %al
andb $0x1, %al
movb %al, -0x791(%rbp)
movq -0x20(%rbp), %rdi
callq 0xe010
testb $0x1, %al
jne 0x3d749
jmp 0x3d798
leaq -0x790(%rbp), %rdi
addq $0x10, %rdi
leaq -0x790(%rbp), %rsi
addq $0x8, %rsi
callq 0x3e590
movq -0x840(%rbp), %rax
movq -0x780(%rbp), %rdx
movq 0x180(%rax), %rcx
subq %rdx, %rcx
movq %rcx, 0x180(%rax)
movq -0x780(%rbp), %rcx
addq 0x188(%rax), %rcx
movq %rcx, 0x188(%rax)
movsd -0xb8(%rbp), %xmm0
movzbl -0x791(%rbp), %ecx
andl $0x1, %ecx
leaq -0x830(%rbp), %rdi
leaq -0x88(%rbp), %rsi
leaq -0x790(%rbp), %rdx
callq 0x3b580
jmp 0x3d7c6
movq -0x840(%rbp), %rdi
addq $0x1a8, %rdi            # imm = 0x1A8
callq 0x37d10
movq %rax, %rdi
movq (%rdi), %rax
movq 0x60(%rax), %rax
leaq -0x830(%rbp), %rsi
callq *%rax
jmp 0x3d7ee
leaq -0x830(%rbp), %rdi
callq 0x12250
leaq -0x88(%rbp), %rdi
callq 0x14860
addq $0x8d0, %rsp            # imm = 0x8D0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x830(%rbp), %rdi
callq 0x12250
leaq -0x88(%rbp), %rdi
callq 0x14860
movq -0x90(%rbp), %rdi
callq 0xb920
movq %rax, %rdi
callq 0x13830
nopl (%rax)