// File: Manca[P]algorithms2/main.cpp
// Function: main
int main(int argc, const char * argv[]) 
{
    PROFILE("All problems for Algorithms 2 course")

    ///////////////////// Assignment 1 //////////////////////////
	std::cout << "*** Assignment 1 - Scheduling problem ***" << std::endl;
	assignment1::scheduling_problem::run_algorithm("data/jobs.txt");

	std::cout << std::endl << "*** Assignment 1 - Prim's algorithm - Test Case 1 ***" << std::endl;
	if (assignment1::prims_algorithm::test1())
		std::cout << "... Test passed!" << std::endl;

	std::cout << "*** Assignment 1 - Prim's algorithm - Main Test Case ***" << std::endl;
	assignment1::prims_algorithm::run_algorithm("data/edges.txt");

    ///////////////////// Assignment 2 //////////////////////////
    std::cout << std::endl << "*** Assignment 2 - UnionFind Test Case 1 ***" << std::endl;
    if (DataStructures::TestCase1())
        std::cout << "... Test passed!" << std::endl;

    std::cout << "*** Assignment 2 - Clustering - Max-Spacing K=4 Clustering ***" << std::endl;
    int max_spacing = assignment2::four_clustering::four_clustering("data/clustering1.txt");
    std::cout << "Max-Spacing clustering is: " << max_spacing << std::endl;

    std::cout << "*** Assignment 2 - Big Clustering - Hamming distance ***" << std::endl;
    assignment2::clustering_big::run_algorithm("data/clustering_big.txt");
    std::cout << "*** Assignment 2 - Big Clustering - Hamming distance - Faster Algorithm ***" << std::endl;
    assignment2::clustering_big::run_faster_algorithm("data/clustering_big.txt");

    ///////////////////// Assignment 3 //////////////////////////
    std::cout << std::endl << "*** Assignment 3 - Knapsack - Test Case 1 ***" << std::endl;
    if (assignment3::knapsack_1::testCase1())
        std::cout << "... Test passed!" << std::endl;
    std::cout << "*** Assignment 3 - Knapsack - Problem 1 ***" << std::endl;
    assignment3::knapsack_1::run_algorithm("data/knapsack1.txt");

    std::cout << "*** Assignment 3 - Knapsack - Problem 2 - Test Case 1 ***" << std::endl;
    if (assignment3::knapsack_big::testCase1())
        std::cout << "... Test passed!" << std::endl;
    std::cout << "*** Assignment 3 - Knapsack - Problem 2 ***" << std::endl;
    assignment3::knapsack_big::run_algorithm("data/knapsack_big.txt");

    ///////////////////// Assignment 4 //////////////////////////
    std::cout << std::endl << "*** Assignment 4 - All-Pairs Shortest Path ***" << std::endl;
    assignment4::run_algorithm("data/g1.txt");
    assignment4::run_algorithm("data/g2.txt");
    assignment4::run_algorithm("data/g3.txt"); 

    ///////////////////// Assignment 5 //////////////////////////
    std::cout << std::endl << "*** Assignment 5 - Traveling Salesman Problem ***" << std::endl;
    PROFILE("TSP")
    assignment5::TSP tsp("data/tsp.txt");
    tsp.solve();
    PROFILE_STOP();
    
    ///////////////////// Assignment 6 //////////////////////////
    std::cout << std::endl << "*** Assignment 6 - 2-SAT Problem ***" << std::endl;
    std::vector<bool> res;
    PROFILE("2 SAT");
    res.push_back(assignment6::run_algorithm("data/2sat1.txt"));
    res.push_back(assignment6::run_algorithm("data/2sat2.txt"));
    res.push_back(assignment6::run_algorithm("data/2sat3.txt"));
    res.push_back(assignment6::run_algorithm("data/2sat4.txt"));
    res.push_back(assignment6::run_algorithm("data/2sat5.txt"));
    res.push_back(assignment6::run_algorithm("data/2sat6.txt"));
    PROFILE_STOP();
    std::cout << "Solution:";
    for (bool sln : res)
        std::cout << " " << sln;
    
    std::cout << std::endl;
    PROFILE_STOP(); // main
}

