// File: eniac[P]Mantis/src/compile/compile_p4.cpp
// Function: generateRegArgGateControl(std::vector<AstNode*, std::allocator<AstNode*>>*, std::vector<AstNode*, std::allocator<AstNode*>>*, std::vector<ReactionArgNode*, std::allocator<ReactionArgNode*>> const&, int, int)
void generateRegArgGateControl(vector<AstNode*>* newNodes,
                         vector<AstNode*>* nodeArray,
                         const vector<ReactionArgNode*>& reaction_args,
                         int ing_iso_opt, int egr_iso_opt) {

    // Generate control flow branching on mv bit
    ostringstream oss;
    oss << "control " << kRegArgGateIngControlName << " {\n";
    
    // An alternative is to use single reg with double the size and index elements with original_index<<1+mv
    // Though less memory overhead but larger latency
    if (((unsigned int)ing_iso_opt) & 0b1) {
        for (auto ra : reaction_args) {
            if (ra->argType_==ReactionArgNode::REGISTER && findRegargInIng(ra, *nodeArray)) {
                oss << "  if (" << kP4rIngMetadataName << ".__mv == 0 ) {\n"
                << "    apply (" << kP4rRegReplicasTablePrefix << ra->toString() << kP4rRegReplicasSuffix0 << ");\n"
                << "  }\n"
                << "  else { \n"
                << "    apply (" << kP4rRegReplicasTablePrefix << ra->toString() << kP4rRegReplicasSuffix1 << ");\n"
                << "  }\n";
            }
        }    
    }
    oss << "}\n\n";
    newNodes->push_back(new UnanchoredNode(new string(oss.str()),
                                           new string("control"),
                                           new string(kRegArgGateIngControlName)));  

    oss.str("");
    oss << "control " << kRegArgGateEgrControlName << " {\n";
    
    if (((unsigned int)egr_iso_opt) & 0b1) {
        for (auto ra : reaction_args) {
            if (ra->argType_==ReactionArgNode::REGISTER && !findRegargInIng(ra, *nodeArray)) {
                oss << "  if (" << kP4rEgrMetadataName << ".__mv == 0 ) {\n"
                    << "    apply (" << kP4rRegReplicasTablePrefix << ra->toString() << kP4rRegReplicasSuffix0 << ");\n"
                    << "  }\n"
                    << "  else { \n"
                    << "    apply (" << kP4rRegReplicasTablePrefix << ra->toString() << kP4rRegReplicasSuffix1 << ");\n"
                    << "  }\n";
            }
        }         
    }
    oss << "}\n\n";    

    newNodes->push_back(new UnanchoredNode(new string(oss.str()),
                                           new string("control"),
                                           new string(kRegArgGateEgrControlName)));    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4b0, %rsp            # imm = 0x4B0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movl %r8d, -0x20(%rbp)
leaq -0x198(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0xaa7b0
movq -0x300(%rbp), %rdi
leaq 0x23aba(%rip), %rsi     # 0x13df29
callq 0xaa540
movq %rax, -0x2f8(%rbp)
jmp 0x11a47d
movq -0x2f8(%rbp), %rdi
leaq 0x23936(%rip), %rsi     # 0x13ddc1
callq 0xaa540
movq %rax, -0x308(%rbp)
jmp 0x11a499
movq -0x308(%rbp), %rdi
leaq 0x23af0(%rip), %rsi     # 0x13df97
callq 0xaa540
jmp 0x11a4ae
movl -0x1c(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x11a863
movq -0x18(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq -0x1b0(%rbp), %rdi
callq 0x127ae0
movq %rax, -0x1b8(%rbp)
movq -0x1b0(%rbp), %rdi
callq 0x127b10
movq %rax, -0x1c0(%rbp)
leaq -0x1b8(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x127b40
testb $0x1, %al
jne 0x11a50a
jmp 0x11a861
leaq -0x1b8(%rbp), %rdi
callq 0x127b80
movq (%rax), %rax
movq %rax, -0x1c8(%rbp)
movq -0x1c8(%rbp), %rax
movl 0x3c(%rax), %ecx
movb $0x0, -0x1e1(%rbp)
xorl %eax, %eax
cmpl $0x4, %ecx
movb %al, -0x309(%rbp)
jne 0x11a58e
movq -0x1c8(%rbp), %rax
movq %rax, -0x318(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x1e0(%rbp), %rdi
callq 0xb2bc0
jmp 0x11a55e
movq -0x318(%rbp), %rdi
movb $0x1, -0x1e1(%rbp)
leaq -0x1e0(%rbp), %rsi
callq 0x12e7f0
movb %al, -0x319(%rbp)
jmp 0x11a580
movb -0x319(%rbp), %al
movb %al, -0x309(%rbp)
jmp 0x11a58e
movb -0x309(%rbp), %al
movb %al, -0x31a(%rbp)
testb $0x1, -0x1e1(%rbp)
jne 0x11a5a5
jmp 0x11a5b1
leaq -0x1e0(%rbp), %rdi
callq 0xb22f0
movb -0x31a(%rbp), %al
testb $0x1, %al
jne 0x11a5c0
jmp 0x11a84e
leaq 0x239bd(%rip), %rsi     # 0x13df84
leaq -0x198(%rbp), %rdi
callq 0xaa540
movq %rax, -0x328(%rbp)
jmp 0x11a5dc
movq -0x328(%rbp), %rdi
leaq 0x218d9(%rip), %rsi     # 0x13bec3
callq 0xaa540
movq %rax, -0x330(%rbp)
jmp 0x11a5f8
movq -0x330(%rbp), %rdi
leaq 0x23985(%rip), %rsi     # 0x13df8b
callq 0xaa540
movq %rax, -0x338(%rbp)
jmp 0x11a614
movq -0x338(%rbp), %rdi
leaq 0x23979(%rip), %rsi     # 0x13df9b
callq 0xaa540
movq %rax, -0x340(%rbp)
jmp 0x11a630
movq -0x340(%rbp), %rdi
leaq 0x23969(%rip), %rsi     # 0x13dfa7
callq 0xaa540
movq %rax, -0x348(%rbp)
jmp 0x11a64c
movq -0x1c8(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x208(%rbp), %rdi
callq *%rax
jmp 0x11a664
movq -0x348(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0x350(%rbp)
jmp 0x11a680
movq -0x350(%rbp), %rdi
leaq 0x23920(%rip), %rsi     # 0x13dfae
callq 0xaa540
movq %rax, -0x358(%rbp)
jmp 0x11a69c
movq -0x358(%rbp), %rdi
leaq 0x1f78a(%rip), %rsi     # 0x139e34
callq 0xaa540
movq %rax, -0x360(%rbp)
jmp 0x11a6b8
movq -0x360(%rbp), %rdi
leaq 0x20fb8(%rip), %rsi     # 0x13b67e
callq 0xaa540
movq %rax, -0x368(%rbp)
jmp 0x11a6d4
movq -0x368(%rbp), %rdi
leaq 0x238db(%rip), %rsi     # 0x13dfbd
callq 0xaa540
movq %rax, -0x370(%rbp)
jmp 0x11a6f0
movq -0x370(%rbp), %rdi
leaq 0x2389d(%rip), %rsi     # 0x13df9b
callq 0xaa540
movq %rax, -0x378(%rbp)
jmp 0x11a70c
movq -0x378(%rbp), %rdi
leaq 0x2388d(%rip), %rsi     # 0x13dfa7
callq 0xaa540
movq %rax, -0x380(%rbp)
jmp 0x11a728
movq -0x1c8(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x228(%rbp), %rdi
callq *%rax
jmp 0x11a740
movq -0x380(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0x388(%rbp)
jmp 0x11a75c
movq -0x388(%rbp), %rdi
leaq 0x2385e(%rip), %rsi     # 0x13dfc8
callq 0xaa540
movq %rax, -0x390(%rbp)
jmp 0x11a778
movq -0x390(%rbp), %rdi
leaq 0x1f6ae(%rip), %rsi     # 0x139e34
callq 0xaa540
movq %rax, -0x398(%rbp)
jmp 0x11a794
movq -0x398(%rbp), %rdi
leaq 0x20edc(%rip), %rsi     # 0x13b67e
callq 0xaa540
jmp 0x11a7a9
leaq -0x228(%rbp), %rdi
callq 0xaabe8
leaq -0x208(%rbp), %rdi
callq 0xaabe8
jmp 0x11a84e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x11b153
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
testb $0x1, -0x1e1(%rbp)
jne 0x11a7fa
jmp 0x11a806
leaq -0x1e0(%rbp), %rdi
callq 0xb22f0
jmp 0x11b153
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x11a83d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x228(%rbp), %rdi
callq 0xaabe8
leaq -0x208(%rbp), %rdi
callq 0xaabe8
jmp 0x11b153
jmp 0x11a850
leaq -0x1b8(%rbp), %rdi
callq 0x127ba0
jmp 0x11a4ee
jmp 0x11a863
leaq 0x23beb(%rip), %rsi     # 0x13e455
leaq -0x198(%rbp), %rdi
callq 0xaa540
jmp 0x11a878
movq -0x8(%rbp), %rax
movq %rax, -0x3a8(%rbp)
movl $0x58, %edi
callq 0xaa560
movq %rax, -0x3a0(%rbp)
jmp 0x11a896
movb $0x1, -0x235(%rbp)
movl $0x20, %edi
callq 0xaa560
movq %rax, -0x3b0(%rbp)
jmp 0x11a8b0
movq -0x3b0(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0xaa580
jmp 0x11a8c5
movl $0x20, %edi
callq 0xaa560
movq %rax, -0x3b8(%rbp)
jmp 0x11a8d8
movb $0x1, -0x232(%rbp)
leaq -0x231(%rbp), %rdi
movq %rdi, -0x3c0(%rbp)
callq 0xaaa70
movq -0x3b8(%rbp), %rdi
movq -0x3c0(%rbp), %rdx
leaq 0x23650(%rip), %rsi     # 0x13df57
callq 0xaa7d0
jmp 0x11a90e
movb $0x0, -0x232(%rbp)
movl $0x20, %edi
callq 0xaa560
movq %rax, -0x3c8(%rbp)
jmp 0x11a928
movb $0x1, -0x234(%rbp)
leaq -0x233(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
callq 0xaaa70
movq -0x3c8(%rbp), %rdi
movq -0x3d0(%rbp), %rdx
leaq 0x2346a(%rip), %rsi     # 0x13ddc1
callq 0xaa7d0
jmp 0x11a95e
movq -0x3c8(%rbp), %rcx
movq -0x3b8(%rbp), %rdx
movq -0x3b0(%rbp), %rsi
movq -0x3a0(%rbp), %rdi
movb $0x0, -0x234(%rbp)
callq 0xcaee0
jmp 0x11a988
movq -0x3a8(%rbp), %rdi
movq -0x3a0(%rbp), %rax
movb $0x0, -0x235(%rbp)
movq %rax, -0x230(%rbp)
leaq -0x230(%rbp), %rsi
callq 0xb2540
jmp 0x11a9b2
leaq -0x233(%rbp), %rdi
callq 0xaa5f0
leaq -0x231(%rbp), %rdi
callq 0xaa5f0
leaq -0x259(%rbp), %rdi
movq %rdi, -0x3d8(%rbp)
callq 0xaaa70
movq -0x3d8(%rbp), %rdx
leaq 0x211b8(%rip), %rsi     # 0x13bba3
leaq -0x258(%rbp), %rdi
callq 0xaa7d0
jmp 0x11a9f9
leaq -0x198(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0xaa2c0
jmp 0x11aa0e
leaq -0x258(%rbp), %rdi
callq 0xaabe8
leaq -0x259(%rbp), %rdi
callq 0xaa5f0
leaq 0x234fc(%rip), %rsi     # 0x13df29
leaq -0x198(%rbp), %rdi
callq 0xaa540
movq %rax, -0x3e0(%rbp)
jmp 0x11aa42
movq -0x3e0(%rbp), %rdi
leaq 0x2342e(%rip), %rsi     # 0x13de7e
callq 0xaa540
movq %rax, -0x3e8(%rbp)
jmp 0x11aa5e
movq -0x3e8(%rbp), %rdi
leaq 0x2352b(%rip), %rsi     # 0x13df97
callq 0xaa540
jmp 0x11aa73
movl -0x20(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x11af17
movq -0x18(%rbp), %rax
movq %rax, -0x268(%rbp)
movq -0x268(%rbp), %rdi
callq 0x127ae0
movq %rax, -0x270(%rbp)
movq -0x268(%rbp), %rdi
callq 0x127b10
movq %rax, -0x278(%rbp)
leaq -0x270(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x127b40
testb $0x1, %al
jne 0x11aacf
jmp 0x11af15
leaq -0x270(%rbp), %rdi
callq 0x127b80
movq (%rax), %rax
movq %rax, -0x280(%rbp)
movq -0x280(%rbp), %rax
movl 0x3c(%rax), %ecx
movb $0x0, -0x299(%rbp)
xorl %eax, %eax
cmpl $0x4, %ecx
movb %al, -0x3e9(%rbp)
jne 0x11ab53
movq -0x280(%rbp), %rax
movq %rax, -0x3f8(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x298(%rbp), %rdi
callq 0xb2bc0
jmp 0x11ab23
movq -0x3f8(%rbp), %rdi
movb $0x1, -0x299(%rbp)
leaq -0x298(%rbp), %rsi
callq 0x12e7f0
movb %al, -0x3f9(%rbp)
jmp 0x11ab45
movb -0x3f9(%rbp), %al
xorb $-0x1, %al
movb %al, -0x3e9(%rbp)
movb -0x3e9(%rbp), %al
movb %al, -0x3fa(%rbp)
testb $0x1, -0x299(%rbp)
jne 0x11ab6a
jmp 0x11ab76
leaq -0x298(%rbp), %rdi
callq 0xb22f0
movb -0x3fa(%rbp), %al
testb $0x1, %al
jne 0x11ab85
jmp 0x11af02
leaq 0x233f8(%rip), %rsi     # 0x13df84
leaq -0x198(%rbp), %rdi
callq 0xaa540
movq %rax, -0x408(%rbp)
jmp 0x11aba1
movq -0x408(%rbp), %rdi
leaq 0x21332(%rip), %rsi     # 0x13bee1
callq 0xaa540
movq %rax, -0x410(%rbp)
jmp 0x11abbd
movq -0x410(%rbp), %rdi
leaq 0x233c0(%rip), %rsi     # 0x13df8b
callq 0xaa540
movq %rax, -0x418(%rbp)
jmp 0x11abd9
movq -0x418(%rbp), %rdi
leaq 0x233b4(%rip), %rsi     # 0x13df9b
callq 0xaa540
movq %rax, -0x420(%rbp)
jmp 0x11abf5
movq -0x420(%rbp), %rdi
leaq 0x233a4(%rip), %rsi     # 0x13dfa7
callq 0xaa540
movq %rax, -0x428(%rbp)
jmp 0x11ac11
movq -0x280(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x2c0(%rbp), %rdi
callq *%rax
jmp 0x11ac29
movq -0x428(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0x430(%rbp)
jmp 0x11ac45
movq -0x430(%rbp), %rdi
leaq 0x2335b(%rip), %rsi     # 0x13dfae
callq 0xaa540
movq %rax, -0x438(%rbp)
jmp 0x11ac61
movq -0x438(%rbp), %rdi
leaq 0x1f1c5(%rip), %rsi     # 0x139e34
callq 0xaa540
movq %rax, -0x440(%rbp)
jmp 0x11ac7d
movq -0x440(%rbp), %rdi
leaq 0x209f3(%rip), %rsi     # 0x13b67e
callq 0xaa540
movq %rax, -0x448(%rbp)
jmp 0x11ac99
movq -0x448(%rbp), %rdi
leaq 0x23316(%rip), %rsi     # 0x13dfbd
callq 0xaa540
movq %rax, -0x450(%rbp)
jmp 0x11acb5
movq -0x450(%rbp), %rdi
leaq 0x232d8(%rip), %rsi     # 0x13df9b
callq 0xaa540
movq %rax, -0x458(%rbp)
jmp 0x11acd1
movq -0x458(%rbp), %rdi
leaq 0x232c8(%rip), %rsi     # 0x13dfa7
callq 0xaa540
movq %rax, -0x460(%rbp)
jmp 0x11aced
movq -0x280(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x2e0(%rbp), %rdi
callq *%rax
jmp 0x11ad05
movq -0x460(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0x468(%rbp)
jmp 0x11ad21
movq -0x468(%rbp), %rdi
leaq 0x23299(%rip), %rsi     # 0x13dfc8
callq 0xaa540
movq %rax, -0x470(%rbp)
jmp 0x11ad3d
movq -0x470(%rbp), %rdi
leaq 0x1f0e9(%rip), %rsi     # 0x139e34
callq 0xaa540
movq %rax, -0x478(%rbp)
jmp 0x11ad59
movq -0x478(%rbp), %rdi
leaq 0x20917(%rip), %rsi     # 0x13b67e
callq 0xaa540
jmp 0x11ad6e
leaq -0x2e0(%rbp), %rdi
callq 0xaabe8
leaq -0x2c0(%rbp), %rdi
callq 0xaabe8
jmp 0x11af02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x11ae32
movq -0x3b0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
callq 0xaa4e0
jmp 0x11ae32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x11ae0d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x233(%rbp), %rdi
callq 0xaa5f0
testb $0x1, -0x234(%rbp)
jne 0x11adff
jmp 0x11ae0b
movq -0x3c8(%rbp), %rdi
callq 0xaa4e0
jmp 0x11ae0d
leaq -0x231(%rbp), %rdi
callq 0xaa5f0
testb $0x1, -0x232(%rbp)
jne 0x11ae24
jmp 0x11ae30
movq -0x3b8(%rbp), %rdi
callq 0xaa4e0
jmp 0x11ae32
testb $0x1, -0x235(%rbp)
jne 0x11ae3d
jmp 0x11ae49
movq -0x3a0(%rbp), %rdi
callq 0xaa4e0
jmp 0x11b153
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x11ae80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x258(%rbp), %rdi
callq 0xaabe8
leaq -0x259(%rbp), %rdi
callq 0xaa5f0
jmp 0x11b153
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
testb $0x1, -0x299(%rbp)
jne 0x11aeae
jmp 0x11aeba
leaq -0x298(%rbp), %rdi
callq 0xb22f0
jmp 0x11b153
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x11aef1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0xaabe8
leaq -0x2c0(%rbp), %rdi
callq 0xaabe8
jmp 0x11b153
jmp 0x11af04
leaq -0x270(%rbp), %rdi
callq 0x127ba0
jmp 0x11aab3
jmp 0x11af17
leaq 0x23537(%rip), %rsi     # 0x13e455
leaq -0x198(%rbp), %rdi
callq 0xaa540
jmp 0x11af2c
movq -0x8(%rbp), %rax
movq %rax, -0x488(%rbp)
movl $0x58, %edi
callq 0xaa560
movq %rax, -0x480(%rbp)
jmp 0x11af4a
movb $0x1, -0x2ed(%rbp)
movl $0x20, %edi
callq 0xaa560
movq %rax, -0x490(%rbp)
jmp 0x11af64
movq -0x490(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0xaa580
jmp 0x11af79
movl $0x20, %edi
callq 0xaa560
movq %rax, -0x498(%rbp)
jmp 0x11af8c
movb $0x1, -0x2ea(%rbp)
leaq -0x2e9(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
callq 0xaaa70
movq -0x498(%rbp), %rdi
movq -0x4a0(%rbp), %rdx
leaq 0x22f9c(%rip), %rsi     # 0x13df57
callq 0xaa7d0
jmp 0x11afc2
movb $0x0, -0x2ea(%rbp)
movl $0x20, %edi
callq 0xaa560
movq %rax, -0x4a8(%rbp)
jmp 0x11afdc
movb $0x1, -0x2ec(%rbp)
leaq -0x2eb(%rbp), %rdi
movq %rdi, -0x4b0(%rbp)
callq 0xaaa70
movq -0x4a8(%rbp), %rdi
movq -0x4b0(%rbp), %rdx
leaq 0x22e73(%rip), %rsi     # 0x13de7e
callq 0xaa7d0
jmp 0x11b012
movq -0x4a8(%rbp), %rcx
movq -0x498(%rbp), %rdx
movq -0x490(%rbp), %rsi
movq -0x480(%rbp), %rdi
movb $0x0, -0x2ec(%rbp)
callq 0xcaee0
jmp 0x11b03c
movq -0x488(%rbp), %rdi
movq -0x480(%rbp), %rax
movb $0x0, -0x2ed(%rbp)
movq %rax, -0x2e8(%rbp)
leaq -0x2e8(%rbp), %rsi
callq 0xb2540
jmp 0x11b066
leaq -0x2eb(%rbp), %rdi
callq 0xaa5f0
leaq -0x2e9(%rbp), %rdi
callq 0xaa5f0
leaq -0x198(%rbp), %rdi
callq 0xaa130
addq $0x4b0, %rsp            # imm = 0x4B0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x11b13a
movq -0x490(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
callq 0xaa4e0
jmp 0x11b13a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x11b115
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x2eb(%rbp), %rdi
callq 0xaa5f0
testb $0x1, -0x2ec(%rbp)
jne 0x11b107
jmp 0x11b113
movq -0x4a8(%rbp), %rdi
callq 0xaa4e0
jmp 0x11b115
leaq -0x2e9(%rbp), %rdi
callq 0xaa5f0
testb $0x1, -0x2ea(%rbp)
jne 0x11b12c
jmp 0x11b138
movq -0x498(%rbp), %rdi
callq 0xaa4e0
jmp 0x11b13a
testb $0x1, -0x2ed(%rbp)
jne 0x11b145
jmp 0x11b151
movq -0x480(%rbp), %rdi
callq 0xaa4e0
jmp 0x11b153
leaq -0x198(%rbp), %rdi
callq 0xaa130
movq -0x1a0(%rbp), %rdi
callq 0xaaa60
nopl (%rax,%rax)