// File: /workspace/github_cpp_makefile_star2_O2/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 %rbx
subq $0x1e8, %rsp            # imm = 0x1E8
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x60(%rsp), %rdi
callq 0x20f0
leaq 0x50(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
cmpl $0x0, 0x18(%r14)
je 0x519d
cmpl $0x0, 0x1c(%r14)
je 0x522b
leaq 0x70(%rsp), %rdi
movsd 0x20(%r14), %xmm0
callq 0x22d0
jmp 0x5403
cvttsd2si 0x20(%r14), %eax
cmpl $0x3, %eax
ja 0x5403
leaq 0x50f1(%rip), %rcx      # 0xa2a4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x70(%rsp), %rdi
leaq 0x51e1(%rip), %rsi      # 0xa3a9
callq 0x21d0
movq %rax, %r15
movq (%r14), %rsi
leaq 0x20(%rsp), %rdi
movl %ebp, %edx
callq 0x5146
leaq 0x20(%rsp), %rsi
movq %r15, %rdi
callq 0x21a0
leaq 0x51a4(%rip), %rsi      # 0xa397
movq %rax, %rdi
callq 0x21d0
movq %rax, %r15
movq 0x8(%r14), %rsi
movq %rsp, %rdi
movl %ebp, %edx
callq 0x5146
movq %rsp, %rsi
movq %r15, %rdi
callq 0x21a0
leaq 0x517f(%rip), %rsi      # 0xa39d
movq %rax, %rdi
callq 0x21d0
jmp 0x53a1
cvttsd2si 0x20(%r14), %r14d
leaq 0x70(%rsp), %rdi
cmpl $0x4, %r14d
ja 0x53d9
leaq 0x5049(%rip), %rax      # 0xa290
movslq (%rax,%r14,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x511d(%rip), %rsi      # 0xa374
jmp 0x53fe
leaq 0x70(%rsp), %rdi
leaq 0x5141(%rip), %rsi      # 0xa3a9
callq 0x21d0
movq %rax, %r15
movq (%r14), %rsi
leaq 0x20(%rsp), %rdi
movl %ebp, %edx
callq 0x5146
leaq 0x20(%rsp), %rsi
movq %r15, %rdi
callq 0x21a0
leaq 0x5112(%rip), %rsi      # 0xa3a5
movq %rax, %rdi
callq 0x21d0
movq %rax, %r15
movq 0x8(%r14), %rsi
movq %rsp, %rdi
movl %ebp, %edx
callq 0x5146
movq %rsp, %rsi
movq %r15, %rdi
callq 0x21a0
leaq 0x50df(%rip), %rsi      # 0xa39d
movq %rax, %rdi
callq 0x21d0
jmp 0x53a1
leaq 0x70(%rsp), %rdi
leaq 0x50d2(%rip), %rsi      # 0xa3a9
callq 0x21d0
movq %rax, %r15
movq (%r14), %rsi
leaq 0x20(%rsp), %rdi
movl %ebp, %edx
callq 0x5146
leaq 0x20(%rsp), %rsi
movq %r15, %rdi
callq 0x21a0
leaq 0x50a9(%rip), %rsi      # 0xa3ab
movq %rax, %rdi
callq 0x21d0
movq %rax, %r15
movq 0x8(%r14), %rsi
movq %rsp, %rdi
movl %ebp, %edx
callq 0x5146
movq %rsp, %rsi
movq %r15, %rdi
callq 0x21a0
leaq 0x5070(%rip), %rsi      # 0xa39d
movq %rax, %rdi
callq 0x21d0
jmp 0x53a1
leaq 0x70(%rsp), %rdi
leaq 0x5066(%rip), %rsi      # 0xa3a9
callq 0x21d0
movq %rax, %r15
movq (%r14), %rsi
leaq 0x20(%rsp), %rdi
movl %ebp, %edx
callq 0x5146
leaq 0x20(%rsp), %rsi
movq %r15, %rdi
callq 0x21a0
leaq 0x5031(%rip), %rsi      # 0xa39f
movq %rax, %rdi
callq 0x21d0
movq %rax, %r15
movq 0x8(%r14), %rsi
movq %rsp, %rdi
movl %ebp, %edx
callq 0x5146
movq %rsp, %rsi
movq %r15, %rdi
callq 0x21a0
leaq 0x5004(%rip), %rsi      # 0xa39d
movq %rax, %rdi
callq 0x21d0
movq %rsp, %rdi
callq 0x20b0
leaq 0x20(%rsp), %rdi
callq 0x20b0
jmp 0x5403
leaq 0x4fcf(%rip), %rsi      # 0xa38b
jmp 0x53fe
leaq 0x4fb7(%rip), %rsi      # 0xa37c
jmp 0x53fe
leaq 0x4fb5(%rip), %rsi      # 0xa383
jmp 0x53fe
leaq 0x4fa1(%rip), %rsi      # 0xa378
jmp 0x53fe
leaq 0x4f91(%rip), %rsi      # 0xa371
callq 0x21d0
addl $-0x4, %r14d
movq %rax, %rdi
movl %r14d, %esi
callq 0x2300
movq %rax, %rdi
leaq 0x4f8a(%rip), %rsi      # 0xa388
callq 0x21d0
leaq 0x78(%rsp), %rsi
movq %rbx, %rdi
callq 0x22c0
leaq 0x40(%rsp), %rdi
callq 0x20b0
leaq 0x60(%rsp), %rdi
callq 0x2120
movq %rbx, %rax
addq $0x1e8, %rsp            # imm = 0x1E8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x545e
jmp 0x545e
jmp 0x545e
jmp 0x545e
jmp 0x546f
jmp 0x546f
jmp 0x546f
jmp 0x546f
jmp 0x544b
jmp 0x544b
jmp 0x544b
movq %rax, %rbx
movq %rsp, %rdi
callq 0x20b0
jmp 0x5461
jmp 0x545e
jmp 0x545e
jmp 0x545e
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x20b0
jmp 0x5472
jmp 0x546f
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x20b0
leaq 0x60(%rsp), %rdi
callq 0x2120
movq %rbx, %rdi
callq 0x2310