// File: /workspace/github_cpp_makefile_star2_O3/manschga[P]M5GB/poly.cpp
// Function: lcm(std::pair<int, std::vector<int, std::allocator<int>>>&, monomial const&, std::pair<int, std::vector<int, std::allocator<int>>>&, monomial const&)
void lcm(pair<int,vector<int>>& u, const monomial& LM_f, pair<int,vector<int>>& v, const monomial& LM_g)
{
  vector<int> term_f = table[LM_f.Get_term()].first;
  vector<int> term_g = table[LM_g.Get_term()].first;
  vector<int> term_u,term_v; //terms for u,v
  lcm(term_u,term_f,term_v,term_g);//get lcm on term level
  int c_u = Inverse(LM_f.Get_coeff(),LM_f.Get_p());//construct coeff of u,v
  int c_v = Inverse(LM_g.Get_coeff(),LM_g.Get_p());
  u = make_pair(c_u,term_u); //monomials in vector form
  v = make_pair(c_v,term_v);
  return;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rcx, %r15
movq %rdx, %rbx
movq %rsi, %r12
movq %rdi, %r14
movq (%rsi), %rax
leaq 0x96eb(%rip), %r13      # 0x1a170
leaq (%rax,%rax,2), %rsi
shlq $0x4, %rsi
addq (%r13), %rsi
leaq 0x90(%rsp), %rdi
callq 0x4214
movq (%r15), %rax
leaq (%rax,%rax,2), %rsi
shlq $0x4, %rsi
addq (%r13), %rsi
leaq 0x78(%rsp), %rdi
callq 0x4214
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
xorl %eax, %eax
movq %rax, 0x50(%rsp)
movq %rax, 0x30(%rsp)
movaps %xmm0, 0x20(%rsp)
leaq 0x60(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x4214
leaq 0x40(%rsp), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x20(%rsp), %rdx
leaq 0x60(%rsp), %rcx
callq 0x3b56
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x10b12
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movl 0x8(%r12), %edi
movl 0xc(%r12), %esi
callq 0x353e
movl %eax, %r12d
movl 0x8(%r15), %edi
movl 0xc(%r15), %esi
callq 0x353e
movl %eax, %ebp
leaq 0x8(%rsp), %r15
movl %r12d, -0x8(%r15)
leaq 0x40(%rsp), %rsi
movq %r15, %rdi
callq 0x4214
movl (%rsp), %eax
movl %eax, (%r14)
movq 0x8(%r14), %rdi
movq 0x18(%r14), %rsi
movups 0x8(%rsp), %xmm0
movups %xmm0, 0x8(%r14)
movq 0x18(%rsp), %rax
movq %rax, 0x18(%r14)
xorps %xmm0, %xmm0
movups %xmm0, (%r15)
movq $0x0, 0x10(%r15)
testq %rdi, %rdi
je 0x10b9d
subq %rdi, %rsi
callq 0x2180
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x10b9d
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movl %ebp, (%rsp)
leaq 0x20(%rsp), %rsi
movq %r15, %rdi
callq 0x4214
movl (%rsp), %eax
movl %eax, (%rbx)
movq 0x8(%rbx), %rdi
movq 0x18(%rbx), %rsi
movups 0x8(%rsp), %xmm0
movups %xmm0, 0x8(%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x18(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, (%r15)
movq $0x0, 0x10(%r15)
testq %rdi, %rdi
je 0x10bff
subq %rdi, %rsi
callq 0x2180
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x10bff
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x10c16
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x10c2d
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0x10c47
movq 0x88(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x10c64
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x10c9a
jmp 0x10c9a
jmp 0x10c9a
jmp 0x10c9a
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x10c9d
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
jmp 0x10c9d
movq %rax, %rbx
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x10cb4
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x10ccb
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0x10cea
movq 0x88(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
jmp 0x10cea
movq %rax, %rbx
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x10d07
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq %rbx, %rdi
callq 0x2240