// File: /workspace/github_cpp_makefile_star2_O3/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 0x615a
cmpl $0x0, 0x1c(%r14)
je 0x6202
leaq 0x70(%rsp), %rdi
movsd 0x20(%r14), %xmm0
callq 0x22c0
jmp 0x647f
cvttsd2si 0x20(%r14), %eax
cmpl $0x3, %eax
ja 0x647f
leaq 0x5194(%rip), %rcx      # 0xb304
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x70(%rsp), %r15
leaq 0x5284(%rip), %rsi      # 0xb409
movl $0x1, %edx
movq %r15, %rdi
callq 0x2210
movq (%r14), %rsi
leaq 0x20(%rsp), %rdi
movl %ebp, %edx
callq 0x60fa
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
movq %rax, %r15
leaq 0x523a(%rip), %rsi      # 0xb3f7
movl $0x5, %edx
movq %rax, %rdi
callq 0x2210
movq 0x8(%r14), %rsi
movq %rsp, %rdi
movl %ebp, %edx
callq 0x60fa
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
leaq 0x520d(%rip), %rsi      # 0xb3fd
movl $0x1, %edx
movq %rax, %rdi
callq 0x2210
jmp 0x63cf
cvttsd2si 0x20(%r14), %r12d
leaq 0x70(%rsp), %r14
cmpl $0x4, %r12d
ja 0x6441
movl $0x3, %r15d
leaq 0x50cc(%rip), %rax      # 0xb2f0
movslq (%rax,%r12,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x51a0(%rip), %rsi      # 0xb3d4
jmp 0x6474
leaq 0x70(%rsp), %r15
leaq 0x51c4(%rip), %rsi      # 0xb409
movl $0x1, %edx
movq %r15, %rdi
callq 0x2210
movq (%r14), %rsi
leaq 0x20(%rsp), %rdi
movl %ebp, %edx
callq 0x60fa
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
movq %rax, %r15
leaq 0x5188(%rip), %rsi      # 0xb405
movl $0x5, %edx
movq %rax, %rdi
callq 0x2210
movq 0x8(%r14), %rsi
movq %rsp, %rdi
movl %ebp, %edx
callq 0x60fa
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
leaq 0x514d(%rip), %rsi      # 0xb3fd
movl $0x1, %edx
movq %rax, %rdi
callq 0x2210
jmp 0x63cf
leaq 0x70(%rsp), %r15
leaq 0x513b(%rip), %rsi      # 0xb409
movl $0x1, %edx
movq %r15, %rdi
callq 0x2210
movq (%r14), %rsi
leaq 0x20(%rsp), %rdi
movl %ebp, %edx
callq 0x60fa
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
movq %rax, %r15
leaq 0x5105(%rip), %rsi      # 0xb40b
movl $0x5, %edx
movq %rax, %rdi
callq 0x2210
movq 0x8(%r14), %rsi
movq %rsp, %rdi
movl %ebp, %edx
callq 0x60fa
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
leaq 0x50c4(%rip), %rsi      # 0xb3fd
movl $0x1, %edx
movq %rax, %rdi
callq 0x2210
jmp 0x63cf
leaq 0x70(%rsp), %r15
leaq 0x50b2(%rip), %rsi      # 0xb409
movl $0x1, %edx
movq %r15, %rdi
callq 0x2210
movq (%r14), %rsi
leaq 0x20(%rsp), %rdi
movl %ebp, %edx
callq 0x60fa
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
movq %rax, %r15
leaq 0x5070(%rip), %rsi      # 0xb3ff
movl $0x5, %edx
movq %rax, %rdi
callq 0x2210
movq 0x8(%r14), %rsi
movq %rsp, %rdi
movl %ebp, %edx
callq 0x60fa
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x2210
leaq 0x503b(%rip), %rsi      # 0xb3fd
movl $0x1, %edx
movq %rax, %rdi
callq 0x2210
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x63ea
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x647f
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x21f0
jmp 0x647f
movl $0xb, %r15d
leaq 0x4fd3(%rip), %rsi      # 0xb3eb
jmp 0x6474
movl $0x6, %r15d
leaq 0x4fb5(%rip), %rsi      # 0xb3dc
jmp 0x6474
movl $0x7, %r15d
leaq 0x4fad(%rip), %rsi      # 0xb3e3
jmp 0x6474
leaq 0x4f99(%rip), %rsi      # 0xb3d8
jmp 0x6474
leaq 0x4f89(%rip), %rsi      # 0xb3d1
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 0x4f74(%rip), %rsi      # 0xb3e8
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 0x64a3
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x7b16(%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 0x6512
jmp 0x6512
jmp 0x6512
jmp 0x6512
jmp 0x6534
jmp 0x6534
jmp 0x6534
jmp 0x6534
jmp 0x64ec
jmp 0x64ec
jmp 0x64ec
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6515
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21f0
jmp 0x6515
jmp 0x6512
jmp 0x6512
jmp 0x6512
movq %rax, %rbx
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6537
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x21f0
jmp 0x6537
jmp 0x6534
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r13, %rdi
je 0x654e
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x7a6b(%rip), %rsi      # 0xdfc0
leaq 0x60(%rsp), %rdi
callq 0x2120
leaq 0xe0(%rsp), %rdi
callq 0x2090
movq %rbx, %rdi
callq 0x2300