// File: temelmertcan[P]multgen/src/adders.cpp
// Function: ppx_postprocess(int, int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*&, std::queue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>&)
void ppx_postprocess (int size, int& index,
                      string*& g, string*& p, std::queue<string>& verilog){

  verilog.push ("assign OUT[0] = p_0[0];");

  for (int i = 1; i<size; i+=1){

    verilog.push ("assign OUT[" + to_string(i) + "] = p_0[" + to_string(i) + "] ^ " + g[i-1] + ";");
  }

  verilog.push ("assign OUT[" + to_string(size) + "] = " + g[size-1] + ";");

  verilog.push("outdent");
  verilog.push("endmodule");

  verilog.push("");

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2e0, %rsp            # imm = 0x2E0
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x288(%rbp)
leaq -0x49(%rbp), %rdi
movq %rdi, -0x280(%rbp)
callq 0x3430
movq -0x280(%rbp), %rdx
leaq 0x32e9c(%rip), %rsi     # 0x58c13
leaq -0x48(%rbp), %rdi
callq 0x3320
jmp 0x25d82
movq -0x288(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1e3c0
jmp 0x25d94
leaq -0x48(%rbp), %rdi
callq 0x31a0
leaq -0x49(%rbp), %rdi
callq 0x32a0
movl $0x1, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x26022
movq -0x28(%rbp), %rax
movq %rax, -0x298(%rbp)
movl -0x60(%rbp), %esi
leaq -0x140(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x1e700
movq -0x290(%rbp), %rdx
leaq 0x32d68(%rip), %rsi     # 0x58b50
leaq -0x120(%rbp), %rdi
callq 0x1e930
jmp 0x25df6
leaq 0x32e2e(%rip), %rdx     # 0x58c2b
leaq -0x100(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x1e560
jmp 0x25e12
movl -0x60(%rbp), %esi
leaq -0x160(%rbp), %rdi
callq 0x1e700
jmp 0x25e23
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0x160(%rbp), %rdx
callq 0x1e5b0
jmp 0x25e3f
leaq 0x32dee(%rip), %rdx     # 0x58c34
leaq -0xc0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x1e560
jmp 0x25e5b
movq -0x18(%rbp), %rax
movq (%rax), %rdx
movl -0x60(%rbp), %eax
decl %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0xa0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x1e980
jmp 0x25e85
leaq 0x3387f(%rip), %rdx     # 0x5970b
leaq -0x80(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x1e560
jmp 0x25e9e
movq -0x298(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x1e3c0
jmp 0x25eb0
leaq -0x80(%rbp), %rdi
callq 0x31a0
leaq -0xa0(%rbp), %rdi
callq 0x31a0
leaq -0xc0(%rbp), %rdi
callq 0x31a0
leaq -0xe0(%rbp), %rdi
callq 0x31a0
leaq -0x160(%rbp), %rdi
callq 0x31a0
leaq -0x100(%rbp), %rdi
callq 0x31a0
leaq -0x120(%rbp), %rdi
callq 0x31a0
leaq -0x140(%rbp), %rdi
callq 0x31a0
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x25dad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x25f3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x31a0
leaq -0x49(%rbp), %rdi
callq 0x32a0
jmp 0x2636f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x26011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x26005
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x25ff9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x25fed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x25fe1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x25fd5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x25fc9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x31a0
leaq -0xa0(%rbp), %rdi
callq 0x31a0
leaq -0xc0(%rbp), %rdi
callq 0x31a0
leaq -0xe0(%rbp), %rdi
callq 0x31a0
leaq -0x160(%rbp), %rdi
callq 0x31a0
leaq -0x100(%rbp), %rdi
callq 0x31a0
leaq -0x120(%rbp), %rdi
callq 0x31a0
leaq -0x140(%rbp), %rdi
callq 0x31a0
jmp 0x2636f
movq -0x28(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movl -0x4(%rbp), %esi
leaq -0x200(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x1e700
movq -0x2a0(%rbp), %rdx
leaq 0x32aff(%rip), %rsi     # 0x58b50
leaq -0x1e0(%rbp), %rdi
callq 0x1e930
jmp 0x2605f
leaq 0x321ef(%rip), %rdx     # 0x58255
leaq -0x1c0(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x1e560
jmp 0x2607b
movq -0x18(%rbp), %rax
movq (%rax), %rdx
movl -0x4(%rbp), %eax
decl %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x1a0(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x1e980
jmp 0x260a5
leaq 0x3365f(%rip), %rdx     # 0x5970b
leaq -0x180(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x1e560
jmp 0x260c1
movq -0x2a8(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x1e3c0
jmp 0x260d6
leaq -0x180(%rbp), %rdi
callq 0x31a0
leaq -0x1a0(%rbp), %rdi
callq 0x31a0
leaq -0x1c0(%rbp), %rdi
callq 0x31a0
leaq -0x1e0(%rbp), %rdi
callq 0x31a0
leaq -0x200(%rbp), %rdi
callq 0x31a0
movq -0x28(%rbp), %rax
movq %rax, -0x2b8(%rbp)
leaq -0x221(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x3430
movq -0x2b0(%rbp), %rdx
leaq 0x31bf3(%rip), %rsi     # 0x57d31
leaq -0x220(%rbp), %rdi
callq 0x3320
jmp 0x2614c
movq -0x2b8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x1e3c0
jmp 0x26161
leaq -0x220(%rbp), %rdi
callq 0x31a0
leaq -0x221(%rbp), %rdi
callq 0x32a0
movq -0x28(%rbp), %rax
movq %rax, -0x2c8(%rbp)
leaq -0x249(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x3430
movq -0x2c0(%rbp), %rdx
leaq 0x31c34(%rip), %rsi     # 0x57dd9
leaq -0x248(%rbp), %rdi
callq 0x3320
jmp 0x261b3
movq -0x2c8(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x1e3c0
jmp 0x261c8
leaq -0x248(%rbp), %rdi
callq 0x31a0
leaq -0x249(%rbp), %rdi
callq 0x32a0
movq -0x28(%rbp), %rax
movq %rax, -0x2d8(%rbp)
leaq -0x271(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x3430
movq -0x2d0(%rbp), %rdx
leaq 0x333d5(%rip), %rsi     # 0x595e1
leaq -0x270(%rbp), %rdi
callq 0x3320
jmp 0x2621a
movq -0x2d8(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x1e3c0
jmp 0x2622f
leaq -0x270(%rbp), %rdi
callq 0x31a0
leaq -0x271(%rbp), %rdi
callq 0x32a0
addq $0x2e0, %rsp            # imm = 0x2E0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x262c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x262b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x262ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x262a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x31a0
leaq -0x1a0(%rbp), %rdi
callq 0x31a0
leaq -0x1c0(%rbp), %rdi
callq 0x31a0
leaq -0x1e0(%rbp), %rdi
callq 0x31a0
leaq -0x200(%rbp), %rdi
callq 0x31a0
jmp 0x2636f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x262fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x31a0
leaq -0x221(%rbp), %rdi
callq 0x32a0
jmp 0x2636f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x2632f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x31a0
leaq -0x249(%rbp), %rdi
callq 0x32a0
jmp 0x2636f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x26363
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x31a0
leaq -0x271(%rbp), %rdi
callq 0x32a0
movq -0x58(%rbp), %rdi
callq 0x3420
nopl (%rax,%rax)