// File: /workspace/github_cpp_makefile_star2_O1/kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Subject::~Subject()
Subject::~Subject()
{
    _rLinks *rl;
    _sLinks *sl;

    if (DEBUG) {
        std::cout << "-- Subject " << _debugID << " deleted.\n";
    }
    if (_child != NULL) { // relay subject?
        delete _child;
        if (_parent != NULL && _parent->_Subjects != NULL) {
            _parent->_Subjects->remove(this);
            _parent->_activeSubjects->remove(this);
        }
    } else { // bad relay subject or standard subject
        if (_Relays != NULL) {        // standard subject
            rl = _Relays;               // necessary to avoid self-removal of
            _Relays = NULL;             // relay points from _Relays
            rl->deleteRelays();         // delete relays (including _sink and parent)
            delete rl;                  // delete list of relays
            delete _activeRelays;
            sl = _Subjects;             // dito
            _Subjects = NULL;
            sl->deleteSubjects();       // delete subjects
            delete sl;                  // delete list of subjects
            delete _activeSubjects;
        }
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0xbd23(%rip), %rax      # 0x11ba0
movq %rax, (%rdi)
movq 0x18(%rdi), %r14
testq %r14, %r14
je 0x5fbf
movq %r14, %rdi
callq 0x5e6e
movl $0x60, %esi
movq %r14, %rdi
callq 0x3170
movq 0x10(%rbx), %rax
testq %rax, %rax
je 0x60af
movq 0x40(%rax), %r14
testq %r14, %r14
je 0x60af
movq (%r14), %r15
testq %r15, %r15
je 0x5f31
cmpq %rbx, (%r15)
je 0x5f0e
xorl %eax, %eax
movq %r15, (%r14)
testb %al, %al
jne 0x5f2a
movq 0x8(%r15), %rdi
testq %rdi, %rdi
je 0x5f2d
leaq 0x8(%r15), %rax
cmpq %rbx, (%rdi)
je 0x5ee9
movq %rdi, %r15
jmp 0x5efa
movq 0x8(%rdi), %rcx
movq %rcx, (%rax)
movl $0x10, %esi
callq 0x3170
leaq 0x8(%r15), %rax
movq 0x8(%r15), %rdi
testq %rdi, %rdi
jne 0x5edf
jmp 0x5f2d
cmpq %rbx, (%r15)
jne 0x5ecb
movq %r15, %rdi
movq 0x8(%r15), %r15
movl $0x10, %esi
callq 0x3170
testq %r15, %r15
sete %al
jne 0x5f09
movq %r15, (%r14)
xorl %r15d, %r15d
movq %r15, 0x8(%r14)
movq 0x10(%rbx), %rax
movq 0x48(%rax), %r14
movq (%r14), %r15
testq %r15, %r15
je 0x60af
cmpq %rbx, (%r15)
je 0x5f96
xorl %eax, %eax
movq %r15, (%r14)
testb %al, %al
jne 0x5fb2
movq 0x8(%r15), %rdi
testq %rdi, %rdi
je 0x5f88
leaq 0x8(%r15), %rax
cmpq %rbx, (%rdi)
je 0x5f6a
movq %rdi, %r15
jmp 0x5f7b
movq 0x8(%rdi), %rcx
movq %rcx, (%rax)
movl $0x10, %esi
callq 0x3170
leaq 0x8(%r15), %rax
movq 0x8(%r15), %rdi
testq %rdi, %rdi
jne 0x5f60
movq %r15, 0x8(%r14)
jmp 0x60af
cmpq %rbx, (%r15)
jne 0x5f4c
movq %r15, %rdi
movq 0x8(%r15), %r15
movl $0x10, %esi
callq 0x3170
testq %r15, %r15
sete %al
jne 0x5f91
movq %r15, (%r14)
movq $0x0, 0x8(%r14)
jmp 0x60af
movq 0x30(%rbx), %r14
testq %r14, %r14
je 0x60af
movq $0x0, 0x30(%rbx)
movq (%r14), %r15
testq %r15, %r15
je 0x5ffc
movq (%r15), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x8(%r15), %r15
jmp 0x5fd7
movq 0x8(%rdi), %rax
movq %rax, (%r14)
movl $0x10, %esi
callq 0x3170
movq (%r14), %rdi
testq %rdi, %rdi
jne 0x5feb
movl $0x10, %esi
movq %r14, %rdi
callq 0x3170
movq 0x38(%rbx), %r14
testq %r14, %r14
je 0x6042
movq (%r14), %rdi
testq %rdi, %rdi
je 0x6035
movq 0x8(%rdi), %rax
movq %rax, (%r14)
movl $0x10, %esi
callq 0x3170
jmp 0x601a
movl $0x10, %esi
movq %r14, %rdi
callq 0x3170
movq 0x40(%rbx), %r14
movq $0x0, 0x40(%rbx)
movq (%r14), %r15
testq %r15, %r15
je 0x6076
movq (%r15), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movq 0x8(%r15), %r15
jmp 0x6051
movq 0x8(%rdi), %rax
movq %rax, (%r14)
movl $0x10, %esi
callq 0x3170
movq (%r14), %rdi
testq %rdi, %rdi
jne 0x6065
movl $0x10, %esi
movq %r14, %rdi
callq 0x3170
movq 0x48(%rbx), %rbx
testq %rbx, %rbx
je 0x60af
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x60b5
movq 0x8(%rdi), %rax
movq %rax, (%rbx)
movl $0x10, %esi
callq 0x3170
jmp 0x6094
popq %rbx
popq %r14
popq %r15
retq
movl $0x10, %esi
movq %rbx, %rdi
popq %rbx
popq %r14
popq %r15
jmp 0x3170
jmp 0x60c9
movq %rax, %rdi
callq 0x50a9
nop