// File: KokiKishimoto[P]cp_decomposition/add_rev.cpp
// Function: main
int main(int argc, char **argv){
	std::string file_name;
	std::string rev_filename;
	int i;
	if ((i = ArgPos((char *)"-file_name", argc, argv)) > 0) file_name = argv[i + 1];
	if ((i = ArgPos((char *)"-rev_filename", argc, argv)) > 0) rev_filename = argv[i + 1];
	AddRev addrev(file_name);
	addrev.add_rev();
	addrev.write_file(rev_filename);
	std::cout << addrev.triple.size() << std::endl;
	std::cout << addrev.triple.front().size() << std::endl;

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x22d0
leaq -0x50(%rbp), %rdi
callq 0x22d0
leaq -0x79(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x2370
movq -0xf8(%rbp), %rdx
leaq 0x3a30(%rip), %rsi      # 0x6019
leaq -0x78(%rbp), %rdi
callq 0x28c0
jmp 0x25f4
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0x78(%rbp), %rdi
callq 0x24f0
movl %eax, -0xfc(%rbp)
jmp 0x260c
movl -0xfc(%rbp), %eax
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x2130
leaq -0x79(%rbp), %rdi
callq 0x2210
movl -0xfc(%rbp), %eax
cmpl $0x0, %eax
jle 0x26a0
movq -0x10(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rsi
leaq -0x30(%rbp), %rdi
callq 0x22b0
jmp 0x264a
jmp 0x26a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x267b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x2130
leaq -0x79(%rbp), %rdi
callq 0x2210
jmp 0x286e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x286e
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x2370
movq -0x108(%rbp), %rdx
leaq 0x3963(%rip), %rsi      # 0x6024
leaq -0xb0(%rbp), %rdi
callq 0x28c0
jmp 0x26cf
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0xb0(%rbp), %rdi
callq 0x24f0
movl %eax, -0x10c(%rbp)
jmp 0x26ea
movl -0x10c(%rbp), %eax
movl %eax, -0x54(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x2130
leaq -0xb1(%rbp), %rdi
callq 0x2210
movl -0x10c(%rbp), %eax
cmpl $0x0, %eax
jle 0x2773
movq -0x10(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rsi
leaq -0x50(%rbp), %rdi
callq 0x22b0
jmp 0x272e
jmp 0x2773
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2762
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x2130
leaq -0xb1(%rbp), %rdi
callq 0x2210
jmp 0x286e
leaq -0xf0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x2970
jmp 0x2785
leaq -0xf0(%rbp), %rdi
callq 0x2a00
jmp 0x2793
leaq -0xf0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x2c40
jmp 0x27a5
leaq -0xf0(%rbp), %rdi
callq 0x2e20
movq %rax, %rsi
movq 0x681d(%rip), %rdi      # 0x8fd8
callq 0x2080
movq %rax, -0x118(%rbp)
jmp 0x27c9
movq -0x118(%rbp), %rdi
movq 0x67f1(%rip), %rsi      # 0x8fc8
callq 0x21f0
jmp 0x27de
leaq -0xf0(%rbp), %rdi
callq 0x2e50
movq %rax, %rdi
callq 0x2e80
movq %rax, %rsi
movq 0x67dc(%rip), %rdi      # 0x8fd8
callq 0x2080
movq %rax, -0x120(%rbp)
jmp 0x280a
movq -0x120(%rbp), %rdi
movq 0x67b0(%rip), %rsi      # 0x8fc8
callq 0x21f0
jmp 0x281f
movl $0x0, -0x4(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x2ea0
leaq -0x50(%rbp), %rdi
callq 0x2130
leaq -0x30(%rbp), %rdi
callq 0x2130
movl -0x4(%rbp), %eax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x2ea0
leaq -0x50(%rbp), %rdi
callq 0x2130
leaq -0x30(%rbp), %rdi
callq 0x2130
movq -0x88(%rbp), %rdi
callq 0x2360
nopl (%rax)