// File: bonetblai[P]mdp-engine/tree/main.cc
// Function: main
int main(int argc, const char **argv) {
    unsigned size = 0;
    float q = 0.5;
    float r = 0.0;
    float p = 1.0;
    unsigned num_trials = 1;

    vector<string> requests;

    float start_time = Utils::read_time_in_seconds();
    cout << fixed;

    // parse arguments
    for( ++argv, --argc; (argc > 1) && (**argv == '-'); ++argv, --argc ) {
        if( string(*argv) == "--no-colors" ) {
            Utils::g_use_colors = false;
        } else if( ((*argv)[1] == 'r') || (string(*argv) == "--request") ) {
            requests.push_back(argv[1]);
            ++argv;
            --argc;
        } else if( ((*argv)[1] == 's') || (string(*argv) == "--seed") ) {
            Algorithm::g_seed = strtoul(argv[1], 0, 0);
            Online::g_seed = Algorithm::g_seed;
            ++argv;
            --argc;
        } else if( ((*argv)[1] == 't') || (string(*argv) == "--trials") ) {
            num_trials = strtoul(argv[1], 0, 0);
            ++argv;
            --argc;
        } else {
            usage(cout);
            exit(-1);
        }
    }

    // read problem parameters
    if( argc >= 1 ) {
        size = strtoul(argv[0], 0, 0);
        if( argc >= 2 ) p = strtod(argv[1], 0);
        if( argc >= 3 ) q = strtod(argv[2], 0);
        if( argc >= 4 ) r = strtod(argv[3], 0);
    } else {
        usage(cout);
        exit(-1);
    }

    // build problem instances
    cout << "main: seed=" << Algorithm::g_seed << endl;
    Random::set_seed(Algorithm::g_seed);
    problem_t problem(size, p, q, r);

    // build requests
    vector<pair<string, Online::Policy::policy_t<state_t>*> > policies;
    vector<pair<string, Algorithm::algorithm_t<state_t>*> > algorithms;
    Dispatcher::dispatcher_t<state_t> dispatcher;
    for( int i = 0; i < int(requests.size()); ++i ) {
        const string &request_str = requests[i];
        std::multimap<std::string, std::string> request;
        Utils::tokenize(request_str, request);
        for( std::multimap<std::string, std::string>::const_iterator it = request.begin(); it != request.end(); ++it ) {
            dispatcher.create_request(problem, it->first, it->second);
            if( it->first == "algorithm" ) {
                Algorithm::algorithm_t<state_t> *algorithm = dispatcher.fetch_algorithm(it->second);
                if( algorithm != 0 ) algorithms.push_back(make_pair(it->second, algorithm));
            } else if( it->first == "policy" ) {
                Online::Policy::policy_t<state_t> *policy = dispatcher.fetch_policy(it->second);
                if( policy != 0 ) policies.push_back(make_pair(it->second, policy));
            }
        }
    }

    // solve problems with requested algorithms
    vector<Dispatcher::dispatcher_t<state_t>::solve_result_t> solve_results;
    for( int i = 0; i < int(algorithms.size()); ++i ) {
        const string &request = algorithms[i].first;
        const Algorithm::algorithm_t<state_t> &algorithm = *algorithms[i].second;
        Dispatcher::dispatcher_t<state_t>::solve_result_t result;
        dispatcher.solve(request, algorithm, problem.init(), result);
        solve_results.push_back(result);
    }

    cout << Utils::warning() << "the following stats may aggregate figures when elements are shared among algorithms" << endl;
    if( !solve_results.empty() ) {
        for( int i = 0; i < int(solve_results.size()); ++i ) {
            dispatcher.print_stats(cout, solve_results[i]);
        }
    }

    // evaluate requested policies
    vector<Dispatcher::dispatcher_t<state_t>::evaluate_result_t> evaluate_results;
    for( int i = 0; i < int(policies.size()); ++i ) {
        const string &request = policies[i].first;
        const Online::Policy::policy_t<state_t> &policy = *policies[i].second;
        Dispatcher::dispatcher_t<state_t>::evaluate_result_t result;
        dispatcher.evaluate(request, policy, problem.init(), result, num_trials, 100, true);
        evaluate_results.push_back(result);
    }

    cout << Utils::warning() << "the following stats may aggregate figures when elements are shared among policies" << endl;
    if( !evaluate_results.empty() ) {
        for( int i = 0; i < int(evaluate_results.size()); ++i ) {
            dispatcher.print_stats(cout, evaluate_results[i]);
        }
    }

    cout << "main: total-time=" << Utils::read_time_in_seconds() - start_time << endl;
    return 0;
}

