// File: ahupowerdns[P]mcounter/./ext/doctest.h
// Function: doctest::detail::Subcase::Subcase(doctest::String const&, char const*, int)
Subcase::Subcase(const String& name, const char* file, int line)
            : m_signature({name, file, line}) {
        auto* s = g_cs;

        // check subcase filters
        if(s->subcasesStack.size() < size_t(s->subcase_filter_levels)) {
            if(!matchesAny(m_signature.m_name.c_str(), s->filters[6], true, s->case_sensitive))
                return;
            if(matchesAny(m_signature.m_name.c_str(), s->filters[7], false, s->case_sensitive))
                return;
        }
        
        // if a Subcase on the same level has already been entered
        if(s->subcasesStack.size() < size_t(s->subcasesCurrentMaxLevel)) {
            s->should_reenter = true;
            return;
        }

        // push the current signature to the stack so we can check if the
        // current stack + the current new subcase have been traversed
        s->subcasesStack.push_back(m_signature);
        if(s->subcasesPassed.count(s->subcasesStack) != 0) {
            // pop - revert to previous stack since we've already passed this
            s->subcasesStack.pop_back();
            return;
        }

        s->subcasesCurrentMaxLevel = s->subcasesStack.size();
        m_entered = true;

        DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_start, m_signature);
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x60(%rbp)
movq -0x10(%rbp), %rsi
callq 0x7a20
movq -0x60(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, 0x18(%rax)
movl -0x1c(%rbp), %ecx
movl %ecx, 0x20(%rax)
movb $0x0, 0x28(%rax)
movq 0x477f0(%rip), %rax     # 0x51548
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
addq $0x1110, %rdi           # imm = 0x1110
callq 0x20d90
movq -0x28(%rbp), %rcx
movslq 0x68(%rcx), %rcx
cmpq %rcx, %rax
jae 0x9e3c
movq -0x60(%rbp), %rdi
callq 0x20dc0
movq %rax, -0x68(%rbp)
jmp 0x9d8c
movq -0x28(%rbp), %rdi
addq $0x10b8, %rdi           # imm = 0x10B8
movl $0x6, %esi
callq 0x20e00
movq -0x68(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rax
movzbl 0x6d(%rax), %ecx
andl $0x1, %ecx
movl $0x1, %edx
callq 0x9f70
movb %al, -0x69(%rbp)
jmp 0x9dc2
movb -0x69(%rbp), %al
testb $0x1, %al
jne 0x9dea
jmp 0x9dcb
jmp 0x9f5c
movq -0x60(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
callq 0x21000
jmp 0x9f65
movq -0x60(%rbp), %rdi
callq 0x20dc0
movq %rax, -0x78(%rbp)
jmp 0x9df9
movq -0x28(%rbp), %rdi
addq $0x10b8, %rdi           # imm = 0x10B8
movl $0x7, %esi
callq 0x20e00
movq -0x78(%rbp), %rdi
movq %rax, %rsi
movq -0x28(%rbp), %rax
movzbl 0x6d(%rax), %ecx
andl $0x1, %ecx
xorl %edx, %edx
callq 0x9f70
movb %al, -0x79(%rbp)
jmp 0x9e2c
movb -0x79(%rbp), %al
testb $0x1, %al
jne 0x9e35
jmp 0x9e3a
jmp 0x9f5c
jmp 0x9e3c
movq -0x28(%rbp), %rdi
addq $0x1110, %rdi           # imm = 0x1110
callq 0x20d90
movq -0x28(%rbp), %rcx
movslq 0x1158(%rcx), %rcx
cmpq %rcx, %rax
jae 0x9e6c
movq -0x28(%rbp), %rax
movb $0x1, 0x115c(%rax)
jmp 0x9f5c
movq -0x60(%rbp), %rsi
movq -0x28(%rbp), %rdi
addq $0x1110, %rdi           # imm = 0x1110
callq 0x20e20
jmp 0x9e82
movq -0x28(%rbp), %rsi
movq %rsi, %rdi
addq $0x1128, %rdi           # imm = 0x1128
addq $0x1110, %rsi           # imm = 0x1110
callq 0x20e90
movq %rax, -0x88(%rbp)
jmp 0x9ea5
movq -0x88(%rbp), %rax
cmpq $0x0, %rax
je 0x9ec7
movq -0x28(%rbp), %rdi
addq $0x1110, %rdi           # imm = 0x1110
callq 0x20ef0
jmp 0x9f5c
movq -0x28(%rbp), %rdi
addq $0x1110, %rdi           # imm = 0x1110
callq 0x20d90
movq %rax, %rcx
movq -0x60(%rbp), %rax
movl %ecx, %edx
movq -0x28(%rbp), %rcx
movl %edx, 0x1158(%rcx)
movb $0x1, 0x28(%rax)
movq 0x47653(%rip), %rax     # 0x51548
addq $0x10d0, %rax           # imm = 0x10D0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
callq 0x20f20
movq %rax, -0x48(%rbp)
movq -0x40(%rbp), %rdi
callq 0x20f50
movq %rax, -0x50(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x20f80
testb $0x1, %al
jne 0x9f2c
jmp 0x9f5c
leaq -0x48(%rbp), %rdi
callq 0x20fc0
movq -0x60(%rbp), %rsi
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
jmp 0x9f4f
jmp 0x9f51
leaq -0x48(%rbp), %rdi
callq 0x20fe0
jmp 0x9f19
addq $0x90, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x6800
nop