// File: canzarlab[P]Trajan/src/main.cpp
// Function: MakeGraphs(int, char**)
pair<Graph*, Graph*> MakeGraphs(int argc, char** argv)
{
    if (argc == 10)
        return {new Tree(argv[1]), new Tree(argv[2])};
    else if (argc == 12)
        return {new Tree(argv[1], argv[2]), new Tree(argv[3], argv[4])};

    int s = stoi(argv[argc - 1]);
    return {MakeDAG(argv[1], argv[2], s), MakeDAG(argv[3], nullptr, s)};
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movl %edi, -0x14(%rbp)
movq %rsi, -0x20(%rbp)
cmpl $0xa, -0x14(%rbp)
jne 0xc198
movl $0x80, %edi
callq 0xa450
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x98(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x97ae0
jmp 0xc102
movq -0x98(%rbp), %rax
movq %rax, -0x28(%rbp)
movl $0x80, %edi
callq 0xa450
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xa0(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x97ae0
jmp 0xc133
movq -0xa0(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x28(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0xead0
jmp 0xc35e
movq -0x98(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
movl $0x80, %esi
callq 0xa460
jmp 0xc36f
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
movl $0x80, %esi
callq 0xa460
jmp 0xc36f
cmpl $0xc, -0x14(%rbp)
jne 0xc266
movl $0x80, %edi
callq 0xa450
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xa8(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rdx
callq 0x97a20
jmp 0xc1cc
movq -0xa8(%rbp), %rax
movq %rax, -0x48(%rbp)
movl $0x80, %edi
callq 0xa450
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xb0(%rbp)
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rsi
movq 0x20(%rax), %rdx
callq 0x97a20
jmp 0xc201
movq -0xb0(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x48(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0xead0
jmp 0xc35e
movq -0xa8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
movl $0x80, %esi
callq 0xa460
jmp 0xc36f
movq -0xb0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
movl $0x80, %esi
callq 0xa460
jmp 0xc36f
jmp 0xc268
movq -0x20(%rbp), %rax
movl -0x14(%rbp), %ecx
decl %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xc0(%rbp)
leaq -0x79(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0xa7d0
movq -0xc0(%rbp), %rsi
movq -0xb8(%rbp), %rdx
leaq -0x78(%rbp), %rdi
callq 0xe9b0
jmp 0xc2a8
xorl %eax, %eax
movl %eax, %esi
leaq -0x78(%rbp), %rdi
movl $0xa, %edx
callq 0xe970
movl %eax, -0xc4(%rbp)
jmp 0xc2c2
leaq -0x78(%rbp), %rdi
callq 0xa8d8
leaq -0x79(%rbp), %rdi
callq 0xa4c0
movl -0xc4(%rbp), %eax
movl %eax, -0x54(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rsi
movl -0x54(%rbp), %edx
callq 0xbfd0
movq %rax, -0x88(%rbp)
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x54(%rbp), %edx
xorl %eax, %eax
movl %eax, %esi
callq 0xbfd0
movq %rax, -0x90(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x88(%rbp), %rsi
leaq -0x90(%rbp), %rdx
callq 0xeb00
jmp 0xc35e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0xc353
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x78(%rbp), %rdi
callq 0xa8d8
leaq -0x79(%rbp), %rdi
callq 0xa4c0
jmp 0xc36f
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rdx
addq $0xd0, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0xa7c0
nopl (%rax,%rax)