// File: canzarlab[P]Trajan/src/LP.cpp
// Function: LP::Solve(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void LP::Solve(string filename, string outScoreFile)
{
    int cnt = 1;
    for (int i = 0; cnt; i++)
    {
        Timer T_lp, T_cross, T_indep;
        T_lp.start();
        LP::SolveLP();
        WriteSolution(filename);
        T_lp.stop();
        clog << ">>> Time for solve: \t\t" << T_lp.secs() << " secs" << endl;
        if (cf == 0)
            break;

        T_cross.start();
        cnt = Add<1>();
        T_cross.stop();
        clog << ">>> Time for crossing constraints: \t\t" << T_cross.secs() << " secs" << endl;

        if (cf == 2)
        {
            T_indep.start();
            cnt += Add<2>();
            T_indep.stop();
            clog << ">>> Time for independent set constraints: \t\t" << T_indep.secs() << " secs" << endl;
        }
        clog << "Added " << cnt << " rows." << endl;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movq %rsi, -0x120(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x118(%rbp)
movl $0x1, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
cmpl $0x0, -0x1c(%rbp)
je 0xadbb1
leaq -0x60(%rbp), %rdi
movq %rdi, -0x130(%rbp)
callq 0xeb30
leaq -0xa0(%rbp), %rdi
callq 0xeb30
leaq -0xe0(%rbp), %rdi
callq 0xeb30
movq -0x130(%rbp), %rdi
callq 0xeb50
movq -0x118(%rbp), %rdi
callq 0xadbd0
movq -0x120(%rbp), %rsi
leaq -0x100(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0xa190
movq -0x118(%rbp), %rdi
movq -0x128(%rbp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
jmp 0xad9d4
leaq -0x100(%rbp), %rdi
callq 0xa8d8
leaq -0x60(%rbp), %rdi
callq 0xf350
movq 0xf3560(%rip), %rdi     # 0x1a0f50
leaq 0x7c7cd(%rip), %rsi     # 0x12a1c4
callq 0xa440
movq %rax, -0x138(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xf3b0
movq -0x138(%rbp), %rdi
callq 0xa340
movq %rax, %rdi
leaq 0x5d84a(%rip), %rsi     # 0x10b26c
callq 0xa440
movq %rax, %rdi
movq 0xf352f(%rip), %rsi     # 0x1a0f60
callq 0xa4a0
leaq 0xf3aa3(%rip), %rax     # 0x1a14e0
cmpl $0x0, (%rax)
jne 0xada6a
jmp 0xadbb1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0xa8d8
jmp 0xadbba
leaq -0xa0(%rbp), %rdi
callq 0xeb50
movq -0x118(%rbp), %rdi
callq 0xaf040
movl %eax, -0x1c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0xf350
movq 0xf34b8(%rip), %rdi     # 0x1a0f50
leaq 0x7c73c(%rip), %rsi     # 0x12a1db
callq 0xa440
movq %rax, -0x140(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0xf3b0
movq -0x140(%rbp), %rdi
callq 0xa340
movq %rax, %rdi
leaq 0x5d79f(%rip), %rsi     # 0x10b26c
callq 0xa440
movq %rax, %rdi
movq 0xf3484(%rip), %rsi     # 0x1a0f60
callq 0xa4a0
leaq 0xf39f8(%rip), %rax     # 0x1a14e0
cmpl $0x2, (%rax)
jne 0xadb67
leaq -0xe0(%rbp), %rdi
callq 0xeb50
movq -0x118(%rbp), %rdi
callq 0xaf060
addl -0x1c(%rbp), %eax
movl %eax, -0x1c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0xf350
movq 0xf3432(%rip), %rdi     # 0x1a0f50
leaq 0x7c6dc(%rip), %rsi     # 0x12a201
callq 0xa440
movq %rax, -0x148(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0xf3b0
movq -0x148(%rbp), %rdi
callq 0xa340
movq %rax, %rdi
leaq 0x5d719(%rip), %rsi     # 0x10b26c
callq 0xa440
movq %rax, %rdi
movq 0xf33fe(%rip), %rsi     # 0x1a0f60
callq 0xa4a0
movq 0xf33e2(%rip), %rdi     # 0x1a0f50
leaq 0x7c6b9(%rip), %rsi     # 0x12a22e
callq 0xa440
movq %rax, %rdi
movl -0x1c(%rbp), %esi
callq 0xa790
movq %rax, %rdi
leaq 0x7c6a6(%rip), %rsi     # 0x12a235
callq 0xa440
movq %rax, %rdi
movq 0xf33c2(%rip), %rsi     # 0x1a0f60
callq 0xa4a0
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0xad957
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
movq -0x108(%rbp), %rdi
callq 0xa7c0
nopw %cs:(%rax,%rax)