// File: /workspace/github_cpp_makefile_star2_O3/rohitrangan[P]3PC/src/server_fail.cpp
// Function: main
int main(int argc, char *argv[])
{
    /* Signal handling to shutdown the ports and the server. */
    struct sigaction sigint_handler;
    sigint_handler.sa_handler = server_shutdown;
    sigemptyset (&sigint_handler.sa_mask);
    sigint_handler.sa_flags = 0;
    if (sigaction(SIGINT, &sigint_handler, NULL) < 0)
    {
        cerr << "ERROR! Cannot Start Signal Handler\n\n";
        return 1;
    }

    if (argc != 4)
    {
        cout << "Not enough parameters.\n";
        return 1;
    }

    int site_id = std::stoi (string (argv[1]));
    int tid_fail = std::stoi (string (argv[2]));
    int fail_loc = std::stoi (string (argv[3]));
    srand (time (NULL));
	//Socket site;
	std::map<int, int> sites;
	sites[0] = 6666;
	sites[1] = 6667;
	sites[2] = 6668;
	site.bind (sites[site_id]);
	set<int> txLive;
	map<int,transaction_info> trans_table;
	site.listen(100);
	cout << "Server " << site_id << " Up" << endl;
	while(1)
	{
		Socket inc = site.accept();
		string str;
        str = inc.recv ((size_t) 1024);
        //cout << "Received str:- " << str << endl;
		Message msg(str);
        string tempStr, snd_msg;
        transaction_info new_t;
		switch(msg.message)
		{
			case TRANSACTION:
            {
                new_t.numVotes = 1;
                new_t.site_st = S_INIT;
                new_t.coordinator = site_id;
				trans_table[msg.transaction_id] = new_t;
                cout << "Site " << site_id << " accepted transaction " <<
                    msg.transaction_id << endl;
				Message tempMsg(START_VOTE,msg.transaction_id, site_id);
				tempStr = tempMsg.createMessage();
				txLive.insert(msg.transaction_id);
				for(int i = 0; i < sites.size();i++)
				{
                    Socket temp;
                    if (i != site_id)
                    {
					    if (temp.connect("localhost", sites[i]) < 0)
                        {
                            cout << "Site " << site_id << " timed out in State "
                                << "INITIAL" << endl;
                            termination_protocol (site_id, i, site, true, sites,
                                    txLive, trans_table);
                            cout << "Site " << site_id << " ended TERMINATION"
                                << endl;
                            sites.erase (i);
                            break;
                        }
					    temp.send(tempStr);
                        cout << "[" << msg.transaction_id << "]Site " << site_id
                            << " sent START_VOTE to Site " << i << endl;
                    }
				}
                trans_table[msg.transaction_id].site_st = S_WAIT;
                if ((fail_loc == 2) && (msg.transaction_id > tid_fail))
                {
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                        << " is FAILING" << endl;
                    exit (1);
                }
				break;
            }
			case VOTE_COMMIT:
            {
				trans_table[msg.transaction_id].numVotes++;
                cout << "[" << msg.transaction_id << "]Site " << site_id
                    << " got VOTE_COMMIT from Site " << msg.site_id << endl;
				if(trans_table[msg.transaction_id].numVotes==sites.size())
				{
                    cout << "[" << msg.transaction_id << "]Site " << site_id <<
                        " has all vote commits." << endl;
					Message tempMsg(PRE_COMMIT,msg.transaction_id, site_id);
					tempStr = tempMsg.createMessage();
					for(int i = 0; i < sites.size();i++)
					{
                        Socket temp;
                        if (i != site_id)
                        {
						    if (temp.connect("localhost", sites[i]) < 0)
                            {
                                cout << "Site " << site_id << " timed out in "
                                    << "State WAIT" << endl;
                                termination_protocol (site_id, i, site, true,
                                        sites, txLive, trans_table);
                                cout << "Site " << site_id << " ended "
                                    "TERMINATION" << endl;
                                sites.erase (i);
                                break;
                            }
                            temp.send(tempStr);
                            cout << "[" << msg.transaction_id << "]Site " <<
                                site_id << " sent PRE_COMMIT to Site " << i <<
                                endl;
                        }
					}
					trans_table[msg.transaction_id].site_st = S_PRE_COMMIT;
					trans_table[msg.transaction_id].numVotes = 1;
				}
				break;
            }
			case VOTE_ABORT:
            {
                if(txLive.find(msg.transaction_id) != txLive.end())
                {
                    Message tempMsg(ABORT,msg.transaction_id, site_id);
                    tempStr = tempMsg.createMessage();
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                        << " got VOTE_ABORT from Site " << msg.site_id << endl;
                    for(int i = 0; i < sites.size();i++)
                    {
                        Socket temp;
                        if (i != site_id)
                        {
                            if (temp.connect("localhost", sites[i]) < 0)
                            {
                                cout << "Site " << site_id << " timed out in "
                                    << "State WAIT" << endl;
                                termination_protocol (site_id, i, site, true,
                                        sites, txLive, trans_table);
                                cout << "Site " << site_id << " ended "
                                    << "TERMINATION" << endl;
                                sites.erase (i);
                                break;
                            }
                            temp.send(tempStr);
                            cout << "[" << msg.transaction_id << "]Site " <<
                                site_id << " sent ABORT to Site " << i <<
                                endl;
                        }
                    }
                    txLive.erase(msg.transaction_id);
                    trans_table[msg.transaction_id].site_st = S_ABORT;
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                            << " ABORTED" << "\n\n\n";
                }
				break;
            }
			case ACK:
            {
                cout << "[" << msg.transaction_id << "]Site " << site_id
                    << " got ACK from Site " << msg.site_id << endl;
				trans_table[msg.transaction_id].numVotes++;
				if(trans_table[msg.transaction_id].numVotes==sites.size())
				{
					Message tempMsg(COMMIT, msg.transaction_id, site_id);
					string tempStr = tempMsg.createMessage();
					for(int i = 0; i < sites.size();i++)
					{
                        Socket temp;
                        if (i != site_id)
                        {
                            if (temp.connect("localhost", sites[i]) < 0)
                            {
                                cout << "Site " << site_id << " timed out in "
                                    << "State PRE_COMMIT" << endl;
                                termination_protocol (site_id, i, site, true,
                                        sites, txLive, trans_table);
                                cout << "Site " << site_id << " ended "
                                    "TERMINATION" << endl;
                                sites.erase (i);
                                break;
                            }
                            temp.send(tempStr);
                            cout << "[" << msg.transaction_id << "]Site " <<
                            site_id << " sent COMMIT to Site " << i <<
                            endl;
                        }
					}
					trans_table[msg.transaction_id].site_st = S_COMMIT;
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                        << " COMMITTED" << "\n\n\n";
                    txLive.erase (msg.transaction_id);
				}
				break;
            }
            case START_VOTE:
            {
                cout << "[" << msg.transaction_id << "]Site " << site_id
                    << " got START_VOTE from Site " << msg.site_id << endl;
                if ((fail_loc == 0) && (msg.transaction_id > tid_fail))
                {
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                        << " is FAILING" << endl;
                    exit (1);
                }
                txLive.insert (msg.transaction_id);
                new_t.numVotes = -1;
                new_t.site_st = S_INIT;
                new_t.coordinator = msg.site_id;
				trans_table[msg.transaction_id] = new_t;
                Socket tmp;
                int will_abort = rand () % ABORT_DENOM;
                if (will_abort < ABORT_NUM)
                {
                    Message vote_abort (VOTE_ABORT, msg.transaction_id,
                                site_id);
                    snd_msg = vote_abort.createMessage ();
                    if (tmp.connect("localhost", sites[msg.site_id]) < 0)
                    {
                        cout << "Site " << site_id << " timed out in "
                            << "State INITIAL" << endl;
                        termination_protocol (site_id, msg.site_id, site, true,
                                sites, txLive, trans_table);
                        cout << "Site " << site_id << " ended "
                            "TERMINATION" << endl;
                        sites.erase (msg.site_id);
                        break;
                    }
                    tmp.send (snd_msg);
                    trans_table[msg.transaction_id].site_st = S_ABORT;
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                        << " sent VOTE_ABORT to Site " << msg.site_id << endl;
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                        << " ABORTED." << "\n\n\n";
                    txLive.erase (msg.transaction_id);
                }
                else
                {
                    Message vote_commit (VOTE_COMMIT, msg.transaction_id,
                                site_id);
                    snd_msg = vote_commit.createMessage ();
                    if (tmp.connect("localhost", sites[msg.site_id]) < 0)
                    {
                        cout << "Site " << site_id << " timed out in "
                            << "State INITIAL" << endl;
                        termination_protocol (site_id, msg.site_id, site, true,
                                sites, txLive, trans_table);
                        cout << "Site " << site_id << " ended "
                            "TERMINATION" << endl;
                        sites.erase (msg.site_id);
                        break;
                    }
                    tmp.send (snd_msg);
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                        << " sent VOTE_COMMIT to Site " << msg.site_id << endl;
                    trans_table[msg.transaction_id].site_st = S_READY;
                }
                break;
            }
            case PRE_COMMIT:
            {
                Socket tmp;
                cout << "[" << msg.transaction_id << "]Site " << site_id
                    << " got PRE_COMMIT from Site " << msg.site_id << endl;
                if ((fail_loc == 1) && (msg.transaction_id > tid_fail))
                {
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                        << " is FAILING" << endl;
                    exit (1);
                }
                Message ack (ACK, msg.transaction_id, site_id);
                snd_msg = ack.createMessage ();
                if (tmp.connect("localhost", sites[msg.site_id]) < 0)
                {
                    cout << "Site " << site_id << " timed out in "
                        << "State READY" << endl;
                    termination_protocol (site_id, msg.site_id, site, true,
                            sites, txLive, trans_table);
                    cout << "Site " << site_id << " ended "
                        "TERMINATION" << endl;
                    sites.erase (msg.site_id);
                    break;
                }
                tmp.send (snd_msg);
                cout << "[" << msg.transaction_id << "]Site " << site_id
                    << " sent ACK to Site " << msg.site_id << endl;
                trans_table[msg.transaction_id].site_st = S_PRE_COMMIT;
                break;
            }
            case COMMIT:
            {
                if(txLive.find(msg.transaction_id) != txLive.end())
                {
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                        << " got COMMIT from Site " << msg.site_id << endl;
                    trans_table[msg.transaction_id].site_st = S_COMMIT;
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                        << " COMMITTED" << "\n\n\n";
                    txLive.erase (msg.transaction_id);
                }
                break;
            }
            case ABORT:
            {
                if(txLive.find(msg.transaction_id) != txLive.end())
                {
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                        << " got ABORT from Site " << msg.site_id << endl;
                    trans_table[msg.transaction_id].site_st = S_ABORT;
                    cout << "[" << msg.transaction_id << "]Site " << site_id
                        << " ABORTED" << "\n\n\n";
                    txLive.erase (msg.transaction_id);
                }
                break;
            }
            case TERMINATION:
            {
                cout << "Site " << site_id << " got TERMINATION" << endl;
                Socket tmp;
                Message ack (ACK, msg.transaction_id, site_id);
                snd_msg = ack.createMessage ();
                if (tmp.connect ("localhost", sites[msg.site_id]) < 0)
                {
                    cout << "COULD NOT CONNECT!!!!\n";
                    cout << "Error number = " << errno << endl;
                }
                tmp.send (snd_msg);
                termination_protocol (site_id, msg.failed_id, site, false,
                        sites, txLive, trans_table);
                cout << "Site " << site_id << " finished TERMINATION" << endl;
                sites.erase (msg.failed_id);
                break;
            }
            default:
                return -1;

		}

	}
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x478, %rsp            # imm = 0x478
movq %rsi, %rbx
movl %edi, %ebp
leaq -0x74(%rip), %rax       # 0x282c
leaq 0x3e8(%rsp), %r14
movq %rax, -0x8(%r14)
movq %r14, %rdi
callq 0x2310
movl $0x0, 0x80(%r14)
leaq 0x3e0(%rsp), %rsi
movl $0x2, %edi
xorl %edx, %edx
callq 0x2320
testl %eax, %eax
js 0x5268
cmpl $0x4, %ebp
jne 0x527d
movq 0x8(%rbx), %rsi
leaq 0x60(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x5a0e
movq 0x60(%rsp), %r15
callq 0x2050
movl (%rax), %ebp
movq %rax, 0x20(%rsp)
movl $0x0, (%rax)
leaq 0xe0(%rsp), %r12
movq %r15, %rdi
movq %r12, %rsi
movl $0xa, %edx
callq 0x2350
cmpq %r15, (%r12)
je 0x5428
movq %rax, %r14
movslq %r14d, %rax
cmpq %r14, %rax
jne 0x5434
movq 0x20(%rsp), %rax
movl (%rax), %eax
cmpl $0x22, %eax
je 0x5434
testl %eax, %eax
jne 0x295d
movq 0x20(%rsp), %rax
movl %ebp, (%rax)
leaq 0x70(%rsp), %r12
movq -0x10(%r12), %rdi
cmpq %r12, %rdi
je 0x2979
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x2270
movl %r14d, 0x14(%rsp)
movq 0x10(%rbx), %rsi
leaq 0x60(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x5a0e
movq 0x60(%rsp), %r14
movq 0x20(%rsp), %rax
movl (%rax), %ebp
movl $0x0, (%rax)
leaq 0xe0(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x2350
cmpq %r14, (%r15)
je 0x5440
movabsq $-0x100000000, %r15     # imm = 0xFFFFFFFF00000000
leaq -0x80000000(%rax), %rcx
cmpq %r15, %rcx
jb 0x544c
movq %rax, %r14
movq 0x20(%rsp), %rax
movl (%rax), %eax
cmpl $0x22, %eax
je 0x544c
testl %eax, %eax
jne 0x29ff
movq 0x20(%rsp), %rax
movl %ebp, (%rax)
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x2a16
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x2270
movq %r14, 0x158(%rsp)
movq 0x18(%rbx), %rsi
leaq 0x60(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x5a0e
movq 0x60(%rsp), %rbx
movq 0x20(%rsp), %rax
movl (%rax), %ebp
movl $0x0, (%rax)
leaq 0xe0(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
movl $0xa, %edx
callq 0x2350
cmpq %rbx, (%r14)
je 0x5458
leaq -0x80000000(%rax), %rcx
cmpq %r15, %rcx
jb 0x5464
movq %rax, %r14
movq 0x20(%rsp), %rax
movl (%rax), %eax
cmpl $0x22, %eax
je 0x5464
testl %eax, %eax
jne 0x2a95
movq 0x20(%rsp), %rax
movl %ebp, (%rax)
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x2aac
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x2270
xorl %ebx, %ebx
xorl %edi, %edi
callq 0x2210
movl %eax, %edi
callq 0x2230
leaq 0x68(%rsp), %rax
movl %ebx, (%rax)
movq %rbx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rbx, 0x20(%rax)
leaq 0xe0(%rsp), %rsi
movl %ebx, (%rsi)
leaq 0x60(%rsp), %rdi
callq 0x5a4c
movl $0x1a0a, (%rax)         # imm = 0x1A0A
leaq 0xe0(%rsp), %rsi
movl $0x1, (%rsi)
leaq 0x60(%rsp), %rdi
callq 0x5a4c
movl $0x1a0b, (%rax)         # imm = 0x1A0B
leaq 0xe0(%rsp), %rsi
movl $0x2, (%rsi)
leaq 0x60(%rsp), %rdi
callq 0x5a4c
movl $0x1a0c, (%rax)         # imm = 0x1A0C
leaq 0x60(%rsp), %rdi
leaq 0x14(%rsp), %rsi
callq 0x5ab2
movl (%rax), %esi
leaq 0x96d7(%rip), %rdi      # 0xc218
callq 0x67f0
movq %r14, 0x160(%rsp)
leaq 0xe8(%rsp), %rcx
xorl %eax, %eax
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x170(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x968d(%rip), %rdi      # 0xc218
movl $0x64, %esi
callq 0x688a
movq 0x9434(%rip), %rdi      # 0xbfd0
leaq 0x6523(%rip), %rsi      # 0x90c6
movl $0x7, %edx
callq 0x22d0
movl 0x14(%rsp), %esi
movq 0x9418(%rip), %rdi      # 0xbfd0
callq 0x23b0
movq %rax, %rbx
leaq 0x6507(%rip), %rsi      # 0x90ce
movl $0x3, %edx
movq %rax, %rdi
callq 0x22d0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x3d0(%rsp), %r12
leaq 0x34(%rsp), %rbx
movl $0x0, 0x114(%rsp)
leaq 0x1b8(%rsp), %r13
leaq 0x30(%rsp), %rbp
movq 0x93a9(%rip), %r14      # 0xbfd0
leaq 0xc0(%rsp), %r15
movq %r13, %rdi
leaq 0x95df(%rip), %rsi      # 0xc218
callq 0x6892
leaq 0x1a8(%rsp), %rax
movq %rax, 0x198(%rsp)
movq $0x0, 0x1a0(%rsp)
movb $0x0, 0x1a8(%rsp)
movl $0x400, %edx            # imm = 0x400
movq %rbp, %rdi
movq %r13, %rsi
callq 0x6764
leaq 0x198(%rsp), %rdi
movq %rbp, %rsi
callq 0x2300
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x2c9e
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x2270
movq %r12, 0x3c0(%rsp)
movq 0x198(%rsp), %rsi
movq 0x1a0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x3c0(%rsp), %r13
movq %r13, %rdi
callq 0x5c78
movq %rbp, %rdi
movq %r13, %rsi
callq 0x6c02
movq 0x3c0(%rsp), %rdi
cmpq %r12, %rdi
je 0x2cf1
movq 0x3d0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x148(%rsp), %rax
movq %rax, 0x138(%rsp)
xorl %ebp, %ebp
movq %rbp, 0x140(%rsp)
movb %bpl, 0x148(%rsp)
leaq 0x128(%rsp), %rax
movq %rax, 0x118(%rsp)
movq %rbp, 0x120(%rsp)
movb %bpl, 0x128(%rsp)
movl 0x30(%rsp), %eax
cmpq $0x8, %rax
ja 0x4551
leaq 0x62bc(%rip), %rcx      # 0x9004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl 0x14(%rsp), %ebp
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b18
movq $0x1, (%rax)
movl %ebp, 0x8(%rax)
movl $0x5, %edx
movq %r14, %rdi
leaq 0x64d3(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x16, %edx
movq %rax, %rdi
leaq 0x6331(%rip), %rsi      # 0x90d2
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0x34(%rsp), %edx
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x1, %esi
callq 0x6bbc
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e58
leaq 0x168(%rsp), %rbp
leaq 0x138(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x2e41
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x625a
movl $0x0, 0x18(%rsp)
cmpq $0x0, 0x88(%rsp)
je 0x4988
movq %r15, %rdi
callq 0x65b0
movl 0x18(%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0x2ff0
leaq 0x3b0(%rsp), %rax
movq %rax, 0x3a0(%rsp)
leaq 0x3a0(%rsp), %rdi
leaq 0x624c(%rip), %rsi      # 0x90e9
leaq 0x624e(%rip), %rdx      # 0x90f2
callq 0x5d0e
leaq 0x60(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
movq %r15, %rdi
leaq 0x3a0(%rsp), %rsi
callq 0x65be
movl %eax, %r13d
movq 0x3a0(%rsp), %rdi
leaq 0x3b0(%rsp), %rax
cmpq %rax, %rdi
je 0x2ef2
movq 0x3b0(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
js 0x4868
leaq 0x390(%rsp), %rax
movq %rax, 0x380(%rsp)
movq 0x138(%rsp), %rsi
movq 0x140(%rsp), %rdx
addq %rsi, %rdx
leaq 0x380(%rsp), %rdi
callq 0x5c78
movq %r15, %rdi
leaq 0x380(%rsp), %rsi
callq 0x6746
movq 0x380(%rsp), %rdi
leaq 0x390(%rsp), %rax
cmpq %rax, %rdi
je 0x2f60
movq 0x390(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %r14, %rdi
leaq 0x61ac(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x618b(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x19, %edx
movq %rax, %rdi
leaq 0x616f(%rip), %rsi      # 0x9124
callq 0x22d0
movl 0x18(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq %r15, %rdi
callq 0x6a08
movslq 0x18(%rsp), %rax
incq %rax
movl %eax, 0x18(%rsp)
cmpq %rax, 0x88(%rsp)
ja 0x2e68
jmp 0x4988
leaq 0x18(%rsp), %rdi
callq 0x65b0
movl $0x1, %edx
movq %r14, %rdi
leaq 0x60eb(%rip), %rsi      # 0x911b
callq 0x22d0
leaq 0x168(%rsp), %rbp
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x60c2(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x1a, %edx
movq %rax, %rdi
leaq 0x6226(%rip), %rsi      # 0x92a4
callq 0x22d0
movl 0x38(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
cmpl $0x1, 0x160(%rsp)
sete %al
movl 0x34(%rsp), %edx
cmpl 0x158(%rsp), %edx
setg %cl
andb %al, %cl
cmpb $0x1, %cl
je 0x5348
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x7, %esi
callq 0x6bbc
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e58
leaq 0x118(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x3136
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x230(%rsp), %rax
movq %rax, 0x220(%rsp)
leaq 0x220(%rsp), %rdi
leaq 0x5f94(%rip), %rsi      # 0x90e9
leaq 0x5f96(%rip), %rdx      # 0x90f2
callq 0x5d0e
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
leaq 0x18(%rsp), %rdi
leaq 0x220(%rsp), %rsi
callq 0x65be
movl %eax, %r13d
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x31ac
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
js 0x474b
leaq 0x210(%rsp), %rax
movq %rax, 0x200(%rsp)
movq 0x118(%rsp), %rsi
movq 0x120(%rsp), %rdx
addq %rsi, %rdx
leaq 0x200(%rsp), %rdi
callq 0x5c78
leaq 0x18(%rsp), %rdi
leaq 0x200(%rsp), %rsi
callq 0x6746
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0x321c
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %r14, %rdi
leaq 0x5ef0(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x5ecf(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x605a(%rip), %rsi      # 0x92cb
callq 0x22d0
movl 0x38(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x5b18
movl $0x3, 0x4(%rax)
jmp 0x4c19
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b18
incl (%rax)
movl $0x1, %edx
movq %r14, %rdi
leaq 0x5e37(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x5e16(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x1b, %edx
movq %rax, %rdi
leaq 0x5e20(%rip), %rsi      # 0x914a
callq 0x22d0
movl 0x38(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b18
movslq (%rax), %rax
movb $0x1, %bpl
cmpq %rax, 0x88(%rsp)
jne 0x4c4b
movl $0x1, %edx
movq %r14, %rdi
leaq 0x5d83(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x5d62(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x16, %edx
movq %rax, %rdi
leaq 0x5d88(%rip), %rsi      # 0x9166
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0x34(%rsp), %edx
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x4, %esi
callq 0x6bbc
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e58
leaq 0x138(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x3468
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x0, 0x18(%rsp)
cmpq $0x0, 0x88(%rsp)
je 0x5026
movq %r15, %rdi
callq 0x65b0
movl 0x18(%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0x3607
leaq 0x370(%rsp), %rax
movq %rax, 0x360(%rsp)
leaq 0x360(%rsp), %rdi
leaq 0x5c35(%rip), %rsi      # 0x90e9
leaq 0x5c37(%rip), %rdx      # 0x90f2
callq 0x5d0e
leaq 0x60(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
movq %r15, %rdi
leaq 0x360(%rsp), %rsi
callq 0x65be
movl %eax, %r13d
movq 0x360(%rsp), %rdi
leaq 0x370(%rsp), %rax
cmpq %rax, %rdi
je 0x3509
movq 0x370(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
js 0x4efe
leaq 0x350(%rsp), %rax
movq %rax, 0x340(%rsp)
movq 0x138(%rsp), %rsi
movq 0x140(%rsp), %rdx
addq %rsi, %rdx
leaq 0x340(%rsp), %rdi
callq 0x5c78
movq %r15, %rdi
leaq 0x340(%rsp), %rsi
callq 0x6746
movq 0x340(%rsp), %rdi
leaq 0x350(%rsp), %rax
cmpq %rax, %rdi
je 0x3577
movq 0x350(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %r14, %rdi
leaq 0x5b95(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x5b74(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x19, %edx
movq %rax, %rdi
leaq 0x5bcb(%rip), %rsi      # 0x9197
callq 0x22d0
movl 0x18(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq %r15, %rdi
callq 0x6a08
movslq 0x18(%rsp), %rax
incq %rax
movl %eax, 0x18(%rsp)
cmpq %rax, 0x88(%rsp)
ja 0x347f
jmp 0x5026
movq 0xf0(%rsp), %rdi
movb $0x1, %bpl
testq %rdi, %rdi
je 0x4c4b
movl 0x34(%rsp), %edx
leaq 0xe8(%rsp), %r8
movq %r8, %rax
movq %rdi, %rcx
movl 0x20(%rdi), %esi
xorl %edi, %edi
cmpl %edx, %esi
setl %dil
movq %rcx, %r8
cmovlq %rax, %r8
movq 0x10(%rcx,%rdi,8), %rdi
testq %rdi, %rdi
jne 0x364e
leaq 0xe8(%rsp), %rdi
cmpq %rdi, %r8
je 0x4c4b
cmpl %edx, %esi
cmovlq %rax, %rcx
cmpl 0x20(%rcx), %edx
jl 0x4c4b
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x6, %esi
callq 0x6bbc
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e58
leaq 0x138(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x36e9
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %r14, %rdi
leaq 0x5a23(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x5a02(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x1a, %edx
movq %rax, %rdi
leaq 0x5a73(%rip), %rsi      # 0x91b1
callq 0x22d0
movl 0x38(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl $0x0, 0x18(%rsp)
cmpq $0x0, 0x88(%rsp)
je 0x5195
movq %r15, %rdi
callq 0x65b0
movl 0x18(%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0x3918
leaq 0x330(%rsp), %rax
movq %rax, 0x320(%rsp)
leaq 0x320(%rsp), %rdi
leaq 0x5924(%rip), %rsi      # 0x90e9
leaq 0x5926(%rip), %rdx      # 0x90f2
callq 0x5d0e
leaq 0x60(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
movq %r15, %rdi
leaq 0x320(%rsp), %rsi
callq 0x65be
movl %eax, %r13d
movq 0x320(%rsp), %rdi
leaq 0x330(%rsp), %rax
cmpq %rax, %rdi
je 0x381a
movq 0x330(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
js 0x5059
leaq 0x310(%rsp), %rax
movq %rax, 0x300(%rsp)
movq 0x138(%rsp), %rsi
movq 0x140(%rsp), %rdx
addq %rsi, %rdx
leaq 0x300(%rsp), %rdi
callq 0x5c78
movq %r15, %rdi
leaq 0x300(%rsp), %rsi
callq 0x6746
movq 0x300(%rsp), %rdi
leaq 0x310(%rsp), %rax
cmpq %rax, %rdi
je 0x3888
movq 0x310(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %r14, %rdi
leaq 0x5884(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x5863(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x14, %edx
movq %rax, %rdi
leaq 0x58f7(%rip), %rsi      # 0x91d4
callq 0x22d0
movl 0x18(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq %r15, %rdi
callq 0x6a08
movslq 0x18(%rsp), %rax
incq %rax
movl %eax, 0x18(%rsp)
cmpq %rax, 0x88(%rsp)
ja 0x3790
jmp 0x5195
movl $0x1, %edx
movq %r14, %rdi
leaq 0x57cd(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x57ac(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x13, %edx
movq %rax, %rdi
leaq 0x5862(%rip), %rsi      # 0x91f6
callq 0x22d0
movl 0x38(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b18
incl (%rax)
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b18
movslq (%rax), %rax
movb $0x1, %bpl
cmpq %rax, 0x88(%rsp)
jne 0x4c4b
movl 0x34(%rsp), %edx
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x5, %esi
callq 0x6bbc
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e58
movl $0x0, 0x2c(%rsp)
cmpq $0x0, 0x88(%rsp)
leaq 0x18(%rsp), %r12
je 0x4e2b
movq %r12, %rdi
callq 0x65b0
movl 0x2c(%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0x3bd5
leaq 0x2f0(%rsp), %rax
movq %rax, 0x2e0(%rsp)
leaq 0x2e0(%rsp), %rdi
leaq 0x566b(%rip), %rsi      # 0x90e9
leaq 0x566d(%rip), %rdx      # 0x90f2
callq 0x5d0e
leaq 0x60(%rsp), %rdi
leaq 0x2c(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
leaq 0x18(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x65be
movl %eax, %r13d
movq 0x2e0(%rsp), %rdi
leaq 0x2f0(%rsp), %rax
cmpq %rax, %rdi
je 0x3ad5
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
js 0x4d01
leaq 0x2d0(%rsp), %rax
movq %rax, 0x2c0(%rsp)
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2c0(%rsp), %rdi
callq 0x5c78
leaq 0x18(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
callq 0x6746
movq 0x2c0(%rsp), %rdi
leaq 0x2d0(%rsp), %rax
cmpq %rax, %rdi
je 0x3b45
movq 0x2d0(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %r14, %rdi
leaq 0x55c7(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x55a6(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x15, %edx
movq %rax, %rdi
leaq 0x5681(%rip), %rsi      # 0x921b
callq 0x22d0
movl 0x2c(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x18(%rsp), %r12
movq %r12, %rdi
callq 0x6a08
movslq 0x2c(%rsp), %rax
incq %rax
movl %eax, 0x2c(%rsp)
cmpq %rax, 0x88(%rsp)
ja 0x3a49
jmp 0x4e2b
movl $0x1, %edx
movq %r14, %rdi
leaq 0x550b(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x54ea(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x1a, %edx
movq %rax, %rdi
leaq 0x55e6(%rip), %rsi      # 0x923c
callq 0x22d0
movl 0x38(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
cmpl $0x0, 0x160(%rsp)
jne 0x3cad
movq 0x158(%rsp), %rax
cmpl %eax, 0x34(%rsp)
jg 0x52d9
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x625a
movl 0x38(%rsp), %ebp
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b18
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movq %rcx, (%rax)
movl %ebp, 0x8(%rax)
leaq 0x18(%rsp), %rdi
callq 0x65b0
callq 0x2090
cltq
imulq $0x66666667, %rax, %rcx # imm = 0x66666667
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x23, %rcx
addl %edx, %ecx
shll $0x2, %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
cmpl $0x2, %eax
leaq 0x168(%rsp), %rbp
jg 0x4561
movl 0x34(%rsp), %edx
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x3, %esi
callq 0x6bbc
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e58
leaq 0x118(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x3d77
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x2b0(%rsp), %rax
movq %rax, 0x2a0(%rsp)
leaq 0x2a0(%rsp), %rdi
leaq 0x5353(%rip), %rsi      # 0x90e9
leaq 0x5355(%rip), %rdx      # 0x90f2
callq 0x5d0e
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
leaq 0x18(%rsp), %rdi
leaq 0x2a0(%rsp), %rsi
callq 0x65be
movl %eax, %r13d
movq 0x2a0(%rsp), %rdi
leaq 0x2b0(%rsp), %rax
cmpq %rax, %rdi
je 0x3ded
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
js 0x49e4
leaq 0x290(%rsp), %rax
movq %rax, 0x280(%rsp)
movq 0x118(%rsp), %rsi
movq 0x120(%rsp), %rdx
addq %rsi, %rdx
leaq 0x280(%rsp), %rdi
callq 0x5c78
leaq 0x18(%rsp), %rdi
leaq 0x280(%rsp), %rsi
callq 0x6746
movq 0x280(%rsp), %rdi
leaq 0x290(%rsp), %rax
cmpq %rax, %rdi
je 0x3e5d
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x2270
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x5b18
movl $0x5, 0x4(%rax)
movl $0x1, %edx
movq %r14, %rdi
leaq 0x529d(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x527c(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x19, %edx
movq %rax, %rdi
leaq 0x53a1(%rip), %rsi      # 0x9265
callq 0x22d0
movl 0x38(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl $0x1, %edx
movq %r14, %rdi
leaq 0x520d(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x51ec(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x9, %edx
movq %rax, %rdi
leaq 0x532b(%rip), %rsi      # 0x927f
callq 0x22d0
movl $0x3, %edx
movq %r13, %rdi
leaq 0x528a(%rip), %rsi      # 0x91f2
callq 0x22d0
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x648c
leaq 0xe0(%rsp), %rdi
movq %rax, %rsi
callq 0x650a
jmp 0x4c19
movq 0xf0(%rsp), %rdi
movb $0x1, %bpl
testq %rdi, %rdi
je 0x4c4b
movl 0x34(%rsp), %eax
leaq 0xe8(%rsp), %r8
movq %r8, %rcx
movq %rdi, %rdx
movl 0x20(%rdi), %esi
xorl %edi, %edi
cmpl %eax, %esi
setl %dil
movq %rdx, %r8
cmovlq %rcx, %r8
movq 0x10(%rdx,%rdi,8), %rdi
testq %rdi, %rdi
jne 0x3fb2
leaq 0xe8(%rsp), %rdi
cmpq %rdi, %r8
je 0x4c4b
cmpl %eax, %esi
cmovlq %rcx, %rdx
cmpl 0x20(%rdx), %eax
jl 0x4c4b
movl $0x1, %edx
movq %r14, %rdi
leaq 0x5118(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x50f7(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x16, %edx
movq %rax, %rdi
leaq 0x5295(%rip), %rsi      # 0x92de
callq 0x22d0
movl 0x38(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b18
movl $0x4, 0x4(%rax)
movl $0x1, %edx
movq %r14, %rdi
leaq 0x5071(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x5050(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xa, %edx
movq %rax, %rdi
leaq 0x5141(%rip), %rsi      # 0x9231
callq 0x22d0
jmp 0x425d
movq 0xf0(%rsp), %rdi
movb $0x1, %bpl
testq %rdi, %rdi
je 0x4c4b
movl 0x34(%rsp), %eax
leaq 0xe8(%rsp), %r8
movq %r8, %rcx
movq %rdi, %rdx
movl 0x20(%rdi), %esi
xorl %edi, %edi
cmpl %eax, %esi
setl %dil
movq %rdx, %r8
cmovlq %rcx, %r8
movq 0x10(%rdx,%rdi,8), %rdi
testq %rdi, %rdi
jne 0x411a
leaq 0xe8(%rsp), %rdi
cmpq %rdi, %r8
je 0x4c4b
cmpl %eax, %esi
cmovlq %rcx, %rdx
cmpl 0x20(%rdx), %eax
jl 0x4c4b
movl $0x1, %edx
movq %r14, %rdi
leaq 0x4fb0(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x4f8f(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x15, %edx
movq %rax, %rdi
leaq 0x5144(%rip), %rsi      # 0x92f5
callq 0x22d0
movl 0x38(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b18
movl $0x5, 0x4(%rax)
movl $0x1, %edx
movq %r14, %rdi
leaq 0x4f09(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x4ee8(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x8, %edx
movq %rax, %rdi
leaq 0x4f91(%rip), %rsi      # 0x91e9
callq 0x22d0
movl $0x3, %edx
movq %r13, %rdi
leaq 0x4f86(%rip), %rsi      # 0x91f2
callq 0x22d0
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x648c
movb $0x1, %bpl
leaq 0xe0(%rsp), %rdi
movq %rax, %rsi
callq 0x650a
jmp 0x4c4b
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4fa9(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x10, %edx
movq %rax, %rdi
leaq 0x5040(%rip), %rsi      # 0x930b
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x18(%rsp), %rdi
callq 0x65b0
movl 0x34(%rsp), %edx
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x7, %esi
callq 0x6bbc
leaq 0x168(%rsp), %rbp
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e58
leaq 0x118(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x4367
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x1f0(%rsp), %rax
movq %rax, 0x1e0(%rsp)
leaq 0x1e0(%rsp), %rdi
leaq 0x4d63(%rip), %rsi      # 0x90e9
leaq 0x4d65(%rip), %rdx      # 0x90f2
callq 0x5d0e
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
leaq 0x18(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x65be
movl %eax, %r13d
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0x43dd
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
jns 0x4443
movl $0x16, %edx
movq %r14, %rdi
leaq 0x4f2b(%rip), %rsi      # 0x931c
callq 0x22d0
movl $0xf, %edx
movq %r14, %rdi
leaq 0x4f2e(%rip), %rsi      # 0x9333
callq 0x22d0
movq 0x20(%rsp), %rax
movl (%rax), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x1d0(%rsp), %rax
movq %rax, 0x1c0(%rsp)
movq 0x118(%rsp), %rsi
movq 0x120(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1c0(%rsp), %rdi
callq 0x5c78
leaq 0x18(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x6746
movq 0x1c0(%rsp), %rdi
leaq 0x1d0(%rsp), %rax
cmpq %rax, %rdi
je 0x44aa
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x2270
movl 0x14(%rsp), %edi
movl 0x3c(%rsp), %esi
movq %rbp, (%rsp)
leaq 0x7d5b(%rip), %rdx      # 0xc218
xorl %ecx, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7294
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4d71(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x15, %edx
movq %rax, %rdi
leaq 0x4e40(%rip), %rsi      # 0x9343
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x60(%rsp), %rdi
leaq 0x3c(%rsp), %rsi
callq 0x6368
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63e6
jmp 0x4c19
movl $0xffffffff, 0x114(%rsp) # imm = 0xFFFFFFFF
jmp 0x4c4b
movl 0x34(%rsp), %edx
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x2, %esi
callq 0x6bbc
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e58
leaq 0x118(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x45be
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x270(%rsp), %rax
movq %rax, 0x260(%rsp)
leaq 0x260(%rsp), %rdi
leaq 0x4b0c(%rip), %rsi      # 0x90e9
leaq 0x4b0e(%rip), %rdx      # 0x90f2
callq 0x5d0e
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
leaq 0x18(%rsp), %rdi
leaq 0x260(%rsp), %rsi
callq 0x65be
movl %eax, %r13d
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x4634
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
js 0x4b01
leaq 0x250(%rsp), %rax
movq %rax, 0x240(%rsp)
movq 0x118(%rsp), %rsi
movq 0x120(%rsp), %rdx
addq %rsi, %rdx
leaq 0x240(%rsp), %rdi
callq 0x5c78
leaq 0x18(%rsp), %rdi
leaq 0x240(%rsp), %rsi
callq 0x6746
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0x46a4
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %r14, %rdi
leaq 0x4a68(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x4a47(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x1a, %edx
movq %rax, %rdi
leaq 0x4b90(%rip), %rsi      # 0x9289
callq 0x22d0
movl 0x38(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x5b18
movl $0x1, 0x4(%rax)
jmp 0x4c19
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4af7(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xe, %edx
movq %rax, %rdi
leaq 0x4a00(%rip), %rsi      # 0x917d
callq 0x22d0
movl $0xb, %edx
movq %r13, %rdi
leaq 0x4b2e(%rip), %rsi      # 0x92bf
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0x14(%rsp), %edi
movl 0x38(%rsp), %esi
movq %rbp, (%rsp)
leaq 0x7a47(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7294
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4a5a(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x48ee(%rip), %rsi      # 0x9108
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x6368
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63e6
jmp 0x4c19
movl $0x5, %edx
movq %r14, %rdi
leaq 0x49da(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x14, %edx
movq %rax, %rdi
leaq 0x4859(%rip), %rsi      # 0x90f3
callq 0x22d0
movl $0x7, %edx
movq %r13, %rdi
leaq 0x49af(%rip), %rsi      # 0x925d
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0x14(%rsp), %edi
movl 0x18(%rsp), %esi
movq %rbp, (%rsp)
leaq 0x792a(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7294
movl $0x5, %edx
movq %r14, %rdi
leaq 0x493d(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x47d1(%rip), %rsi      # 0x9108
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x60(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x6368
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63e6
movq %r15, %rdi
callq 0x6a08
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x5b18
movl $0x2, 0x4(%rax)
cmpl $0x2, 0x160(%rsp)
jne 0x49b6
movq 0x158(%rsp), %rax
cmpl %eax, 0x34(%rsp)
jg 0x53b4
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4c48
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x4c48
movl $0x5, %edx
movq %r14, %rdi
leaq 0x485e(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xe, %edx
movq %rax, %rdi
leaq 0x4767(%rip), %rsi      # 0x917d
callq 0x22d0
movl $0xd, %edx
movq %r13, %rdi
leaq 0x482d(%rip), %rsi      # 0x9257
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0x14(%rsp), %edi
movl 0x38(%rsp), %esi
movq %rbp, (%rsp)
leaq 0x77ae(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7294
movl $0x5, %edx
movq %r14, %rdi
leaq 0x47c1(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x4655(%rip), %rsi      # 0x9108
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x6368
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63e6
jmp 0x4c19
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4741(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xe, %edx
movq %rax, %rdi
leaq 0x464a(%rip), %rsi      # 0x917d
callq 0x22d0
movl $0xd, %edx
movq %r13, %rdi
leaq 0x4710(%rip), %rsi      # 0x9257
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0x14(%rsp), %edi
movl 0x38(%rsp), %esi
movq %rbp, (%rsp)
leaq 0x7691(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7294
movl $0x5, %edx
movq %r14, %rdi
leaq 0x46a4(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x4538(%rip), %rsi      # 0x9108
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x6368
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63e6
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4c3e
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x18(%rsp), %rdi
callq 0x6a08
movb $0x1, %bpl
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x4c70
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x4c95
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x4cb1
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x4cd6
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x1b8(%rsp), %r13
movq %r13, %rdi
callq 0x6a08
testb %bpl, %bpl
leaq 0x3d0(%rsp), %r12
leaq 0x30(%rsp), %rbp
jne 0x2c2f
jmp 0x529c
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4541(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xe, %edx
movq %rax, %rdi
leaq 0x444a(%rip), %rsi      # 0x917d
callq 0x22d0
movl $0x10, %edx
movq %r13, %rdi
leaq 0x44c3(%rip), %rsi      # 0x920a
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0x14(%rsp), %edi
movl 0x2c(%rsp), %esi
leaq 0x168(%rsp), %rax
movq %rax, (%rsp)
leaq 0x7489(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7294
movl $0x5, %edx
movq %r14, %rdi
leaq 0x449c(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x4330(%rip), %rsi      # 0x9108
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x60(%rsp), %rdi
leaq 0x2c(%rsp), %rsi
callq 0x6368
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63e6
leaq 0x18(%rsp), %rdi
callq 0x6a08
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b18
movl $0x4, 0x4(%rax)
movl $0x1, %edx
movq %r14, %rdi
leaq 0x42ca(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x42a9(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xa, %edx
movq %rax, %rdi
leaq 0x439a(%rip), %rsi      # 0x9231
callq 0x22d0
movl $0x3, %edx
movq %r13, %rdi
leaq 0x4347(%rip), %rsi      # 0x91f2
callq 0x22d0
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x648c
leaq 0xe0(%rsp), %rdi
movq %rax, %rsi
callq 0x650a
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x523a
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x523a
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4344(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xe, %edx
movq %rax, %rdi
leaq 0x424d(%rip), %rsi      # 0x917d
callq 0x22d0
movl $0xa, %edx
movq %r13, %rdi
leaq 0x4248(%rip), %rsi      # 0x918c
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0x14(%rsp), %edi
movl 0x18(%rsp), %esi
leaq 0x168(%rsp), %rax
movq %rax, (%rsp)
leaq 0x728c(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7294
movl $0x5, %edx
movq %r14, %rdi
leaq 0x429f(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x4133(%rip), %rsi      # 0x9108
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x60(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x6368
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63e6
movq %r15, %rdi
callq 0x6a08
leaq 0x168(%rsp), %r13
movq %r13, %rdi
movq %rbx, %r12
movq %rbx, %rsi
callq 0x5b18
movl $0x3, 0x4(%rax)
movq %r13, %rdi
movq %r12, %rsi
callq 0x5b18
movl $0x1, (%rax)
jmp 0x523a
movl $0x5, %edx
movq %r14, %rdi
leaq 0x41e9(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xe, %edx
movq %rax, %rdi
leaq 0x40f2(%rip), %rsi      # 0x917d
callq 0x22d0
movl $0xa, %edx
movq %r13, %rdi
leaq 0x40ed(%rip), %rsi      # 0x918c
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0x14(%rsp), %edi
movl 0x18(%rsp), %esi
leaq 0x168(%rsp), %rax
movq %rax, (%rsp)
leaq 0x7131(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7294
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4144(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x7, %edx
movq %rax, %rdi
leaq 0x409c(%rip), %rsi      # 0x91cc
callq 0x22d0
movl $0xb, %edx
movq %r13, %rdi
leaq 0x3fcb(%rip), %rsi      # 0x910f
callq 0x22d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0x60(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x6368
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63e6
movq %r15, %rdi
callq 0x6a08
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x648c
leaq 0xe0(%rsp), %rdi
movq %rax, %rsi
callq 0x650a
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b18
movl $0x5, 0x4(%rax)
movl $0x1, %edx
movq %r14, %rdi
leaq 0x3f40(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x3f1f(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x8, %edx
movq %rax, %rdi
leaq 0x3fc8(%rip), %rsi      # 0x91e9
callq 0x22d0
movl $0x3, %edx
movq %r13, %rdi
leaq 0x3fbd(%rip), %rsi      # 0x91f2
callq 0x22d0
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4c4b
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x4c4b
movq 0x6d81(%rip), %rdi      # 0xbff0
leaq 0x3e13(%rip), %rsi      # 0x9089
movl $0x24, %edx
jmp 0x5290
movq 0x6d4c(%rip), %rdi      # 0xbfd0
leaq 0x3e23(%rip), %rsi      # 0x90ae
movl $0x17, %edx
callq 0x22d0
movl $0x1, %eax
jmp 0x52c7
leaq 0x168(%rsp), %rdi
callq 0x5b88
leaq 0xe0(%rsp), %rdi
callq 0x5bd8
leaq 0x60(%rsp), %rdi
callq 0x5c28
movl 0x114(%rsp), %eax
addq $0x478, %rsp            # imm = 0x478
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x6cf0(%rip), %rdi      # 0xbfd0
leaq 0x3e34(%rip), %rsi      # 0x911b
movl $0x1, %edx
callq 0x22d0
movl 0x34(%rsp), %esi
movq 0x6cd4(%rip), %rdi      # 0xbfd0
callq 0x23b0
movq %rax, %rbx
leaq 0x3e12(%rip), %rsi      # 0x911d
movl $0x6, %edx
movq %rax, %rdi
callq 0x22d0
movl 0x14(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %rbx
leaq 0x3e10(%rip), %rsi      # 0x913e
movl $0xb, %edx
movq %rax, %rdi
callq 0x22d0
movq %rbx, %rdi
callq 0x2110
jmp 0x541e
movq 0x6c81(%rip), %rdi      # 0xbfd0
leaq 0x3dc5(%rip), %rsi      # 0x911b
movl $0x1, %edx
callq 0x22d0
movl 0x34(%rsp), %esi
movq 0x6c65(%rip), %rdi      # 0xbfd0
callq 0x23b0
movq %rax, %rbx
leaq 0x3da3(%rip), %rsi      # 0x911d
movl $0x6, %edx
movq %rax, %rdi
callq 0x22d0
movl 0x14(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %rbx
leaq 0x3da1(%rip), %rsi      # 0x913e
movl $0xb, %edx
movq %rax, %rdi
callq 0x22d0
movq %rbx, %rdi
callq 0x2110
jmp 0x541e
movq 0x6c15(%rip), %rdi      # 0xbfd0
leaq 0x3d59(%rip), %rsi      # 0x911b
movl $0x1, %edx
callq 0x22d0
movl 0x34(%rsp), %esi
movq 0x6bf9(%rip), %rdi      # 0xbfd0
callq 0x23b0
movq %rax, %rbx
leaq 0x3d37(%rip), %rsi      # 0x911d
movl $0x6, %edx
movq %rax, %rdi
callq 0x22d0
movl 0x14(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %rbx
leaq 0x3d35(%rip), %rsi      # 0x913e
movl $0xb, %edx
movq %rax, %rdi
callq 0x22d0
movq %rbx, %rdi
callq 0x2110
movl $0x1, %edi
callq 0x22f0
leaq 0x3f2a(%rip), %rdi      # 0x9359
callq 0x2160
leaq 0x3f1e(%rip), %rdi      # 0x9359
callq 0x2360
leaq 0x3f12(%rip), %rdi      # 0x9359
callq 0x2160
leaq 0x3f06(%rip), %rdi      # 0x9359
callq 0x2360
leaq 0x3efa(%rip), %rdi      # 0x9359
callq 0x2160
leaq 0x3eee(%rip), %rdi      # 0x9359
callq 0x2360
jmp 0x58aa
jmp 0x590f
movq %rax, %rbx
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0x5876
movq 0x250(%rsp), %rsi
jmp 0x56f0
movq %rax, %rbx
movq 0x280(%rsp), %rdi
leaq 0x290(%rsp), %rax
cmpq %rax, %rdi
je 0x5876
movq 0x290(%rsp), %rsi
jmp 0x56f0
jmp 0x5539
jmp 0x5539
jmp 0x5539
jmp 0x54d6
jmp 0x54d6
movq %rax, %rbx
jmp 0x5a05
jmp 0x5873
jmp 0x58aa
jmp 0x590f
jmp 0x5834
jmp 0x5873
jmp 0x5873
jmp 0x5873
jmp 0x58aa
jmp 0x5834
jmp 0x590f
movq %rax, %rbx
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0x5876
movq 0x210(%rsp), %rsi
jmp 0x56f0
movq %rax, %rbx
jmp 0x59fb
jmp 0x5543
movq %rax, %rbx
movq 0x20(%rsp), %rax
cmpl $0x0, (%rax)
jne 0x5557
movq 0x20(%rsp), %rax
movl %ebp, (%rax)
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
jne 0x558c
jmp 0x5a05
movq %rax, %rbx
movq 0x20(%rsp), %rax
cmpl $0x0, (%rax)
jne 0x557a
movq 0x20(%rsp), %rax
movl %ebp, (%rax)
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5a05
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x5a05
jmp 0x5914
jmp 0x58aa
jmp 0x5834
jmp 0x590f
jmp 0x58aa
jmp 0x590f
jmp 0x5873
jmp 0x5834
jmp 0x590f
jmp 0x590f
movq %rax, %rbx
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x5876
movq 0x270(%rsp), %rsi
jmp 0x56f0
jmp 0x5873
jmp 0x58aa
jmp 0x5873
movq %rax, %rbx
movq 0x1c0(%rsp), %rdi
leaq 0x1d0(%rsp), %rax
cmpq %rax, %rdi
je 0x5876
movq 0x1d0(%rsp), %rsi
jmp 0x56f0
movq %rax, %rbx
movq 0x2a0(%rsp), %rdi
leaq 0x2b0(%rsp), %rax
cmpq %rax, %rdi
je 0x5876
movq 0x2b0(%rsp), %rsi
jmp 0x56f0
jmp 0x590f
jmp 0x5834
jmp 0x5873
movq %rax, %rbx
movq 0x300(%rsp), %rdi
leaq 0x310(%rsp), %rax
cmpq %rax, %rdi
je 0x5917
movq 0x310(%rsp), %rsi
jmp 0x58cf
jmp 0x5914
jmp 0x58db
jmp 0x5914
jmp 0x58aa
movq %rax, %rbx
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x5876
movq 0x230(%rsp), %rsi
jmp 0x56f0
movq %rax, %rbx
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0x5876
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x5876
jmp 0x5839
jmp 0x58aa
movq %rax, %rbx
movq 0x320(%rsp), %rdi
leaq 0x330(%rsp), %rax
cmpq %rax, %rdi
je 0x5917
movq 0x330(%rsp), %rsi
jmp 0x58cf
movq %rax, %rbx
movq 0x340(%rsp), %rdi
leaq 0x350(%rsp), %rax
cmpq %rax, %rdi
je 0x5917
movq 0x350(%rsp), %rsi
jmp 0x58cf
movq %rax, %rbx
movq 0x2c0(%rsp), %rdi
leaq 0x2d0(%rsp), %rax
cmpq %rax, %rdi
je 0x58de
movq 0x2d0(%rsp), %rsi
jmp 0x57ea
jmp 0x58db
jmp 0x5914
jmp 0x5914
jmp 0x58aa
jmp 0x582a
jmp 0x5873
movq %rax, %rbx
movq 0x380(%rsp), %rdi
leaq 0x390(%rsp), %rax
cmpq %rax, %rdi
je 0x5917
movq 0x390(%rsp), %rsi
jmp 0x58cf
movq %rax, %rbx
movq 0x2e0(%rsp), %rdi
leaq 0x2f0(%rsp), %rax
cmpq %rax, %rdi
je 0x58de
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x58de
jmp 0x58aa
jmp 0x5914
movq %rax, %rbx
movq 0x360(%rsp), %rdi
leaq 0x370(%rsp), %rax
cmpq %rax, %rdi
je 0x5917
movq 0x370(%rsp), %rsi
jmp 0x58cf
movq %rax, %rbx
jmp 0x58e8
jmp 0x5873
movq %rax, %rbx
jmp 0x589b
movq %rax, %rbx
jmp 0x59e1
jmp 0x5864
movq %rax, %rbx
movq 0x3c0(%rsp), %rdi
cmpq %r12, %rdi
je 0x59af
movq 0x3d0(%rsp), %rsi
jmp 0x59a7
movq %rax, %rbx
jmp 0x59af
jmp 0x5873
jmp 0x5914
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x589b
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x18(%rsp), %rdi
callq 0x6a08
jmp 0x5949
movq %rax, %rbx
jmp 0x5924
movq %rax, %rbx
movq 0x3a0(%rsp), %rdi
leaq 0x3b0(%rsp), %rax
cmpq %rax, %rdi
je 0x5917
movq 0x3b0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x5917
jmp 0x5914
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x6a08
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x5924
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x5924
movq %rax, %rbx
jmp 0x5949
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x6a08
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x5949
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x596e
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x5993
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x59af
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x59d4
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x1b8(%rsp), %rdi
callq 0x6a08
leaq 0x168(%rsp), %rdi
callq 0x5b88
leaq 0xe0(%rsp), %rdi
callq 0x5bd8
leaq 0x60(%rsp), %rdi
callq 0x5c28
movq %rbx, %rdi
callq 0x23c0
nop