// File: /workspace/github_cpp_makefile_star2_O2/canzarlab[P]Trajan/src/BnB.cpp
// Function: BnB::SolveLP()
bool BnB::SolveLP()
{
    int nr_t = Triplets.size();
    int nr_r = nr_rows;
    double f;

#if DEBUG == 1
    int qwe = 0;
    double qwer = 0.0;
    Timer T;
#endif

    while(1)
    {
        SpMat A(nr_rows, nr_cols);
        A.setFromTriplets(Triplets.begin(), Triplets.end());
        Vector b = Vector::Ones(nr_rows);       
        y = Vector::Zero(nr_rows);
        Vector d = -c;            

        BranchingJRF simpleJRF(A, b, d, x, y);
        simpleJRF.lo = sys_lo;
        simpleJRF.hi = sys_hi;
        AugmentedLagrangian solver(simpleJRF, 15);
        solver.setParameter("verbose", false);
        solver.setParameter("pgtol", 0.275); 
        solver.setParameter("constraintsTol", 1e-4);

#if DEBUG == 1
        T.start();
#endif
        SolverStatus status = solver.solve();    
#if DEBUG == 1        
        if (status == SUBOPTIMAL)
            cout << "SUBOPTIMAL(" << status << ")" << endl; 
        if (status == UNBOUNDED)
            cout << "UNBOUNDED(" << status << ")" << endl; 
        if (status == INFEASIBLE)
            cout << "INFEASIBLE(" << status << ")" << endl; 
        if (status == NUM_ERROR)
            cout << "NUM_ERROR(" << status << ")" << endl; 
        T.stop();
        qwe++;
        qwer += T.secs();
        geno_calls++;
        geno_time += T.secs();
#endif

        if (status == INFEASIBLE) 
        {                
            Cleanup(nr_t, nr_r);            
            return 0; 
        }

        x = Vector::ConstMapType(solver.x(), nr_cols); 
        
        if (LP::cf == 1 && Add<1>())
            continue;
        else if (LP::cf == 2 && (Add<1>() + Add<2>()))
            continue;

        f = solver.f();    

#if DEBUG == 1
        cout << "rows: " << nr_rows << endl;
        cout << "cols: " << nr_cols << endl;
        cout << "geno calls: " << qwe << endl;
        cout << "geno time: " << qwer << endl;
        cout << "total geno calls: " << geno_calls << endl;
        cout << "total geno time: " << geno_time << endl;
        cout << "upper: " << f << endl;
        cout << "lower: " << sys_lb << endl;
        int qwert = 0;
        for (size_t i = 0; i < x.size(); ++i)
            if (x(i) > 1e-3 && x(i) < 1 - 1e-3 && !sys_x[i])
                qwert++;
        cout << "fracs: " << qwert << endl;
#endif

        if (sys_lb != double(INF) && f >= sys_lb * (1.0 + con_eps)) 
        {    
#if DEBUG == 1            
            cout << "The branch was cut." << endl << endl;
#endif
            Cleanup(nr_t, nr_r);            
            return 0; 
        }            
#if DEBUG == 1
        else cout << endl;        
#endif

        break;
    }
    
    vector<pair<size_t, size_t>> vp;
    size_t p = 0;

    for (size_t i = 0; i < t1.GetNumNodes(); ++i)
        for (size_t j = 0; j < t2.GetNumNodes(); ++j)
            if (K[i][j] != -1 && x(K[i][j]) > 1e-3 && x(K[i][j]) < 1 - 1e-3 && !sys_x[K[i][j]])                
                vp.emplace_back(i, j);                

    sort(vp.begin(), vp.end(), [this](pair<size_t, size_t>& p, pair<size_t, size_t>& q)
    { 
        int i = K[p.first][p.second];
        int j = K[q.first][q.second];
        return c(i) > c(j); 
    });
   
    for (int i = 0; !p && i < vp.size(); ++i)
    {
        bool flag = 1;
        for (size_t k = 0; flag && k < t1.GetNumNodes(); ++k)          
            for (size_t j = 0; flag && j < t2.GetNumNodes(); ++j)
                if (K[k][j] != -1 && sys_x[K[k][j]])                              
                    flag = IsNotInConflict(vp[i].first, k, vp[i].second, j);                    
        if (flag) p = 1 + K[vp[i].first][vp[i].second];
    }

    if (vp.size())
    {
        bool b0 = !p; 
        p = (b0) ? K[vp[0].first][vp[0].second] : p - 1; // bool b1 = b0 || x(--p) >= 0.1;     
        bool s0 = !b0 && SolveRec(p, 1);            
        bool s1 = SolveRec(p, 0);                       
        if (!s0 && !s1)
        {                 
            Cleanup(nr_t, nr_r);            
            return 0;
        }
    }
    else if (sys_lb > f)
    {
#if DEBUG == 1
        if (gap_flag) 
        {
            gap_amount += abs(sys_lb - f);  
            ++gap_count;
        }
        else 
            gap_flag = 1;
#endif
        sys_s = x;
        sys_lb = f; 
    }

    Cleanup(nr_t, nr_r);
    return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x258, %rsp            # imm = 0x258
movq %rdi, %rbx
leaq 0x88(%rdi), %rax
movq %rax, 0x28(%rsp)
movq 0x90(%rdi), %rax
subq 0x88(%rdi), %rax
movl 0x108(%rdi), %ecx
movl %ecx, 0x18(%rsp)
leaq 0x1b0(%rsp), %rcx
movb $0x0, 0x38(%rcx)
xorps %xmm0, %xmm0
movaps %xmm0, (%rcx)
leaq 0xd0(%rdi), %rcx
movq %rcx, 0x50(%rsp)
leaq 0xf8(%rdi), %rcx
movq %rcx, 0x48(%rsp)
leaq 0xc0(%rdi), %r13
leaq 0x228(%rdi), %rcx
movq %rcx, 0x40(%rsp)
leaq 0x238(%rdi), %rcx
movq %rcx, 0x38(%rsp)
leaq 0x1f0(%rdi), %rcx
movq %rcx, 0x30(%rsp)
shrq $0x4, %rax
cltq
movq %rax, 0x20(%rsp)
movl $0x0, 0x1c(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x10(%rsp)
leaq 0x168(%rsp), %r14
leaq 0x70(%rsp), %rbp
leaq 0xf0(%rsp), %r12
movslq 0x108(%rbx), %rsi
movslq 0x10c(%rbx), %rdx
movq %r14, %rdi
callq 0x3331e
movq 0x88(%rbx), %rax
movq %rax, 0x70(%rsp)
movq 0x90(%rbx), %rax
movq %rax, 0xf0(%rsp)
movq %r14, %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0x33360
movslq 0x108(%rbx), %rsi
movq %rbp, %rdi
callq 0x333bc
leaq 0x60(%rsp), %rdi
movq %rbp, %r15
movq %rbp, %rsi
callq 0x34154
movq %r14, %rbp
movslq 0x108(%rbx), %rsi
movq %r15, %rdi
callq 0xced2
movq 0x50(%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x26bc6
movq 0x48(%rsp), %rax
movq %rax, 0x70(%rsp)
leaq 0xe0(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x35f66
leaq 0xf0(%rsp), %rdi
movq %rbp, %rsi
leaq 0x60(%rsp), %rdx
movq %r12, %rcx
movq %r13, %r8
movq %r14, %r9
callq 0x3c04e
leaq 0x140(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0xe787
leaq 0x130(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xe787
leaq 0x70(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
pushq $0xf
popq %rdx
callq 0xc424
leaq 0x238(%rsp), %r14
movq %r14, %rdi
leaq 0x16396(%rip), %rsi     # 0x5143a
leaq 0x150(%rsp), %rdx
callq 0xb7a6
xorpd %xmm0, %xmm0
leaq 0x70(%rsp), %rdi
movq %r14, %rsi
callq 0xcdfc
movq %r14, %rdi
callq 0x9708
leaq 0x218(%rsp), %r15
movq %r15, %rdi
leaq 0x1633c(%rip), %rsi     # 0x51418
leaq 0x150(%rsp), %r14
movq %r14, %rdx
callq 0xb7a6
leaq 0x70(%rsp), %rdi
movq %r15, %rsi
movsd 0x32f44(%rip), %xmm0    # 0x6e040
callq 0xcdfc
movq %r15, %rdi
callq 0x9708
leaq 0x1f8(%rsp), %r15
movq %r15, %rdi
leaq 0x16310(%rip), %rsi     # 0x5142b
movq %r14, %rdx
callq 0xb7a6
leaq 0x70(%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
movsd 0x32f12(%rip), %xmm0    # 0x6e048
callq 0xcdfc
movq %r15, %rdi
callq 0x9708
leaq 0x1b0(%rsp), %rdi
callq 0xb808
movq %r14, %rdi
callq 0xc4b2
movl %eax, %r14d
leal -0x1(%r14), %eax
cmpl $0x3, %eax
ja 0x3b1f7
leaq 0x32ee9(%rip), %rcx     # 0x6e058
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
leaq 0x32f34(%rip), %rsi     # 0x6e0b1
jmpq *%rax
leaq 0x32f1f(%rip), %rsi     # 0x6e0a5
jmp 0x3b1c9
movq 0x5be21(%rip), %rdi     # 0x96fb0
leaq 0x32f26(%rip), %rsi     # 0x6e0bc
callq 0x9330
movq %rax, %rdi
pushq $0x3
popq %rsi
callq 0x9610
movq %rax, %rdi
leaq 0x33401(%rip), %rsi     # 0x6e5b1
callq 0x9330
movb $0x1, %r14b
movq %rax, %rdi
callq 0x9170
jmp 0x3b1fa
leaq 0x32eff(%rip), %rsi     # 0x6e0c8
movq 0x5bde0(%rip), %rdi     # 0x96fb0
callq 0x9330
movq %rax, %rdi
movl %r14d, %esi
callq 0x9610
movq %rax, %rdi
leaq 0x333c7(%rip), %rsi     # 0x6e5b1
callq 0x9330
movq %rax, %rdi
callq 0x9170
xorl %r14d, %r14d
leaq 0x1b0(%rsp), %rdi
callq 0xba34
incl 0x1c(%rsp)
cvtsi2sdq 0x1b0(%rsp), %xmm0
divsd 0x15e0b(%rip), %xmm0    # 0x51028
cvtsd2ss %xmm0, %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x10(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x10(%rsp)
incl 0x5c1e9(%rip)           # 0x97424
addsd 0x5c1e5(%rip), %xmm0    # 0x97428
movsd %xmm0, 0x5c1dd(%rip)    # 0x97428
testb %r14b, %r14b
je 0x3b26d
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x3c01a
movl 0x18(%rsp), %eax
movl %eax, 0x108(%rbx)
pushq $0x1
jmp 0x3b2b8
leaq 0x70(%rsp), %rdi
callq 0xcdea
movslq 0x10c(%rbx), %rdx
leaq 0x150(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0xebcc
movq %r13, %rdi
movq %r14, %rsi
callq 0xebf9
leaq 0x5c14d(%rip), %rax     # 0x973f0
movl (%rax), %eax
cmpl $0x1, %eax
jne 0x3b316
movq %rbx, %rdi
callq 0x34952
testl %eax, %eax
je 0x3b30d
pushq $0x2
popq %r15
leaq 0x70(%rsp), %rbp
movq %rbp, %rdi
callq 0x333e4
leaq 0xf0(%rsp), %r12
movq %r12, %rdi
callq 0x3c0f4
movq 0xe0(%rsp), %rdi
callq 0x93c0
movq 0x60(%rsp), %rdi
callq 0x93c0
leaq 0x168(%rsp), %r14
movq %r14, %rdi
callq 0x33400
cmpl $0x2, %r15d
je 0x3af9e
jmp 0x3b593
leaq 0x5c0dc(%rip), %rax     # 0x973f0
movl (%rax), %eax
cmpl $0x2, %eax
jne 0x3b337
movq %rbx, %rdi
callq 0x34952
movl %eax, %r14d
movq %rbx, %rdi
callq 0x3330e
pushq $0x2
popq %r15
addl %eax, %r14d
jne 0x3b2ba
leaq 0x70(%rsp), %rdi
callq 0xcdf6
movsd %xmm0, 0x8(%rsp)
movq 0x5bc62(%rip), %rdi     # 0x96fb0
leaq 0x32d7e(%rip), %rsi     # 0x6e0d3
callq 0x9330
movl 0x108(%rbx), %esi
movq %rax, %rdi
callq 0x9610
movq %rax, %rdi
callq 0x9170
movq 0x5bc39(%rip), %rdi     # 0x96fb0
leaq 0x32d5c(%rip), %rsi     # 0x6e0da
callq 0x9330
movl 0x10c(%rbx), %esi
movq %rax, %rdi
callq 0x9610
movq %rax, %rdi
callq 0x9170
movq 0x5bc10(%rip), %rdi     # 0x96fb0
leaq 0x32ccc(%rip), %rsi     # 0x6e073
callq 0x9330
movq %rax, %rdi
movl 0x1c(%rsp), %esi
callq 0x9610
movq %rax, %rdi
callq 0x9170
movq 0x5bbe9(%rip), %rdi     # 0x96fb0
leaq 0x32cb8(%rip), %rsi     # 0x6e086
callq 0x9330
movq %rax, %rdi
movsd 0x10(%rsp), %xmm0
callq 0x9540
movq %rax, %rdi
callq 0x9170
movq 0x5bbc0(%rip), %rdi     # 0x96fb0
leaq 0x32c76(%rip), %rsi     # 0x6e06d
callq 0x9330
movl 0x5c022(%rip), %esi     # 0x97424
movq %rax, %rdi
callq 0x9610
movq %rax, %rdi
callq 0x9170
movq 0x5bb97(%rip), %rdi     # 0x96fb0
leaq 0x32c60(%rip), %rsi     # 0x6e080
callq 0x9330
movsd 0x5bffb(%rip), %xmm0    # 0x97428
movq %rax, %rdi
callq 0x9540
movq %rax, %rdi
callq 0x9170
movq 0x5bb6c(%rip), %rdi     # 0x96fb0
leaq 0x32c96(%rip), %rsi     # 0x6e0e1
callq 0x9330
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x9540
movq %rax, %rdi
callq 0x9170
movq 0x5bb43(%rip), %rdi     # 0x96fb0
leaq 0x32c75(%rip), %rsi     # 0x6e0e9
callq 0x9330
movsd 0x1e8(%rbx), %xmm0
movq %rax, %rdi
callq 0x9540
movq %rax, %rdi
callq 0x9170
xorl %r14d, %r14d
xorl %r15d, %r15d
cmpq 0xc8(%rbx), %r15
jae 0x3b4ef
movq %r13, %rdi
movq %r15, %rsi
callq 0xd27a
movsd (%rax), %xmm0
ucomisd 0x18379(%rip), %xmm0    # 0x53830
jbe 0x3b4ea
movq %r13, %rdi
movq %r15, %rsi
callq 0xd27a
movsd 0x32b84(%rip), %xmm0    # 0x6e050
ucomisd (%rax), %xmm0
jbe 0x3b4ea
movq 0x30(%rsp), %rdi
movq %r15, %rsi
callq 0x2ddae
andq (%rax), %rdx
cmpq $0x1, %rdx
adcl $0x0, %r14d
incq %r15
jmp 0x3b497
movq 0x5baba(%rip), %rdi     # 0x96fb0
leaq 0x32bf4(%rip), %rsi     # 0x6e0f1
callq 0x9330
movq %rax, %rdi
movl %r14d, %esi
callq 0x9610
movq %rax, %rdi
callq 0x9170
movsd 0x1e8(%rbx), %xmm0
ucomisd 0x15ec3(%rip), %xmm0    # 0x513e8
jae 0x3b547
movsd 0x248(%rbx), %xmm1
addsd 0x182e9(%rip), %xmm1    # 0x53820
mulsd %xmm1, %xmm0
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jae 0x3b55c
movq 0x5ba62(%rip), %rdi     # 0x96fb0
callq 0x9170
pushq $0x3
popq %r15
jmp 0x3b2ba
movq 0x5ba4d(%rip), %rdi     # 0x96fb0
leaq 0x32b8f(%rip), %rsi     # 0x6e0f9
callq 0x9330
movq %rax, %rdi
callq 0x9170
movq %rax, %rdi
callq 0x9170
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x3c01a
jmp 0x3b25f
cmpl $0x3, %r15d
jne 0x3b6c1
xorpd %xmm0, %xmm0
leaq 0x70(%rsp), %r14
andq $0x0, 0x10(%r14)
movapd %xmm0, (%r14)
xorl %eax, %eax
leaq 0xf0(%rsp), %r15
leaq 0x168(%rsp), %rbp
movq %rax, 0xf0(%rsp)
movq 0x30(%rbx), %rcx
movslq 0x70(%rcx), %rcx
cmpq %rcx, %rax
jae 0x3b6c8
xorl %eax, %eax
movq %rax, 0x168(%rsp)
movq 0x38(%rbx), %rcx
movslq 0x70(%rcx), %rcx
cmpq %rcx, %rax
jae 0x3b6b1
imulq $0x18, 0xf0(%rsp), %rcx
movq 0xe0(%rbx), %rdx
movq (%rdx,%rcx), %rcx
movslq (%rcx,%rax,4), %rsi
cmpq $-0x1, %rsi
je 0x3b6a1
movq %r13, %rdi
callq 0xd27a
movsd (%rax), %xmm0
ucomisd 0x18204(%rip), %xmm0    # 0x53830
jbe 0x3b6a1
imulq $0x18, 0xf0(%rsp), %rax
movq 0xe0(%rbx), %rcx
movq 0x168(%rsp), %rdx
movq (%rcx,%rax), %rax
movslq (%rax,%rdx,4), %rsi
movq %r13, %rdi
callq 0xd27a
movsd 0x329f2(%rip), %xmm0    # 0x6e050
ucomisd (%rax), %xmm0
jbe 0x3b6a1
imulq $0x18, 0xf0(%rsp), %rax
movq 0xe0(%rbx), %rcx
movq 0x168(%rsp), %rdx
movq (%rcx,%rax), %rax
movslq (%rax,%rdx,4), %rsi
movq 0x30(%rsp), %rdi
callq 0x2ddae
testq %rdx, (%rax)
jne 0x3b6a1
movq %r14, %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x3c118
movq 0x168(%rsp), %rax
incq %rax
jmp 0x3b5dd
movq 0xf0(%rsp), %rax
incq %rax
jmp 0x3b5c2
xorl %ebp, %ebp
jmp 0x3b918
movq 0x70(%rsp), %r15
movq 0x78(%rsp), %r14
cmpq %r14, %r15
je 0x3b741
movq %r14, %r12
subq %r15, %r12
movq %r12, %rax
sarq $0x4, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rcx
callq 0x3baa9
cmpq $0x101, %r12            # imm = 0x101
jl 0x3b733
leaq 0x100(%r15), %rbp
movq %r15, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x3bed9
cmpq %r14, %rbp
je 0x3b741
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x3bf5d
addq $0x10, %rbp
jmp 0x3b71d
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x3bed9
xorl %r12d, %r12d
xorl %r14d, %r14d
movq %r13, 0x58(%rsp)
movq 0x70(%rsp), %rax
movq 0x78(%rsp), %rcx
testq %r14, %r14
jne 0x3b832
movq %rcx, %rdx
subq %rax, %rdx
sarq $0x4, %rdx
cmpq %r12, %rdx
jbe 0x3b84c
movb $0x1, %bpl
movq %r12, 0x10(%rsp)
shlq $0x4, %r12
xorl %r14d, %r14d
testb $0x1, %bpl
je 0x3b7ff
movq 0x30(%rbx), %rax
movslq 0x70(%rax), %rax
cmpq %rax, %r14
jae 0x3b804
imulq $0x18, %r14, %r13
xorl %r15d, %r15d
testb $0x1, %bpl
je 0x3b7f5
movq 0x38(%rbx), %rax
movslq 0x70(%rax), %rax
cmpq %rax, %r15
jae 0x3b7f5
movq 0xe0(%rbx), %rax
movq (%rax,%r13), %rax
movslq (%rax,%r15,4), %rsi
cmpq $-0x1, %rsi
je 0x3b7f0
movq 0x30(%rsp), %rdi
callq 0x2ddae
testq %rdx, (%rax)
je 0x3b7f0
movq 0x70(%rsp), %rax
movl (%rax,%r12), %esi
movl 0x8(%rax,%r12), %ecx
movq %rbx, %rdi
movl %r14d, %edx
movl %r15d, %r8d
callq 0x320c0
movl %eax, %ebp
incq %r15
jmp 0x3b79b
incq %r14
movq 0x58(%rsp), %r13
jmp 0x3b781
xorl %r14d, %r14d
jmp 0x3b825
movq 0x70(%rsp), %rax
movq 0xe0(%rbx), %rcx
imulq $0x18, (%rax,%r12), %rdx
movq 0x8(%rax,%r12), %rax
movq (%rcx,%rdx), %rcx
movslq (%rcx,%rax,4), %r14
incq %r14
movq 0x10(%rsp), %r12
incq %r12
jmp 0x3b74c
cmpq %rax, %rcx
je 0x3b88f
decq %r14
pushq $0x1
popq %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3b9f2
movl %eax, %ebp
jmp 0x3b86a
cmpq %rax, %rcx
je 0x3b88f
movq 0xe0(%rbx), %rcx
imulq $0x18, (%rax), %rdx
movq 0x8(%rax), %rax
movq (%rcx,%rdx), %rcx
movslq (%rcx,%rax,4), %r14
xorl %ebp, %ebp
movq %rbx, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x3b9f2
orb %al, %bpl
jne 0x3b8f2
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x3c01a
xorl %ebp, %ebp
jmp 0x3b904
movsd 0x1e8(%rbx), %xmm0
ucomisd 0x8(%rsp), %xmm0
jbe 0x3b8f2
cmpb $0x1, 0x5bb9a(%rip)     # 0x97440
jne 0x3b8ce
subsd 0x8(%rsp), %xmm0
andpd 0x15b1a(%rip), %xmm0    # 0x513d0
addsd 0x5bb7a(%rip), %xmm0    # 0x97438
movsd %xmm0, 0x5bb72(%rip)    # 0x97438
incl 0x5bb64(%rip)           # 0x97430
jmp 0x3b8d5
movb $0x1, 0x5bb6b(%rip)     # 0x97440
leaq 0x218(%rbx), %rdi
movq %r13, %rsi
callq 0xe787
movsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x1e8(%rbx)
movb $0x1, %bpl
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x3c01a
movl 0x18(%rsp), %eax
movl %eax, 0x108(%rbx)
leaq 0x70(%rsp), %rdi
callq 0x3cc08
movl %ebp, %eax
addq $0x258, %rsp            # imm = 0x258
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3b9dc
jmp 0x3b9dc
jmp 0x3b9dc
jmp 0x3b9dc
jmp 0x3b998
jmp 0x3b998
jmp 0x3b98a
jmp 0x3b998
jmp 0x3b998
jmp 0x3b998
movq %rax, %rbx
jmp 0x3b9b2
jmp 0x3b98f
movq %rax, %rbx
leaq 0x1f8(%rsp), %rdi
jmp 0x3b978
movq %rax, %rbx
leaq 0x218(%rsp), %rdi
jmp 0x3b978
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
callq 0x9708
jmp 0x3b99b
jmp 0x3b985
jmp 0x3b998
jmp 0x3b998
movq %rax, %rbx
jmp 0x3b9a5
movq %rax, %rbx
jmp 0x3b9bf
movq %rax, %rbx
jmp 0x3b9c9
jmp 0x3b9dc
jmp 0x3b998
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x333e4
leaq 0xf0(%rsp), %rdi
callq 0x3c0f4
movq 0xe0(%rsp), %rdi
callq 0x93c0
movq 0x60(%rsp), %rdi
callq 0x93c0
leaq 0x168(%rsp), %rdi
callq 0x33400
jmp 0x3b9e9
jmp 0x3b9dc
jmp 0x3b9dc
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x3cc08
movq %rbx, %rdi
callq 0x9640
nop