LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Subject::_kill(Subject*, Subject*)
int Subject::_kill(Subject *s, Subject *t)
{
    if (_activeSubject == NULL || (_parent == NULL && _debugID > 0)) {
        if (WARNING) {
            std::cout << "-- Warning! " << _debugID << "called 'delete' outside of the subjects environment.\n";
        }
    } else {
        if (t == NULL) {
            if (WARNING) {
                std::cout << "-- Warning! " << _debugID << " cannot destruct NULL.\n";
            }
        } else {
            if (s != this) {
                if (WARNING) {
                    std::cout << "-- Warning! " << s->_debugID << " cannot call 'delete' for subject " << _debugID << ".\n";
                }
            } else {
                if (s != t->_parent) {
                    if (WARNING) {
                        std::cout << "-- Warning! " << _debugID << " cannot call 'delete' for subject " << t->_debugID << ".\n";
                    }
                } else {
                    t->_destruct();  // delete subject t
                    return 1;
                }
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq 0x1aa0d(%rip), %rax     # 0x21210
cmpq $0x0, (%rax)
je 0x681f
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x6821
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jbe 0x6821
jmp 0x685f
cmpq $0x0, -0x20(%rbp)
jne 0x682a
jmp 0x685d
movq -0x28(%rbp), %rax
cmpq %rax, -0x18(%rbp)
je 0x6836
jmp 0x685b
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
cmpq 0x10(%rcx), %rax
je 0x6846
jmp 0x6859
movq -0x20(%rbp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x6866
jmp 0x685b
jmp 0x685d
jmp 0x685f
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nop
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Subject::_kill(Subject*, Relay*)
int Subject::_kill(Subject *s, Relay *r)
{
    if (_activeSubject == NULL || (_parent == NULL && _debugID > 0)) {
        if (WARNING) {
            std::cout << "-- Warning! " << _debugID << "called 'delete' outside of the subjects environment.\n";
        }
    } else {
        if (r == NULL) {
            if (WARNING) {
                std::cout << "-- Warning! " << _debugID << " cannot destruct NULL.\n";
            }
        } else {
            if (s != this) {
                if (WARNING) {
                    std::cout << "-- Warning! " << s->_debugID << " cannot call 'delete' for subject " << _debugID << ".\n";
                }
            } else {
                if (s != r->_home) {
                    if (WARNING) {
                        std::cout << "-- Warning! " << _debugID << " cannot call 'delete' for relay " << r->ID << ".\n";
                    }
                } else {
                    r->_destruct();  // delete relay r
                    return 1;
                }
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq 0x1a97d(%rip), %rax     # 0x21210
cmpq $0x0, (%rax)
je 0x68af
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x68b1
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jbe 0x68b1
jmp 0x68ef
cmpq $0x0, -0x20(%rbp)
jne 0x68ba
jmp 0x68ed
movq -0x28(%rbp), %rax
cmpq %rax, -0x18(%rbp)
je 0x68c6
jmp 0x68eb
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
cmpq 0x18(%rcx), %rax
je 0x68d6
jmp 0x68e9
movq -0x20(%rbp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x68f6
jmp 0x68eb
jmp 0x68ed
jmp 0x68ef
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nop
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Subject::_wake(Subject*, Subject*)
int Subject::_wake(Subject *s, Subject *t)
{
    if (_activeSubject == NULL || (_parent == NULL && _debugID > 0)) {
        if (WARNING) {
            std::cout << "-- Warning! " << _debugID << "called 'wakeup' outside of the subjects environment.\n";
        }
    } else {
        if (t == NULL) {
            if (WARNING) {
                std::cout << "-- Warning! " << _debugID << " cannot wake up NULL.\n";
            }
        } else {
            if (s != this) {
                if (WARNING) {
                    std::cout << "-- Warning! " << s->_debugID << " cannot call 'wakeup' for subject " << _debugID << ".\n";
                }
            } else {
                if (s != t->_parent) {
                    if (WARNING) {
                        std::cout << "-- Warning! " << _debugID << " cannot call 'wakeup' for subject " << t->_debugID << ".\n";
                    }
                } else {
                    _activeSubjects->add(t);  // wake up subject t
                    return 1;
                }
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq 0x1a8ed(%rip), %rax     # 0x21210
cmpq $0x0, (%rax)
je 0x693f
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x6941
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jbe 0x6941
jmp 0x6986
cmpq $0x0, -0x20(%rbp)
jne 0x694a
jmp 0x6984
movq -0x28(%rbp), %rax
cmpq %rax, -0x18(%rbp)
je 0x6956
jmp 0x6982
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
cmpq 0x10(%rcx), %rax
je 0x6966
jmp 0x6980
movq -0x28(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x8460
movl $0x1, -0x4(%rbp)
jmp 0x698d
jmp 0x6982
jmp 0x6984
jmp 0x6986
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Subject::_wake(Subject*, Relay*)
int Subject::_wake(Subject *s, Relay *r)
{
    if (_activeSubject == NULL || (_parent == NULL && _debugID > 0)) {
        if (WARNING) {
            std::cout << "-- Warning! " << _debugID << "called 'wakeup' outside of the subjects environment.\n";
        }
    } else {
        if (r == NULL) {
            if (WARNING) {
                std::cout << "-- Warning! " << _debugID << " cannot wake up NULL.\n";
            }
        } else {
            if (s != this) {
                if (WARNING) {
                    std::cout << "-- Warning! " << s->_debugID << " cannot call 'wakeup' for subject " << _debugID << ".\n";
                }
            } else {
                if (s != r->_home) {
                    if (WARNING) {
                        std::cout << "-- Warning! " << _debugID << " cannot call 'wakeup' for relay " << r->ID << ".\n";
                    }
                } else {
                    r->_awake = 1;
                    _activeRelays->add(r);  // wake up relay point r
                    r->_iLinks->wake(r);    // wake up connections to r
                    if (DEBUG) {
                        std::cout << "-- Subject " << _debugID << " wakes up relay " << r->ID << ".\n";
                    }
                    return 1;
                }
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq 0x1a84d(%rip), %rax     # 0x21210
cmpq $0x0, (%rax)
je 0x69df
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x69e1
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jbe 0x69e1
jmp 0x6a42
cmpq $0x0, -0x20(%rbp)
jne 0x69ea
jmp 0x6a40
movq -0x28(%rbp), %rax
cmpq %rax, -0x18(%rbp)
je 0x69f6
jmp 0x6a3e
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
cmpq 0x18(%rcx), %rax
je 0x6a06
jmp 0x6a3c
movq -0x28(%rbp), %rax
movq -0x20(%rbp), %rcx
movl $0x1, 0x10(%rcx)
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x6ef0
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x8580
movl $0x1, -0x4(%rbp)
jmp 0x6a49
jmp 0x6a3e
jmp 0x6a40
jmp 0x6a42
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Subject::_halt(Subject*, Subject*)
int Subject::_halt(Subject *s, Subject *t)
{
    if (_activeSubject == NULL || (_parent == NULL && _debugID > 0)) {
        if (WARNING) {
            std::cout << "-- Warning! " << _debugID << "called 'freeze' outside of the subjects environment.\n";
        }
    } else {
        if (t == NULL) {
            if (WARNING) {
                std::cout << "-- Warning! " << _debugID << " cannot freeze NULL.\n";
            }
        } else {
            if (s != this) {
                if (WARNING) {
                    std::cout << "-- Warning! " << s->_debugID << " cannot call 'freeze' for subject " << _debugID << ".\n";
                }
            } else {
                if (s != t->_parent) {
                    if (WARNING) {
                        std::cout << "-- Warning! " << _debugID << " cannot call 'freeze' for subject " << t->_debugID << ".\n";
                    }
                } else {
                    _activeSubjects->remove(t);  // freezes subject t
                    return 1;
                }
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq 0x1a78d(%rip), %rax     # 0x21210
cmpq $0x0, (%rax)
je 0x6a9f
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x6aa1
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jbe 0x6aa1
jmp 0x6ae6
cmpq $0x0, -0x20(%rbp)
jne 0x6aaa
jmp 0x6ae4
movq -0x28(%rbp), %rax
cmpq %rax, -0x18(%rbp)
je 0x6ab6
jmp 0x6ae2
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
cmpq 0x10(%rcx), %rax
je 0x6ac6
jmp 0x6ae0
movq -0x28(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x8180
movl $0x1, -0x4(%rbp)
jmp 0x6aed
jmp 0x6ae2
jmp 0x6ae4
jmp 0x6ae6
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Subject::_halt(Subject*, Relay*)
int Subject::_halt(Subject *s, Relay *r)
{
    if (_activeSubject == NULL || (_parent == NULL && _debugID > 0)) {
        if (WARNING) {
            std::cout << "-- Warning! " << _debugID << "called 'freeze' outside of the subjects environment.\n";
        }
    } else {
        if (r == NULL) {
            if (WARNING) {
                std::cout << "-- Warning! " << _debugID << " cannot freeze NULL.\n";
            }
        } else {
            if (s != this) {
                if (WARNING) {
                    std::cout << "-- Warning! " << s->_debugID << " cannot call 'freeze' for subject " << _debugID << ".\n";
                }
            } else {
                if (s != r->_home) {
                    if (WARNING) {
                        std::cout << "-- Warning! " << _debugID << " cannot call 'freeze' for relay " << r->ID << ".\n";
                    }
                } else {
                    r->_awake = 0;
                    _activeRelays->remove(r);  // freeze relay point r
                    r->_iLinks->halt();        // freeze connections to r
                    if (DEBUG) {
                        std::cout << "-- Subject " << _debugID << " freezes relay " << r->ID << ".\n";
                    }
                    return 1;
                }
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq 0x1a6ed(%rip), %rax     # 0x21210
cmpq $0x0, (%rax)
je 0x6b3f
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x6b41
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jbe 0x6b41
jmp 0x6b9e
cmpq $0x0, -0x20(%rbp)
jne 0x6b4a
jmp 0x6b9c
movq -0x28(%rbp), %rax
cmpq %rax, -0x18(%rbp)
je 0x6b56
jmp 0x6b9a
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
cmpq 0x18(%rcx), %rax
je 0x6b66
jmp 0x6b98
movq -0x28(%rbp), %rax
movq -0x20(%rbp), %rcx
movl $0x0, 0x10(%rcx)
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x7630
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x77d0
movl $0x1, -0x4(%rbp)
jmp 0x6ba5
jmp 0x6b9a
jmp 0x6b9c
jmp 0x6b9e
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nop
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Subject::_handle(Subject*, _Message*)
int Subject::_handle(Subject *s, _Message *m)
{
    // only here, _activeSubject==NULL is allowed
    if (m == NULL) {
        if (WARNING) {
            std::cout << "-- Warning! " << _debugID << " cannot handle NULL.\n";
        }
    } else {
        if (s != this) {
            if (WARNING) {
                std::cout << "-- Warning! " << s->_debugID << " cannot call 'call' for subject " << _debugID << ".\n";
            }
            delete m;
        } else {
            if (_sink != NULL) {
                if (DEBUG) {
                    std::cout << "-- Message " << m->debugID << " stored in subject " << _debugID << ".\n";
                }
                _sink->_oQueue->enqueue(m);
                return 1;
            } else {
                if (WARNING) {
                    std::cout << "-- Warning! Sink of subject " << _debugID << " not well-defined.\n";
                }
                delete m;
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x6bd5
jmp 0x6c48
movq -0x28(%rbp), %rax
cmpq %rax, -0x18(%rbp)
je 0x6bfd
movq -0x20(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0x6bfb
movq -0x30(%rbp), %rdi
movl $0x38, %esi
callq 0x31d0
jmp 0x6c46
movq -0x28(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x6c26
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x73e0
movl $0x1, -0x4(%rbp)
jmp 0x6c4f
movq -0x20(%rbp), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
je 0x6c42
movq -0x38(%rbp), %rdi
movl $0x38, %esi
callq 0x31d0
jmp 0x6c44
jmp 0x6c46
jmp 0x6c48
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Subject::idle()
int Subject::idle()
{
    if (_activeSubject == NULL) {
        if (WARNING) {
            std::cout << "-- Warning! Method 'idle' called outside of the subjects environment.\n";
        }
    } else {
        if (_activeSubject != this) {
            if (WARNING) {
                std::cout << "-- Warning! Subject " << _activeSubject->_debugID << " cannot call " << _debugID << "->idle().\n";
            }
        } else {
            return _Relays->idle();
        }
        // return _sink->_oQueue->empty();
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x18(%rbp)
leaq 0x1a595(%rip), %rax     # 0x21210
cmpq $0x0, (%rax)
jne 0x6c83
jmp 0x6ca9
movq -0x18(%rbp), %rcx
leaq 0x1a582(%rip), %rax     # 0x21210
cmpq %rcx, (%rax)
je 0x6c95
jmp 0x6ca7
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x85c0
movl %eax, -0x4(%rbp)
jmp 0x6cb0
jmp 0x6ca9
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Subject::idle(Relay*)
int Subject::idle(Relay *r)
{
    if (_activeSubject == NULL) {
        if (WARNING) {
            std::cout << "-- Warning! Method 'idle' called outside of the subjects environment.\n";
        }
    } else {
        if (r != NULL) {
            if (_activeSubject != r->_home) {
                if (WARNING) {
                    std::cout << "-- Warning! Subject " << _activeSubject->_debugID << " cannot call " << _debugID << "->idle().\n";
                }
            } else {
                return r->_oQueue->empty();
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
leaq 0x1a539(%rip), %rax     # 0x21210
cmpq $0x0, (%rax)
jne 0x6cdf
jmp 0x6d12
cmpq $0x0, -0x18(%rbp)
je 0x6d10
leaq 0x1a523(%rip), %rax     # 0x21210
movq (%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x18(%rcx), %rax
je 0x6cfc
jmp 0x6d0e
movq -0x18(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x7440
movl %eax, -0x4(%rbp)
jmp 0x6d19
jmp 0x6d10
jmp 0x6d12
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Subject::indeg(Relay*)
int Subject::indeg(Relay *r)
{
    if (_activeSubject == NULL) {
        if (WARNING) {
            std::cout << "-- Warning! Method 'idle' called outside of the subjects environment.\n";
        }
    } else {
        if (r != NULL) {
            if (_activeSubject != r->_home) {
                if (WARNING) {
                    std::cout << "-- Warning! Subject " << _activeSubject->_debugID << " cannot call " << _debugID << "->idle().\n";
                }
            } else {
                return r->_iLinks->count();
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
leaq 0x1a4c9(%rip), %rax     # 0x21210
cmpq $0x0, (%rax)
jne 0x6d4f
jmp 0x6d82
cmpq $0x0, -0x18(%rbp)
je 0x6d80
leaq 0x1a4b3(%rip), %rax     # 0x21210
movq (%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x18(%rcx), %rax
je 0x6d6c
jmp 0x6d7e
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x8640
movl %eax, -0x4(%rbp)
jmp 0x6d89
jmp 0x6d80
jmp 0x6d82
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Subject::outdeg(Relay*)
int Subject::outdeg(Relay *r)
{
    if (_activeSubject == NULL) {
        if (WARNING) {
            std::cout << "-- Warning! Method 'idle' called outside of the subjects environment.\n";
        }
    } else {
        if (r != NULL) {
            if (_activeSubject != r->_home) {
                if (WARNING) {
                    std::cout << "-- Warning! Subject " << _activeSubject->_debugID << " cannot call " << _debugID << "->idle().\n";
                }
            } else {
                if (r->_oLink == NULL) {
                    return 0;
                } else {
                    return 1;
                }
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
leaq 0x1a45d(%rip), %rax     # 0x21210
cmpq $0x0, (%rax)
jne 0x6dbb
jmp 0x6df9
cmpq $0x0, -0x18(%rbp)
je 0x6df7
leaq 0x1a447(%rip), %rax     # 0x21210
movq (%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x18(%rcx), %rax
je 0x6dd8
jmp 0x6df5
movq -0x18(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x6dec
movl $0x0, -0x4(%rbp)
jmp 0x6e00
movl $0x1, -0x4(%rbp)
jmp 0x6e00
jmp 0x6df7
jmp 0x6df9
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Relay::Relay(int, Subject*)
Relay::Relay(int type, Subject *s)
{
    _home = s;
    _setup();
    if (_home != NULL) {
        if (type == ROOT) {
            if (_home->_parent != NULL && _home->_parent->_sink != NULL) {
                _oLink = _home->_parent->_sink;
                _oLink->_iLinks->add(this);
                if (DEBUG) {
                    std::cout << "-- Creating parent " << ID << " for subject " << _home->_debugID << ".\n";
                }
            }
        } else {
            if (DEBUG) {
                std::cout << "-- Creating sink " << ID << " for subject " << _home->_debugID << ".\n";
            }
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x20(%rbp)
leaq 0x19dae(%rip), %rax     # 0x20c20
addq $0x10, %rax
movq %rax, (%rdi)
movq -0x18(%rbp), %rax
movq %rax, 0x18(%rdi)
movq (%rdi), %rax
callq *(%rax)
movq -0x20(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x6ee0
cmpl $0x1, -0xc(%rbp)
jne 0x6edc
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0x6eda
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x10(%rax), %rax
cmpq $0x0, 0x20(%rax)
je 0x6eda
movq -0x20(%rbp), %rsi
movq 0x18(%rsi), %rax
movq 0x10(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, 0x28(%rsi)
movq 0x28(%rsi), %rax
movq 0x20(%rax), %rdi
callq 0x6ef0
jmp 0x6ede
jmp 0x6ede
jmp 0x6ee0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: rLinks::add(Relay*)
inline void add(Relay *r) {
        _Link *l;
        int contained;

        if (r == NULL) {
            if (WARNING) {
                std::cout << "-- Warning! Cannot add NULL to list of relay points.\n";
            }
        } else {
            contained = 0;      // r already in list?
            l = first;
            while (l != NULL) {
                if (l->relay == r) {
                    contained = 1;
                }
                l = l->next;
            }
            if (!contained) {   // no: add r to end of list
                l = new _Link(r);
                if (last == NULL) { // list empty
                    first = last = l;
                } else {          // list not empty
                    last->next = l;
                    last = l;
                }
            }
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x6f14
jmp 0x6fd0
movq -0x38(%rbp), %rax
movl $0x0, -0x1c(%rbp)
movq (%rax), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x6f4f
movq -0x18(%rbp), %rax
movq (%rax), %rax
cmpq -0x10(%rbp), %rax
jne 0x6f41
movl $0x1, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x6f26
cmpl $0x0, -0x1c(%rbp)
jne 0x6fce
movl $0x10, %edi
callq 0x31c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rsi
callq 0x7360
jmp 0x6f74
movq -0x38(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rcx, -0x18(%rbp)
cmpq $0x0, 0x8(%rax)
jne 0x6fb4
movq -0x38(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq %rcx, (%rax)
jmp 0x6fcc
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x10, %esi
callq 0x31d0
jmp 0x6fd6
movq -0x38(%rbp), %rax
movq -0x18(%rbp), %rdx
movq 0x8(%rax), %rcx
movq %rdx, 0x8(%rcx)
movq -0x18(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x6fce
jmp 0x6fd0
addq $0x40, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x3330
nop
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Relay::_setup()
void Relay::_setup()
{
    ID = _numRelays;
    _numRelays++;
    if (_numRelays > MAXRELAYS && WARNING) {
        std::cout << "-- Warning! More than " << MAXRELAYS << " relay points.\n";
    }

    _awake = 1;
    _private = 1;
    _base = this;
    _oLink = NULL;
    _oQueue = new _Queue();
    _iLinks = new _rLinks();
    _identities = new _idLinks(NULL);  // dummy element for _identities

    if (_home == NULL) {
        if (WARNING && ID > 0) {
            std::cout << "-- Warning! Relay point not created within active subject.\n";
        }
    } else {
        if (_home->_Relays != NULL) {
            _home->_Relays->add(this);
            _home->_activeRelays->add(this);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq 0x1a205(%rip), %rcx     # 0x21200
movq (%rcx), %rcx
movq %rcx, 0x8(%rax)
leaq 0x1a1f7(%rip), %rax     # 0x21200
movq (%rax), %rcx
addq $0x1, %rcx
leaq 0x1a1e9(%rip), %rax     # 0x21200
movq %rcx, (%rax)
leaq 0x1a1df(%rip), %rax     # 0x21200
cmpq $0x9c40, (%rax)         # imm = 0x9C40
jbe 0x7061
xorl %eax, %eax
testb $0x1, %al
jne 0x7032
jmp 0x7061
movq 0x19f97(%rip), %rdi     # 0x20fd0
leaq 0x101e0(%rip), %rsi     # 0x17220
callq 0x31b0
movq %rax, %rdi
movl $0x9c40, %esi           # imm = 0x9C40
callq 0x3320
movq %rax, %rdi
leaq 0x101db(%rip), %rsi     # 0x17237
callq 0x31b0
movq -0x20(%rbp), %rax
movl $0x1, 0x10(%rax)
movl $0x1, 0x14(%rax)
movq %rax, 0x30(%rax)
movq $0x0, 0x28(%rax)
movl $0x10, %edi
callq 0x31c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x28(%rbp)
callq 0x7390
jmp 0x709a
movq -0x20(%rbp), %rax
movq -0x28(%rbp), %rcx
movq %rcx, 0x38(%rax)
movl $0x10, %edi
callq 0x31c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x30(%rbp)
callq 0x6e10
jmp 0x70c1
movq -0x20(%rbp), %rax
movq -0x30(%rbp), %rcx
movq %rcx, 0x20(%rax)
movl $0x18, %edi
callq 0x31c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x38(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x73b0
jmp 0x70ec
movq -0x20(%rbp), %rax
movq -0x38(%rbp), %rcx
movq %rcx, 0x40(%rax)
cmpq $0x0, 0x18(%rax)
jne 0x7158
jmp 0x718b
movq -0x28(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
movl $0x10, %esi
callq 0x31d0
jmp 0x7191
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
movl $0x10, %esi
callq 0x31d0
jmp 0x7191
movq -0x38(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
movl $0x18, %esi
callq 0x31d0
jmp 0x7191
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
cmpq $0x0, 0x30(%rax)
je 0x7189
movq -0x20(%rbp), %rsi
movq 0x18(%rsi), %rax
movq 0x30(%rax), %rdi
callq 0x6ef0
movq -0x20(%rbp), %rsi
movq 0x18(%rsi), %rax
movq 0x38(%rax), %rdi
callq 0x6ef0
jmp 0x718b
addq $0x40, %rsp
popq %rbp
retq
movq -0x10(%rbp), %rdi
callq 0x3330
nopw (%rax,%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Relay::_handle(Subject*, _Message*)
int Relay::_handle(Subject *s, _Message *m)
{
    if (s != _home) {
        if (WARNING) {
            std::cout << "-- Warning! Subject " << s->_debugID << " cannot call " << ID << "->call().\n";
        }
        delete m;
    } else {
        if (m != NULL) {  // message well-defined?
            if (DEBUG) {
                std::cout << "-- Message " << m->debugID << " stored in relay " << ID << ".\n";
            }
            m->source = ID;
            if (m->ObjPtr != NULL) {
                m->ObjPtr->_owner = NULL;    // object in transit
            }
            _oQueue->enqueue(m);
        }
        return 1;
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, -0x28(%rbp)
movq -0x18(%rbp), %rax
cmpq 0x18(%rcx), %rax
je 0x71e4
movq -0x20(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0x71e2
movq -0x30(%rbp), %rdi
movl $0x38, %esi
callq 0x31d0
jmp 0x7230
cmpq $0x0, -0x20(%rbp)
je 0x7227
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x20(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x7216
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq $0x0, 0x8(%rax)
movq -0x28(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x73e0
movl $0x1, -0x4(%rbp)
jmp 0x7237
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Relay::_process()
int Relay::_process()
{
    _Message *m;

    if (_oLink != NULL) { // relay has outgoing link?
        if (_oLink == _home->_sink) {  // outgoing link to home?
            while (!_oQueue->empty()) {  // queue has messages?
                m = _oQueue->dequeue();
                m->sink = ID;      // set sink of message to current relay
                _oLink->_oQueue->enqueue(m);
            }
            if (DEBUG) {
                std::cout << "-- All messages in " << ID << " to " << _home->_sink->ID << ".\n";
            }
        } else {
            m = _oQueue->dequeue();
            if (m != NULL) {   // queue has message?
                _oLink->_oQueue->enqueue(m); // forward message along outgoing link
                if (DEBUG) {
                    std::cout << "-- Message " << m->debugID << "  => " << _oLink->ID << ".\n";
                }
                return 1;        // relay busy
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, 0x28(%rax)
je 0x7301
movq -0x20(%rbp), %rcx
movq 0x28(%rcx), %rax
movq 0x18(%rcx), %rcx
cmpq 0x20(%rcx), %rax
jne 0x72c7
jmp 0x7273
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x7440
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x728e
jmp 0x72c5
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x7460
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, -0x18(%rbp)
movq 0x8(%rax), %rdx
movq -0x18(%rbp), %rcx
movq %rdx, 0x10(%rcx)
movq 0x28(%rax), %rax
movq 0x38(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x73e0
jmp 0x7273
jmp 0x72ff
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x7460
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x72fd
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x38(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x73e0
movl $0x1, -0x4(%rbp)
jmp 0x7308
jmp 0x72ff
jmp 0x7301
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Queue::enqueue(_Message*)
inline void enqueue(_Message *m) {
        if (m == NULL) {
            if (WARNING) {
                std::cout << "-- Warning! NULL message cannot be added to queue.\n";
            }
        } else {
            if (last == NULL) { // contains no message
                first = last = m;
            } else {         // contains at least one message
                last->next = m;
                last = m;
            }
            m->next = NULL;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x73fd
jmp 0x743d
movq -0x18(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x7419
movq -0x18(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq %rcx, (%rax)
jmp 0x7431
movq -0x18(%rbp), %rax
movq -0x10(%rbp), %rdx
movq 0x8(%rax), %rcx
movq %rdx, 0x30(%rcx)
movq -0x10(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x30(%rax)
popq %rbp
retq
nop
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Queue::dequeue()
inline _Message *dequeue() {
        _Message *m;

        if (first == NULL) { // contains no message
            m = NULL;
        } else {          // contains at least one message
            m = first;
            first = first->next;
            if (first == NULL) {
                last = NULL;    // no further message
            }
            m->next = NULL;
        }
        return m;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, (%rax)
jne 0x7480
movq $0x0, -0x10(%rbp)
jmp 0x74b3
movq -0x18(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x10(%rbp)
movq (%rax), %rcx
movq 0x30(%rcx), %rcx
movq %rcx, (%rax)
cmpq $0x0, (%rax)
jne 0x74a7
movq -0x18(%rbp), %rax
movq $0x0, 0x8(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x30(%rax)
movq -0x10(%rbp), %rax
popq %rbp
retq
nopl (%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Relay::~Relay()
Relay::~Relay()
{
    _idLinks *idl;

    if (DEBUG) {
        std::cout << "-- Relay " << ID << " deleted.\n";
    }
    if (_oLink != NULL) {
        _oLink->_iLinks->remove(this);    // cut outgoing link
    }
    delete _oQueue;                  // delete remaining messages
    if (_iLinks != NULL) {
        _iLinks->halt();               // cut all incoming links
        delete _iLinks;
    }
    if (_home != NULL && _home->_Relays != NULL) {
        _home->_Relays->remove(this);
        _home->_activeRelays->remove(this);
    }
    while (_identities != NULL) {
        idl = _identities;
        if (_identities->id != NULL) {
            _identities->id->_source = NULL;
        }
        _identities = _identities->next;
        delete idl;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
leaq 0x19745(%rip), %rcx     # 0x20c20
addq $0x10, %rcx
movq %rcx, (%rax)
cmpq $0x0, 0x28(%rax)
je 0x74fe
movq -0x18(%rbp), %rsi
movq 0x28(%rsi), %rax
movq 0x20(%rax), %rdi
callq 0x7630
jmp 0x74fc
jmp 0x74fe
movq -0x18(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
je 0x7527
movq -0x20(%rbp), %rdi
callq 0x7760
movq -0x20(%rbp), %rdi
movl $0x10, %esi
callq 0x31d0
movq -0x18(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x756c
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x77d0
jmp 0x7541
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
je 0x756a
movq -0x28(%rbp), %rdi
callq 0x7810
movq -0x28(%rbp), %rdi
movl $0x10, %esi
callq 0x31d0
jmp 0x756c
movq -0x18(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x75ae
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
cmpq $0x0, 0x30(%rax)
je 0x75ae
movq -0x18(%rbp), %rsi
movq 0x18(%rsi), %rax
movq 0x30(%rax), %rdi
callq 0x7630
jmp 0x7599
movq -0x18(%rbp), %rsi
movq 0x18(%rsi), %rax
movq 0x38(%rax), %rdi
callq 0x7630
jmp 0x75ac
jmp 0x75ae
jmp 0x75b0
movq -0x18(%rbp), %rax
cmpq $0x0, 0x40(%rax)
je 0x7614
movq -0x18(%rbp), %rax
movq 0x40(%rax), %rcx
movq %rcx, -0x10(%rbp)
movq 0x40(%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0x75e6
movq -0x18(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x10(%rax), %rax
movq $0x0, 0x10(%rax)
movq -0x18(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rcx
movq %rcx, 0x40(%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0x7612
movq -0x30(%rbp), %rdi
movl $0x18, %esi
callq 0x31d0
jmp 0x75b0
addq $0x30, %rsp
popq %rbp
retq
movq %rax, %rdi
callq 0x6030
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: rLinks::remove(Relay*)
inline void remove(Relay *r) {
        _Link *l, *tl;

        if (first != NULL) { // list non-empty
            l = first;
            while (l != NULL && l->relay == r) {
                tl = l;
                l = l->next;
                delete tl;                 // remove all r's in front of list
            }
            first = l;                   // l==NULL or l->relay!=r
            if (l == NULL) {
                last = l;    // l==NULL: done
            } else {                     // l->relay!=r: continue with l->next
                while (l->next != NULL) {
                    if (l->next->relay == r) {
                        tl = l->next;
                        l->next = l->next->next;
                        delete tl;
                    } else {
                        l = l->next;
                    }
                }
                last = l;                  // l points to (new) last element
            }
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, (%rax)
je 0x774d
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x18(%rbp)
movb %al, -0x29(%rbp)
je 0x767a
movq -0x18(%rbp), %rax
movq (%rax), %rax
cmpq -0x10(%rbp), %rax
sete %al
movb %al, -0x29(%rbp)
movb -0x29(%rbp), %al
testb $0x1, %al
jne 0x7683
jmp 0x76b5
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
je 0x76b3
movq -0x38(%rbp), %rdi
movl $0x10, %esi
callq 0x31d0
jmp 0x765d
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, (%rax)
cmpq $0x0, -0x18(%rbp)
jne 0x76d5
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x774b
jmp 0x76d7
movq -0x18(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x773f
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
cmpq -0x10(%rbp), %rax
jne 0x7731
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x20(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
je 0x772f
movq -0x40(%rbp), %rdi
movl $0x10, %esi
callq 0x31d0
jmp 0x773d
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x76d7
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x774d
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: Queue::~_Queue()
inline ~_Queue() {
        _Message *m;

        while (first != NULL) {
            m = first;
            first = first->next;
            delete m;
        }
        last = NULL;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
je 0x77b1
movq -0x18(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x10(%rbp)
movq (%rax), %rcx
movq 0x30(%rcx), %rcx
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
je 0x77af
movq -0x20(%rbp), %rdi
movl $0x38, %esi
callq 0x31d0
jmp 0x7774
movq -0x18(%rbp), %rax
movq $0x0, 0x8(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: rLinks::halt()
inline void halt() {
        _Link *l;

        l = first;
        while (l != NULL) {
            l->relay->_oLink = NULL; // deactivate links to relay
            l = l->next;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x7807
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq $0x0, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x77e3
popq %rbp
retq
nopl (%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: rLinks::~_rLinks()
inline ~_rLinks() {
        _Link *l;

        l = first;
        while (first != NULL) {
            first = first->next;
            delete l;
            l = first;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq (%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
je 0x786c
movq -0x18(%rbp), %rax
movq (%rax), %rcx
movq 0x8(%rcx), %rcx
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
je 0x785f
movq -0x20(%rbp), %rdi
movl $0x10, %esi
callq 0x31d0
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x782b
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: 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 %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq 0x18ba5(%rip), %rcx     # 0x20ba0
addq $0x10, %rcx
movq %rcx, (%rax)
cmpq $0x0, 0x18(%rax)
je 0x8079
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
je 0x8032
movq -0x28(%rbp), %rdi
callq 0x7fe0
movq -0x28(%rbp), %rdi
movl $0x60, %esi
callq 0x31d0
movq -0x20(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x8074
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, 0x40(%rax)
je 0x8074
movq -0x20(%rbp), %rsi
movq 0x10(%rsi), %rax
movq 0x40(%rax), %rdi
callq 0x8180
jmp 0x805f
movq -0x20(%rbp), %rsi
movq 0x10(%rsi), %rax
movq 0x48(%rax), %rdi
callq 0x8180
jmp 0x8072
jmp 0x8074
jmp 0x8166
movq -0x20(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x8164
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rcx
movq %rcx, -0x10(%rbp)
movq $0x0, 0x30(%rax)
movq -0x10(%rbp), %rdi
callq 0x82b0
jmp 0x80a7
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0x80cc
movq -0x30(%rbp), %rdi
callq 0x7810
movq -0x30(%rbp), %rdi
movl $0x10, %esi
callq 0x31d0
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
je 0x80f5
movq -0x38(%rbp), %rdi
callq 0x7810
movq -0x38(%rbp), %rdi
movl $0x10, %esi
callq 0x31d0
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rcx
movq %rcx, -0x18(%rbp)
movq $0x0, 0x40(%rax)
movq -0x18(%rbp), %rdi
callq 0x82f0
jmp 0x8114
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
je 0x8139
movq -0x40(%rbp), %rdi
callq 0x8330
movq -0x40(%rbp), %rdi
movl $0x10, %esi
callq 0x31d0
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, %rax
je 0x8162
movq -0x48(%rbp), %rdi
callq 0x8330
movq -0x48(%rbp), %rdi
movl $0x10, %esi
callq 0x31d0
jmp 0x8164
jmp 0x8166
addq $0x50, %rsp
popq %rbp
retq
movq %rax, %rdi
callq 0x6030
nopw %cs:(%rax,%rax)
nop
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: sLinks::remove(Subject*)
inline void remove(Subject *s) {
        _sLink *l, *tl;

        if (first != NULL) { // list non-empty
            l = first;
            while (l != NULL && l->subject == s) {
                tl = l;
                l = l->next;
                delete tl;                 // remove all s's in front of list
            }
            first = l;                   // l==NULL or l->subject!=s
            if (l == NULL) {
                last = l;    // l==NULL: done
            } else {                     // l->subject!=s: continue with l->next
                while (l->next != NULL) {
                    if (l->next->subject == s) {
                        tl = l->next;
                        l->next = l->next->next;
                        delete tl;
                    } else {
                        l = l->next;
                    }
                }
                last = l;                  // l points to (new) last element
            }
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, (%rax)
je 0x829d
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x18(%rbp)
movb %al, -0x29(%rbp)
je 0x81ca
movq -0x18(%rbp), %rax
movq (%rax), %rax
cmpq -0x10(%rbp), %rax
sete %al
movb %al, -0x29(%rbp)
movb -0x29(%rbp), %al
testb $0x1, %al
jne 0x81d3
jmp 0x8205
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
je 0x8203
movq -0x38(%rbp), %rdi
movl $0x10, %esi
callq 0x31d0
jmp 0x81ad
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, (%rax)
cmpq $0x0, -0x18(%rbp)
jne 0x8225
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x829b
jmp 0x8227
movq -0x18(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x828f
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
cmpq -0x10(%rbp), %rax
jne 0x8281
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x20(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
je 0x827f
movq -0x40(%rbp), %rdi
movl $0x10, %esi
callq 0x31d0
jmp 0x828d
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x8227
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x829d
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: rLinks::deleteRelays()
inline void deleteRelays() {
        _Link *l;

        l = first;
        while (l != NULL) {
            l->relay->_destruct();      // remove all relay points
            l = l->next;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x82e9
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x82c7
addq $0x10, %rsp
popq %rbp
retq
nop
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: sLinks::deleteSubjects()
inline void deleteSubjects() {
        _sLink *l;

        l = first;
        while (l != NULL) {
            l->subject->_destruct();      // remove all subjects
            l = l->next;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x8329
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x8307
addq $0x10, %rsp
popq %rbp
retq
nop
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: sLinks::~_sLinks()
inline ~_sLinks() {
        _sLink *l;

        l = first;
        while (first != NULL) {
            first = first->next;
            delete l;
            l = first;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq (%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
je 0x838c
movq -0x18(%rbp), %rax
movq (%rax), %rcx
movq 0x8(%rcx), %rcx
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
je 0x837f
movq -0x20(%rbp), %rdi
movl $0x10, %esi
callq 0x31d0
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x834b
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: sLinks::process()
inline int process() {
        _sLink *l;
        int busy;

        l = first;
        busy = 0;
        while (l != NULL) {
            busy = busy | l->subject->_process();
            l = l->next;
        }
        return busy;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x83f0
movl -0x14(%rbp), %eax
movl %eax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movl %eax, %ecx
movl -0x18(%rbp), %eax
orl %ecx, %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x83be
movl -0x14(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: kiudee[P]VAHD-Projekt/./Subjects1-6.h
// Function: rLinks::process()
inline int process() {
        _Link *l;
        int busy;

        l = first;
        busy = 0;
        while (l != NULL) {
            busy = busy | l->relay->_process();
            l = l->next;
        }
        return busy;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x8450
movl -0x14(%rbp), %eax
movl %eax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movl %eax, %ecx
movl -0x18(%rbp), %eax
orl %ecx, %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x841e
movl -0x14(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)