// File: /workspace/github_cpp_makefile_star2_O1/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, 0xbc(%rsp)
testl %esi, %esi
sete 0x7(%rsp)
movq 0x4d2c(%rip), %r14      # 0xbfd0
leaq 0x1fa6(%rip), %rsi      # 0x9251
movl $0x5, %edx
movq %r14, %rdi
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
leaq 0x212c(%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
je 0x79f5
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
movl $0x8, %esi
xorl %edx, %edx
movl %ebp, %ecx
movl %r12d, %r8d
callq 0x6bb8
leaq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0x6e30
movl $0x0, 0xc0(%rsp)
cmpq $0x0, 0x28(%r15)
je 0x74d8
leaq 0x8(%rsp), %rbx
movq 0x4c7d(%rip), %r14      # 0xbfd0
movq %rbx, %rdi
callq 0x658c
movl 0xc0(%rsp), %eax
cmpl %ebp, %eax
sete %cl
cmpl %r12d, %eax
sete %al
orb %cl, %al
jne 0x74b4
leaq 0x268(%rsp), %rax
movq %rax, 0x258(%rsp)
leaq 0x258(%rsp), %rdi
leaq 0x1d55(%rip), %rsi      # 0x90e9
leaq 0x1d57(%rip), %rdx      # 0x90f2
callq 0x5cf4
movq %r15, %rdi
leaq 0xc0(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
movq %rbx, %rdi
leaq 0x258(%rsp), %rsi
callq 0x659a
movq 0x258(%rsp), %rdi
leaq 0x268(%rsp), %rax
cmpq %rax, %rdi
je 0x73e7
movq 0x268(%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 0x5c64
movq %rbx, %rdi
leaq 0x238(%rsp), %rsi
callq 0x6722
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x7446
movq 0x248(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x5, %edx
movq %r14, %rdi
leaq 0x1dfc(%rip), %rsi      # 0x9251
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r13
movl $0x1a, %edx
movq %rax, %rdi
leaq 0x1fa0(%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 0x69e0
movslq 0xc0(%rsp), %rax
incq %rax
movl %eax, 0xc0(%rsp)
cmpq %rax, 0x28(%r15)
ja 0x7353
leaq 0x2e0(%rsp), %rbx
leaq 0x8(%rsp), %r13
movl $0x0, (%rsp)
movl $0x0, 0x38(%rsp)
movq %rbx, %rdi
movq 0x110(%rsp), %rsi
callq 0x686a
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 %rbx, %r14
movq %rbx, %rsi
callq 0x6740
leaq 0x60(%rsp), %rdi
movq %r13, %rsi
callq 0x2300
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x7558
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x2c8(%rsp), %rax
movq %rax, 0x2b8(%rsp)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2b8(%rsp), %rbx
movq %rbx, %rdi
callq 0x5c64
leaq 0xc0(%rsp), %r13
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x6bda
movq 0x2b8(%rsp), %rdi
leaq 0x2c8(%rsp), %rax
cmpq %rax, %rdi
je 0x75bf
movq 0x2c8(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x100(%rsp), %rax
movq %rax, 0xf0(%rsp)
xorl %ecx, %ecx
movq %rcx, 0xf8(%rsp)
movb %cl, 0x100(%rsp)
leaq 0x228(%rsp), %rax
movq %rax, 0x218(%rsp)
movq %rcx, 0x220(%rsp)
movb %cl, 0x228(%rsp)
movl 0x8(%rsp), %eax
cmpl $0x7, %eax
je 0x7881
cmpl $0x8, %eax
jne 0x791c
movl $0x5, %edx
movq 0x49af(%rip), %rdi      # 0xbfd0
leaq 0x1c29(%rip), %rsi      # 0x9251
callq 0x22d0
movq 0x499c(%rip), %rdi      # 0xbfd0
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x20, %edx
movq %rax, %rdi
leaq 0x1de4(%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), %r12d
movq %r13, %rdi
movl $0x7, %esi
movl %ebp, %ecx
callq 0x6b94
leaq 0x298(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x6e30
leaq 0xf0(%rsp), %rdi
movq %rbx, %rsi
callq 0x2300
movq 0x298(%rsp), %rdi
leaq 0x2a8(%rsp), %rax
cmpq %rax, %rdi
je 0x76e8
movq 0x2a8(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x298(%rsp), %rdi
callq 0x658c
leaq 0x208(%rsp), %rax
movq %rax, 0x1f8(%rsp)
leaq 0x1f8(%rsp), %rdi
leaq 0x19d5(%rip), %rsi      # 0x90e9
leaq 0x19d7(%rip), %rdx      # 0x90f2
callq 0x5cf4
movq %r15, %rdi
leaq 0x10(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
leaq 0x298(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x659a
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x7769
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 0x5c64
leaq 0x298(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0x6722
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x77d3
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x5, %edx
movq 0x47f1(%rip), %rdi      # 0xbfd0
leaq 0x1a6b(%rip), %rsi      # 0x9251
callq 0x22d0
movq 0x47de(%rip), %rdi      # 0xbfd0
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x12, %edx
movq %rax, %rdi
leaq 0x1ac0(%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 0x298(%rsp), %rdi
callq 0x69e0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x791c
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x791c
movl $0x5, %edx
movq 0x4743(%rip), %rdi      # 0xbfd0
leaq 0x19bd(%rip), %rsi      # 0x9251
callq 0x22d0
movq 0x4730(%rip), %rdi      # 0xbfd0
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x13, %edx
movq %rax, %rdi
leaq 0x193d(%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 (%rsp), %eax
incl %eax
movl %eax, (%rsp)
cltq
movq 0x28(%r15), %rcx
addq $-0x2, %rcx
cmpq %rax, %rcx
movl 0x38(%rsp), %ecx
movzbl %cl, %ecx
movl $0x1, %eax
cmovel %eax, %ecx
movl %ecx, 0x38(%rsp)
movq 0x218(%rsp), %rdi
leaq 0x228(%rsp), %rax
cmpq %rax, %rdi
je 0x7941
movq 0x228(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x7966
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x7982
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x799e
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x2270
movq %r14, %rdi
callq 0x69e0
movq %r14, %rbx
testb $0x1, 0x38(%rsp)
leaq 0x8(%rsp), %r13
je 0x74f4
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x79d4
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x79f5
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x2270
movl %r12d, (%rsp)
movq 0x80(%rsp), %rax
movq 0x18(%rax), %r14
addq $0x8, %rax
movq %rax, 0x2d8(%rsp)
cmpq %rax, %r14
je 0x845f
movl 0xbc(%rsp), %eax
movb 0x7(%rsp), %dl
movb %dl, %al
movl %eax, 0xbc(%rsp)
movq 0x459b(%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 0x5b04
cmpl %ebp, 0x8(%rax)
je 0x7a8b
movq %r14, %rdi
movq %r12, %rsi
callq 0x5b04
cmpl %ebp, 0xbc(%rsp)
jne 0x8444
movl (%rsp), %ecx
cmpl %ecx, 0x8(%rax)
jne 0x8444
movq %r14, %rdi
movq %r12, %rsi
callq 0x5b04
movl 0x4(%rax), %eax
cmpl $0x3, %eax
jae 0x7d93
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x166a(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x1649(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x27, %edx
movq %rax, %rdi
leaq 0x195d(%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 0x88(%rsp), %r14
movq %r14, %rdi
movl $0x6, %esi
movl %ebp, %ecx
callq 0x6b94
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x6e30
movl (%rsp), %r12d
movl $0x0, 0x60(%rsp)
cmpq $0x0, 0x28(%r15)
je 0x7cf7
movq %r13, %rdi
callq 0x658c
movl 0x60(%rsp), %eax
cmpl %ebp, %eax
je 0x7cd9
cmpl %r12d, %eax
je 0x7cd9
leaq 0x1c8(%rsp), %rax
movq %rax, 0x1b8(%rsp)
leaq 0x1b8(%rsp), %rdi
leaq 0x154d(%rip), %rsi      # 0x90e9
leaq 0x154f(%rip), %rdx      # 0x90f2
callq 0x5cf4
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
movq %r13, %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x659a
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x7bec
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 0x5c64
movq %r13, %rdi
leaq 0x198(%rsp), %rsi
callq 0x6722
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x7c4b
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x14c1(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x14a0(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x14, %edx
movq %rax, %rdi
leaq 0x1536(%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 0x69e0
movslq 0x60(%rsp), %rax
incq %rax
movl %eax, 0x60(%rsp)
cmpq %rax, 0x28(%r15)
ja 0x7b60
movq 0x320(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x5b04
movl $0x5, 0x4(%rax)
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x13fc(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x13db(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x17, %edx
movq %rax, %rdi
leaq 0x1717(%rip), %rsi      # 0x947a
callq 0x22d0
movl $0x3, %edx
movq %r14, %rdi
leaq 0x147b(%rip), %rsi      # 0x91f2
callq 0x22d0
movq 0x80(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x8d72
jmp 0x83a3
movl (%rsp), %r12d
je 0x80a7
cmpl $0x5, %eax
jne 0x83e9
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x1366(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x1345(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x27, %edx
movq %rax, %rdi
leaq 0x1659(%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 0x88(%rsp), %r14
movq %r14, %rdi
movl $0x6, %esi
movl %ebp, %ecx
callq 0x6b94
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x6e30
movl $0x0, 0x60(%rsp)
cmpq $0x0, 0x28(%r15)
je 0x800b
movq %r13, %rdi
callq 0x658c
movl 0x60(%rsp), %eax
cmpl %ebp, %eax
je 0x7fed
cmpl %r12d, %eax
je 0x7fed
leaq 0x148(%rsp), %rax
movq %rax, 0x138(%rsp)
leaq 0x138(%rsp), %rdi
leaq 0x124d(%rip), %rsi      # 0x90e9
leaq 0x124f(%rip), %rdx      # 0x90f2
callq 0x5cf4
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
movq %r13, %rdi
leaq 0x138(%rsp), %rsi
callq 0x659a
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x7eec
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 0x5c64
movq %r13, %rdi
leaq 0x118(%rsp), %rsi
callq 0x6722
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x7f4b
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x11c1(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x11a0(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x14, %edx
movq %rax, %rdi
leaq 0x1236(%rip), %rsi      # 0x91d4
callq 0x22d0
movl 0x60(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r14
movl $0xf, %edx
movq %rax, %rdi
leaq 0x14c1(%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 0x69e0
movslq 0x60(%rsp), %rax
incq %rax
movl %eax, 0x60(%rsp)
cmpq %rax, 0x28(%r15)
ja 0x7e60
movq 0x320(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x5b04
movl $0x5, 0x4(%rax)
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x10e8(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x10c7(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x17, %edx
movq %rax, %rdi
leaq 0x1403(%rip), %rsi      # 0x947a
callq 0x22d0
movl $0x3, %edx
movq %r14, %rdi
leaq 0x1167(%rip), %rsi      # 0x91f2
callq 0x22d0
movq 0x80(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x8d72
jmp 0x83a3
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x1065(%rip), %rsi      # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0x1044(%rip), %rsi      # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x2e, %edx
movq %rax, %rdi
leaq 0x1398(%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 0x88(%rsp), %r14
movq %r14, %rdi
movl $0x5, %esi
movl %ebp, %ecx
callq 0x6b94
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x6e30
movl $0x0, 0x60(%rsp)
cmpq $0x0, 0x28(%r15)
je 0x830c
movq %r13, %rdi
callq 0x658c
movl 0x60(%rsp), %eax
cmpl %ebp, %eax
je 0x82ee
cmpl %r12d, %eax
je 0x82ee
leaq 0x188(%rsp), %rax
movq %rax, 0x178(%rsp)
leaq 0x178(%rsp), %rdi
leaq 0xf4c(%rip), %rsi       # 0x90e9
leaq 0xf4e(%rip), %rdx       # 0x90f2
callq 0x5cf4
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0x5aa0
movl (%rax), %edx
movq %r13, %rdi
leaq 0x178(%rsp), %rsi
callq 0x659a
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x81ed
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 0x5c64
movq %r13, %rdi
leaq 0x158(%rsp), %rsi
callq 0x6722
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x824c
movq 0x168(%rsp), %rsi
incq %rsi
callq 0x2270
movl $0x1, %edx
movq %rbx, %rdi
leaq 0xec0(%rip), %rsi       # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0xe9f(%rip), %rsi       # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x15, %edx
movq %rax, %rdi
leaq 0xf7c(%rip), %rsi       # 0x921b
callq 0x22d0
movl 0x60(%rsp), %esi
movq %r14, %rdi
callq 0x23b0
movq %rax, %r14
movl $0xf, %edx
movq %rax, %rdi
leaq 0x11c0(%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 0x69e0
movslq 0x60(%rsp), %rax
incq %rax
movl %eax, 0x60(%rsp)
cmpq %rax, 0x28(%r15)
ja 0x8161
movq 0x320(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x5b04
movl $0x4, 0x4(%rax)
movl $0x1, %edx
movq %rbx, %rdi
leaq 0xde7(%rip), %rsi       # 0x911b
callq 0x22d0
movl 0x40(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %r14
movl $0x6, %edx
movq %rax, %rdi
leaq 0xdc6(%rip), %rsi       # 0x911d
callq 0x22d0
movq %r14, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %r14
movl $0x19, %edx
movq %rax, %rdi
leaq 0x1149(%rip), %rsi      # 0x94c1
callq 0x22d0
movl $0x3, %edx
movq %r14, %rdi
leaq 0xe66(%rip), %rsi       # 0x91f2
callq 0x22d0
movq 0x80(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x8d72
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x83c2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x8451
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x8451
movl $0xb, %edx
movq %rbx, %rdi
leaq 0x10e3(%rip), %rsi      # 0x94db
callq 0x22d0
movq 0x320(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x5b04
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 0x2d8(%rsp), %r14
jne 0x7a3d
movq 0x80(%rsp), %rax
cmpq $0x0, 0x28(%rax)
je 0x88e9
leaq 0x50(%rsp), %rbx
leaq 0x60(%rsp), %r14
leaq 0x88(%rsp), %r13
xorl %r12d, %r12d
movq %r14, %rdi
movq 0x110(%rsp), %rsi
callq 0x686a
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movl $0x400, %edx            # imm = 0x400
movq %r13, %rdi
movq %r14, %r15
movq %r14, %rsi
callq 0x6740
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0x2300
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x84f4
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x288(%rsp), %rax
movq %rax, 0x278(%rsp)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x278(%rsp), %r14
movq %r14, %rdi
callq 0x5c64
movq 0x3aa8(%rip), %r13      # 0xbfd0
leaq 0x88(%rsp), %rdi
movq %r14, %rsi
callq 0x6bda
movq 0x278(%rsp), %rdi
leaq 0x288(%rsp), %rax
cmpq %rax, %rdi
je 0x855d
movq 0x288(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0xd0(%rsp), %rax
movq %rax, 0xc0(%rsp)
xorl %eax, %eax
movq %rax, 0xc8(%rsp)
movb %al, 0xd0(%rsp)
movq %rbx, 0x40(%rsp)
movq %rax, 0x48(%rsp)
movb %al, 0x50(%rsp)
movl 0x88(%rsp), %eax
cmpl $0x5, %eax
je 0x86dd
cmpl $0x6, %eax
jne 0x884f
movl $0x1, %edx
movq %r13, %rdi
leaq 0xb67(%rip), %rsi       # 0x911b
callq 0x22d0
movl 0x8c(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %rbx
movl $0x6, %edx
movq %rax, %rdi
leaq 0xb43(%rip), %rsi       # 0x911d
callq 0x22d0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x1a, %edx
movq %rax, %rdi
leaq 0xf08(%rip), %rsi       # 0x9503
callq 0x22d0
movl 0x90(%rsp), %esi
movq %rbx, %rdi
callq 0x23b0
movq %rax, %rbx
movl $0xf, %edx
movq %rax, %rdi
leaq 0xe61(%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 0x8c(%rsp), %rsi
callq 0x5b04
movl $0x5, 0x4(%rax)
movl $0x1, %edx
movq %r13, %rdi
leaq 0xaa3(%rip), %rsi       # 0x911b
callq 0x22d0
movl 0x8c(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %rbx
movl $0x6, %edx
movq %rax, %rdi
leaq 0xa7f(%rip), %rsi       # 0x911d
callq 0x22d0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x17, %edx
movq %rax, %rdi
leaq 0xdbb(%rip), %rsi       # 0x947a
callq 0x22d0
movl $0x3, %edx
movq %rbx, %rdi
leaq 0xb1f(%rip), %rsi       # 0x91f2
callq 0x22d0
jmp 0x8810
movl $0x1, %edx
movq %r13, %rdi
leaq 0xa2f(%rip), %rsi       # 0x911b
callq 0x22d0
movl 0x8c(%rsp), %esi
movq %r13, %rdi
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 0x90(%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 0x8c(%rsp), %rsi
callq 0x5b04
movl $0x4, 0x4(%rax)
movl $0x1, %edx
movq %r13, %rdi
leaq 0x96b(%rip), %rsi       # 0x911b
callq 0x22d0
movl 0x8c(%rsp), %esi
movq %r13, %rdi
callq 0x23b0
movq %rax, %rbx
movl $0x6, %edx
movq %rax, %rdi
leaq 0x947(%rip), %rsi       # 0x911d
callq 0x22d0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x23b0
movq %rax, %rbx
movl $0x19, %edx
movq %rax, %rdi
leaq 0xcca(%rip), %rsi       # 0x94c1
callq 0x22d0
movl $0x3, %edx
movq %rbx, %rdi
leaq 0x9e7(%rip), %rsi       # 0x91f2
callq 0x22d0
movq 0x80(%rsp), %rdi
leaq 0x8c(%rsp), %rsi
callq 0x646c
movq 0x80(%rsp), %rbx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x64e4
cmpq $0x0, 0x28(%rbx)
movzbl %r12b, %r12d
movl $0x1, %eax
cmovel %eax, %r12d
leaq 0x50(%rsp), %rbx
movq 0x40(%rsp), %rdi
cmpq %rbx, %rdi
je 0x8866
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x888b
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x88b0
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x88cc
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2270
movq %r15, %rdi
callq 0x69e0
movq %r15, %r14
testb $0x1, %r12b
leaq 0x88(%rsp), %r13
je 0x8487
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 0x8c0f
jmp 0x8c7c
jmp 0x8c7c
jmp 0x897d
jmp 0x897d
jmp 0x8abd
movq %rax, %rbx
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x8ac0
movq 0x248(%rsp), %rsi
jmp 0x89ab
movq %rax, %rbx
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x8acd
movq 0x1e8(%rsp), %rsi
jmp 0x89dc
jmp 0x8966
movq %rax, %rbx
jmp 0x8ada
jmp 0x8b62
jmp 0x8aca
jmp 0x8c7c
movq %rax, %rbx
jmp 0x8d45
jmp 0x89e9
movq %rax, %rbx
movq 0x258(%rsp), %rdi
leaq 0x268(%rsp), %rax
cmpq %rax, %rdi
je 0x8ac0
movq 0x268(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x8ac0
movq %rax, %rbx
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x8acd
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x8acd
movq %rax, %rbx
jmp 0x8bf4
jmp 0x89f3
movq %rax, %rbx
jmp 0x8bcb
movq %rax, %rbx
movq 0x2b8(%rsp), %rdi
leaq 0x2c8(%rsp), %rax
cmpq %rax, %rdi
je 0x8bcb
movq 0x2c8(%rsp), %rsi
jmp 0x8bc3
jmp 0x8c7c
jmp 0x8c7c
jmp 0x8a30
movq %rax, %rbx
jmp 0x8ced
movq %rax, %rbx
movq 0x278(%rsp), %rdi
leaq 0x288(%rsp), %rax
cmpq %rax, %rdi
je 0x8ced
movq 0x288(%rsp), %rsi
jmp 0x8ce5
movq %rax, %rbx
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x8d1c
movq 0x128(%rsp), %rsi
jmp 0x8c6f
movq %rax, %rbx
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x8d1c
movq 0x168(%rsp), %rsi
jmp 0x8c6f
jmp 0x8d19
jmp 0x8d19
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
jmp 0x8bef
movq %rax, %rbx
leaq 0x298(%rsp), %rdi
callq 0x69e0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x8b65
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x8b65
movq %rax, %rbx
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x8d1c
movq 0x148(%rsp), %rsi
jmp 0x8c6f
jmp 0x8c7c
jmp 0x8c7c
movq %rax, %rbx
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x8d1c
movq 0x188(%rsp), %rsi
jmp 0x8c6f
jmp 0x8c7c
movq %rax, %rbx
movq 0x218(%rsp), %rdi
leaq 0x228(%rsp), %rax
cmpq %rax, %rdi
je 0x8b8a
movq 0x228(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x8baf
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x8bcb
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x8be7
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x2e0(%rsp), %rdi
callq 0x69e0
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8c0f
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x8d55
jmp 0x8d19
movq %rax, %rbx
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x8d1c
movq 0x1a8(%rsp), %rsi
jmp 0x8c6f
movq %rax, %rbx
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x8d1c
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x2270
jmp 0x8d1c
movq %rax, %rbx
jmp 0x8d29
movq %rax, %rbx
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x8ca3
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x8cc8
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x8ced
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x8d09
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2270
leaq 0x60(%rsp), %rdi
callq 0x69e0
jmp 0x8d6a
jmp 0x8d19
jmp 0x8d19
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x69e0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x8d45
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2270
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x8d6a
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x2270
movq %rbx, %rdi
callq 0x23c0