// File: /workspace/github_cpp_makefile_star2_O1/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 0x5262
cmpl $0x4, %ebp
jne 0x5277
movq 0x8(%rbx), %rsi
leaq 0x60(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0x59fe
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 0x5422
movq %rax, %r14
movslq %r14d, %rax
cmpq %r14, %rax
jne 0x542e
movq 0x20(%rsp), %rax
movl (%rax), %eax
cmpl $0x22, %eax
je 0x542e
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 0x59fe
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 0x543a
movabsq $-0x100000000, %r15     # imm = 0xFFFFFFFF00000000
leaq -0x80000000(%rax), %rcx
cmpq %r15, %rcx
jb 0x5446
movq %rax, %r14
movq 0x20(%rsp), %rax
movl (%rax), %eax
cmpl $0x22, %eax
je 0x5446
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 0x59fe
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 0x5452
leaq -0x80000000(%rax), %rcx
cmpq %r15, %rcx
jb 0x545e
movq %rax, %r14
movq 0x20(%rsp), %rax
movl (%rax), %eax
cmpl $0x22, %eax
je 0x545e
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 0x5a3c
movl $0x1a0a, (%rax)         # imm = 0x1A0A
leaq 0xe0(%rsp), %rsi
movl $0x1, (%rsi)
leaq 0x60(%rsp), %rdi
callq 0x5a3c
movl $0x1a0b, (%rax)         # imm = 0x1A0B
leaq 0xe0(%rsp), %rsi
movl $0x2, (%rsi)
leaq 0x60(%rsp), %rdi
callq 0x5a3c
movl $0x1a0c, (%rax)         # imm = 0x1A0C
leaq 0x60(%rsp), %rdi
leaq 0x14(%rsp), %rsi
callq 0x5aa0
movl (%rax), %esi
leaq 0x96d7(%rip), %rdi      # 0xc218
callq 0x67cc
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 0x6862
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 0x686a
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 0x6740
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 0x5c64
movq %rbp, %rdi
movq %r13, %rsi
callq 0x6bda
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 0x454b
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 0x5b04
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 0x6b94
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e30
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 0x623e
movl $0x0, 0x18(%rsp)
cmpq $0x0, 0x88(%rsp)
je 0x4982
movq %r15, %rdi
callq 0x658c
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 0x5cf4
leaq 0x60(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
movq %r15, %rdi
leaq 0x3a0(%rsp), %rsi
callq 0x659a
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 0x4862
leaq 0x390(%rsp), %rax
movq %rax, 0x380(%rsp)
movq 0x138(%rsp), %rsi
movq 0x140(%rsp), %rdx
addq %rsi, %rdx
leaq 0x380(%rsp), %rdi
callq 0x5c64
movq %r15, %rdi
leaq 0x380(%rsp), %rsi
callq 0x6722
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 0x69e0
movslq 0x18(%rsp), %rax
incq %rax
movl %eax, 0x18(%rsp)
cmpq %rax, 0x88(%rsp)
ja 0x2e68
jmp 0x4982
leaq 0x18(%rsp), %rdi
callq 0x658c
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 0x5342
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x7, %esi
callq 0x6b94
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e30
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 0x5cf4
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
leaq 0x18(%rsp), %rdi
leaq 0x220(%rsp), %rsi
callq 0x659a
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 0x4745
leaq 0x210(%rsp), %rax
movq %rax, 0x200(%rsp)
movq 0x118(%rsp), %rsi
movq 0x120(%rsp), %rdx
addq %rsi, %rdx
leaq 0x200(%rsp), %rdi
callq 0x5c64
leaq 0x18(%rsp), %rdi
leaq 0x200(%rsp), %rsi
callq 0x6722
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 0x5b04
movl $0x3, 0x4(%rax)
jmp 0x4c13
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b04
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 0x5b04
movslq (%rax), %rax
movb $0x1, %bpl
cmpq %rax, 0x88(%rsp)
jne 0x4c45
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 0x6b94
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e30
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 0x5206
movq %r15, %rdi
callq 0x658c
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 0x5cf4
leaq 0x60(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
movq %r15, %rdi
leaq 0x360(%rsp), %rsi
callq 0x659a
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 0x50de
leaq 0x350(%rsp), %rax
movq %rax, 0x340(%rsp)
movq 0x138(%rsp), %rsi
movq 0x140(%rsp), %rdx
addq %rsi, %rdx
leaq 0x340(%rsp), %rdi
callq 0x5c64
movq %r15, %rdi
leaq 0x340(%rsp), %rsi
callq 0x6722
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 0x69e0
movslq 0x18(%rsp), %rax
incq %rax
movl %eax, 0x18(%rsp)
cmpq %rax, 0x88(%rsp)
ja 0x347f
jmp 0x5206
movq 0xf0(%rsp), %rcx
leaq 0xe8(%rsp), %rax
testq %rcx, %rcx
je 0x365e
movl 0x34(%rsp), %edx
xorl %esi, %esi
cmpl %edx, 0x20(%rcx)
setl %sil
cmovgeq %rcx, %rax
movq 0x10(%rcx,%rsi,8), %rcx
testq %rcx, %rcx
jne 0x3647
leaq 0xe8(%rsp), %rdx
movq %rdx, %rcx
cmpq %rdx, %rax
je 0x367c
movl 0x34(%rsp), %ecx
cmpl 0x20(%rax), %ecx
cmovlq %rdx, %rax
movq %rax, %rcx
movb $0x1, %bpl
cmpq %rdx, %rcx
je 0x4c45
movl 0x34(%rsp), %edx
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x6, %esi
callq 0x6b94
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e30
leaq 0x138(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x36e5
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %r14, %rdi
leaq 0x5a27(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x5a06(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x1a, %edx
movq %rax, %rdi
leaq 0x5a77(%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 0x4e37
movq %r15, %rdi
callq 0x658c
movl 0x18(%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0x3914
leaq 0x330(%rsp), %rax
movq %rax, 0x320(%rsp)
leaq 0x320(%rsp), %rdi
leaq 0x5928(%rip), %rsi      # 0x90e9
leaq 0x592a(%rip), %rdx      # 0x90f2
callq 0x5cf4
leaq 0x60(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
movq %r15, %rdi
leaq 0x320(%rsp), %rsi
callq 0x659a
movl %eax, %r13d
movq 0x320(%rsp), %rdi
leaq 0x330(%rsp), %rax
cmpq %rax, %rdi
je 0x3816
movq 0x330(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
js 0x4cfb
leaq 0x310(%rsp), %rax
movq %rax, 0x300(%rsp)
movq 0x138(%rsp), %rsi
movq 0x140(%rsp), %rdx
addq %rsi, %rdx
leaq 0x300(%rsp), %rdi
callq 0x5c64
movq %r15, %rdi
leaq 0x300(%rsp), %rsi
callq 0x6722
movq 0x300(%rsp), %rdi
leaq 0x310(%rsp), %rax
cmpq %rax, %rdi
je 0x3884
movq 0x310(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %r14, %rdi
leaq 0x5888(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x5867(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x14, %edx
movq %rax, %rdi
leaq 0x58fb(%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 0x69e0
movslq 0x18(%rsp), %rax
incq %rax
movl %eax, 0x18(%rsp)
cmpq %rax, 0x88(%rsp)
ja 0x378c
jmp 0x4e37
movl $0x1, %edx
movq %r14, %rdi
leaq 0x57d1(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x57b0(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x13, %edx
movq %rax, %rdi
leaq 0x5866(%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 0x5b04
incl (%rax)
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b04
movslq (%rax), %rax
movb $0x1, %bpl
cmpq %rax, 0x88(%rsp)
jne 0x4c45
movl 0x34(%rsp), %edx
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x5, %esi
callq 0x6b94
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e30
movl $0x0, 0x2c(%rsp)
cmpq $0x0, 0x88(%rsp)
leaq 0x18(%rsp), %r12
je 0x500b
movq %r12, %rdi
callq 0x658c
movl 0x2c(%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0x3bd1
leaq 0x2f0(%rsp), %rax
movq %rax, 0x2e0(%rsp)
leaq 0x2e0(%rsp), %rdi
leaq 0x566f(%rip), %rsi      # 0x90e9
leaq 0x5671(%rip), %rdx      # 0x90f2
callq 0x5cf4
leaq 0x60(%rsp), %rdi
leaq 0x2c(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
leaq 0x18(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x659a
movl %eax, %r13d
movq 0x2e0(%rsp), %rdi
leaq 0x2f0(%rsp), %rax
cmpq %rax, %rdi
je 0x3ad1
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
js 0x4ee1
leaq 0x2d0(%rsp), %rax
movq %rax, 0x2c0(%rsp)
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2c0(%rsp), %rdi
callq 0x5c64
leaq 0x18(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
callq 0x6722
movq 0x2c0(%rsp), %rdi
leaq 0x2d0(%rsp), %rax
cmpq %rax, %rdi
je 0x3b41
movq 0x2d0(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %r14, %rdi
leaq 0x55cb(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x55aa(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x15, %edx
movq %rax, %rdi
leaq 0x5685(%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 0x69e0
movslq 0x2c(%rsp), %rax
incq %rax
movl %eax, 0x2c(%rsp)
cmpq %rax, 0x88(%rsp)
ja 0x3a45
jmp 0x500b
movl $0x1, %edx
movq %r14, %rdi
leaq 0x550f(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x54ee(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x1a, %edx
movq %rax, %rdi
leaq 0x55ea(%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 0x3ca9
movq 0x158(%rsp), %rax
cmpl %eax, 0x34(%rsp)
jg 0x52d3
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x623e
movl 0x38(%rsp), %ebp
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b04
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movq %rcx, (%rax)
movl %ebp, 0x8(%rax)
leaq 0x18(%rsp), %rdi
callq 0x658c
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 0x455b
movl 0x34(%rsp), %edx
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x3, %esi
callq 0x6b94
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e30
leaq 0x118(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x3d73
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x2b0(%rsp), %rax
movq %rax, 0x2a0(%rsp)
leaq 0x2a0(%rsp), %rdi
leaq 0x5357(%rip), %rsi      # 0x90e9
leaq 0x5359(%rip), %rdx      # 0x90f2
callq 0x5cf4
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
leaq 0x18(%rsp), %rdi
leaq 0x2a0(%rsp), %rsi
callq 0x659a
movl %eax, %r13d
movq 0x2a0(%rsp), %rdi
leaq 0x2b0(%rsp), %rax
cmpq %rax, %rdi
je 0x3de9
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
js 0x49de
leaq 0x290(%rsp), %rax
movq %rax, 0x280(%rsp)
movq 0x118(%rsp), %rsi
movq 0x120(%rsp), %rdx
addq %rsi, %rdx
leaq 0x280(%rsp), %rdi
callq 0x5c64
leaq 0x18(%rsp), %rdi
leaq 0x280(%rsp), %rsi
callq 0x6722
movq 0x280(%rsp), %rdi
leaq 0x290(%rsp), %rax
cmpq %rax, %rdi
je 0x3e59
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x2270
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x5b04
movl $0x5, 0x4(%rax)
movl $0x1, %edx
movq %r14, %rdi
leaq 0x52a1(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x5280(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x19, %edx
movq %rax, %rdi
leaq 0x53a5(%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 0x5211(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x51f0(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x9, %edx
movq %rax, %rdi
leaq 0x532f(%rip), %rsi      # 0x927f
callq 0x22d0
movl $0x3, %edx
movq %r13, %rdi
leaq 0x528e(%rip), %rsi      # 0x91f2
callq 0x22d0
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x646c
leaq 0xe0(%rsp), %rdi
movq %rax, %rsi
callq 0x64e4
jmp 0x4c13
movq 0xf0(%rsp), %rcx
leaq 0xe8(%rsp), %rax
testq %rcx, %rcx
je 0x3fbe
movl 0x34(%rsp), %edx
xorl %esi, %esi
cmpl %edx, 0x20(%rcx)
setl %sil
cmovgeq %rcx, %rax
movq 0x10(%rcx,%rsi,8), %rcx
testq %rcx, %rcx
jne 0x3fa7
leaq 0xe8(%rsp), %rdx
movq %rdx, %rcx
cmpq %rdx, %rax
je 0x3fdc
movl 0x34(%rsp), %ecx
cmpl 0x20(%rax), %ecx
cmovlq %rdx, %rax
movq %rax, %rcx
cmpq %rdx, %rcx
je 0x4c42
movl $0x1, %edx
movq %r14, %rdi
leaq 0x5127(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x5106(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x16, %edx
movq %rax, %rdi
leaq 0x52a4(%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 0x5b04
movl $0x4, 0x4(%rax)
movl $0x1, %edx
movq %r14, %rdi
leaq 0x5080(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x505f(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xa, %edx
movq %rax, %rdi
leaq 0x5150(%rip), %rsi      # 0x9231
callq 0x22d0
movl $0x3, %edx
movq %r13, %rdi
leaq 0x50fd(%rip), %rsi      # 0x91f2
callq 0x22d0
jmp 0x426b
movq 0xf0(%rsp), %rcx
leaq 0xe8(%rsp), %rax
testq %rcx, %rcx
je 0x412f
movl 0x34(%rsp), %edx
xorl %esi, %esi
cmpl %edx, 0x20(%rcx)
setl %sil
cmovgeq %rcx, %rax
movq 0x10(%rcx,%rsi,8), %rcx
testq %rcx, %rcx
jne 0x4118
leaq 0xe8(%rsp), %rdx
movq %rdx, %rcx
cmpq %rdx, %rax
je 0x414d
movl 0x34(%rsp), %ecx
cmpl 0x20(%rax), %ecx
cmovlq %rdx, %rax
movq %rax, %rcx
cmpq %rdx, %rcx
je 0x4c42
movl $0x1, %edx
movq %r14, %rdi
leaq 0x4fb6(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x4f95(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x15, %edx
movq %rax, %rdi
leaq 0x514a(%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 0x5b04
movl $0x5, 0x4(%rax)
movl $0x1, %edx
movq %r14, %rdi
leaq 0x4f0f(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x4eee(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x8, %edx
movq %rax, %rdi
leaq 0x4f97(%rip), %rsi      # 0x91e9
callq 0x22d0
movl $0x3, %edx
movq %r13, %rdi
leaq 0x4f8c(%rip), %rsi      # 0x91f2
callq 0x22d0
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x646c
movb $0x1, %bpl
leaq 0xe0(%rsp), %rdi
movq %rax, %rsi
callq 0x64e4
jmp 0x4c45
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4faf(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x10, %edx
movq %rax, %rdi
leaq 0x5046(%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 0x658c
movl 0x34(%rsp), %edx
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x7, %esi
callq 0x6b94
leaq 0x168(%rsp), %rbp
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e30
leaq 0x118(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x4361
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x1f0(%rsp), %rax
movq %rax, 0x1e0(%rsp)
leaq 0x1e0(%rsp), %rdi
leaq 0x4d69(%rip), %rsi      # 0x90e9
leaq 0x4d6b(%rip), %rdx      # 0x90f2
callq 0x5cf4
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
leaq 0x18(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x659a
movl %eax, %r13d
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0x43d7
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
jns 0x443d
movl $0x16, %edx
movq %r14, %rdi
leaq 0x4f31(%rip), %rsi      # 0x931c
callq 0x22d0
movl $0xf, %edx
movq %r14, %rdi
leaq 0x4f34(%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 0x5c64
leaq 0x18(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x6722
movq 0x1c0(%rsp), %rdi
leaq 0x1d0(%rsp), %rax
cmpq %rax, %rdi
je 0x44a4
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x2270
movl 0x14(%rsp), %edi
movl 0x3c(%rsp), %esi
movq %rbp, (%rsp)
leaq 0x7d61(%rip), %rdx      # 0xc218
xorl %ecx, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7260
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4d77(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x15, %edx
movq %rax, %rdi
leaq 0x4e46(%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 0x634e
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63c6
jmp 0x4c13
movl $0xffffffff, 0x114(%rsp) # imm = 0xFFFFFFFF
jmp 0x4c45
movl 0x34(%rsp), %edx
movl 0x14(%rsp), %ecx
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movl $0x2, %esi
callq 0x6b94
movq %r15, %rdi
movq %r12, %rsi
callq 0x6e30
leaq 0x118(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x45b8
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x270(%rsp), %rax
movq %rax, 0x260(%rsp)
leaq 0x260(%rsp), %rdi
leaq 0x4b12(%rip), %rsi      # 0x90e9
leaq 0x4b14(%rip), %rdx      # 0x90f2
callq 0x5cf4
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
leaq 0x18(%rsp), %rdi
leaq 0x260(%rsp), %rsi
callq 0x659a
movl %eax, %r13d
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x462e
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x2270
testl %r13d, %r13d
js 0x4afb
leaq 0x250(%rsp), %rax
movq %rax, 0x240(%rsp)
movq 0x118(%rsp), %rsi
movq 0x120(%rsp), %rdx
addq %rsi, %rdx
leaq 0x240(%rsp), %rdi
callq 0x5c64
leaq 0x18(%rsp), %rdi
leaq 0x240(%rsp), %rsi
callq 0x6722
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0x469e
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %r14, %rdi
leaq 0x4a6e(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x4a4d(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x1a, %edx
movq %rax, %rdi
leaq 0x4b96(%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 0x5b04
movl $0x1, 0x4(%rax)
jmp 0x4c13
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4afd(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xe, %edx
movq %rax, %rdi
leaq 0x4a06(%rip), %rsi      # 0x917d
callq 0x22d0
movl $0xb, %edx
movq %r13, %rdi
leaq 0x4b34(%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 0x7a4d(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7260
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4a60(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x48f4(%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 0x634e
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63c6
jmp 0x4c13
movl $0x5, %edx
movq %r14, %rdi
leaq 0x49e0(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x14, %edx
movq %rax, %rdi
leaq 0x485f(%rip), %rsi      # 0x90f3
callq 0x22d0
movl $0x7, %edx
movq %r13, %rdi
leaq 0x49b5(%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 0x7930(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7260
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4943(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x47d7(%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 0x634e
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63c6
movq %r15, %rdi
callq 0x69e0
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x5b04
movl $0x2, 0x4(%rax)
cmpl $0x2, 0x160(%rsp)
jne 0x49b0
movq 0x158(%rsp), %rax
cmpl %eax, 0x34(%rsp)
jg 0x53ae
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4c42
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x4c42
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4864(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xe, %edx
movq %rax, %rdi
leaq 0x476d(%rip), %rsi      # 0x917d
callq 0x22d0
movl $0xd, %edx
movq %r13, %rdi
leaq 0x4833(%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 0x77b4(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7260
movl $0x5, %edx
movq %r14, %rdi
leaq 0x47c7(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x465b(%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 0x634e
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63c6
jmp 0x4c13
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4747(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xe, %edx
movq %rax, %rdi
leaq 0x4650(%rip), %rsi      # 0x917d
callq 0x22d0
movl $0xd, %edx
movq %r13, %rdi
leaq 0x4716(%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 0x7697(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7260
movl $0x5, %edx
movq %r14, %rdi
leaq 0x46aa(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x453e(%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 0x634e
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63c6
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4c38
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x18(%rsp), %rdi
callq 0x69e0
movb $0x1, %bpl
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x4c6a
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x4c8f
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x4cab
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x4cd0
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x1b8(%rsp), %r13
movq %r13, %rdi
callq 0x69e0
testb %bpl, %bpl
leaq 0x3d0(%rsp), %r12
leaq 0x30(%rsp), %rbp
jne 0x2c2f
jmp 0x5296
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4547(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xe, %edx
movq %rax, %rdi
leaq 0x4450(%rip), %rsi      # 0x917d
callq 0x22d0
movl $0xa, %edx
movq %r13, %rdi
leaq 0x444b(%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 0x748f(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7260
movl $0x5, %edx
movq %r14, %rdi
leaq 0x44a2(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x7, %edx
movq %rax, %rdi
leaq 0x43fa(%rip), %rsi      # 0x91cc
callq 0x22d0
movl $0xb, %edx
movq %r13, %rdi
leaq 0x4329(%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 0x634e
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63c6
movq %r15, %rdi
callq 0x69e0
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x646c
leaq 0xe0(%rsp), %rdi
movq %rax, %rsi
callq 0x64e4
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b04
movl $0x5, 0x4(%rax)
movl $0x1, %edx
movq %r14, %rdi
leaq 0x429e(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x427d(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x8, %edx
movq %rax, %rdi
leaq 0x4326(%rip), %rsi      # 0x91e9
callq 0x22d0
movl $0x3, %edx
movq %r13, %rdi
leaq 0x431b(%rip), %rsi      # 0x91f2
callq 0x22d0
jmp 0x5234
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4361(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xe, %edx
movq %rax, %rdi
leaq 0x426a(%rip), %rsi      # 0x917d
callq 0x22d0
movl $0x10, %edx
movq %r13, %rdi
leaq 0x42e3(%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 0x72a9(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7260
movl $0x5, %edx
movq %r14, %rdi
leaq 0x42bc(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x4150(%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 0x634e
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63c6
leaq 0x18(%rsp), %rdi
callq 0x69e0
leaq 0x168(%rsp), %rdi
movq %rbx, %rsi
callq 0x5b04
movl $0x4, 0x4(%rax)
movl $0x1, %edx
movq %r14, %rdi
leaq 0x40ea(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x34(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x40c9(%rip), %rsi      # 0x911d
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xa, %edx
movq %rax, %rdi
leaq 0x41ba(%rip), %rsi      # 0x9231
callq 0x22d0
movl $0x3, %edx
movq %r13, %rdi
leaq 0x4167(%rip), %rsi      # 0x91f2
callq 0x22d0
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x646c
leaq 0xe0(%rsp), %rdi
movq %rax, %rsi
callq 0x64e4
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x5234
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x5234
movl $0x5, %edx
movq %r14, %rdi
leaq 0x4164(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0xe, %edx
movq %rax, %rdi
leaq 0x406d(%rip), %rsi      # 0x917d
callq 0x22d0
movl $0xa, %edx
movq %r13, %rdi
leaq 0x4068(%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 0x70ac(%rip), %rdx      # 0xc218
movl $0x1, %ecx
leaq 0x60(%rsp), %r8
leaq 0xe0(%rsp), %r9
callq 0x7260
movl $0x5, %edx
movq %r14, %rdi
leaq 0x40bf(%rip), %rsi      # 0x9251
callq 0x22d0
movl 0x14(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r13
movl $0x12, %edx
movq %rax, %rdi
leaq 0x3f53(%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 0x634e
leaq 0x60(%rsp), %rdi
movq %rax, %rsi
callq 0x63c6
movq %r15, %rdi
callq 0x69e0
leaq 0x168(%rsp), %r13
movq %r13, %rdi
movq %rbx, %r12
movq %rbx, %rsi
callq 0x5b04
movl $0x3, 0x4(%rax)
movq %r13, %rdi
movq %r12, %rsi
callq 0x5b04
movl $0x1, (%rax)
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4c45
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x4c45
movq 0x6d87(%rip), %rdi      # 0xbff0
leaq 0x3e19(%rip), %rsi      # 0x9089
movl $0x24, %edx
jmp 0x528a
movq 0x6d52(%rip), %rdi      # 0xbfd0
leaq 0x3e29(%rip), %rsi      # 0x90ae
movl $0x17, %edx
callq 0x22d0
movl $0x1, %eax
jmp 0x52c1
leaq 0x168(%rsp), %rdi
callq 0x5b74
leaq 0xe0(%rsp), %rdi
callq 0x5bc4
leaq 0x60(%rsp), %rdi
callq 0x5c14
movl 0x114(%rsp), %eax
addq $0x478, %rsp            # imm = 0x478
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x6cf6(%rip), %rdi      # 0xbfd0
leaq 0x3e3a(%rip), %rsi      # 0x911b
movl $0x1, %edx
callq 0x22d0
movl 0x34(%rsp), %esi
movq 0x6cda(%rip), %rdi      # 0xbfd0
callq 0x23b0
movq %rax, %rbx
leaq 0x3e18(%rip), %rsi      # 0x911d
movl $0x6, %edx
movq %rax, %rdi
callq 0x22d0
movl 0x14(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %rbx
leaq 0x3e16(%rip), %rsi      # 0x913e
movl $0xb, %edx
movq %rax, %rdi
callq 0x22d0
movq %rbx, %rdi
callq 0x2110
jmp 0x5418
movq 0x6c87(%rip), %rdi      # 0xbfd0
leaq 0x3dcb(%rip), %rsi      # 0x911b
movl $0x1, %edx
callq 0x22d0
movl 0x34(%rsp), %esi
movq 0x6c6b(%rip), %rdi      # 0xbfd0
callq 0x23b0
movq %rax, %rbx
leaq 0x3da9(%rip), %rsi      # 0x911d
movl $0x6, %edx
movq %rax, %rdi
callq 0x22d0
movl 0x14(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %rbx
leaq 0x3da7(%rip), %rsi      # 0x913e
movl $0xb, %edx
movq %rax, %rdi
callq 0x22d0
movq %rbx, %rdi
callq 0x2110
jmp 0x5418
movq 0x6c1b(%rip), %rdi      # 0xbfd0
leaq 0x3d5f(%rip), %rsi      # 0x911b
movl $0x1, %edx
callq 0x22d0
movl 0x34(%rsp), %esi
movq 0x6bff(%rip), %rdi      # 0xbfd0
callq 0x23b0
movq %rax, %rbx
leaq 0x3d3d(%rip), %rsi      # 0x911d
movl $0x6, %edx
movq %rax, %rdi
callq 0x22d0
movl 0x14(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %rbx
leaq 0x3d3b(%rip), %rsi      # 0x913e
movl $0xb, %edx
movq %rax, %rdi
callq 0x22d0
movq %rbx, %rdi
callq 0x2110
movl $0x1, %edi
callq 0x22f0
leaq 0x3f30(%rip), %rdi      # 0x9359
callq 0x2160
leaq 0x3f24(%rip), %rdi      # 0x9359
callq 0x2360
leaq 0x3f18(%rip), %rdi      # 0x9359
callq 0x2160
leaq 0x3f0c(%rip), %rdi      # 0x9359
callq 0x2360
leaq 0x3f00(%rip), %rdi      # 0x9359
callq 0x2160
leaq 0x3ef4(%rip), %rdi      # 0x9359
callq 0x2360
movq %rax, %rbx
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0x5865
movq 0x250(%rsp), %rsi
jmp 0x56b4
movq %rax, %rbx
movq 0x280(%rsp), %rdi
leaq 0x290(%rsp), %rax
cmpq %rax, %rdi
je 0x5865
movq 0x290(%rsp), %rsi
jmp 0x56b4
jmp 0x5533
jmp 0x5533
jmp 0x5533
jmp 0x54c6
jmp 0x54c6
movq %rax, %rbx
jmp 0x59f6
jmp 0x5937
jmp 0x5862
jmp 0x5826
jmp 0x5899
jmp 0x5862
jmp 0x5937
jmp 0x5862
jmp 0x5826
jmp 0x5862
jmp 0x5899
movq %rax, %rbx
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0x5865
movq 0x210(%rsp), %rsi
jmp 0x56b4
jmp 0x5899
jmp 0x5937
movq %rax, %rbx
jmp 0x59ec
jmp 0x553d
movq %rax, %rbx
movq 0x20(%rsp), %rax
cmpl $0x0, (%rax)
jne 0x5551
movq 0x20(%rsp), %rax
movl %ebp, (%rax)
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
jne 0x5586
jmp 0x59f6
movq %rax, %rbx
movq 0x20(%rsp), %rax
cmpl $0x0, (%rax)
jne 0x5574
movq 0x20(%rsp), %rax
movl %ebp, (%rax)
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x59f6
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x59f6
jmp 0x5899
jmp 0x5826
jmp 0x5937
jmp 0x5899
jmp 0x5826
jmp 0x5937
jmp 0x5937
jmp 0x5862
jmp 0x5937
jmp 0x5862
movq %rax, %rbx
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x5865
movq 0x270(%rsp), %rsi
jmp 0x56b4
jmp 0x5862
jmp 0x5862
movq %rax, %rbx
movq 0x2a0(%rsp), %rdi
leaq 0x2b0(%rsp), %rax
cmpq %rax, %rdi
je 0x5865
movq 0x2b0(%rsp), %rsi
jmp 0x56b4
jmp 0x5826
movq %rax, %rbx
movq 0x1c0(%rsp), %rdi
leaq 0x1d0(%rsp), %rax
cmpq %rax, %rdi
je 0x5865
movq 0x1d0(%rsp), %rsi
jmp 0x56b4
jmp 0x5899
jmp 0x5937
jmp 0x58ca
jmp 0x5900
jmp 0x5899
movq %rax, %rbx
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0x5865
movq 0x230(%rsp), %rsi
jmp 0x56b4
movq %rax, %rbx
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0x5865
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x5865
jmp 0x5856
jmp 0x5900
movq %rax, %rbx
movq 0x340(%rsp), %rdi
leaq 0x350(%rsp), %rax
cmpq %rax, %rdi
je 0x5903
movq 0x350(%rsp), %rsi
jmp 0x58be
movq %rax, %rbx
movq 0x2c0(%rsp), %rdi
leaq 0x2d0(%rsp), %rax
cmpq %rax, %rdi
je 0x58cd
movq 0x2d0(%rsp), %rsi
jmp 0x57e4
jmp 0x5900
jmp 0x5900
jmp 0x58ca
movq %rax, %rbx
movq 0x300(%rsp), %rdi
leaq 0x310(%rsp), %rax
cmpq %rax, %rdi
je 0x5903
movq 0x310(%rsp), %rsi
jmp 0x58be
jmp 0x5900
jmp 0x57f1
jmp 0x5862
movq %rax, %rbx
movq 0x380(%rsp), %rdi
leaq 0x390(%rsp), %rax
cmpq %rax, %rdi
je 0x5903
movq 0x390(%rsp), %rsi
jmp 0x58be
movq %rax, %rbx
movq 0x360(%rsp), %rdi
leaq 0x370(%rsp), %rax
cmpq %rax, %rdi
je 0x5903
movq 0x370(%rsp), %rsi
jmp 0x58be
jmp 0x5900
jmp 0x5899
movq %rax, %rbx
movq 0x2e0(%rsp), %rdi
leaq 0x2f0(%rsp), %rax
cmpq %rax, %rdi
je 0x58cd
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x58cd
movq %rax, %rbx
jmp 0x58d7
movq %rax, %rbx
movq 0x320(%rsp), %rdi
leaq 0x330(%rsp), %rax
cmpq %rax, %rdi
je 0x5903
movq 0x330(%rsp), %rsi
jmp 0x58be
jmp 0x5899
jmp 0x5862
movq %rax, %rbx
jmp 0x588a
movq %rax, %rbx
movq 0x3c0(%rsp), %rdi
cmpq %r12, %rdi
je 0x59a0
movq 0x3d0(%rsp), %rsi
jmp 0x5998
jmp 0x584e
movq %rax, %rbx
jmp 0x59a0
movq %rax, %rbx
jmp 0x59d2
jmp 0x5899
jmp 0x5862
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x588a
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x18(%rsp), %rdi
callq 0x69e0
jmp 0x593a
movq %rax, %rbx
jmp 0x5910
movq %rax, %rbx
movq 0x3a0(%rsp), %rdi
leaq 0x3b0(%rsp), %rax
cmpq %rax, %rdi
je 0x5903
movq 0x3b0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x5903
jmp 0x5900
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x69e0
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x5910
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x5910
jmp 0x5900
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x69e0
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x593a
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x593a
movq %rax, %rbx
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x595f
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x5984
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x59a0
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x59c5
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x1b8(%rsp), %rdi
callq 0x69e0
leaq 0x168(%rsp), %rdi
callq 0x5b74
leaq 0xe0(%rsp), %rdi
callq 0x5bc4
leaq 0x60(%rsp), %rdi
callq 0x5c14
movq %rbx, %rdi
callq 0x23c0