// File: /workspace/github_cpp_makefile_star2_O2/archit-p[P]bulletproofs-demo/src/prover.cpp
// Function: Prover::set_t_coefficients()
bool Prover::set_t_coefficients()
{
    if(x == -1 || z == -1 || y == -1) {
        cout << "Set the x and z values before calling";
        return false;
    }
    vector <int> prod = haderson_product(vector_sum(Prover::ar, k_product_vector(get_k_vector(1, ar.size()), z)), get_k_vector(y, ar.size()));
    prod = vector_sum(prod, k_product_vector(get_k_vector(2, ar.size()), (int)pow(z, 2)));
    vector <int> diff = vector_diff(al, k_product_vector(get_k_vector(1, n), z));
    t[0] = inner_product(prod, diff);
    vector <int> haderson_y = haderson_product(get_k_vector(y, ar.size()), sr);
    t[1] = inner_product(diff, haderson_y) + inner_product(sl, prod);
    t[2] = inner_product(sl, sr);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x240, %rsp            # imm = 0x240
cmpl $-0x1, 0xc(%rdi)
je 0x29f8
movq %rdi, %r14
cmpl $-0x1, 0x14(%rdi)
je 0x29f8
cmpl $-0x1, 0x10(%r14)
jne 0x2a1e
movq 0x45d9(%rip), %rdi      # 0x6fd8
leaq 0x1625(%rip), %rsi      # 0x402b
callq 0x10e0
xorl %eax, %eax
addq $0x240, %rsp            # imm = 0x240
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
leaq 0x30(%r14), %rsi
leaq 0x228(%rsp), %rbx
movq %rbx, %rdi
callq 0x2f60
movq 0x38(%r14), %rdx
subq 0x30(%r14), %rdx
shrq $0x2, %rdx
leaq 0x1c8(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x187d
movl 0x14(%r14), %edx
leaq 0x1e0(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x1959
leaq 0x1f8(%rsp), %rdi
leaq 0x228(%rsp), %rsi
leaq 0x1e0(%rsp), %rdx
callq 0x1a6f
movl 0x10(%r14), %esi
movq 0x38(%r14), %rdx
subq 0x30(%r14), %rdx
shrq $0x2, %rdx
leaq 0x1b0(%rsp), %rdi
callq 0x187d
leaq 0x18(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
leaq 0x1b0(%rsp), %rdx
callq 0x13da
leaq 0x1b0(%rsp), %rdi
callq 0x15ce
leaq 0x1f8(%rsp), %rdi
callq 0x15ce
leaq 0x1e0(%rsp), %rdi
callq 0x15ce
leaq 0x1c8(%rsp), %rdi
callq 0x15ce
leaq 0x228(%rsp), %rdi
callq 0x15ce
leaq 0x198(%rsp), %rdi
leaq 0x18(%rsp), %rbx
movq %rbx, %rsi
callq 0x2f60
movq 0x38(%r14), %rdx
subq 0x30(%r14), %rdx
shrq $0x2, %rdx
leaq 0x168(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0x187d
cvtsi2sdl 0x14(%r14), %xmm0
mulsd %xmm0, %xmm0
cvttsd2si %xmm0, %edx
leaq 0x180(%rsp), %rdi
leaq 0x168(%rsp), %rsi
callq 0x1959
movq %rsp, %rdi
leaq 0x198(%rsp), %rsi
leaq 0x180(%rsp), %rdx
callq 0x1a6f
leaq 0x18(%rsp), %rbx
movq %rsp, %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2fe4
movq %r15, %rdi
callq 0x15ce
leaq 0x180(%rsp), %rdi
callq 0x15ce
leaq 0x168(%rsp), %rdi
callq 0x15ce
leaq 0x198(%rsp), %rdi
callq 0x15ce
leaq 0x18(%r14), %rsi
leaq 0x150(%rsp), %rdi
callq 0x2f60
movl (%r14), %edx
leaq 0x120(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x187d
movl 0x14(%r14), %edx
leaq 0x138(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x1959
movq %rsp, %rdi
leaq 0x150(%rsp), %rsi
leaq 0x138(%rsp), %rdx
callq 0x19f0
leaq 0x138(%rsp), %rdi
callq 0x15ce
leaq 0x120(%rsp), %rdi
callq 0x15ce
leaq 0x150(%rsp), %rdi
callq 0x15ce
leaq 0x108(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x2f60
leaq 0xf0(%rsp), %rdi
movq %rsp, %rsi
callq 0x2f60
leaq 0x108(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x144f
movl %eax, 0xb8(%r14)
leaq 0xf0(%rsp), %rdi
callq 0x15ce
leaq 0x108(%rsp), %rdi
callq 0x15ce
movl 0x10(%r14), %esi
movq 0x38(%r14), %rdx
subq 0x30(%r14), %rdx
shrq $0x2, %rdx
leaq 0xd8(%rsp), %rdi
callq 0x187d
leaq 0x60(%r14), %r15
leaq 0xc0(%rsp), %rdi
movq %r15, %rsi
callq 0x2f60
leaq 0x210(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x13da
leaq 0xc0(%rsp), %rdi
callq 0x15ce
leaq 0xd8(%rsp), %rdi
callq 0x15ce
leaq 0xa8(%rsp), %rdi
movq %rsp, %rsi
callq 0x2f60
leaq 0x90(%rsp), %rdi
leaq 0x210(%rsp), %rsi
callq 0x2f60
leaq 0xa8(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x144f
movq %rax, %r13
leaq 0x48(%r14), %r12
leaq 0x78(%rsp), %rdi
movq %r12, %rsi
callq 0x2f60
leaq 0x60(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x2f60
leaq 0x78(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x144f
addl %r13d, %eax
movl %eax, 0xbc(%r14)
leaq 0x60(%rsp), %rdi
callq 0x15ce
leaq 0x78(%rsp), %rdi
callq 0x15ce
leaq 0x90(%rsp), %rdi
callq 0x15ce
leaq 0xa8(%rsp), %rdi
callq 0x15ce
leaq 0x48(%rsp), %rdi
movq %r12, %rsi
callq 0x2f60
leaq 0x30(%rsp), %rdi
movq %r15, %rsi
callq 0x2f60
leaq 0x48(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x144f
movl %eax, 0xc0(%r14)
leaq 0x30(%rsp), %rdi
callq 0x2f5a
leaq 0x48(%rsp), %rdi
callq 0x2f5a
movq %rax, %r14
leaq 0x30(%rsp), %rdi
callq 0x15ce
jmp 0x2de0
movq %rax, %r14
leaq 0x48(%rsp), %rdi
jmp 0x2e22
movq %rax, %r14
leaq 0x60(%rsp), %rdi
callq 0x15ce
jmp 0x2df9
movq %rax, %r14
leaq 0x78(%rsp), %rdi
callq 0x15ce
jmp 0x2e08
movq %rax, %r14
leaq 0x90(%rsp), %rdi
callq 0x15ce
jmp 0x2e1a
movq %rax, %r14
leaq 0xa8(%rsp), %rdi
callq 0x15ce
jmp 0x2e2c
movq %rax, %r14
leaq 0x210(%rsp), %rdi
jmp 0x2e74
movq %rax, %r14
leaq 0xc0(%rsp), %rdi
callq 0x15ce
jmp 0x2e4b
movq %rax, %r14
leaq 0xd8(%rsp), %rdi
jmp 0x2e74
jmp 0x2e7b
movq %rax, %r14
leaq 0xf0(%rsp), %rdi
callq 0x15ce
jmp 0x2e6c
movq %rax, %r14
leaq 0x108(%rsp), %rdi
callq 0x15ce
jmp 0x2e7e
movq %rax, %r14
movq %rsp, %rdi
jmp 0x2f2d
movq %rax, %r14
leaq 0x138(%rsp), %rdi
callq 0x15ce
jmp 0x2e9b
movq %rax, %r14
leaq 0x120(%rsp), %rdi
callq 0x15ce
jmp 0x2ead
movq %rax, %r14
leaq 0x150(%rsp), %rdi
jmp 0x2f2d
jmp 0x2f34
movq %rax, %r14
leaq 0x180(%rsp), %rdi
callq 0x15ce
jmp 0x2ece
movq %rax, %r14
leaq 0x168(%rsp), %rdi
callq 0x15ce
jmp 0x2ee0
movq %rax, %r14
leaq 0x198(%rsp), %rdi
jmp 0x2f2d
jmp 0x2f34
movq %rax, %r14
leaq 0x1b0(%rsp), %rdi
callq 0x15ce
jmp 0x2f01
movq %rax, %r14
leaq 0x1f8(%rsp), %rdi
callq 0x15ce
jmp 0x2f13
movq %rax, %r14
leaq 0x1e0(%rsp), %rdi
callq 0x15ce
jmp 0x2f25
movq %rax, %r14
leaq 0x1c8(%rsp), %rdi
callq 0x15ce
jmp 0x2f37
movq %rax, %r14
movq %rbx, %rdi
callq 0x15ce
movq %r14, %rdi
callq 0x1160
nop