// File: /workspace/github_cpp_makefile_star2_O3/rohitrangan[P]3PC/src/termination.cpp
// Function: termination_protocol(int, int, Socket&, bool, std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int>>>&, std::set<int, std::less<int>, std::allocator<int>>&, std::map<int, transaction_info, std::less<int>, std::allocator<std::pair<int const, transaction_info>>>&)
bool termination_protocol (int site_id, int failed_site, Socket& site, bool b,
        map<int, int>& sites, set<int>& txLive,
        map<int, transaction_info>& trans_table)
{
    int new_coordinator = (failed_site != 0) ? 0 : 1;
    bool flag = false;
    int numAcks = 0;
    cout << "Site " << site_id << " entered termination protocol" << endl;

    if (b)
    {
        Message start_term (TERMINATION, 0, site_id, failed_site);
        string msg_start_term = start_term.createMessage ();
        for (int i = 0; i < sites.size (); ++i)
        {
            Socket tmp;
            if (i != site_id && i != failed_site)
            {
                tmp.connect ("localhost", sites[i]);
                tmp.send (msg_start_term);
                cout << "Site " << site_id
                    << " sent TERMINATION to Site " << i << 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;
            switch (msg.message)
            {
                case TERMINATION:
                {
                    cout << "Site " << site_id << " received TERMINATION from "
                        "Site " << msg.site_id << endl;
                    failed_site = msg.failed_id;
                    Message tempMsg(ACK, msg.transaction_id, site_id);
                    tempStr = tempMsg.createMessage();
                    Socket temp;
                    temp.connect ("localhost", sites[msg.site_id]);
                    temp.send (tempStr);
                    cout << "Site " << site_id << " sent ACK to Site " <<
                        msg.site_id << endl;
                    break;
                }
                case ACK:
                {
                    cout << "Site " << site_id << " got ACK from Site " <<
                        msg.site_id << endl;
                    ++numAcks;
                    if (numAcks == (sites.size () - 2))
                    {
                        flag = true;
                    }
                    break;
                }
                default:
                    break;
            }
            if (flag)
                break;
        }
    }

    for (set<int>::iterator it = txLive.begin (); it != txLive.end (); )
    {
        int t_chkid = *it;
        /* Handling the case for transactions being its own and if it is the new
         * coordinator.
         */
        if ((trans_table[t_chkid].coordinator == site_id) ||
                ((trans_table[t_chkid].coordinator == failed_site) &&
                 (new_coordinator == site_id)))
        {
            switch (trans_table[t_chkid].site_st)
            {
                case S_INIT:

                case S_READY:

                case S_WAIT:
                {
                    cout << "[" << t_chkid << "]Site " << site_id <<
                        " is aborting transaction in TERMINATION" << endl;
                    Message snd_msg_all (ABORT, t_chkid, site_id);
                    string tmp_msg = snd_msg_all.createMessage ();
                    for (int i = 0; i < sites.size (); ++i)
                    {
                        Socket tmp;
                        if (i != site_id && i != failed_site)
                        {
                            tmp.connect ("localhost", sites[i]);
                            tmp.send (tmp_msg);
                            cout << "[" << t_chkid << "]Site " << site_id
                                << " sent ABORT to Site " << i << endl;
                        }
                    }
                    trans_table[t_chkid].site_st = S_ABORT;
                    cout << "[" << t_chkid << "]Site " << site_id
                        << " ABORTED in TERMINATION" << "\n\n\n";
                    it = txLive.erase (it);
                    break;
                }
                case S_PRE_COMMIT:
                {
                    cout << "[" << t_chkid << "]Site " << site_id <<
                        " is going to commit transaction in TERMINATION"
                        << endl;
                    Message snd_msg_all (COMMIT, t_chkid, site_id);
                    string tmp_msg = snd_msg_all.createMessage ();
                    for (int i = 0; i < sites.size (); ++i)
                    {
                        Socket tmp;
                        if (i != site_id && i != failed_site)
                        {
                            tmp.connect ("localhost", sites[i]);
                            tmp.send (tmp_msg);
                            cout << "[" << t_chkid << "]Site " << site_id
                                << " sent COMMIT to Site " << i <<
                                " in TERMINATION" << endl;
                        }
                    }
                    trans_table[t_chkid].site_st = S_COMMIT;
                    cout << "[" << t_chkid << "]Site " << site_id
                        << " COMMITTED in TERMINATION" << "\n\n\n";
                    it = txLive.erase (it);
                    break;
                }
                case S_ABORT:
                {
                    cout << "[" << t_chkid << "]Site " << site_id <<
                        " is aborting transaction in TERMINATION" << endl;
                    Message snd_msg_all (ABORT, t_chkid, site_id);
                    string tmp_msg = snd_msg_all.createMessage ();
                    for (int i = 0; i < sites.size (); ++i)
                    {
                        Socket tmp;
                        if (i != site_id && i != failed_site)
                        {
                            tmp.connect ("localhost", sites[i]);
                            tmp.send (tmp_msg);
                            cout << "[" << t_chkid << "]Site " << site_id
                                << " sent ABORT to Site " << i << 
                                " in TERMINATION" << endl;
                        }
                    }
                    trans_table[t_chkid].site_st = S_ABORT;
                    cout << "[" << t_chkid << "]Site " << site_id
                        << " ABORTED in TERMINATION" << "\n\n\n";
                    it = txLive.erase (it);
                    break;
                }
                default:
                    cout << "State is:- " << trans_table[t_chkid].site_st << endl;
                    ++it;
                    break;
            }
        }
        else
            ++it;
    }

    if (txLive.empty ())
        return false;

    flag = false;
    while (1)
    {
        Socket inc = site.accept ();
		string str;
        str = inc.recv ((size_t) 1024);
		Message msg (str);
        string tempStr, snd_msg;
		switch (msg.message)
		{
			case COMMIT:
            {
                cout << "[" << msg.transaction_id << "]Site " << site_id <<
                    " received COMMIT from Site " << msg.site_id <<
                    " in TERMINATION" << endl;
                trans_table[msg.transaction_id].site_st = S_COMMIT;
                cout << "[" << msg.transaction_id << "]Site " << site_id
                    << " COMMITTED in TERMINATION" << "\n\n\n";
                txLive.erase (msg.transaction_id);
                if (txLive.empty ())
                    flag = true;
				break;
            }
			case ABORT:
            {
                cout << "[" << msg.transaction_id << "]Site " << site_id <<
                    " received ABORT from Site " << msg.site_id <<
                    " in TERMINATION" << endl;
                trans_table[msg.transaction_id].site_st = S_ABORT;
                cout << "[" << msg.transaction_id << "]Site " << site_id
                    << " ABORTED in TERMINATION" << "\n\n\n";
                txLive.erase (msg.transaction_id);
                if (txLive.empty ())
                    flag = true;
				break;
            }
            default:
                break;
		}
        if (flag)
            break;
    }

	return false;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2e8, %rsp            # imm = 0x2E8
movq %r9, 0x80(%rsp)
movq %r8, %r15
movl %ecx, %ebx
movq %rdx, 0x110(%rsp)
movl %esi, %r12d
movl %edi, %ebp
movl $0x0, 0x8c(%rsp)
testl %esi, %esi
sete 0x3(%rsp)
movq 0x4cf8(%rip), %r14      # 0xbfd0
leaq 0x1f72(%rip), %rsi      # 0x9251
movl $0x5, %edx
movq %r14, %rdi
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
leaq 0x20f8(%rip), %rsi      # 0x93f8
movl $0x1d, %edx
movq %rax, %rdi
callq 0x22d0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
testl %ebx, %ebx
movl %r12d, 0x4(%rsp)
je 0x7a06
leaq 0x90(%rsp), %rbx
movq %rbx, %rdi
movl $0x8, %esi
xorl %edx, %edx
movl %ebp, %ecx
movl %r12d, %r8d
callq 0x6be0
leaq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0x6e58
movl $0x0, 0xc0(%rsp)
cmpq $0x0, 0x28(%r15)
je 0x750a
leaq 0x290(%rsp), %r12
leaq 0x8(%rsp), %rbx
movq 0x4c3c(%rip), %r14      # 0xbfd0
movq %rbx, %rdi
callq 0x65b0
movl 0xc0(%rsp), %eax
cmpl %ebp, %eax
sete %cl
cmpl 0x4(%rsp), %eax
sete %al
orb %cl, %al
jne 0x74e6
movq %r12, 0x280(%rsp)
leaq 0x280(%rsp), %rdi
leaq 0x1d1b(%rip), %rsi      # 0x90e9
leaq 0x1d1d(%rip), %rdx      # 0x90f2
callq 0x5d0e
movq %r15, %rdi
leaq 0xc0(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
movq %rbx, %rdi
leaq 0x280(%rsp), %rsi
callq 0x65be
movq 0x280(%rsp), %rdi
cmpq %r12, %rdi
je 0x7419
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x248(%rsp), %rax
movq %rax, 0x238(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x238(%rsp), %rdi
callq 0x5c78
movq %rbx, %rdi
leaq 0x238(%rsp), %rsi
callq 0x6746
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x7478
movq 0x248(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x5, %edx
movq %r14, %rdi
leaq 0x1dca(%rip), %rsi      # 0x9251
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r13
movl $0x1a, %edx
movq %rax, %rdi
leaq 0x1f6e(%rip), %rsi      # 0x9416
callq 0x22d0
movl 0xc0(%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 %rbx, %rdi
callq 0x6a08
movslq 0xc0(%rsp), %rax
incq %rax
movl %eax, 0xc0(%rsp)
cmpq %rax, 0x28(%r15)
ja 0x7394
leaq 0x2d8(%rsp), %rbx
movl $0x0, 0x38(%rsp)
leaq 0x2a0(%rsp), %r14
leaq 0x8(%rsp), %r13
movq %r14, %rdi
movq 0x110(%rsp), %rsi
callq 0x6892
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq $0x0, 0x68(%rsp)
movb $0x0, 0x70(%rsp)
movl $0x400, %edx            # imm = 0x400
movq %r13, %rdi
movq %r14, %rsi
callq 0x6764
leaq 0x60(%rsp), %rdi
movq %r13, %rsi
callq 0x2300
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x7588
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2270
movq %rbx, 0x2c8(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2c8(%rsp), %r12
movq %r12, %rdi
callq 0x5c78
movq %r13, %rdi
movq %r12, %rsi
callq 0x6c02
movq 0x2c8(%rsp), %rdi
movq %rbx, %r13
cmpq %rbx, %rdi
je 0x75d8
movq 0x2d8(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x100(%rsp), %rax
movq %rax, 0xf0(%rsp)
xorl %ebx, %ebx
movq %rbx, 0xf8(%rsp)
movb %bl, 0x100(%rsp)
leaq 0x228(%rsp), %rax
movq %rax, 0x218(%rsp)
movq %rbx, 0x220(%rsp)
movb %bl, 0x228(%rsp)
movl 0x8(%rsp), %eax
cmpl $0x7, %eax
je 0x78a3
cmpl $0x8, %eax
jne 0x7930
movl $0x5, %edx
movq 0x4996(%rip), %rdi      # 0xbfd0
leaq 0x1c10(%rip), %rsi      # 0x9251
callq 0x22d0
movq 0x4983(%rip), %rdi      # 0xbfd0
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x20, %edx
movq %rax, %rdi
leaq 0x1dcb(%rip), %rsi      # 0x9431
callq 0x22d0
movl 0x10(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0xc(%rsp), %edx
movl 0x14(%rsp), %eax
movl %eax, 0x4(%rsp)
leaq 0xc0(%rsp), %rbx
movq %rbx, %rdi
movl $0x7, %esi
movl %ebp, %ecx
callq 0x6bbc
leaq 0x258(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6e58
leaq 0xf0(%rsp), %rdi
movq %r12, %rsi
callq 0x2300
movq 0x258(%rsp), %rdi
leaq 0x268(%rsp), %rax
cmpq %rax, %rdi
je 0x770c
movq 0x268(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x258(%rsp), %rdi
callq 0x65b0
leaq 0x208(%rsp), %rax
movq %rax, 0x1f8(%rsp)
leaq 0x1f8(%rsp), %rdi
leaq 0x19b1(%rip), %rsi      # 0x90e9
leaq 0x19b3(%rip), %rdx      # 0x90f2
callq 0x5d0e
movq %r15, %rdi
leaq 0x10(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
leaq 0x258(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x65be
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x778d
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x1e8(%rsp), %rax
movq %rax, 0x1d8(%rsp)
movq 0xf0(%rsp), %rsi
movq 0xf8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1d8(%rsp), %rdi
callq 0x5c78
leaq 0x258(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0x6746
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x77f7
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x5, %edx
movq 0x47cd(%rip), %rdi      # 0xbfd0
leaq 0x1a47(%rip), %rsi      # 0x9251
callq 0x22d0
movq 0x47ba(%rip), %rdi      # 0xbfd0
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x12, %edx
movq %rax, %rdi
leaq 0x1a9c(%rip), %rsi      # 0x92cb
callq 0x22d0
movl 0x10(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %rbx
movq (%rax), %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 0x258(%rsp), %rdi
callq 0x6a08
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x789c
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x2270
xorl %ebx, %ebx
jmp 0x7930
movl $0x5, %edx
movq 0x4721(%rip), %rdi      # 0xbfd0
leaq 0x199b(%rip), %rsi      # 0x9251
callq 0x22d0
movq 0x470e(%rip), %rdi      # 0xbfd0
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x13, %edx
movq %rax, %rdi
leaq 0x191b(%rip), %rsi      # 0x91f6
callq 0x22d0
movl 0x10(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %rbx
movq (%rax), %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
movl 0x38(%rsp), %eax
incl %eax
movl %eax, 0x38(%rsp)
cltq
movq 0x28(%r15), %rcx
addq $-0x2, %rcx
cmpq %rax, %rcx
sete %bl
movq 0x218(%rsp), %rdi
leaq 0x228(%rsp), %rax
cmpq %rax, %rdi
je 0x7955
movq 0x228(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x797a
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x7996
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x79b2
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x2270
movq %r14, %rdi
callq 0x6a08
testb %bl, %bl
movq %r13, %rbx
leaq 0x8(%rsp), %r13
je 0x7527
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x79e5
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0xb0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7a06
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x80(%rsp), %rax
movq 0x18(%rax), %r14
addq $0x8, %rax
movq %rax, 0x278(%rsp)
cmpq %rax, %r14
je 0x846f
movl 0x8c(%rsp), %eax
movb 0x3(%rsp), %dl
movb %dl, %al
movl %eax, 0x8c(%rsp)
movq 0x458e(%rip), %rbx      # 0xbfd0
leaq 0xc0(%rsp), %r13
movq %r14, 0x38(%rsp)
movl 0x20(%r14), %eax
movl %eax, 0x40(%rsp)
movq 0x320(%rsp), %r14
movq %r14, %rdi
leaq 0x40(%rsp), %r12
movq %r12, %rsi
callq 0x5b18
cmpl %ebp, 0x8(%rax)
je 0x7a99
movq %r14, %rdi
movq %r12, %rsi
callq 0x5b18
cmpl %ebp, 0x8c(%rsp)
jne 0x8454
movl 0x4(%rsp), %ecx
cmpl %ecx, 0x8(%rax)
jne 0x8454
movq %r14, %rdi
movq %r12, %rsi
callq 0x5b18
movl 0x4(%rax), %eax
cmpl $0x3, %eax
jae 0x7da2
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x165c(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x163b(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x27, %edx
movq %rax, %rdi
leaq 0x194f(%rip), %rsi      # 0x9452
callq 0x22d0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0x40(%rsp), %edx
leaq 0x90(%rsp), %r14
movq %r14, %rdi
movl $0x6, %esi
movl %ebp, %ecx
callq 0x6bbc
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x6e58
movl 0x4(%rsp), %r12d
movl $0x0, 0x60(%rsp)
cmpq $0x0, 0x28(%r15)
je 0x7d06
movq %r13, %rdi
callq 0x65b0
movl 0x60(%rsp), %eax
cmpl %ebp, %eax
je 0x7ce8
cmpl %r12d, %eax
je 0x7ce8
leaq 0x1c8(%rsp), %rax
movq %rax, 0x1b8(%rsp)
leaq 0x1b8(%rsp), %rdi
leaq 0x153e(%rip), %rsi      # 0x90e9
leaq 0x1540(%rip), %rdx      # 0x90f2
callq 0x5d0e
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
movq %r13, %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x65be
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x7bfb
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x1a8(%rsp), %rax
movq %rax, 0x198(%rsp)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x198(%rsp), %rdi
callq 0x5c78
movq %r13, %rdi
leaq 0x198(%rsp), %rsi
callq 0x6746
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x7c5a
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x14b2(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x1491(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x14, %edx
movq %rax, %rdi
leaq 0x1527(%rip), %rsi      # 0x91d4
callq 0x22d0
movl 0x60(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq %r13, %rdi
callq 0x6a08
movslq 0x60(%rsp), %rax
incq %rax
movl %eax, 0x60(%rsp)
cmpq %rax, 0x28(%r15)
ja 0x7b6f
movq 0x320(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x5b18
movl $0x5, 0x4(%rax)
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x13ed(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x13cc(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x17, %edx
movq %rax, %rdi
leaq 0x1708(%rip), %rsi      # 0x947a
callq 0x22d0
movl $0x3, %edx
movq %r14, %rdi
leaq 0x146c(%rip), %rsi      # 0x91f2
callq 0x22d0
movq 0x80(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x8d58
jmp 0x83b3
movl 0x4(%rsp), %r12d
je 0x80b7
cmpl $0x5, %eax
jne 0x83f9
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x1356(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x1335(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x27, %edx
movq %rax, %rdi
leaq 0x1649(%rip), %rsi      # 0x9452
callq 0x22d0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0x40(%rsp), %edx
leaq 0x90(%rsp), %r14
movq %r14, %rdi
movl $0x6, %esi
movl %ebp, %ecx
callq 0x6bbc
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x6e58
movl $0x0, 0x60(%rsp)
cmpq $0x0, 0x28(%r15)
je 0x801b
movq %r13, %rdi
callq 0x65b0
movl 0x60(%rsp), %eax
cmpl %ebp, %eax
je 0x7ffd
cmpl %r12d, %eax
je 0x7ffd
leaq 0x148(%rsp), %rax
movq %rax, 0x138(%rsp)
leaq 0x138(%rsp), %rdi
leaq 0x123d(%rip), %rsi      # 0x90e9
leaq 0x123f(%rip), %rdx      # 0x90f2
callq 0x5d0e
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
movq %r13, %rdi
leaq 0x138(%rsp), %rsi
callq 0x65be
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x7efc
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x128(%rsp), %rax
movq %rax, 0x118(%rsp)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x118(%rsp), %rdi
callq 0x5c78
movq %r13, %rdi
leaq 0x118(%rsp), %rsi
callq 0x6746
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x7f5b
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x11b1(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x1190(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x14, %edx
movq %rax, %rdi
leaq 0x1226(%rip), %rsi      # 0x91d4
callq 0x22d0
movl 0x60(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r14
movl $0xf, %edx
movq %rax, %rdi
leaq 0x14b1(%rip), %rsi      # 0x9482
callq 0x22d0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq %r13, %rdi
callq 0x6a08
movslq 0x60(%rsp), %rax
incq %rax
movl %eax, 0x60(%rsp)
cmpq %rax, 0x28(%r15)
ja 0x7e70
movq 0x320(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x5b18
movl $0x5, 0x4(%rax)
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x10d8(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x10b7(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x17, %edx
movq %rax, %rdi
leaq 0x13f3(%rip), %rsi      # 0x947a
callq 0x22d0
movl $0x3, %edx
movq %r14, %rdi
leaq 0x1157(%rip), %rsi      # 0x91f2
callq 0x22d0
movq 0x80(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x8d58
jmp 0x83b3
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x1055(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x1034(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x2e, %edx
movq %rax, %rdi
leaq 0x1388(%rip), %rsi      # 0x9492
callq 0x22d0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl 0x40(%rsp), %edx
leaq 0x90(%rsp), %r14
movq %r14, %rdi
movl $0x5, %esi
movl %ebp, %ecx
callq 0x6bbc
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x6e58
movl $0x0, 0x60(%rsp)
cmpq $0x0, 0x28(%r15)
je 0x831c
movq %r13, %rdi
callq 0x65b0
movl 0x60(%rsp), %eax
cmpl %ebp, %eax
je 0x82fe
cmpl %r12d, %eax
je 0x82fe
leaq 0x188(%rsp), %rax
movq %rax, 0x178(%rsp)
leaq 0x178(%rsp), %rdi
leaq 0xf3c(%rip), %rsi       # 0x90e9
leaq 0xf3e(%rip), %rdx       # 0x90f2
callq 0x5d0e
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0x5ab2
movl (%rax), %edx
movq %r13, %rdi
leaq 0x178(%rsp), %rsi
callq 0x65be
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x81fd
movq 0x188(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x168(%rsp), %rax
movq %rax, 0x158(%rsp)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x158(%rsp), %rdi
callq 0x5c78
movq %r13, %rdi
leaq 0x158(%rsp), %rsi
callq 0x6746
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x825c
movq 0x168(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %rbx, %rdi
leaq 0xeb0(%rip), %rsi       # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0xe8f(%rip), %rsi       # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x15, %edx
movq %rax, %rdi
leaq 0xf6c(%rip), %rsi       # 0x921b
callq 0x22d0
movl 0x60(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r14
movl $0xf, %edx
movq %rax, %rdi
leaq 0x11b0(%rip), %rsi      # 0x9482
callq 0x22d0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq %r13, %rdi
callq 0x6a08
movslq 0x60(%rsp), %rax
incq %rax
movl %eax, 0x60(%rsp)
cmpq %rax, 0x28(%r15)
ja 0x8171
movq 0x320(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x5b18
movl $0x4, 0x4(%rax)
movl $0x1, %edx
movq %rbx, %rdi
leaq 0xdd7(%rip), %rsi       # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0xdb6(%rip), %rsi       # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x19, %edx
movq %rax, %rdi
leaq 0x1139(%rip), %rsi      # 0x94c1
callq 0x22d0
movl $0x3, %edx
movq %r14, %rdi
leaq 0xe56(%rip), %rsi       # 0x91f2
callq 0x22d0
movq 0x80(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x8d58
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x83d2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x8461
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x8461
movl $0xb, %edx
movq %rbx, %rdi
leaq 0x10d3(%rip), %rsi      # 0x94db
callq 0x22d0
movq 0x320(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x5b18
movl 0x4(%rax), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2240
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq 0x38(%rsp), %rdi
callq 0x22e0
movq %rax, %r14
cmpq 0x278(%rsp), %r14
jne 0x7a4a
movq 0x80(%rsp), %rax
cmpq $0x0, 0x28(%rax)
je 0x88e0
leaq 0x2b8(%rsp), %rbx
leaq 0x60(%rsp), %r14
leaq 0x90(%rsp), %r15
leaq 0x2a8(%rsp), %r13
movq %r14, %rdi
movq 0x110(%rsp), %rsi
callq 0x6892
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movl $0x400, %edx            # imm = 0x400
movq %r15, %rdi
movq %r14, %rsi
callq 0x6764
leaq 0x8(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x8509
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x2270
movq %rbx, 0x2a8(%rsp)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x5c78
movq %r15, %rdi
movq %r13, %r12
movq %r13, %rsi
callq 0x6c02
movq 0x2a8(%rsp), %rdi
movq %rbx, %r13
cmpq %rbx, %rdi
je 0x8554
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0xd0(%rsp), %rax
movq %rax, 0xc0(%rsp)
xorl %ebx, %ebx
movq %rbx, 0xc8(%rsp)
movb %bl, 0xd0(%rsp)
leaq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq %rbx, 0x48(%rsp)
movb %bl, 0x50(%rsp)
movl 0x90(%rsp), %eax
cmpl $0x5, %eax
je 0x86d5
cmpl $0x6, %eax
jne 0x8848
movl $0x1, %edx
movq 0x3a23(%rip), %rdi      # 0xbfd0
leaq 0xb67(%rip), %rsi       # 0x911b
callq 0x22d0
movl 0x94(%rsp), %esi
movq 0x3a09(%rip), %rdi      # 0xbfd0
callq 0x23b0
movq %rax, %rbx
movl $0x6, %edx
movq %rax, %rdi
leaq 0xb3f(%rip), %rsi       # 0x911d
callq 0x22d0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x1a, %edx
movq %rax, %rdi
leaq 0xf04(%rip), %rsi       # 0x9503
callq 0x22d0
movl 0x98(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %rbx
movl $0xf, %edx
movq %rax, %rdi
leaq 0xe5d(%rip), %rsi       # 0x9482
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
movq 0x320(%rsp), %rdi
leaq 0x94(%rsp), %rsi
callq 0x5b18
movl $0x5, 0x4(%rax)
movl $0x1, %edx
movq 0x3957(%rip), %rdi      # 0xbfd0
leaq 0xa9b(%rip), %rsi       # 0x911b
callq 0x22d0
movl 0x94(%rsp), %esi
movq 0x393d(%rip), %rdi      # 0xbfd0
callq 0x23b0
movq %rax, %rbx
movl $0x6, %edx
movq %rax, %rdi
leaq 0xa73(%rip), %rsi       # 0x911d
callq 0x22d0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x17, %edx
movq %rax, %rdi
leaq 0xdaf(%rip), %rsi       # 0x947a
callq 0x22d0
jmp 0x8804
movl $0x1, %edx
movq 0x38ef(%rip), %rdi      # 0xbfd0
leaq 0xa33(%rip), %rsi       # 0x911b
callq 0x22d0
movl 0x94(%rsp), %esi
movq 0x38d5(%rip), %rdi      # 0xbfd0
callq 0x23b0
movq %rax, %rbx
movl $0x6, %edx
movq %rax, %rdi
leaq 0xa0b(%rip), %rsi       # 0x911d
callq 0x22d0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x1b, %edx
movq %rax, %rdi
leaq 0xdb4(%rip), %rsi       # 0x94e7
callq 0x22d0
movl 0x98(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %rbx
movl $0xf, %edx
movq %rax, %rdi
leaq 0xd29(%rip), %rsi       # 0x9482
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
movq 0x320(%rsp), %rdi
leaq 0x94(%rsp), %rsi
callq 0x5b18
movl $0x4, 0x4(%rax)
movl $0x1, %edx
movq 0x3823(%rip), %rdi      # 0xbfd0
leaq 0x967(%rip), %rsi       # 0x911b
callq 0x22d0
movl 0x94(%rsp), %esi
movq 0x3809(%rip), %rdi      # 0xbfd0
callq 0x23b0
movq %rax, %rbx
movl $0x6, %edx
movq %rax, %rdi
leaq 0x93f(%rip), %rsi       # 0x911d
callq 0x22d0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x19, %edx
movq %rax, %rdi
leaq 0xcc2(%rip), %rsi       # 0x94c1
callq 0x22d0
movl $0x3, %edx
movq %rbx, %rdi
leaq 0x9df(%rip), %rsi       # 0x91f2
callq 0x22d0
movq 0x80(%rsp), %rdi
leaq 0x94(%rsp), %rsi
callq 0x648c
movq 0x80(%rsp), %rbx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x650a
cmpq $0x0, 0x28(%rbx)
sete %bl
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x8864
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x8889
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x88ae
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x88ca
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2270
movq %r14, %rdi
callq 0x6a08
testb %bl, %bl
movq %r13, %rbx
movq %r12, %r13
je 0x849f
xorl %eax, %eax
addq $0x2e8, %rsp            # imm = 0x2E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x8bf4
jmp 0x8c61
jmp 0x8c61
jmp 0x8974
jmp 0x8974
jmp 0x8aa2
movq %rax, %rbx
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x8aa5
movq 0x248(%rsp), %rsi
jmp 0x899a
movq %rax, %rbx
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x8ab2
movq 0x1e8(%rsp), %rsi
jmp 0x89cb
jmp 0x895d
movq %rax, %rbx
jmp 0x8abf
jmp 0x8b47
jmp 0x8aaf
jmp 0x8c61
movq %rax, %rbx
jmp 0x8d2a
jmp 0x89d8
movq %rax, %rbx
movq 0x280(%rsp), %rdi
cmpq %r12, %rdi
je 0x8aa5
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x8aa5
movq %rax, %rbx
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x8ab2
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x8ab2
movq %rax, %rbx
jmp 0x8bd9
jmp 0x89e2
movq %rax, %rbx
jmp 0x8bb0
movq %rbx, %rcx
movq %rax, %rbx
movq 0x2c8(%rsp), %rdi
cmpq %rcx, %rdi
je 0x8bb0
movq 0x2d8(%rsp), %rsi
jmp 0x8ba8
jmp 0x8c61
jmp 0x8c61
jmp 0x8a1a
movq %rax, %rbx
jmp 0x8cd2
movq %rbx, %rcx
movq %rax, %rbx
movq 0x2a8(%rsp), %rdi
cmpq %rcx, %rdi
je 0x8cd2
movq 0x2b8(%rsp), %rsi
jmp 0x8cca
movq %rax, %rbx
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x8d01
movq 0x128(%rsp), %rsi
jmp 0x8c54
movq %rax, %rbx
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x8d01
movq 0x168(%rsp), %rsi
jmp 0x8c54
jmp 0x8cfe
jmp 0x8cfe
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
jmp 0x8bd4
movq %rax, %rbx
leaq 0x258(%rsp), %rdi
callq 0x6a08
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x8b4a
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x8b4a
movq %rax, %rbx
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x8d01
movq 0x148(%rsp), %rsi
jmp 0x8c54
jmp 0x8c61
jmp 0x8c61
movq %rax, %rbx
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x8d01
movq 0x188(%rsp), %rsi
jmp 0x8c54
jmp 0x8c61
movq %rax, %rbx
movq 0x218(%rsp), %rdi
leaq 0x228(%rsp), %rax
cmpq %rax, %rdi
je 0x8b6f
movq 0x228(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x8b94
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x8bb0
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x8bcc
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x2a0(%rsp), %rdi
callq 0x6a08
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8bf4
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0xb0(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x8d3a
jmp 0x8cfe
movq %rax, %rbx
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x8d01
movq 0x1a8(%rsp), %rsi
jmp 0x8c54
movq %rax, %rbx
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x8d01
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x8d01
movq %rax, %rbx
jmp 0x8d0e
movq %rax, %rbx
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x8c88
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x8cad
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x8cd2
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x8cee
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x60(%rsp), %rdi
callq 0x6a08
jmp 0x8d4f
jmp 0x8cfe
jmp 0x8cfe
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x6a08
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x8d2a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x8d4f
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2270
movq %rbx, %rdi
callq 0x23c0
nop