// File: /workspace/github_cpp_makefile_star2_O1/Sooryakiran[P]dotV/src/verilog.cpp
// Function: FULL_ADDER::FULL_ADDER(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>)
FULL_ADDER::FULL_ADDER(string name, vector<wire> input_wires, vector<wire> output_wires){
    /*------------------------------------------------------------------------------------------
    First we set up inputs and output vectors. The Chip parent expects everything to be of type
    vector<string>, so we set up that accordingly. 

    In our case the input_wires will be {"A", "B", "Cin"}
    and the output_wires will be {"S", "Cout"}  
    ------------------------------------------------------------------------------------------*/
    this->name = name;
    this->inputs = input_wires;
    this->outputs = output_wires;


    /*------------------------------------------------------------------------------------------
    Now we declare input and output ports. Note that these are generic input ports and instance
    independent where as the previous 'input_wires' will be different for each instance. 
    ------------------------------------------------------------------------------------------*/
    this->declare("A", CHIP_INPUTS);
    this->declare("B", CHIP_INPUTS);
    this->declare("Cin", CHIP_INPUTS);
    this->declare("S", CHIP_OUTPUTS);
    this->declare("Cout", CHIP_OUTPUTS);

    /*------------------------------------------------------------------------------------------
    Now we can wire the circuit for S = A xor B xor C;
    For that we create 2 instances of XOR gates and a wire. 
    ------------------------------------------------------------------------------------------*/
    wire temp_xor_1 = "temp_xor_1";
    XOR xor_1("FA_XOR_1",
            {"A", "B"},
            temp_xor_1);
    XOR xor_2("FA_XOR_2",
            {"Cin", temp_xor_1},
            "S");

    /*------------------------------------------------------------------------------------------
    Then we register the wires and submodules so that the auto_gen function can automatically
    generate code.
    ------------------------------------------------------------------------------------------*/
    this->add_wire(temp_xor_1);
    this->add_submodule(xor_1);
    this->add_submodule(xor_2);

    /*------------------------------------------------------------------------------------------
    Here we wire Cout = AB + BC + AC.
    We need 3 and gates and 3 wires from it. 
    We also need 2 or gates and 1 wire for it. 
    ------------------------------------------------------------------------------------------*/
    wire temp_and_1 = "temp_and_1";
    wire temp_and_2 = "temp_and_2";
    wire temp_and_3 = "temp_and_3";
    wire temp_or_1 = "temp_or_1";

    AND and_1("FA_AND_1",
                   {"A", "B"},
                   temp_and_1);
    AND and_2("FA_AND_2",
                   {"B", "Cin"},
                   temp_and_2);
    AND and_3("FA_AND_3",
                   {"Cin", "A"},
                   temp_and_3);
    
    OR or_1("FA_OR_1",
                 {temp_and_1, temp_and_2},
                 temp_or_1);
    OR or_2("FA_OR_2",
                 {temp_or_1, temp_and_3},
                 "Cout");
    
    this->add_wire(temp_and_1);
    this->add_wire(temp_and_2);
    this->add_wire(temp_and_3);
    this->add_wire(temp_or_1);
    this->add_submodule(and_1);
    this->add_submodule(and_2);
    this->add_submodule(and_3);
    this->add_submodule(or_1);
    this->add_submodule(or_2);

    /*------------------------------------------------------------------------------------------
    After building the module we can use the auto_gen() funtion to automatically generate the m-
    odule definition.
    ------------------------------------------------------------------------------------------*/
    this->definition = this->auto_gen("module FULL_ADDER");

    /*------------------------------------------------------------------------------------------
    Then we can instruct how each instance has to be generated.
    ------------------------------------------------------------------------------------------*/
    this->generate =  "FULL_ADDER " + this->name  + " (" + this->inputs.at(0) + ", " + this->inputs.at(1) + ", " + this->inputs.at(2) + ", " + this->outputs.at(0) + "," + this->outputs.at(1) + ");";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1c78, %rsp           # imm = 0x1C78
movq %rcx, %r14
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbx
leaq 0x10(%rdi), %rax
movq %rax, (%rdi)
xorl %r13d, %r13d
movq %r13, 0x8(%rdi)
movb %r13b, 0x10(%rdi)
leaq 0x30(%rdi), %rax
movq %rax, 0x20(%rdi)
movq %r13, 0x28(%rdi)
movb %r13b, 0x30(%rdi)
leaq 0x50(%rdi), %rax
movq %rax, 0x40(%rdi)
movq %r13, 0x48(%rdi)
movb %r13b, 0x50(%rdi)
movl %r13d, 0x60(%rdi)
addq $0x68, %rdi
movq %r13, 0x108(%rbx)
movl %r13d, 0x110(%rbx)
movq %r13, 0x148(%rbx)
movl %r13d, 0x150(%rbx)
movl $0x9c, %edx
movq %rdi, -0x30(%rbp)
xorl %esi, %esi
callq 0x72e0
xorps %xmm0, %xmm0
movups %xmm0, 0x118(%rbx)
movups %xmm0, 0x128(%rbx)
movups %xmm0, 0x134(%rbx)
movups %xmm0, 0x158(%rbx)
movups %xmm0, 0x168(%rbx)
movups %xmm0, 0x178(%rbx)
movq %r13, 0x188(%rbx)
movl $0x1, 0x190(%rbx)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x72d0
leaq 0x80(%rbx), %rdi
movq %r15, %rsi
callq 0x7570
leaq 0x98(%rbx), %rdi
movq %r14, %rsi
callq 0x7570
leaq -0x578(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x2357b(%rip), %rsi     # 0x376f2
leaq 0x23575(%rip), %rdx     # 0x376f3
leaq -0x588(%rbp), %rdi
callq 0x7200
leaq -0x588(%rbp), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x7190
movq -0x588(%rbp), %rdi
cmpq %r14, %rdi
je 0x141b6
movq -0x578(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x558(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x232f0(%rip), %rsi     # 0x374b8
leaq 0x232ea(%rip), %rdx     # 0x374b9
leaq -0x568(%rbp), %rdi
callq 0x7200
leaq -0x568(%rbp), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x7190
movq -0x568(%rbp), %rdi
cmpq %r14, %rdi
je 0x14207
movq -0x558(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x538(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x232a1(%rip), %rsi     # 0x374ba
leaq 0x2329d(%rip), %rdx     # 0x374bd
leaq -0x548(%rbp), %rdi
callq 0x7200
leaq -0x548(%rbp), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x7190
movq -0x548(%rbp), %rdi
cmpq %r14, %rdi
je 0x14258
movq -0x538(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x518(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x23254(%rip), %rsi     # 0x374be
leaq 0x2324e(%rip), %rdx     # 0x374bf
leaq -0x528(%rbp), %rdi
callq 0x7200
leaq -0x528(%rbp), %rsi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x7190
movq -0x528(%rbp), %rdi
cmpq %r14, %rdi
je 0x142ac
movq -0x518(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x4f8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x23202(%rip), %rsi     # 0x374c0
leaq 0x231ff(%rip), %rdx     # 0x374c4
leaq -0x508(%rbp), %rdi
callq 0x7200
leaq -0x508(%rbp), %rsi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x7190
movq -0x508(%rbp), %rdi
cmpq %r14, %rdi
je 0x14300
movq -0x4f8(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0xc0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x231b3(%rip), %rsi     # 0x374c5
leaq 0x231b6(%rip), %rdx     # 0x374cf
leaq -0xd0(%rbp), %rdi
callq 0x7200
leaq -0x220(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x23199(%rip), %rsi     # 0x374d0
leaq 0x2319a(%rip), %rdx     # 0x374d8
leaq -0x230(%rbp), %rdi
callq 0x7200
leaq -0xca0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x23396(%rip), %rsi     # 0x376f2
leaq 0x23390(%rip), %rdx     # 0x376f3
leaq -0xcb0(%rbp), %r14
movq %r14, %rdi
callq 0x7200
leaq -0xc90(%rbp), %r14
leaq -0xc80(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x2312d(%rip), %rsi     # 0x374b8
leaq 0x23127(%rip), %rdx     # 0x374b9
movq %r14, %rdi
callq 0x7200
leaq -0x650(%rbp), %rdi
leaq -0xcb0(%rbp), %rsi
leaq -0xfe0(%rbp), %r13
movl $0x2, %edx
movq %r13, %rcx
callq 0x70f0
leaq -0x4d8(%rbp), %r12
movq %r12, -0x10(%r12)
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x4e8(%rbp), %rdi
callq 0x7220
leaq -0x1ca0(%rbp), %rdi
leaq -0x230(%rbp), %rsi
leaq -0x650(%rbp), %rdx
leaq -0x4e8(%rbp), %rcx
callq 0x7630
movq -0x4e8(%rbp), %rdi
cmpq %r12, %rdi
je 0x14421
movq -0x4d8(%rbp), %rsi
incq %rsi
callq 0x7510
leaq 0x20(%rbx), %rax
movq %rax, -0x280(%rbp)
leaq 0x40(%rbx), %r12
leaq -0x650(%rbp), %rdi
callq 0x73a0
movq $-0x40, %r14
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x14457
movq (%r15), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r15
addq $0x20, %r14
jne 0x14443
movq -0x230(%rbp), %rdi
leaq -0x220(%rbp), %rax
cmpq %rax, %rdi
je 0x14483
movq -0x220(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x4b8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x23044(%rip), %rsi     # 0x374d9
leaq 0x23045(%rip), %rdx     # 0x374e1
leaq -0x4c8(%rbp), %rdi
callq 0x7200
leaq -0xfd0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x23000(%rip), %rsi     # 0x374ba
leaq 0x22ffc(%rip), %rdx     # 0x374bd
movq %r13, %rdi
callq 0x7200
leaq -0xfc0(%rbp), %r13
leaq -0xfb0(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x7220
movq %r12, -0x278(%rbp)
leaq -0x638(%rbp), %rdi
leaq -0xfe0(%rbp), %rsi
leaq -0x7e8(%rbp), %rcx
movl $0x2, %edx
callq 0x70f0
leaq -0x498(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x22f91(%rip), %rsi     # 0x374be
leaq 0x22f8b(%rip), %rdx     # 0x374bf
leaq -0x4a8(%rbp), %rdi
callq 0x7200
leaq -0xcb0(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
leaq -0x638(%rbp), %rdx
leaq -0x4a8(%rbp), %rcx
callq 0x7630
movq -0x4a8(%rbp), %rdi
cmpq %r12, %rdi
je 0x1457c
movq -0x498(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x638(%rbp), %rdi
callq 0x73a0
movq $-0x40, %r12
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x145a3
movq (%r15), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r15
addq $0x20, %r12
jne 0x1458f
movq -0x4c8(%rbp), %rdi
cmpq %r14, %rdi
je 0x145c8
movq -0x4b8(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x478(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x488(%rbp), %rdi
callq 0x7220
movq -0x30(%rbp), %r15
leaq 0xb0(%rbx), %r12
leaq -0x488(%rbp), %rsi
movq %r12, %rdi
callq 0x72a0
movq -0x488(%rbp), %rdi
cmpq %r14, %rdi
je 0x14625
movq -0x478(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x1b08(%rbp), %rdi
leaq -0x1ca0(%rbp), %rsi
callq 0x7580
leaq -0x1b08(%rbp), %rsi
movq %r15, %rdi
callq 0x7430
leaq -0x1b08(%rbp), %rdi
callq 0x7160
leaq -0x1970(%rbp), %rdi
leaq -0xcb0(%rbp), %rsi
callq 0x7580
leaq -0x1970(%rbp), %rsi
movq %r15, %rdi
callq 0x7430
leaq -0x1970(%rbp), %rdi
callq 0x7160
leaq -0xa0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22e4f(%rip), %rsi     # 0x374e2
leaq 0x22e52(%rip), %rdx     # 0x374ec
leaq -0xb0(%rbp), %rdi
callq 0x7200
leaq -0x80(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22e38(%rip), %rsi     # 0x374ed
leaq 0x22e3b(%rip), %rdx     # 0x374f7
leaq -0x90(%rbp), %rdi
callq 0x7200
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22e21(%rip), %rsi     # 0x374f8
leaq 0x22e24(%rip), %rdx     # 0x37502
leaq -0x70(%rbp), %rdi
callq 0x7200
leaq -0x40(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22e0d(%rip), %rsi     # 0x37503
leaq 0x22e0f(%rip), %rdx     # 0x3750c
leaq -0x50(%rbp), %rdi
callq 0x7200
leaq -0x458(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x22df5(%rip), %rsi     # 0x3750d
leaq 0x22df6(%rip), %rdx     # 0x37515
leaq -0x468(%rbp), %rdi
callq 0x7200
movq %r12, -0x288(%rbp)
leaq -0x7d8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22fae(%rip), %rsi     # 0x376f2
leaq 0x22fa8(%rip), %rdx     # 0x376f3
leaq -0x7e8(%rbp), %rdi
callq 0x7200
leaq -0x7c8(%rbp), %r14
leaq -0x7b8(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x22d48(%rip), %rsi     # 0x374b8
leaq 0x22d42(%rip), %rdx     # 0x374b9
movq %r14, %rdi
callq 0x7200
movq %r15, %r12
leaq -0x620(%rbp), %rdi
leaq -0x7e8(%rbp), %rsi
leaq -0xb18(%rbp), %rcx
movl $0x2, %edx
callq 0x70f0
leaq -0x438(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x448(%rbp), %rdi
callq 0x7220
leaq -0xfe0(%rbp), %rdi
leaq -0x468(%rbp), %rsi
leaq -0x620(%rbp), %rdx
leaq -0x448(%rbp), %rcx
callq 0x7170
movq -0x448(%rbp), %rdi
cmpq %r15, %rdi
je 0x14805
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x620(%rbp), %rdi
callq 0x73a0
movq $-0x40, %r14
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x1482d
movq (%r13), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r13
addq $0x20, %r14
jne 0x14818
movq -0x468(%rbp), %rdi
cmpq %r12, %rdi
je 0x14852
movq -0x458(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x418(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x22cb1(%rip), %rsi     # 0x37516
leaq 0x22cb2(%rip), %rdx     # 0x3751e
leaq -0x428(%rbp), %rdi
callq 0x7200
leaq -0xb08(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22c2e(%rip), %rsi     # 0x374b8
leaq 0x22c28(%rip), %rdx     # 0x374b9
leaq -0xb18(%rbp), %r14
movq %r14, %rdi
callq 0x7200
leaq -0xaf8(%rbp), %r14
leaq -0xae8(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x22c01(%rip), %rsi     # 0x374ba
leaq 0x22bfd(%rip), %rdx     # 0x374bd
movq %r14, %rdi
callq 0x7200
leaq -0x608(%rbp), %rdi
leaq -0xb18(%rbp), %rsi
leaq -0x980(%rbp), %rcx
movl $0x2, %edx
callq 0x70f0
leaq -0x3f8(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rdx
addq %rsi, %rdx
leaq -0x408(%rbp), %rdi
callq 0x7220
leaq -0x7e8(%rbp), %rdi
leaq -0x428(%rbp), %rsi
leaq -0x608(%rbp), %rdx
leaq -0x408(%rbp), %rcx
callq 0x7170
movq -0x408(%rbp), %rdi
cmpq %r15, %rdi
je 0x1494b
movq -0x3f8(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x608(%rbp), %rdi
callq 0x73a0
movq $-0x40, %r14
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x14973
movq (%r13), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r13
addq $0x20, %r14
jne 0x1495e
movq -0x428(%rbp), %rdi
cmpq %r12, %rdi
je 0x14998
movq -0x418(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x200(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22b75(%rip), %rsi     # 0x3751f
leaq 0x22b76(%rip), %rdx     # 0x37527
leaq -0x210(%rbp), %rdi
callq 0x7200
leaq -0x970(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x22aeb(%rip), %rsi     # 0x374ba
leaq 0x22ae7(%rip), %rdx     # 0x374bd
leaq -0x980(%rbp), %r14
movq %r14, %rdi
callq 0x7200
leaq -0x960(%rbp), %r14
leaq -0x950(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x22cf4(%rip), %rsi     # 0x376f2
leaq 0x22cee(%rip), %rdx     # 0x376f3
movq %r14, %rdi
callq 0x7200
leaq -0x5f0(%rbp), %rdi
leaq -0x980(%rbp), %rsi
leaq -0xe48(%rbp), %r15
movl $0x2, %edx
movq %r15, %rcx
callq 0x70f0
leaq -0x3d8(%rbp), %r12
movq %r12, -0x10(%r12)
movq -0x70(%rbp), %rsi
movq -0x68(%rbp), %rdx
addq %rsi, %rdx
leaq -0x3e8(%rbp), %rdi
callq 0x7220
leaq -0xb18(%rbp), %rdi
leaq -0x210(%rbp), %rsi
leaq -0x5f0(%rbp), %rdx
leaq -0x3e8(%rbp), %rcx
callq 0x7170
movq -0x3e8(%rbp), %rdi
cmpq %r12, %rdi
je 0x14a8e
movq -0x3d8(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x5f0(%rbp), %rdi
callq 0x73a0
movq $-0x40, %r14
leaq -0x200(%rbp), %r12
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x14abd
movq (%r13), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r13
addq $0x20, %r14
jne 0x14aa8
movq -0x210(%rbp), %rdi
cmpq %r12, %rdi
je 0x14ae2
movq -0x200(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x3b8(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x22a33(%rip), %rsi     # 0x37528
leaq 0x22a33(%rip), %rdx     # 0x3752f
leaq -0x3c8(%rbp), %rdi
callq 0x7200
leaq -0xe38(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
addq %rsi, %rdx
movq %r15, %r14
movq %r15, %rdi
callq 0x7220
leaq -0xe28(%rbp), %r14
leaq -0xe18(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x7220
leaq -0x5d8(%rbp), %rdi
leaq -0xe48(%rbp), %rsi
leaq -0x270(%rbp), %r14
movl $0x2, %edx
movq %r14, %rcx
callq 0x70f0
leaq -0x398(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
addq %rsi, %rdx
leaq -0x3a8(%rbp), %rdi
callq 0x7220
leaq -0x980(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
leaq -0x5d8(%rbp), %rdx
leaq -0x3a8(%rbp), %rcx
callq 0x78e0
movq -0x3a8(%rbp), %rdi
cmpq %r15, %rdi
je 0x14bda
movq -0x398(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x5d8(%rbp), %rdi
callq 0x73a0
movq $-0x40, %r15
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x14c02
movq (%r13), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r13
addq $0x20, %r15
jne 0x14bed
movq -0x3c8(%rbp), %rdi
cmpq %r12, %rdi
je 0x14c27
movq -0x3b8(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x378(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x228f6(%rip), %rsi     # 0x37530
leaq 0x228f6(%rip), %rdx     # 0x37537
leaq -0x388(%rbp), %rdi
callq 0x7200
leaq -0x260(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
addq %rsi, %rdx
movq %r14, %r15
movq %r14, %rdi
callq 0x7220
leaq -0x250(%rbp), %r15
leaq -0x240(%rbp), %r13
movq %r13, -0x10(%r13)
movq -0x70(%rbp), %rsi
movq -0x68(%rbp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x7220
leaq -0x5c0(%rbp), %rdi
leaq -0x270(%rbp), %rsi
leaq -0x1f0(%rbp), %rcx
movl $0x2, %edx
callq 0x70f0
leaq -0x358(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x227fc(%rip), %rsi     # 0x374c0
leaq 0x227f9(%rip), %rdx     # 0x374c4
leaq -0x368(%rbp), %rdi
callq 0x7200
movq -0x30(%rbp), %r15
leaq -0xe48(%rbp), %rdi
leaq -0x388(%rbp), %rsi
leaq -0x5c0(%rbp), %rdx
leaq -0x368(%rbp), %rcx
callq 0x78e0
movq -0x368(%rbp), %rdi
cmpq %r14, %rdi
je 0x14d17
movq -0x358(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x5c0(%rbp), %rdi
callq 0x73a0
movq $-0x40, %r14
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x14d3f
movq (%r13), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r13
addq $0x20, %r14
jne 0x14d2a
movq -0x388(%rbp), %rdi
cmpq %r12, %rdi
je 0x14d64
movq -0x378(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x338(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x348(%rbp), %rdi
callq 0x7220
movq -0x288(%rbp), %r12
leaq -0x348(%rbp), %rsi
movq %r12, %rdi
callq 0x72a0
movq -0x348(%rbp), %rdi
cmpq %r14, %rdi
je 0x14dbd
movq -0x338(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x318(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rdx
addq %rsi, %rdx
leaq -0x328(%rbp), %rdi
callq 0x7220
leaq -0x328(%rbp), %rsi
movq %r12, %rdi
callq 0x72a0
movq -0x328(%rbp), %rdi
cmpq %r14, %rdi
je 0x14e0f
movq -0x318(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x2f8(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x70(%rbp), %rsi
movq -0x68(%rbp), %rdx
addq %rsi, %rdx
leaq -0x308(%rbp), %rdi
callq 0x7220
leaq -0x308(%rbp), %rsi
movq %r12, %rdi
callq 0x72a0
movq -0x308(%rbp), %rdi
cmpq %r14, %rdi
je 0x14e5b
movq -0x2f8(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x2d8(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2e8(%rbp), %rdi
callq 0x7220
leaq -0x2e8(%rbp), %rsi
movq %r12, %rdi
callq 0x72a0
movq -0x2e8(%rbp), %rdi
cmpq %r14, %rdi
je 0x14ea7
movq -0x2d8(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x17d8(%rbp), %rdi
leaq -0xfe0(%rbp), %rsi
callq 0x7580
leaq -0x17d8(%rbp), %rsi
movq %r15, %rdi
callq 0x7430
leaq -0x17d8(%rbp), %rdi
callq 0x7160
leaq -0x1640(%rbp), %rdi
leaq -0x7e8(%rbp), %rsi
callq 0x7580
leaq -0x1640(%rbp), %rsi
movq %r15, %rdi
callq 0x7430
leaq -0x1640(%rbp), %rdi
callq 0x7160
leaq -0x14a8(%rbp), %rdi
leaq -0xb18(%rbp), %rsi
callq 0x7580
leaq -0x14a8(%rbp), %rsi
movq %r15, %rdi
callq 0x7430
leaq -0x14a8(%rbp), %rdi
callq 0x7160
leaq -0x1310(%rbp), %rdi
leaq -0x980(%rbp), %rsi
callq 0x7580
leaq -0x1310(%rbp), %rsi
movq %r15, %rdi
callq 0x7430
leaq -0x1310(%rbp), %rdi
callq 0x7160
leaq -0x1178(%rbp), %rdi
leaq -0xe48(%rbp), %rsi
callq 0x7580
leaq -0x1178(%rbp), %rsi
movq %r15, %rdi
callq 0x7430
leaq -0x1178(%rbp), %rdi
callq 0x7160
leaq -0x2b8(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x22599(%rip), %rsi     # 0x37538
leaq 0x225a3(%rip), %rdx     # 0x37549
leaq -0x2c8(%rbp), %rdi
callq 0x7200
leaq -0x270(%rbp), %rdi
leaq -0x2c8(%rbp), %rdx
movq %rbx, %rsi
callq 0x72b0
leaq -0x270(%rbp), %r14
movq -0x280(%rbp), %rdi
movq %r14, %rsi
callq 0x7610
movq (%r14), %rdi
leaq -0x260(%rbp), %rax
cmpq %rax, %rdi
je 0x14ffc
movq -0x260(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x2c8(%rbp), %rdi
cmpq %r15, %rdi
je 0x15017
movq -0x2b8(%rbp), %rsi
incq %rsi
callq 0x7510
leaq 0x2252c(%rip), %rsi     # 0x3754a
leaq -0x5a8(%rbp), %rdi
movq %rbx, %rdx
callq 0x7480
leaq 0x22039(%rip), %rsi     # 0x3706d
leaq -0x5a8(%rbp), %rdi
callq 0x7910
leaq -0xe0(%rbp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1506d
movq %rdx, -0xf0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xe0(%rbp)
jmp 0x15073
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xe8(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x80(%rbx), %rax
cmpq %rax, 0x88(%rbx)
je 0x15750
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq -0xf0(%rbp), %rdi
callq 0x7140
leaq -0x160(%rbp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x150e1
movq %rdx, -0x170(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x160(%rbp)
jmp 0x150e7
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
leaq -0x170(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x21f64(%rip), %rsi     # 0x37070
callq 0x7910
leaq -0x100(%rbp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1513e
movq %rdx, -0x110(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x100(%rbp)
jmp 0x15144
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x108(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x80(%rbx), %rax
movq 0x88(%rbx), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x1, %rdx
jbe 0x15762
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
leaq -0x110(%rbp), %rdi
callq 0x7140
leaq -0x180(%rbp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x151be
movq %rdx, -0x190(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x180(%rbp)
jmp 0x151c4
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
leaq -0x190(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x21e87(%rip), %rsi     # 0x37070
callq 0x7910
leaq -0x120(%rbp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1521b
movq %rdx, -0x130(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x120(%rbp)
jmp 0x15221
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x128(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x80(%rbx), %rax
movq 0x88(%rbx), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x2, %rdx
jbe 0x15775
movq 0x40(%rax), %rsi
movq 0x48(%rax), %rdx
leaq -0x130(%rbp), %rdi
callq 0x7140
leaq -0x1a0(%rbp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1529b
movq %rdx, -0x1b0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x1a0(%rbp)
jmp 0x152a1
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
leaq -0x1b0(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x21daa(%rip), %rsi     # 0x37070
callq 0x7910
leaq -0x140(%rbp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x152f8
movq %rdx, -0x150(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x140(%rbp)
jmp 0x152fe
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x148(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x98(%rbx), %rax
cmpq %rax, 0xa0(%rbx)
je 0x15788
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq -0x150(%rbp), %rdi
callq 0x7140
leaq -0x298(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1536c
movq %rdx, -0x2a8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x298(%rbp)
jmp 0x15373
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq -0x2a8(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x221be(%rip), %rsi     # 0x37556
callq 0x7910
leaq -0x1c0(%rbp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x153ca
movq %rdx, -0x1d0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x1c0(%rbp)
jmp 0x153d2
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, -0x1c8(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x98(%rbx), %rax
movq 0xa0(%rbx), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x1, %rdx
jbe 0x1579a
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
leaq -0x1d0(%rbp), %rdi
callq 0x7140
leaq -0x1e0(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1544d
movq %rdx, -0x1f0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x1e0(%rbp)
jmp 0x15455
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq -0x1f0(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x22297(%rip), %rsi     # 0x37711
callq 0x7910
leaq -0x260(%rbp), %r14
movq %r14, -0x270(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x154af
movq %rdx, -0x270(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x260(%rbp)
jmp 0x154b6
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq -0x270(%rbp), %rbx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x278(%rbp), %rdi
movq %rbx, %rsi
callq 0x7610
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x154fa
movq -0x260(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x1f0(%rbp), %rdi
cmpq %r12, %rdi
leaq -0xe0(%rbp), %r12
je 0x1551c
movq -0x1e0(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x1d0(%rbp), %rdi
cmpq %r13, %rdi
leaq -0x160(%rbp), %r14
leaq -0x100(%rbp), %r13
je 0x15545
movq -0x1c0(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x2a8(%rbp), %rdi
cmpq %r15, %rdi
leaq -0xc0(%rbp), %rbx
leaq -0xa0(%rbp), %r15
je 0x1556e
movq -0x298(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x15590
movq -0x140(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x1b0(%rbp), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x155b2
movq -0x1a0(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x155d4
movq -0x120(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x190(%rbp), %rdi
leaq -0x180(%rbp), %rax
cmpq %rax, %rdi
je 0x155f6
movq -0x180(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x110(%rbp), %rdi
cmpq %r13, %rdi
je 0x15611
movq -0x100(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x170(%rbp), %rdi
cmpq %r14, %rdi
je 0x1562c
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0xf0(%rbp), %rdi
cmpq %r12, %rdi
je 0x15647
movq -0xe0(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x598(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x15666
movq -0x598(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0xe48(%rbp), %rdi
callq 0x7160
leaq -0x980(%rbp), %rdi
callq 0x7160
leaq -0xb18(%rbp), %rdi
callq 0x7160
leaq -0x7e8(%rbp), %rdi
callq 0x7160
leaq -0xfe0(%rbp), %rdi
callq 0x7160
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x156bb
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x156d4
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x156f0
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0xb0(%rbp), %rdi
cmpq %r15, %rdi
je 0x1570b
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0xcb0(%rbp), %rdi
callq 0x7160
leaq -0x1ca0(%rbp), %rdi
callq 0x7160
movq -0xd0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1573e
movq -0xc0(%rbp), %rsi
incq %rsi
callq 0x7510
addq $0x1c78, %rsp           # imm = 0x1C78
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x22182(%rip), %rdi     # 0x378d9
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x7720
leaq 0x22170(%rip), %rdi     # 0x378d9
movl $0x1, %esi
xorl %eax, %eax
callq 0x7720
leaq 0x2215d(%rip), %rdi     # 0x378d9
movl $0x2, %esi
xorl %eax, %eax
callq 0x7720
leaq 0x2214a(%rip), %rdi     # 0x378d9
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x7720
leaq 0x22138(%rip), %rdi     # 0x378d9
movl $0x1, %esi
xorl %eax, %eax
callq 0x7720
movq %rax, -0x30(%rbp)
movq -0x1f0(%rbp), %rdi
cmpq %r12, %rdi
je 0x15eea
movq -0x1e0(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x15eea
movq %rax, -0x30(%rbp)
jmp 0x15f05
movq %rax, -0x30(%rbp)
jmp 0x15f48
movq %rax, -0x30(%rbp)
jmp 0x15f92
movq %rax, -0x30(%rbp)
jmp 0x15fdc
movq %rax, -0x30(%rbp)
jmp 0x16026
jmp 0x1613c
movq %rax, -0x30(%rbp)
movq -0x2c8(%rbp), %rdi
cmpq %r15, %rdi
je 0x16140
movq -0x2b8(%rbp), %rsi
jmp 0x16041
jmp 0x1613c
movq %rax, -0x30(%rbp)
leaq -0x1178(%rbp), %rdi
jmp 0x1586b
movq %rax, -0x30(%rbp)
leaq -0x1310(%rbp), %rdi
jmp 0x1586b
movq %rax, -0x30(%rbp)
leaq -0x14a8(%rbp), %rdi
jmp 0x1586b
movq %rax, -0x30(%rbp)
leaq -0x1640(%rbp), %rdi
jmp 0x1586b
movq %rax, -0x30(%rbp)
leaq -0x17d8(%rbp), %rdi
callq 0x7160
jmp 0x16140
movq %rax, -0x30(%rbp)
movq -0x2e8(%rbp), %rdi
cmpq %r14, %rdi
je 0x16140
movq -0x2d8(%rbp), %rsi
jmp 0x16041
movq %rax, -0x30(%rbp)
movq -0x308(%rbp), %rdi
cmpq %r14, %rdi
je 0x16140
movq -0x2f8(%rbp), %rsi
jmp 0x16041
movq %rax, -0x30(%rbp)
movq -0x328(%rbp), %rdi
cmpq %r14, %rdi
je 0x16140
movq -0x318(%rbp), %rsi
jmp 0x16041
movq %rax, -0x30(%rbp)
movq -0x348(%rbp), %rdi
cmpq %r14, %rdi
je 0x16140
movq -0x338(%rbp), %rsi
jmp 0x16041
movq %rax, -0x30(%rbp)
movq -0x368(%rbp), %rdi
cmpq %r14, %rdi
je 0x1591a
movq -0x358(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x1591a
movq %rax, -0x30(%rbp)
leaq -0x5c0(%rbp), %rdi
callq 0x73a0
jmp 0x1592c
movq %rax, -0x30(%rbp)
xorl %r14d, %r14d
movq -0x250(%rbp,%r14), %rdi
leaq (%r14,%r13), %rax
cmpq %rdi, %rax
je 0x1594b
movq (%rax), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r14
cmpq $-0x40, %r14
jne 0x1592f
jmp 0x16066
movq %rax, -0x30(%rbp)
jmp 0x1614c
movq %rax, -0x30(%rbp)
movq -0x3a8(%rbp), %rdi
cmpq %r15, %rdi
je 0x15988
movq -0x398(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x15988
movq %rax, -0x30(%rbp)
leaq -0x5d8(%rbp), %rdi
callq 0x73a0
jmp 0x1599a
movq %rax, -0x30(%rbp)
xorl %r14d, %r14d
movq -0xe28(%rbp,%r14), %rdi
leaq (%r14,%r13), %rax
cmpq %rdi, %rax
je 0x159b9
movq (%rax), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r14
cmpq $-0x40, %r14
jne 0x1599d
jmp 0x160a2
movq %rax, -0x30(%rbp)
jmp 0x16158
movq %rax, -0x30(%rbp)
movq -0x3e8(%rbp), %rdi
cmpq %r12, %rdi
je 0x159f6
movq -0x3d8(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x159f6
movq %rax, -0x30(%rbp)
leaq -0x5f0(%rbp), %rdi
callq 0x73a0
jmp 0x15a08
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
movq -0x960(%rbp,%r15), %rdi
leaq (%r15,%r13), %rax
cmpq %rdi, %rax
je 0x15a27
movq (%rax), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r15
cmpq $-0x40, %r15
jne 0x15a0b
movb $0x1, %al
jmp 0x15a3d
jmp 0x15a37
movq %rax, -0x30(%rbp)
xorl %eax, %eax
leaq -0x980(%rbp), %rcx
cmpq %r14, %rcx
sete %cl
orb %al, %cl
jne 0x15a7d
addq $-0x10, %r14
leaq -0x980(%rbp), %r15
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x15a6d
movq (%r14), %rsi
incq %rsi
callq 0x7510
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %r15, %r14
movq %rax, %r14
jne 0x15a59
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0x16164
movq -0x200(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x16164
movq %rax, -0x30(%rbp)
jmp 0x16164
movq %rax, -0x30(%rbp)
movq -0x408(%rbp), %rdi
cmpq %r15, %rdi
je 0x15ad6
movq -0x3f8(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x15ad6
movq %rax, -0x30(%rbp)
leaq -0x608(%rbp), %rdi
callq 0x73a0
jmp 0x15ae8
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
movq -0xaf8(%rbp,%r15), %rdi
leaq (%r15,%r13), %rax
cmpq %rdi, %rax
je 0x15b07
movq (%rax), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r15
cmpq $-0x40, %r15
jne 0x15aeb
movb $0x1, %al
jmp 0x15b1d
jmp 0x15b17
movq %rax, -0x30(%rbp)
xorl %eax, %eax
leaq -0xb18(%rbp), %rcx
cmpq %r14, %rcx
sete %cl
orb %al, %cl
jne 0x15b5d
addq $-0x10, %r14
leaq -0xb18(%rbp), %r15
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x15b4d
movq (%r14), %rsi
incq %rsi
callq 0x7510
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %r15, %r14
movq %rax, %r14
jne 0x15b39
movq -0x428(%rbp), %rdi
cmpq %r12, %rdi
je 0x16170
movq -0x418(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x16170
movq %rax, -0x30(%rbp)
jmp 0x16170
movq %rax, -0x30(%rbp)
movq -0x448(%rbp), %rdi
cmpq %r15, %rdi
je 0x15baf
movq -0x438(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x15baf
movq %rax, -0x30(%rbp)
leaq -0x620(%rbp), %rdi
callq 0x73a0
jmp 0x15bc1
movq %rax, -0x30(%rbp)
xorl %r15d, %r15d
movq -0x7c8(%rbp,%r15), %rdi
leaq (%r15,%r13), %rax
cmpq %rdi, %rax
je 0x15be0
movq (%rax), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r15
cmpq $-0x40, %r15
jne 0x15bc4
movb $0x1, %al
jmp 0x15c09
movq %r15, %r12
movq %rax, -0x30(%rbp)
xorl %eax, %eax
jmp 0x15c09
movq %r15, %r12
movq %rax, -0x30(%rbp)
xorl %eax, %eax
leaq -0x7e8(%rbp), %r14
leaq -0x7e8(%rbp), %rcx
cmpq %r14, %rcx
sete %cl
orb %al, %cl
jne 0x15c49
addq $-0x10, %r14
leaq -0x7e8(%rbp), %r15
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x15c39
movq (%r14), %rsi
incq %rsi
callq 0x7510
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %r15, %r14
movq %rax, %r14
jne 0x15c25
movq -0x468(%rbp), %rdi
cmpq %r12, %rdi
je 0x1617c
movq -0x458(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x1617c
movq %rax, -0x30(%rbp)
jmp 0x1617c
movq %rax, -0x30(%rbp)
jmp 0x16195
movq %rax, -0x30(%rbp)
jmp 0x161ae
movq %rax, -0x30(%rbp)
jmp 0x161ca
jmp 0x1612a
movq %rax, -0x30(%rbp)
leaq -0x1970(%rbp), %rdi
jmp 0x15cae
movq %rax, -0x30(%rbp)
leaq -0x1b08(%rbp), %rdi
callq 0x7160
jmp 0x161ec
movq %rax, -0x30(%rbp)
movq -0x488(%rbp), %rdi
cmpq %r14, %rdi
je 0x161ec
movq -0x478(%rbp), %rsi
jmp 0x161e4
movq %rax, -0x30(%rbp)
movq -0x4a8(%rbp), %rdi
cmpq %r12, %rdi
je 0x15cfd
movq -0x498(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x15cfd
movq %rax, -0x30(%rbp)
leaq -0x638(%rbp), %rdi
callq 0x73a0
jmp 0x15d0f
movq %rax, -0x30(%rbp)
xorl %r12d, %r12d
movq -0xfc0(%rbp,%r12), %rdi
leaq (%r15,%r12), %rax
cmpq %rdi, %rax
je 0x15d2e
movq (%rax), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r12
cmpq $-0x40, %r12
jne 0x15d12
movb $0x1, %al
jmp 0x160cc
movq %rax, -0x30(%rbp)
jmp 0x161f8
movq %rax, -0x30(%rbp)
movq -0x4e8(%rbp), %rdi
cmpq %r12, %rdi
je 0x15d6d
movq -0x4d8(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x15d6d
movq %rax, -0x30(%rbp)
leaq -0x650(%rbp), %rdi
callq 0x73a0
jmp 0x15d7f
movq %rax, -0x30(%rbp)
xorl %r12d, %r12d
movq -0xc90(%rbp,%r12), %rdi
leaq (%r15,%r12), %rax
cmpq %rdi, %rax
je 0x15d9e
movq (%rax), %rsi
incq %rsi
callq 0x7510
addq $-0x20, %r12
cmpq $-0x40, %r12
jne 0x15d82
movb $0x1, %al
jmp 0x15db4
jmp 0x15dae
movq %rax, -0x30(%rbp)
xorl %eax, %eax
leaq -0xcb0(%rbp), %rcx
cmpq %r14, %rcx
sete %cl
orb %al, %cl
jne 0x15df4
addq $-0x10, %r14
leaq -0xcb0(%rbp), %r15
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x15de4
movq (%r14), %rsi
incq %rsi
callq 0x7510
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %r15, %r14
movq %rax, %r14
jne 0x15dd0
movq -0x230(%rbp), %rdi
leaq -0x220(%rbp), %rax
cmpq %rax, %rdi
je 0x16204
movq -0x220(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x16204
movq %rax, -0x30(%rbp)
jmp 0x16204
jmp 0x16133
movq %rax, -0x30(%rbp)
movq -0x508(%rbp), %rdi
cmpq %r14, %rdi
je 0x16226
movq -0x4f8(%rbp), %rsi
jmp 0x1621e
jmp 0x16133
movq %rax, -0x30(%rbp)
movq -0x528(%rbp), %rdi
cmpq %r14, %rdi
je 0x16226
movq -0x518(%rbp), %rsi
jmp 0x1621e
jmp 0x16133
movq %rax, -0x30(%rbp)
movq -0x548(%rbp), %rdi
cmpq %r14, %rdi
je 0x16226
movq -0x538(%rbp), %rsi
jmp 0x1621e
jmp 0x16133
movq %rax, -0x30(%rbp)
movq -0x568(%rbp), %rdi
cmpq %r14, %rdi
je 0x16226
movq -0x558(%rbp), %rsi
jmp 0x1621e
jmp 0x16133
movq %rax, -0x30(%rbp)
movq -0x588(%rbp), %rdi
cmpq %r14, %rdi
je 0x16226
movq -0x578(%rbp), %rsi
jmp 0x1621e
jmp 0x16133
movq %rax, -0x30(%rbp)
movq -0x1d0(%rbp), %rdi
cmpq %r13, %rdi
je 0x15f05
movq -0x1c0(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x2a8(%rbp), %rdi
cmpq %r15, %rdi
je 0x15f26
movq -0x298(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x15f26
movq %rax, -0x30(%rbp)
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x15f48
movq -0x140(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x1b0(%rbp), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x15f70
movq -0x1a0(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x15f70
movq %rax, -0x30(%rbp)
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x15f92
movq -0x120(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x190(%rbp), %rdi
leaq -0x180(%rbp), %rax
cmpq %rax, %rdi
je 0x15fba
movq -0x180(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x15fba
movq %rax, -0x30(%rbp)
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x15fdc
movq -0x100(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x16004
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x16004
movq %rax, -0x30(%rbp)
movq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0x16026
movq -0xe0(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0x598(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x16140
movq -0x598(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x16140
movq %rax, -0x30(%rbp)
cmpq %r15, %r14
je 0x16066
leaq -0x270(%rbp), %rsi
movq %r15, %rdi
callq 0x79ca
movq -0x388(%rbp), %rdi
cmpq %r12, %rdi
je 0x1614c
movq -0x378(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x1614c
movq %rax, -0x30(%rbp)
cmpq %r14, %r15
je 0x160a2
leaq -0xe48(%rbp), %rsi
movq %r14, %rdi
callq 0x7990
movq -0x3c8(%rbp), %rdi
cmpq %r12, %rdi
je 0x16158
movq -0x3b8(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x16158
movq %rax, -0x30(%rbp)
xorl %eax, %eax
leaq -0xfe0(%rbp), %r15
cmpq %r13, %r15
sete %cl
orb %al, %cl
jne 0x16106
addq $-0x10, %r13
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x160f6
movq (%r13), %rsi
incq %rsi
callq 0x7510
leaq -0x20(%r13), %rax
addq $-0x10, %r13
cmpq %r15, %r13
movq %rax, %r13
jne 0x160e1
movq -0x4c8(%rbp), %rdi
cmpq %r14, %rdi
je 0x161f8
movq -0x4b8(%rbp), %rsi
incq %rsi
callq 0x7510
jmp 0x161f8
movq %rax, -0x30(%rbp)
jmp 0x161ec
movq %rax, -0x30(%rbp)
jmp 0x16226
movq %rax, -0x30(%rbp)
leaq -0xe48(%rbp), %rdi
callq 0x7160
leaq -0x980(%rbp), %rdi
callq 0x7160
leaq -0xb18(%rbp), %rdi
callq 0x7160
leaq -0x7e8(%rbp), %rdi
callq 0x7160
leaq -0xfe0(%rbp), %rdi
callq 0x7160
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x16195
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x161ae
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x161ca
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x7510
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x161ec
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x7510
leaq -0xcb0(%rbp), %rdi
callq 0x7160
leaq -0x1ca0(%rbp), %rdi
callq 0x7160
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x16226
movq -0xc0(%rbp), %rsi
incq %rsi
callq 0x7510
movq %rbx, %rdi
callq 0x7160
movq -0x30(%rbp), %rdi
callq 0x7870
nop