// Assembly:
subq $0x558, %rsp            # imm = 0x558
movl $0x0, 0x554(%rsp)
movl %edi, 0x550(%rsp)
movq %rsi, 0x548(%rsp)
callq 0x10a60
movq %rax, 0x148(%rsp)
leaq 0x527(%rsp), %rdi
movq %rdi, 0x150(%rsp)
callq 0x3470
movq 0x150(%rsp), %rdx
leaq 0x25a7f(%rip), %rsi     # 0x30881
leaq 0x528(%rsp), %rdi
callq 0x3360
jmp 0xae11
movq 0x148(%rsp), %rdi
leaq 0x528(%rsp), %rsi
callq 0x10ad0
jmp 0xae28
leaq 0x528(%rsp), %rdi
callq 0x31f0
leaq 0x527(%rsp), %rdi
callq 0x3300
movq 0x3918f(%rip), %rdi     # 0x43fd8
leaq 0x25a56(%rip), %rsi     # 0x308a6
callq 0x32c0
movq %rax, %rdi
movq 0x39169(%rip), %rsi     # 0x43fc8
callq 0x32f0
leaq 0x4ef(%rsp), %rdi
movq %rdi, 0x140(%rsp)
callq 0x3470
movq 0x140(%rsp), %rdx
leaq 0x25a48(%rip), %rsi     # 0x308d0
leaq 0x4f0(%rsp), %rdi
callq 0x3360
jmp 0xae97
leaq 0x4f0(%rsp), %rdi
callq 0x3c70
jmp 0xaea6
leaq 0x4f0(%rsp), %rdi
callq 0x31f0
leaq 0x4ef(%rsp), %rdi
callq 0x3300
movq 0x39111(%rip), %rdi     # 0x43fd8
movq 0x390fa(%rip), %rsi     # 0x43fc8
callq 0x32f0
movq %rax, %rdi
leaq 0x25a01(%rip), %rsi     # 0x308de
callq 0x32c0
movq %rax, %rdi
movq 0x390dc(%rip), %rsi     # 0x43fc8
callq 0x32f0
callq 0x4320
testb $0x1, %al
jne 0xaeff
jmp 0xafb8
movq 0x390d2(%rip), %rdi     # 0x43fd8
leaq 0x25a07(%rip), %rsi     # 0x30914
callq 0x32c0
movq %rax, %rdi
movq 0x390ac(%rip), %rsi     # 0x43fc8
callq 0x32f0
jmp 0xafb8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xaf5d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x528(%rsp), %rdi
callq 0x31f0
leaq 0x527(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xafa6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x4f0(%rsp), %rdi
callq 0x31f0
leaq 0x4ef(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq 0x39019(%rip), %rdi     # 0x43fd8
leaq 0x2595f(%rip), %rsi     # 0x30925
callq 0x32c0
movq %rax, %rdi
movq 0x38ff3(%rip), %rsi     # 0x43fc8
callq 0x32f0
leaq 0x4c7(%rsp), %rdi
movq %rdi, 0x138(%rsp)
callq 0x3470
movq 0x138(%rsp), %rdx
leaq 0x25960(%rip), %rsi     # 0x3095e
leaq 0x4c8(%rsp), %rdi
callq 0x3360
jmp 0xb00d
leaq 0x4c8(%rsp), %rdi
callq 0x4a30
jmp 0xb01c
leaq 0x4c8(%rsp), %rdi
callq 0x31f0
leaq 0x4c7(%rsp), %rdi
callq 0x3300
movq 0x38f9b(%rip), %rdi     # 0x43fd8
movq 0x38f84(%rip), %rsi     # 0x43fc8
callq 0x32f0
movq %rax, %rdi
leaq 0x2591a(%rip), %rsi     # 0x3096d
callq 0x32c0
movq %rax, %rdi
movq 0x38f66(%rip), %rsi     # 0x43fc8
callq 0x32f0
callq 0x4f10
testb $0x1, %al
jne 0xb072
jmp 0xb0df
movq 0x38f5f(%rip), %rdi     # 0x43fd8
leaq 0x25894(%rip), %rsi     # 0x30914
callq 0x32c0
movq %rax, %rdi
movq 0x38f39(%rip), %rsi     # 0x43fc8
callq 0x32f0
jmp 0xb0df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xb0cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x4c8(%rsp), %rdi
callq 0x31f0
leaq 0x4c7(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq 0x38ef2(%rip), %rdi     # 0x43fd8
leaq 0x258ad(%rip), %rsi     # 0x3099a
callq 0x32c0
movq %rax, %rdi
movq 0x38ecc(%rip), %rsi     # 0x43fc8
callq 0x32f0
leaq 0x49f(%rsp), %rdi
movq %rdi, 0x130(%rsp)
callq 0x3470
movq 0x130(%rsp), %rdx
leaq 0x258b4(%rip), %rsi     # 0x309d9
leaq 0x4a0(%rsp), %rdi
callq 0x3360
jmp 0xb134
leaq 0x4a0(%rsp), %rdi
callq 0x53d0
movl %eax, 0x12c(%rsp)
jmp 0xb14a
leaq 0x4a0(%rsp), %rdi
callq 0x31f0
leaq 0x49f(%rsp), %rdi
callq 0x3300
movl 0x12c(%rsp), %eax
movl %eax, 0x4c0(%rsp)
movq 0x38e5f(%rip), %rdi     # 0x43fd8
movq %rdi, 0x110(%rsp)
leaq 0x25866(%rip), %rsi     # 0x309ee
callq 0x32c0
movq %rax, %rdi
movl 0x4c0(%rsp), %esi
callq 0x3440
movq %rax, %rdi
movq 0x38e22(%rip), %rsi     # 0x43fc8
movq %rsi, 0x118(%rsp)
callq 0x32f0
movq 0x110(%rsp), %rdi
leaq 0x25848(%rip), %rsi     # 0x30a0a
callq 0x32c0
movq 0x118(%rsp), %rsi
movq %rax, %rdi
callq 0x32f0
leaq 0x477(%rsp), %rdi
movq %rdi, 0x120(%rsp)
callq 0x3470
movq 0x120(%rsp), %rdx
leaq 0x25848(%rip), %rsi     # 0x30a43
leaq 0x478(%rsp), %rdi
callq 0x3360
jmp 0xb20a
leaq 0x478(%rsp), %rdi
callq 0x5ba0
jmp 0xb219
leaq 0x478(%rsp), %rdi
callq 0x31f0
leaq 0x477(%rsp), %rdi
callq 0x3300
movq 0x38d9e(%rip), %rdi     # 0x43fd8
leaq 0x2581a(%rip), %rsi     # 0x30a5b
callq 0x32c0
movq %rax, %rdi
movq 0x38d78(%rip), %rsi     # 0x43fc8
callq 0x32f0
leaq 0x44f(%rsp), %rdi
movq %rdi, 0x108(%rsp)
callq 0x3470
movq 0x108(%rsp), %rdx
leaq 0x257ca(%rip), %rsi     # 0x30a43
leaq 0x450(%rsp), %rdi
callq 0x3360
jmp 0xb288
leaq 0x450(%rsp), %rdi
callq 0x66b0
jmp 0xb297
leaq 0x450(%rsp), %rdi
callq 0x31f0
leaq 0x44f(%rsp), %rdi
callq 0x3300
movq 0x38d20(%rip), %rdi     # 0x43fd8
movq 0x38d09(%rip), %rsi     # 0x43fc8
callq 0x32f0
movq %rax, %rdi
leaq 0x257d9(%rip), %rsi     # 0x30aa7
callq 0x32c0
movq %rax, %rdi
movq 0x38ceb(%rip), %rsi     # 0x43fc8
callq 0x32f0
callq 0x7810
testb $0x1, %al
jne 0xb2f0
jmp 0xb3f2
movq 0x38ce1(%rip), %rdi     # 0x43fd8
leaq 0x25616(%rip), %rsi     # 0x30914
callq 0x32c0
movq %rax, %rdi
movq 0x38cbb(%rip), %rsi     # 0x43fc8
callq 0x32f0
jmp 0xb3f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xb34e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x4a0(%rsp), %rdi
callq 0x31f0
leaq 0x49f(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xb397
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x478(%rsp), %rdi
callq 0x31f0
leaq 0x477(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xb3e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x450(%rsp), %rdi
callq 0x31f0
leaq 0x44f(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq 0x38bdf(%rip), %rdi     # 0x43fd8
leaq 0x256d5(%rip), %rsi     # 0x30ad5
callq 0x32c0
movq %rax, %rdi
movq 0x38bb9(%rip), %rsi     # 0x43fc8
callq 0x32f0
leaq 0x427(%rsp), %rdi
movq %rdi, 0x100(%rsp)
callq 0x3470
movq 0x100(%rsp), %rdx
leaq 0x256c9(%rip), %rsi     # 0x30b01
leaq 0x428(%rsp), %rdi
callq 0x3360
jmp 0xb447
leaq 0x428(%rsp), %rdi
callq 0x79e0
jmp 0xb456
leaq 0x428(%rsp), %rdi
callq 0x31f0
leaq 0x427(%rsp), %rdi
callq 0x3300
movq 0x38b61(%rip), %rdi     # 0x43fd8
leaq 0x25696(%rip), %rsi     # 0x30b14
callq 0x32c0
movq %rax, %rdi
movq 0x38b3b(%rip), %rsi     # 0x43fc8
callq 0x32f0
callq 0x8010
testb $0x1, %al
jne 0xb49d
jmp 0xb50a
movq 0x38b34(%rip), %rdi     # 0x43fd8
leaq 0x25469(%rip), %rsi     # 0x30914
callq 0x32c0
movq %rax, %rdi
movq 0x38b0e(%rip), %rsi     # 0x43fc8
callq 0x32f0
jmp 0xb50a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xb4f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x428(%rsp), %rdi
callq 0x31f0
leaq 0x427(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq 0x38ac7(%rip), %rdi     # 0x43fd8
leaq 0x25636(%rip), %rsi     # 0x30b4e
callq 0x32c0
movq %rax, %rdi
movq 0x38aa1(%rip), %rsi     # 0x43fc8
callq 0x32f0
leaq 0x3ff(%rsp), %rdi
movq %rdi, 0xf8(%rsp)
callq 0x3470
movq 0xf8(%rsp), %rdx
leaq 0x2562a(%rip), %rsi     # 0x30b7a
leaq 0x400(%rsp), %rdi
callq 0x3360
jmp 0xb55f
leaq 0x400(%rsp), %rdi
callq 0x81e0
jmp 0xb56e
leaq 0x400(%rsp), %rdi
callq 0x31f0
leaq 0x3ff(%rsp), %rdi
callq 0x3300
movq 0x38a49(%rip), %rdi     # 0x43fd8
movq 0x38a32(%rip), %rsi     # 0x43fc8
movq %rsi, 0xe8(%rsp)
callq 0x32f0
movq %rax, %rdi
leaq 0x255e3(%rip), %rsi     # 0x30b90
callq 0x32c0
movq 0xe8(%rsp), %rsi
movq %rax, %rdi
callq 0x32f0
leaq 0x3d7(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0x3470
movq 0xf0(%rsp), %rdx
leaq 0x255d9(%rip), %rsi     # 0x30bbf
leaq 0x3d8(%rsp), %rdi
callq 0x3360
jmp 0xb5f5
leaq 0x3d8(%rsp), %rdi
callq 0x97b0
jmp 0xb604
leaq 0x3d8(%rsp), %rdi
callq 0x31f0
leaq 0x3d7(%rsp), %rdi
callq 0x3300
leaq 0x3af(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0x3470
movq 0xe0(%rsp), %rdx
leaq 0x25589(%rip), %rsi     # 0x30bcb
leaq 0x3b0(%rsp), %rdi
callq 0x3360
jmp 0xb651
leaq 0x3b0(%rsp), %rdi
callq 0x97b0
jmp 0xb660
leaq 0x3b0(%rsp), %rdi
callq 0x31f0
leaq 0x3af(%rsp), %rdi
callq 0x3300
leaq 0x387(%rsp), %rdi
movq %rdi, 0xd8(%rsp)
callq 0x3470
movq 0xd8(%rsp), %rdx
leaq 0x25539(%rip), %rsi     # 0x30bd7
leaq 0x388(%rsp), %rdi
callq 0x3360
jmp 0xb6ad
leaq 0x388(%rsp), %rdi
callq 0x97b0
jmp 0xb6bc
leaq 0x388(%rsp), %rdi
callq 0x31f0
leaq 0x387(%rsp), %rdi
callq 0x3300
movq 0x388fb(%rip), %rdi     # 0x43fd8
movq 0x388e4(%rip), %rsi     # 0x43fc8
movq %rsi, 0xc0(%rsp)
callq 0x32f0
movq %rax, %rdi
leaq 0x254e8(%rip), %rsi     # 0x30be3
callq 0x32c0
movq 0xc0(%rsp), %rsi
movq %rax, %rdi
callq 0x32f0
callq 0x10a60
movq %rax, 0xc8(%rsp)
leaq 0x35f(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0x3470
movq 0xd0(%rsp), %rdx
leaq 0x254d4(%rip), %rsi     # 0x30c15
leaq 0x360(%rsp), %rdi
callq 0x3360
jmp 0xb750
movq 0xc8(%rsp), %rdi
leaq 0x360(%rsp), %rsi
callq 0x10ad0
jmp 0xb767
leaq 0x360(%rsp), %rdi
callq 0x31f0
leaq 0x35f(%rsp), %rdi
callq 0x3300
leaq 0x2ff(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0x3470
movq 0xb8(%rsp), %rdx
leaq 0x25474(%rip), %rsi     # 0x30c19
leaq 0x300(%rsp), %rdi
callq 0x3360
jmp 0xb7b4
leaq 0x320(%rsp), %rdi
leaq 0x300(%rsp), %rsi
callq 0x12890
jmp 0xb7cb
leaq 0x300(%rsp), %rdi
callq 0x31f0
leaq 0x2ff(%rsp), %rdi
callq 0x3300
leaq 0x320(%rsp), %rdi
callq 0x12a90
jmp 0xb7f4
callq 0x10a60
movq %rax, 0xb0(%rsp)
jmp 0xb803
movq 0xb0(%rsp), %rdi
callq 0x10b90
jmp 0xb812
movq 0x387bf(%rip), %rdi     # 0x43fd8
movq 0x387a8(%rip), %rsi     # 0x43fc8
callq 0x32f0
movq %rax, 0xa8(%rsp)
jmp 0xb82f
movq 0xa8(%rsp), %rdi
leaq 0x253e8(%rip), %rsi     # 0x30c26
callq 0x32c0
movq %rax, 0xa0(%rsp)
jmp 0xb84d
movq 0xa0(%rsp), %rdi
movq 0x3876c(%rip), %rsi     # 0x43fc8
callq 0x32f0
jmp 0xb863
leaq 0x2d0(%rsp), %rdi
callq 0x13520
callq 0x10a60
movq %rax, 0x98(%rsp)
jmp 0xb87f
leaq 0x2af(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x3470
movq 0x90(%rsp), %rdx
leaq 0x253a8(%rip), %rsi     # 0x30c4b
leaq 0x2b0(%rsp), %rdi
callq 0x3360
jmp 0xb8b2
movq 0x98(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
callq 0x10ad0
jmp 0xb8c9
leaq 0x2b0(%rsp), %rdi
callq 0x31f0
leaq 0x2af(%rsp), %rdi
callq 0x3300
leaq 0x287(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x3470
movq 0x88(%rsp), %rdx
leaq 0x2534a(%rip), %rsi     # 0x30c51
leaq 0x288(%rsp), %rdi
callq 0x3360
jmp 0xb916
leaq 0x288(%rsp), %rdi
callq 0xa3c0
movb %al, 0x87(%rsp)
jmp 0xb92c
movb 0x87(%rsp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq 0x2d0(%rsp), %rdi
callq 0x13530
jmp 0xb948
leaq 0x288(%rsp), %rdi
callq 0x31f0
leaq 0x287(%rsp), %rdi
callq 0x3300
leaq 0x25f(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x3470
movq 0x78(%rsp), %rdx
leaq 0x252e0(%rip), %rsi     # 0x30c60
leaq 0x260(%rsp), %rdi
callq 0x3360
jmp 0xb98f
leaq 0x260(%rsp), %rdi
callq 0xa3c0
movb %al, 0x77(%rsp)
jmp 0xb9a2
movb 0x77(%rsp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq 0x2d0(%rsp), %rdi
callq 0x13530
jmp 0xb9bb
leaq 0x260(%rsp), %rdi
callq 0x31f0
leaq 0x25f(%rsp), %rdi
callq 0x3300
leaq 0x237(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0x3470
movq 0x68(%rsp), %rdx
leaq 0x2527c(%rip), %rsi     # 0x30c6f
leaq 0x238(%rsp), %rdi
callq 0x3360
jmp 0xba02
leaq 0x238(%rsp), %rdi
callq 0xa3c0
movb %al, 0x67(%rsp)
jmp 0xba15
movb 0x67(%rsp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq 0x2d0(%rsp), %rdi
callq 0x13530
jmp 0xba2e
leaq 0x238(%rsp), %rdi
callq 0x31f0
leaq 0x237(%rsp), %rdi
callq 0x3300
leaq 0x20f(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x3470
movq 0x58(%rsp), %rdx
leaq 0x25218(%rip), %rsi     # 0x30c7e
leaq 0x210(%rsp), %rdi
callq 0x3360
jmp 0xba75
leaq 0x210(%rsp), %rdi
callq 0xa3c0
movb %al, 0x57(%rsp)
jmp 0xba88
movb 0x57(%rsp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq 0x2d0(%rsp), %rdi
callq 0x13530
jmp 0xbaa1
leaq 0x210(%rsp), %rdi
callq 0x31f0
leaq 0x20f(%rsp), %rdi
callq 0x3300
leaq 0x1e7(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x3470
movq 0x48(%rsp), %rdx
leaq 0x251b4(%rip), %rsi     # 0x30c8d
leaq 0x1e8(%rsp), %rdi
callq 0x3360
jmp 0xbae8
leaq 0x1e8(%rsp), %rdi
callq 0xa3c0
movb %al, 0x47(%rsp)
jmp 0xbafb
movb 0x47(%rsp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq 0x2d0(%rsp), %rdi
callq 0x13530
jmp 0xbb14
leaq 0x1e8(%rsp), %rdi
callq 0x31f0
leaq 0x1e7(%rsp), %rdi
callq 0x3300
leaq 0x1bf(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x3470
movq 0x38(%rsp), %rdx
leaq 0x25150(%rip), %rsi     # 0x30c9c
leaq 0x1c0(%rsp), %rdi
callq 0x3360
jmp 0xbb5b
leaq 0x1c0(%rsp), %rdi
callq 0xa3c0
movb %al, 0x37(%rsp)
jmp 0xbb6e
movb 0x37(%rsp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq 0x2d0(%rsp), %rdi
callq 0x13530
jmp 0xbb87
leaq 0x1c0(%rsp), %rdi
callq 0x31f0
leaq 0x1bf(%rsp), %rdi
callq 0x3300
callq 0x10a60
movq %rax, 0x28(%rsp)
jmp 0xbbad
movq 0x28(%rsp), %rdi
callq 0x10b90
jmp 0xbbb9
movq 0x38418(%rip), %rdi     # 0x43fd8
leaq 0x250e4(%rip), %rsi     # 0x30cab
callq 0x32c0
jmp 0xbbce
leaq 0x2d0(%rsp), %rax
movq %rax, 0x1b0(%rsp)
movq 0x1b0(%rsp), %rdi
callq 0x13610
movl %edx, 0x198(%rsp)
movq %rax, 0x190(%rsp)
movl 0x198(%rsp), %eax
movl %eax, 0x1a8(%rsp)
movq 0x190(%rsp), %rax
movq %rax, 0x1a0(%rsp)
movq 0x1b0(%rsp), %rdi
callq 0x13650
movl %edx, 0x178(%rsp)
movq %rax, 0x170(%rsp)
movq 0x170(%rsp), %rax
movq %rax, 0x180(%rsp)
movl 0x178(%rsp), %eax
movl %eax, 0x188(%rsp)
leaq 0x1a0(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x13670
movb %al, 0x27(%rsp)
jmp 0xbc6d
movb 0x27(%rsp), %al
testb $0x1, %al
jne 0xbc7a
jmp 0xc0ec
leaq 0x1a0(%rsp), %rdi
callq 0x136a0
movq %rdx, 0x10(%rsp)
movq %rax, 0x18(%rsp)
jmp 0xbc93
movq 0x10(%rsp), %rax
movq 0x18(%rsp), %rcx
movq %rcx, 0x158(%rsp)
movq %rax, 0x160(%rsp)
leaq 0x158(%rsp), %rdi
callq 0x11400
movb %al, 0x16f(%rsp)
movq 0x38310(%rip), %rdi     # 0x43fd8
leaq 0x24b95(%rip), %rsi     # 0x30864
callq 0x32c0
movq %rax, 0x8(%rsp)
jmp 0xbcdb
movq 0x8(%rsp), %rdi
movzbl 0x16f(%rsp), %esi
andl $0x1, %esi
callq 0x3480
jmp 0xbcf2
jmp 0xbcf4
leaq 0x1a0(%rsp), %rdi
callq 0x136e0
jmp 0xbd03
jmp 0xbc52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xbd3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x400(%rsp), %rdi
callq 0x31f0
leaq 0x3ff(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xbd88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x3d8(%rsp), %rdi
callq 0x31f0
leaq 0x3d7(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xbdd1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x3b0(%rsp), %rdi
callq 0x31f0
leaq 0x3af(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xbe1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x388(%rsp), %rdi
callq 0x31f0
leaq 0x387(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xbe63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x360(%rsp), %rdi
callq 0x31f0
leaq 0x35f(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xbeac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x300(%rsp), %rdi
callq 0x31f0
leaq 0x2ff(%rsp), %rdi
callq 0x3300
jmp 0xc15a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xc14d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xc140
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xbf27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x2b0(%rsp), %rdi
callq 0x31f0
leaq 0x2af(%rsp), %rdi
callq 0x3300
jmp 0xc140
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xbf70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x288(%rsp), %rdi
callq 0x31f0
leaq 0x287(%rsp), %rdi
callq 0x3300
jmp 0xc140
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xbfb9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x260(%rsp), %rdi
callq 0x31f0
leaq 0x25f(%rsp), %rdi
callq 0x3300
jmp 0xc140
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xc002
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x238(%rsp), %rdi
callq 0x31f0
leaq 0x237(%rsp), %rdi
callq 0x3300
jmp 0xc140
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xc04b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x210(%rsp), %rdi
callq 0x31f0
leaq 0x20f(%rsp), %rdi
callq 0x3300
jmp 0xc140
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xc094
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x1e8(%rsp), %rdi
callq 0x31f0
leaq 0x1e7(%rsp), %rdi
callq 0x3300
jmp 0xc140
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
jmp 0xc0dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x518(%rsp)
movl %eax, 0x514(%rsp)
leaq 0x1c0(%rsp), %rdi
callq 0x31f0
leaq 0x1bf(%rsp), %rdi
callq 0x3300
jmp 0xc140
movq 0x37ee5(%rip), %rdi     # 0x43fd8
movq 0x37ece(%rip), %rsi     # 0x43fc8
callq 0x32f0
jmp 0xc101
callq 0x10a60
movq %rax, (%rsp)
jmp 0xc10c
movq (%rsp), %rdi
callq 0x10b90
jmp 0xc117
leaq 0x2d0(%rsp), %rdi
callq 0x11480
leaq 0x320(%rsp), %rdi
callq 0x13710
movl 0x554(%rsp), %eax
addq $0x558, %rsp            # imm = 0x558
retq
leaq 0x2d0(%rsp), %rdi
callq 0x11480
leaq 0x320(%rsp), %rdi
callq 0x13710
movq 0x518(%rsp), %rdi
callq 0x3460
nopw (%rax,%rax)