// Assembly:
subq $0x5c8, %rsp            # imm = 0x5C8
movl $0x0, 0x5c4(%rsp)
movl %edi, 0x5c0(%rsp)
movq %rsi, 0x5b8(%rsp)
movl $0x0, 0x5b4(%rsp)
movl $0x3f000000, 0x5b0(%rsp) # imm = 0x3F000000
movl $0x0, 0x5ac(%rsp)
movl $0x3f800000, 0x5a8(%rsp) # imm = 0x3F800000
movl $0x1, 0x5a4(%rsp)
leaq 0x588(%rsp), %rdi
callq 0x7a20
callq 0x7a30
movss %xmm0, 0x170(%rsp)
jmp 0x6715
movss 0x170(%rsp), %xmm0
movss %xmm0, 0x584(%rsp)
movq 0x6c8a2(%rip), %rdi     # 0x72fd0
leaq 0x137b(%rip), %rsi      # 0x7ab0
callq 0x60e0
jmp 0x673c
movq 0x5b8(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x5b8(%rsp)
movl 0x5c0(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x5c0(%rsp)
xorl %eax, %eax
cmpl $0x1, 0x5c0(%rsp)
movb %al, 0x16f(%rsp)
jle 0x678f
movq 0x5b8(%rsp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
sete %al
movb %al, 0x16f(%rsp)
movb 0x16f(%rsp), %al
testb $0x1, %al
jne 0x679f
jmp 0x6e9e
movq 0x5b8(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x158(%rsp)
leaq 0x54f(%rsp), %rdi
movq %rdi, 0x160(%rsp)
callq 0x64a0
movq 0x158(%rsp), %rsi
movq 0x160(%rsp), %rdx
leaq 0x550(%rsp), %rdi
callq 0x63c0
jmp 0x67e6
leaq 0x4b902(%rip), %rsi     # 0x520ef
leaq 0x550(%rsp), %rdi
callq 0x7ad0
movb %al, 0x157(%rsp)
jmp 0x6803
leaq 0x550(%rsp), %rdi
callq 0x6190
leaq 0x54f(%rsp), %rdi
callq 0x6310
movb 0x157(%rsp), %al
testb $0x1, %al
jne 0x682a
jmp 0x6898
movb $0x0, 0x6ca67(%rip)     # 0x73298
jmp 0x6e72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x79f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x6886
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x550(%rsp), %rdi
callq 0x6190
leaq 0x54f(%rsp), %rdi
callq 0x6310
jmp 0x79f8
movq 0x5b8(%rsp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %ecx
movb $0x0, 0x526(%rsp)
movb $0x0, 0x525(%rsp)
movb $0x1, %al
cmpl $0x72, %ecx
movb %al, 0x156(%rsp)
je 0x694d
movq 0x5b8(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x140(%rsp)
leaq 0x527(%rsp), %rdi
movq %rdi, 0x148(%rsp)
callq 0x64a0
movq 0x140(%rsp), %rsi
movq 0x148(%rsp), %rdx
movb $0x1, 0x526(%rsp)
leaq 0x528(%rsp), %rdi
callq 0x63c0
jmp 0x6918
movb $0x1, 0x525(%rsp)
leaq 0x4b7d4(%rip), %rsi     # 0x520fb
leaq 0x528(%rsp), %rdi
callq 0x7ad0
movb %al, 0x13f(%rsp)
jmp 0x693d
movb 0x13f(%rsp), %al
movb %al, 0x156(%rsp)
jmp 0x694d
movb 0x156(%rsp), %al
movb %al, 0x13e(%rsp)
testb $0x1, 0x525(%rsp)
jne 0x6967
jmp 0x6974
leaq 0x528(%rsp), %rdi
callq 0x6190
testb $0x1, 0x526(%rsp)
jne 0x6980
jmp 0x698d
leaq 0x527(%rsp), %rdi
callq 0x6310
movb 0x13e(%rsp), %al
testb $0x1, %al
jne 0x699d
jmp 0x6aec
movq 0x5b8(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x128(%rsp)
leaq 0x4ff(%rsp), %rdi
movq %rdi, 0x130(%rsp)
callq 0x64a0
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %rdx
leaq 0x500(%rsp), %rdi
callq 0x63c0
jmp 0x69e5
leaq 0x588(%rsp), %rdi
leaq 0x500(%rsp), %rsi
callq 0x7b00
jmp 0x69fc
leaq 0x500(%rsp), %rdi
callq 0x6190
leaq 0x4ff(%rsp), %rdi
callq 0x6310
movq 0x5b8(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x5b8(%rsp)
movl 0x5c0(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x5c0(%rsp)
jmp 0x6e70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x6a85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
testb $0x1, 0x525(%rsp)
jne 0x6a76
jmp 0x6a83
leaq 0x528(%rsp), %rdi
callq 0x6190
jmp 0x6a85
testb $0x1, 0x526(%rsp)
jne 0x6a91
jmp 0x6a9e
leaq 0x527(%rsp), %rdi
callq 0x6310
jmp 0x79f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x6ada
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x500(%rsp), %rdi
callq 0x6190
leaq 0x4ff(%rsp), %rdi
callq 0x6310
jmp 0x79f8
movq 0x5b8(%rsp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %ecx
movb $0x0, 0x4d6(%rsp)
movb $0x0, 0x4d5(%rsp)
movb $0x1, %al
cmpl $0x73, %ecx
movb %al, 0x127(%rsp)
je 0x6ba1
movq 0x5b8(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x110(%rsp)
leaq 0x4d7(%rsp), %rdi
movq %rdi, 0x118(%rsp)
callq 0x64a0
movq 0x110(%rsp), %rsi
movq 0x118(%rsp), %rdx
movb $0x1, 0x4d6(%rsp)
leaq 0x4d8(%rsp), %rdi
callq 0x63c0
jmp 0x6b6c
movb $0x1, 0x4d5(%rsp)
leaq 0x4b58a(%rip), %rsi     # 0x52105
leaq 0x4d8(%rsp), %rdi
callq 0x7ad0
movb %al, 0x10f(%rsp)
jmp 0x6b91
movb 0x10f(%rsp), %al
movb %al, 0x127(%rsp)
jmp 0x6ba1
movb 0x127(%rsp), %al
movb %al, 0x10e(%rsp)
testb $0x1, 0x4d5(%rsp)
jne 0x6bbb
jmp 0x6bc8
leaq 0x4d8(%rsp), %rdi
callq 0x6190
testb $0x1, 0x4d6(%rsp)
jne 0x6bd4
jmp 0x6be1
leaq 0x4d7(%rsp), %rdi
callq 0x6310
movb 0x10e(%rsp), %al
testb $0x1, %al
jne 0x6bf1
jmp 0x6ca7
movq 0x5b8(%rsp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x60d0
movl %eax, 0x6c6a2(%rip)     # 0x732b0
movl 0x6c69c(%rip), %eax     # 0x732b0
movl %eax, 0x6c69a(%rip)     # 0x732b4
movq 0x5b8(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x5b8(%rsp)
movl 0x5c0(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x5c0(%rsp)
jmp 0x6e6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x6c89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
testb $0x1, 0x4d5(%rsp)
jne 0x6c7a
jmp 0x6c87
leaq 0x4d8(%rsp), %rdi
callq 0x6190
jmp 0x6c89
testb $0x1, 0x4d6(%rsp)
jne 0x6c95
jmp 0x6ca2
leaq 0x4d7(%rsp), %rdi
callq 0x6310
jmp 0x79f8
movq 0x5b8(%rsp), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %ecx
movb $0x0, 0x4ae(%rsp)
movb $0x0, 0x4ad(%rsp)
movb $0x1, %al
cmpl $0x74, %ecx
movb %al, 0x10d(%rsp)
je 0x6d5c
movq 0x5b8(%rsp), %rax
movq (%rax), %rax
movq %rax, 0xf8(%rsp)
leaq 0x4af(%rsp), %rdi
movq %rdi, 0x100(%rsp)
callq 0x64a0
movq 0xf8(%rsp), %rsi
movq 0x100(%rsp), %rdx
movb $0x1, 0x4ae(%rsp)
leaq 0x4b0(%rsp), %rdi
callq 0x63c0
jmp 0x6d27
movb $0x1, 0x4ad(%rsp)
leaq 0x4b3d6(%rip), %rsi     # 0x5210c
leaq 0x4b0(%rsp), %rdi
callq 0x7ad0
movb %al, 0xf7(%rsp)
jmp 0x6d4c
movb 0xf7(%rsp), %al
movb %al, 0x10d(%rsp)
jmp 0x6d5c
movb 0x10d(%rsp), %al
movb %al, 0xf6(%rsp)
testb $0x1, 0x4ad(%rsp)
jne 0x6d76
jmp 0x6d83
leaq 0x4b0(%rsp), %rdi
callq 0x6190
testb $0x1, 0x4ae(%rsp)
jne 0x6d8f
jmp 0x6d9c
leaq 0x4af(%rsp), %rdi
callq 0x6310
movb 0xf6(%rsp), %al
testb $0x1, %al
jne 0x6dac
jmp 0x6e54
movq 0x5b8(%rsp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x60d0
movl %eax, 0x5a4(%rsp)
movq 0x5b8(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x5b8(%rsp)
movl 0x5c0(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x5c0(%rsp)
jmp 0x6e6c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x6e36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
testb $0x1, 0x4ad(%rsp)
jne 0x6e27
jmp 0x6e34
leaq 0x4b0(%rsp), %rdi
callq 0x6190
jmp 0x6e36
testb $0x1, 0x4ae(%rsp)
jne 0x6e42
jmp 0x6e4f
leaq 0x4af(%rsp), %rdi
callq 0x6310
jmp 0x79f8
movq 0x6c175(%rip), %rdi     # 0x72fd0
callq 0x6670
jmp 0x6e62
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x6360
jmp 0x6e6e
jmp 0x6e70
jmp 0x6e72
jmp 0x6e74
movq 0x5b8(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x5b8(%rsp)
movl 0x5c0(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x5c0(%rsp)
jmp 0x6761
cmpl $0x1, 0x5c0(%rsp)
jl 0x6f4f
movq 0x5b8(%rsp), %rax
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x60d0
movl %eax, 0x5b4(%rsp)
cmpl $0x2, 0x5c0(%rsp)
jl 0x6ef5
movq 0x5b8(%rsp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6210
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x5a8(%rsp)
cmpl $0x3, 0x5c0(%rsp)
jl 0x6f21
movq 0x5b8(%rsp), %rax
movq 0x10(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6210
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x5b0(%rsp)
cmpl $0x4, 0x5c0(%rsp)
jl 0x6f4d
movq 0x5b8(%rsp), %rax
movq 0x18(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x6210
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x5ac(%rsp)
jmp 0x6f67
movq 0x6c07a(%rip), %rdi     # 0x72fd0
callq 0x6670
jmp 0x6f5d
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x6360
movq 0x6c062(%rip), %rdi     # 0x72fd0
leaq 0x4b1a0(%rip), %rsi     # 0x52115
callq 0x62b0
movq %rax, 0xe8(%rsp)
jmp 0x6f84
movq 0xe8(%rsp), %rdi
movl 0x6c31e(%rip), %esi     # 0x732b0
callq 0x63a0
movq %rax, 0xe0(%rsp)
jmp 0x6fa1
movq 0xe0(%rsp), %rdi
movq 0x6c008(%rip), %rsi     # 0x72fb8
callq 0x62f0
jmp 0x6fb7
movl 0x6c2f3(%rip), %edi     # 0x732b0
callq 0x7b30
jmp 0x6fc4
movl 0x5b4(%rsp), %esi
movss 0x5a8(%rsp), %xmm0
movss 0x5b0(%rsp), %xmm1
movss 0x5ac(%rsp), %xmm2
leaq 0x440(%rsp), %rdi
callq 0x7b70
jmp 0x6ff5
leaq 0x428(%rsp), %rdi
callq 0x7c60
leaq 0x410(%rsp), %rdi
callq 0x7c70
leaq 0x378(%rsp), %rdi
callq 0x7c80
jmp 0x701e
movl $0x0, 0x374(%rsp)
movl 0x374(%rsp), %eax
movl %eax, 0xdc(%rsp)
leaq 0x588(%rsp), %rdi
callq 0x7cd0
movq %rax, %rcx
movl 0xdc(%rsp), %eax
cmpl %ecx, %eax
jge 0x73cf
movslq 0x374(%rsp), %rsi
leaq 0x588(%rsp), %rdi
callq 0x7cf0
movq %rax, 0x368(%rsp)
leaq 0x338(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0x7d10
movq 0xd0(%rsp), %rsi
movq 0x368(%rsp), %rdi
movl $0x2c, %edx
callq 0x7d20
jmp 0x70a4
leaq 0x338(%rsp), %rdi
callq 0x80b0
movq %rax, 0x328(%rsp)
leaq 0x330(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x80e0
leaq 0x338(%rsp), %rdi
callq 0x8120
movq %rax, 0x318(%rsp)
leaq 0x320(%rsp), %rdi
leaq 0x318(%rsp), %rsi
callq 0x80e0
leaq 0x330(%rsp), %rdi
leaq 0x320(%rsp), %rsi
callq 0x8100
testb $0x1, %al
jne 0x7116
jmp 0x739a
leaq 0x330(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0x9540
movq 0xc0(%rsp), %rdi
movq %rax, 0xc8(%rsp)
callq 0x9540
movq 0xc8(%rsp), %rdx
movq %rax, %rcx
addq $0x20, %rcx
leaq 0x378(%rsp), %rdi
leaq 0x440(%rsp), %rsi
callq 0x8150
jmp 0x7166
leaq 0x330(%rsp), %rdi
callq 0x9540
movq %rax, %rdi
leaq 0x4afa4(%rip), %rsi     # 0x52121
callq 0x7ad0
movb %al, 0xbf(%rsp)
jmp 0x718b
movb 0xbf(%rsp), %al
testb $0x1, %al
jne 0x719b
jmp 0x7293
leaq 0x330(%rsp), %rdi
callq 0x9540
movq %rax, %rsi
addq $0x20, %rsi
leaq 0x378(%rsp), %rdi
callq 0x9560
movq %rax, 0xb0(%rsp)
jmp 0x71c6
movq 0xb0(%rsp), %rax
movq %rax, 0x310(%rsp)
cmpq $0x0, 0x310(%rsp)
je 0x728e
leaq 0x330(%rsp), %rdi
callq 0x9540
movq %rax, %rsi
addq $0x20, %rsi
leaq 0x2e8(%rsp), %rdi
leaq 0x310(%rsp), %rdx
callq 0x9630
jmp 0x7210
leaq 0x410(%rsp), %rdi
leaq 0x2e8(%rsp), %rsi
callq 0x9600
jmp 0x7227
leaq 0x2e8(%rsp), %rdi
callq 0x9670
jmp 0x728e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x79d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x73bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x2e8(%rsp), %rdi
callq 0x9670
jmp 0x73bd
jmp 0x7386
leaq 0x330(%rsp), %rdi
callq 0x9540
movq %rax, %rdi
leaq 0x4ae81(%rip), %rsi     # 0x5212b
callq 0x7ad0
movb %al, 0xaf(%rsp)
jmp 0x72b8
movb 0xaf(%rsp), %al
testb $0x1, %al
jne 0x72c8
jmp 0x7384
leaq 0x330(%rsp), %rdi
callq 0x9540
movq %rax, %rsi
addq $0x20, %rsi
leaq 0x378(%rsp), %rdi
callq 0x9680
movq %rax, 0xa0(%rsp)
jmp 0x72f3
movq 0xa0(%rsp), %rax
movq %rax, 0x2e0(%rsp)
cmpq $0x0, 0x2e0(%rsp)
je 0x7382
leaq 0x330(%rsp), %rdi
callq 0x9540
movq %rax, %rsi
addq $0x20, %rsi
leaq 0x2b8(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
callq 0x9750
jmp 0x7339
leaq 0x428(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0x9720
jmp 0x7350
leaq 0x2b8(%rsp), %rdi
callq 0x9790
jmp 0x7382
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x2b8(%rsp), %rdi
callq 0x9790
jmp 0x73bd
jmp 0x7384
jmp 0x7386
jmp 0x7388
leaq 0x330(%rsp), %rdi
callq 0x97a0
jmp 0x70ce
leaq 0x338(%rsp), %rdi
callq 0x97d0
movl 0x374(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x374(%rsp)
jmp 0x7029
leaq 0x338(%rsp), %rdi
callq 0x97d0
jmp 0x79c4
leaq 0x2a0(%rsp), %rdi
callq 0x97e0
movl $0x0, 0x29c(%rsp)
movl 0x29c(%rsp), %eax
movl %eax, 0x9c(%rsp)
leaq 0x410(%rsp), %rdi
callq 0x97f0
movq %rax, %rcx
movl 0x9c(%rsp), %eax
cmpl %ecx, %eax
jge 0x7542
movslq 0x29c(%rsp), %rsi
leaq 0x410(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x9810
movq 0x90(%rsp), %rdi
movq %rax, 0x290(%rsp)
movslq 0x29c(%rsp), %rsi
callq 0x9810
movq 0x20(%rax), %rax
movq %rax, 0x288(%rsp)
leaq 0x238(%rsp), %rdi
callq 0x9830
jmp 0x7469
movq 0x290(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0x288(%rsp), %rax
movq %rax, 0x80(%rsp)
leaq 0x440(%rsp), %rdi
callq 0x99d0
movq %rax, 0x88(%rsp)
jmp 0x749d
movq 0x88(%rsp), %rcx
movq 0x80(%rsp), %rdx
movq 0x78(%rsp), %rsi
leaq 0x378(%rsp), %rdi
leaq 0x238(%rsp), %r8
callq 0x9860
jmp 0x74c9
leaq 0x2a0(%rsp), %rdi
leaq 0x238(%rsp), %rsi
callq 0x99e0
jmp 0x74e0
leaq 0x238(%rsp), %rdi
callq 0x9a50
movl 0x29c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x29c(%rsp)
jmp 0x73e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x79b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x238(%rsp), %rdi
callq 0x9a50
jmp 0x79b7
leaq 0x218(%rsp), %rdi
callq 0x9a80
jmp 0x7551
movq 0x6ba78(%rip), %rdi     # 0x72fd0
leaq 0x218(%rsp), %rsi
callq 0x6270
movq %rax, 0x70(%rsp)
jmp 0x756c
movq 0x70(%rsp), %rdi
leaq 0x4abba(%rip), %rsi     # 0x52132
callq 0x62b0
movq %rax, 0x68(%rsp)
jmp 0x7584
movq 0x68(%rsp), %rdi
movq 0x6ba28(%rip), %rsi     # 0x72fb8
callq 0x62f0
jmp 0x7597
leaq 0x218(%rsp), %rdi
callq 0x6190
leaq 0x2a0(%rsp), %rdi
callq 0x9b20
testb $0x1, %al
jne 0x7652
movl $0x0, 0x214(%rsp)
movl 0x214(%rsp), %eax
movl %eax, 0x64(%rsp)
leaq 0x2a0(%rsp), %rdi
callq 0x9b70
movq %rax, %rcx
movl 0x64(%rsp), %eax
cmpl %ecx, %eax
jge 0x7650
movslq 0x214(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0xa840
movq %rax, %rdx
movq 0x6b9ca(%rip), %rsi     # 0x72fd0
leaq 0x378(%rsp), %rdi
callq 0x9b90
jmp 0x7615
jmp 0x7617
movl 0x214(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x214(%rsp)
jmp 0x75c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x218(%rsp), %rdi
callq 0x6190
jmp 0x79b7
jmp 0x7652
leaq 0x1f8(%rsp), %rdi
callq 0xa860
movl $0x0, 0x1f4(%rsp)
movl 0x1f4(%rsp), %eax
movl %eax, 0x60(%rsp)
leaq 0x428(%rsp), %rdi
callq 0xa870
movq %rax, %rcx
movl 0x60(%rsp), %eax
cmpl %ecx, %eax
jge 0x77aa
movslq 0x1f4(%rsp), %rsi
leaq 0x428(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xa890
movq 0x40(%rsp), %rdi
movq %rax, 0x1e8(%rsp)
movslq 0x1f4(%rsp), %rsi
callq 0xa890
movq 0x20(%rax), %rax
movq %rax, 0x1e0(%rsp)
leaq 0x198(%rsp), %rdi
callq 0xa8b0
movq 0x1e8(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x1e0(%rsp), %rax
movq %rax, 0x50(%rsp)
leaq 0x440(%rsp), %rdi
callq 0x99d0
movq %rax, 0x58(%rsp)
jmp 0x770c
movq 0x58(%rsp), %rcx
movq 0x50(%rsp), %rdx
movq 0x48(%rsp), %rsi
movl 0x5a4(%rsp), %r9d
movq %rsp, %rax
movl $0x1, 0x8(%rax)
movl $0x64, (%rax)
leaq 0x378(%rsp), %rdi
leaq 0x198(%rsp), %r8
callq 0xa8c0
jmp 0x774a
leaq 0x1f8(%rsp), %rdi
leaq 0x198(%rsp), %rsi
callq 0xaa20
jmp 0x7761
leaq 0x198(%rsp), %rdi
callq 0xaa90
movl 0x1f4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1f4(%rsp)
jmp 0x766a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x198(%rsp), %rdi
callq 0xaa90
jmp 0x79aa
leaq 0x178(%rsp), %rdi
callq 0x9a80
jmp 0x77b9
movq 0x6b810(%rip), %rdi     # 0x72fd0
leaq 0x178(%rsp), %rsi
callq 0x6270
movq %rax, 0x38(%rsp)
jmp 0x77d4
movq 0x38(%rsp), %rdi
leaq 0x4a9a6(%rip), %rsi     # 0x52186
callq 0x62b0
movq %rax, 0x30(%rsp)
jmp 0x77ec
movq 0x30(%rsp), %rdi
movq 0x6b7c0(%rip), %rsi     # 0x72fb8
callq 0x62f0
jmp 0x77ff
leaq 0x178(%rsp), %rdi
callq 0x6190
leaq 0x1f8(%rsp), %rdi
callq 0xaaa0
testb $0x1, %al
jne 0x78d7
movl $0x0, 0x174(%rsp)
movl 0x174(%rsp), %eax
movl %eax, 0x2c(%rsp)
leaq 0x1f8(%rsp), %rdi
callq 0xaaf0
movq %rax, %rcx
movl 0x2c(%rsp), %eax
cmpl %ecx, %eax
jge 0x78d5
movslq 0x174(%rsp), %rsi
leaq 0x1f8(%rsp), %rdi
callq 0xafc0
movq %rax, %rdx
movq 0x6b75e(%rip), %rsi     # 0x72fd0
leaq 0x378(%rsp), %rdi
callq 0xab10
jmp 0x7881
jmp 0x7883
movl 0x174(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x174(%rsp)
jmp 0x782c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x79aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x178(%rsp), %rdi
callq 0x6190
jmp 0x79aa
jmp 0x78d7
movq 0x6b6f2(%rip), %rdi     # 0x72fd0
leaq 0x4a8f3(%rip), %rsi     # 0x521d8
callq 0x62b0
movq %rax, 0x20(%rsp)
jmp 0x78f1
callq 0x7a30
movss %xmm0, 0x1c(%rsp)
jmp 0x78fe
movq 0x20(%rsp), %rdi
movss 0x1c(%rsp), %xmm0
movss 0x584(%rsp), %xmm1
subss %xmm1, %xmm0
callq 0x61f0
movq %rax, 0x10(%rsp)
jmp 0x7922
movq 0x10(%rsp), %rdi
movq 0x6b68a(%rip), %rsi     # 0x72fb8
callq 0x62f0
jmp 0x7935
movl $0x0, 0x5c4(%rsp)
leaq 0x1f8(%rsp), %rdi
callq 0xafe0
leaq 0x2a0(%rsp), %rdi
callq 0xb040
leaq 0x378(%rsp), %rdi
callq 0xb0a0
leaq 0x410(%rsp), %rdi
callq 0xb2a0
leaq 0x428(%rsp), %rdi
callq 0xb300
leaq 0x440(%rsp), %rdi
callq 0xb360
leaq 0x588(%rsp), %rdi
callq 0xb3b0
movl 0x5c4(%rsp), %eax
addq $0x5c8, %rsp            # imm = 0x5C8
retq
leaq 0x1f8(%rsp), %rdi
callq 0xafe0
leaq 0x2a0(%rsp), %rdi
callq 0xb040
leaq 0x378(%rsp), %rdi
callq 0xb0a0
leaq 0x410(%rsp), %rdi
callq 0xb2a0
leaq 0x428(%rsp), %rdi
callq 0xb300
leaq 0x440(%rsp), %rdi
callq 0xb360
leaq 0x588(%rsp), %rdi
callq 0xb3b0
movq 0x578(%rsp), %rdi
callq 0x6490
nopw %cs:(%rax,%rax)
nopl (%rax)