// File: /workspace/github_cpp_makefile_star2_O1/pgrouchy[P]NoiseWorld/mathNet.cpp
// Function: Tree::produceMyEqn[abi:cxx11](int)
string Tree::produceMyEqn(int total_num_trees) {
    stringstream ss;
    string myString;

    if (this->isTerminal) {
        if (this->isConstant) {
            ss << myVal;
        } else {
            int counter = (int)myVal;
            if (counter == 0) {
                ss << "x^t";
            } else if (counter == 1) {
                ss << "y^t";
            } else if (counter == 2) {
                ss << "w_in^t";
            } else if (counter == 3) {
                ss << "theta^t";
            } else if (counter == 4) {
                ss << "omega_out^t";
            } else {
                ss << "v_" << (counter - 4) << "^t";
            }
        }
    } else {
        switch ((int)myVal) {
            case ADD: {
                ss << "(" << this->leftTree->produceMyEqn(total_num_trees) << ") + (" << this->rightTree->produceMyEqn(total_num_trees) << ")";
                break;
            }
            case SUBTRACT: {
                ss << "(" << this->leftTree->produceMyEqn(total_num_trees) << ") - (" << this->rightTree->produceMyEqn(total_num_trees) << ")";
                break;
            }
            case MULTIPLY: {
                ss << "(" << this->leftTree->produceMyEqn(total_num_trees) << ") * (" << this->rightTree->produceMyEqn(total_num_trees) << ")";
                break;
            }
            case DIVIDE: {
                ss << "(" << this->leftTree->produceMyEqn(total_num_trees) << ") / (" << this->rightTree->produceMyEqn(total_num_trees) << ")";
                break;
            }
        }
    }

    return ss.str();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1e8, %rsp            # imm = 0x1E8
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x60(%rsp), %rdi
callq 0x20f0
leaq 0x50(%rsp), %r13
movq %r13, -0x10(%r13)
movq $0x0, -0x8(%r13)
movb $0x0, (%r13)
cmpl $0x0, 0x18(%r14)
je 0x612c
cmpl $0x0, 0x1c(%r14)
je 0x61d4
leaq 0x70(%rsp), %rdi
movsd 0x20(%r14), %xmm0
callq 0x22c0
jmp 0x6451
cvttsd2si 0x20(%r14), %eax
cmpl $0x3, %eax
ja 0x6451
leaq 0x51b2(%rip), %rcx      # 0xb2f4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x70(%rsp), %r15
leaq 0x52a2(%rip), %rsi      # 0xb3f9
movl $0x1, %edx
movq %r15, %rdi
callq 0x2210
movq (%r14), %rsi
leaq 0x20(%rsp), %rdi
movl %ebp, %edx
callq 0x60cc
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
movq %rax, %r15
leaq 0x5258(%rip), %rsi      # 0xb3e7
movl $0x5, %edx
movq %rax, %rdi
callq 0x2210
movq 0x8(%r14), %rsi
movq %rsp, %rdi
movl %ebp, %edx
callq 0x60cc
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
leaq 0x522b(%rip), %rsi      # 0xb3ed
movl $0x1, %edx
movq %rax, %rdi
callq 0x2210
jmp 0x63a1
cvttsd2si 0x20(%r14), %r12d
leaq 0x70(%rsp), %r14
cmpl $0x4, %r12d
ja 0x6413
movl $0x3, %r15d
leaq 0x50ea(%rip), %rax      # 0xb2e0
movslq (%rax,%r12,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x51be(%rip), %rsi      # 0xb3c4
jmp 0x6446
leaq 0x70(%rsp), %r15
leaq 0x51e2(%rip), %rsi      # 0xb3f9
movl $0x1, %edx
movq %r15, %rdi
callq 0x2210
movq (%r14), %rsi
leaq 0x20(%rsp), %rdi
movl %ebp, %edx
callq 0x60cc
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
movq %rax, %r15
leaq 0x51a6(%rip), %rsi      # 0xb3f5
movl $0x5, %edx
movq %rax, %rdi
callq 0x2210
movq 0x8(%r14), %rsi
movq %rsp, %rdi
movl %ebp, %edx
callq 0x60cc
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
leaq 0x516b(%rip), %rsi      # 0xb3ed
movl $0x1, %edx
movq %rax, %rdi
callq 0x2210
jmp 0x63a1
leaq 0x70(%rsp), %r15
leaq 0x5159(%rip), %rsi      # 0xb3f9
movl $0x1, %edx
movq %r15, %rdi
callq 0x2210
movq (%r14), %rsi
leaq 0x20(%rsp), %rdi
movl %ebp, %edx
callq 0x60cc
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
movq %rax, %r15
leaq 0x5123(%rip), %rsi      # 0xb3fb
movl $0x5, %edx
movq %rax, %rdi
callq 0x2210
movq 0x8(%r14), %rsi
movq %rsp, %rdi
movl %ebp, %edx
callq 0x60cc
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
leaq 0x50e2(%rip), %rsi      # 0xb3ed
movl $0x1, %edx
movq %rax, %rdi
callq 0x2210
jmp 0x63a1
leaq 0x70(%rsp), %r15
leaq 0x50d0(%rip), %rsi      # 0xb3f9
movl $0x1, %edx
movq %r15, %rdi
callq 0x2210
movq (%r14), %rsi
leaq 0x20(%rsp), %rdi
movl %ebp, %edx
callq 0x60cc
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
movq %rax, %r15
leaq 0x508e(%rip), %rsi      # 0xb3ef
movl $0x5, %edx
movq %rax, %rdi
callq 0x2210
movq 0x8(%r14), %rsi
movq %rsp, %rdi
movl %ebp, %edx
callq 0x60cc
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
leaq 0x5059(%rip), %rsi      # 0xb3ed
movl $0x1, %edx
movq %rax, %rdi
callq 0x2210
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x63bc
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6451
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x21f0
jmp 0x6451
movl $0xb, %r15d
leaq 0x4ff1(%rip), %rsi      # 0xb3db
jmp 0x6446
movl $0x6, %r15d
leaq 0x4fd3(%rip), %rsi      # 0xb3cc
jmp 0x6446
movl $0x7, %r15d
leaq 0x4fcb(%rip), %rsi      # 0xb3d3
jmp 0x6446
leaq 0x4fb7(%rip), %rsi      # 0xb3c8
jmp 0x6446
leaq 0x4fa7(%rip), %rsi      # 0xb3c1
movl $0x2, %r15d
movl $0x2, %edx
movq %r14, %rdi
callq 0x2210
addl $-0x4, %r12d
movq %r14, %rdi
movl %r12d, %esi
callq 0x22f0
movq %rax, %r14
leaq 0x4f92(%rip), %rsi      # 0xb3d8
movq %r14, %rdi
movq %r15, %rdx
callq 0x2210
leaq 0x78(%rsp), %rsi
movq %rbx, %rdi
callq 0x22b0
movq 0x40(%rsp), %rdi
cmpq %r13, %rdi
je 0x6475
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x7b44(%rip), %rsi      # 0xdfc0
leaq 0x60(%rsp), %rdi
callq 0x2120
leaq 0xe0(%rsp), %rdi
callq 0x2090
movq %rbx, %rax
addq $0x1e8, %rsp            # imm = 0x1E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x64e4
jmp 0x64e4
jmp 0x64e4
jmp 0x64e4
jmp 0x6506
jmp 0x6506
jmp 0x6506
jmp 0x6506
jmp 0x64be
jmp 0x64be
jmp 0x64be
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x64e7
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
jmp 0x64e7
jmp 0x64e4
jmp 0x64e4
jmp 0x64e4
movq %rax, %rbx
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6509
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x21f0
jmp 0x6509
jmp 0x6506
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r13, %rdi
je 0x6520
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x7a99(%rip), %rsi      # 0xdfc0
leaq 0x60(%rsp), %rdi
callq 0x2120
leaq 0xe0(%rsp), %rdi
callq 0x2090
movq %rbx, %rdi
callq 0x2300