// File: /workspace/github_cpp_makefile_star2_O2/Sooryakiran[P]dotV/src/verilog.cpp
// Function: CARRY_LOOK_AHEAD_ADDER::CARRY_LOOK_AHEAD_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::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int)
CARRY_LOOK_AHEAD_ADDER::CARRY_LOOK_AHEAD_ADDER(string name, vector<wire> input_wires, wire output_wire, int n_bits){
    /*------------------------------------------------------------------------------------------
    We do the basic setups.
    ------------------------------------------------------------------------------------------*/
    this->name = name;
    this->inputs = input_wires;
    this->outputs.push_back(output_wire);
    this->n_bits = n_bits;

    /*------------------------------------------------------------------------------------------
    We declare input and output ports.
    ------------------------------------------------------------------------------------------*/
    this->declare("A", CHIP_INPUTS);
    this->declare("B", CHIP_INPUTS);
    this->declare("out", CHIP_OUTPUTS);

    /*------------------------------------------------------------------------------------------
    Find the number of levels for our Prefix computation
    ------------------------------------------------------------------------------------------*/
    int levels = ceil(log2(n_bits + 1));

    /*------------------------------------------------------------------------------------------
    Wire naming convention
    ======================
    State at level L bit N will be [1:0]s_level_L_bit_N

    We construct a matrix of wire names for easy representation.
    wire_matrix[L][N] points to the state at level L, bit N.
    We initialize the first state to be kill.
    ------------------------------------------------------------------------------------------*/
    wire always_zero_wire = "s_level_0_bit_0";
    this->add_wire("[1:0] " + always_zero_wire);
    this->verilog("assign " + always_zero_wire + " = 0;");

    wire wire_matrix[levels + 1][n_bits + 1];
    wire_matrix[0][0] = always_zero_wire;

    /*------------------------------------------------------------------------------------------
    We calculate the level 0 states and fill the first row of the matrix.
    ------------------------------------------------------------------------------------------*/
    for(int i=1; i<= n_bits; i++){
        string curr_slice = "[" + to_string(i - 1) + "]";
        
        wire current_wire = "s_level_0_bit_" + to_string(i);
        this->add_wire("[1:0] " + current_wire);
        AND and_pre("CLA_and_pre_bit_" + to_string(i),
                    {"A" + curr_slice, "B" + curr_slice},
                    current_wire + "[1]");
        OR or_pre("CLA_or_pre_bit_" + to_string(i),
                 {"A" + curr_slice, "B" + curr_slice},
                 current_wire + "[0]");
        wire_matrix[0][i] = current_wire;
        this->add_submodule(and_pre);
        this->add_submodule(or_pre);
    }
    
    /*------------------------------------------------------------------------------------------
    States are now stored in "[1: 0] s_level_0_bit_n".

    Now we make another wire to store final carry results. Note that the bit width of the carry 
    wire is one more than the bit width of the adder. The last bit is in carry_final is ignored
    as of now, but can help us know if there is any overflow.

    We also assign the 0th bit of carry_final to be zero.
    ------------------------------------------------------------------------------------------*/
    wire carry_final = "carry_final";
    this->add_wire("[" + to_string(n_bits) + ":0] " + carry_final);
    verilog("assign carry_final[0] = 0;");
    
    /*------------------------------------------------------------------------------------------
    Now we wire up the prefix computation
    ------------------------------------------------------------------------------------------*/
    for(int level=0; level<levels; level++){
        /*------------------------------------------------------------------------------------------
        In each level, ignore the part that already got computed and just drop down the states,
        compute the new states for others. done_bits is the number of bits from the end who is done.
        ------------------------------------------------------------------------------------------*/
        int done_bits = pow(2, level);
        for(int bit = 0; bit <= n_bits; bit++){
            /*------------------------------------------------------------------------------------------
            For each bit:
            ------------------------------------------------------------------------------------------*/
            if (bit < done_bits){
                /*------------------------------------------------------------------------------------------
                Just drop down the values for bits that are done
                ------------------------------------------------------------------------------------------*/
                wire_matrix[level + 1][bit] = wire_matrix[level][bit];
            }
            else{
                /*------------------------------------------------------------------------------------------
                Compute the new states and connect  with the new wires.

                First we add a new wire and put it in our wire_matrix. Then we do the star(*) operation.
                ------------------------------------------------------------------------------------------*/
                wire new_wire = "s_level_" + to_string(level + 1) + "_bit_" + to_string(bit);
                this->add_wire("[1:0] " + new_wire);
                wire_matrix[level + 1][bit] = new_wire;

                if(pow(2, level + 1) <= bit){
                    CLA_STAR star_operator("CLA_level_" + to_string(level+1) + "_bit_" + to_string(bit),
                                        {wire_matrix[level][bit - done_bits] + "[0]", wire_matrix[level][bit - done_bits] + "[1]", wire_matrix[level][bit] + "[0]", wire_matrix[level][bit] + "[1]"},
                                        {wire_matrix[level+1][bit] + "[0]", wire_matrix[level+1][bit] + "[1]"}
                                        );
                    this->add_submodule(star_operator);
                }
                else{
                    /*------------------------------------------------------------------------------------------
                    If no more computations are required for the current bit, we join the wire with carry_final[N]
                    ------------------------------------------------------------------------------------------*/
                    CLA_STAR star_operator("CLA_level_" + to_string(level+1) + "_bit_" + to_string(bit),
                                        {wire_matrix[level][bit - done_bits] + "[0]", wire_matrix[level][bit - done_bits] + "[1]", wire_matrix[level][bit] + "[0]", wire_matrix[level][bit] + "[1]"},
                                        {carry_final + "[" + to_string(bit) + "]", wire_matrix[level+1][bit] + "[1]"}
                                        );
                    JOIN joint("CLA_WIRE_JOINT_" + to_string(level+1) + "_bit_" + to_string(bit),
                              carry_final + "[" + to_string(bit) + "]",
                              wire_matrix[level+1][bit] + "[0]");
                    
                    this->add_submodule(joint);
                    this->add_submodule(star_operator);
                }
            }
        }
    }

    /*------------------------------------------------------------------------------------------
    Now we have everything, n bit A, n bit B, n bit carry_final. We do A xor B xor carry_final
    to get the sum.
    ------------------------------------------------------------------------------------------*/
    wire xor_temp_wire = "CLA_xor_temp_wire";
    this->add_wire("[" + to_string(n_bits -1) + ":0] " + xor_temp_wire);

    XOR_N_BIT xor_1("CLA_XOR_1",
                    {"A", "B"},
                    xor_temp_wire,
                    n_bits);

    XOR_N_BIT xor_2("CLA_XOR_2",
                    {xor_temp_wire, carry_final + "[" + to_string(n_bits-1) + ":0]" },
                    "out",
                    n_bits);
    
    this->add_submodule(xor_1);
    this->add_submodule(xor_2);

    /*------------------------------------------------------------------------------------------
    The wiring is complete, now we use auto_gen to automaically generate the definitions.
    ------------------------------------------------------------------------------------------*/
    this->definition = this->auto_gen("module CARRY_LOOK_AHEAD_ADDER_" + to_string(n_bits) + "_BIT");
    this->generate =  "CARRY_LOOK_AHEAD_ADDER_" + to_string(this->n_bits) + "_BIT " + this->name  + " (" + this->inputs.at(0) + ", " + this->inputs.at(1) + ", " + this->outputs.at(0) + ");";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1498, %rsp           # imm = 0x1498
movq %r8, -0x38(%rbp)
movq %rcx, %rbx
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %r12
callq 0xa690
movq %r12, %rdi
movq %r15, %rsi
callq 0xa410
leaq 0x80(%r12), %rdi
movq %rdi, -0x1e0(%rbp)
movq %r14, %rsi
callq 0xa810
leaq 0x98(%r12), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0xa3e0
movq -0x38(%rbp), %rax
movl %eax, 0x190(%r12)
leaq 0xe397(%rip), %rsi      # 0x1f6f2
leaq -0x6e8(%rbp), %rdi
leaq -0x8c0(%rbp), %rdx
callq 0xac60
leaq -0x6e8(%rbp), %rsi
movq %r12, %rdi
xorl %edx, %edx
callq 0xa270
leaq -0x6e8(%rbp), %rdi
callq 0xa370
leaq 0xe126(%rip), %rsi      # 0x1f4b8
leaq -0x6c8(%rbp), %rdi
leaq -0x8c0(%rbp), %rdx
callq 0xac60
leaq -0x6c8(%rbp), %rsi
movq %r12, %rdi
xorl %edx, %edx
callq 0xa270
leaq -0x6c8(%rbp), %rdi
callq 0xa370
leaq 0xe0f8(%rip), %rsi      # 0x1f4c1
leaq -0x6a8(%rbp), %rdi
leaq -0x8c0(%rbp), %rdx
callq 0xac60
leaq -0x6a8(%rbp), %rsi
pushq $0x1
popq %rdx
movq %r12, %rdi
callq 0xa270
leaq -0x6a8(%rbp), %rdi
callq 0xa370
movq -0x38(%rbp), %rax
leal 0x1(%rax), %ebx
movl %ebx, %edi
callq 0xa650
callq 0xa100
movsd %xmm0, -0x30(%rbp)
leaq 0xe17e(%rip), %rsi      # 0x1f597
leaq -0x240(%rbp), %rdi
leaq -0x8c0(%rbp), %rdx
callq 0xac60
leaq 0xe174(%rip), %rsi      # 0x1f5a7
leaq -0x688(%rbp), %rdi
leaq -0x240(%rbp), %rdx
movq %r12, -0xc8(%rbp)
callq 0xa6c0
leaq 0xb0(%r12), %rdi
leaq -0x688(%rbp), %rsi
movq %rdi, -0xf0(%rbp)
callq 0xa3e0
leaq -0x688(%rbp), %rdi
callq 0xa370
leaq 0xe0ec(%rip), %rsi      # 0x1f567
leaq -0x8c0(%rbp), %rdi
leaq -0x240(%rbp), %rdx
callq 0xa6c0
leaq 0xe601(%rip), %rdx      # 0x1fa96
leaq -0x668(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
callq 0xa150
movq %r14, -0x1d8(%rbp)
leaq 0xc8(%r12), %rdi
leaq -0x668(%rbp), %rsi
movq %rdi, -0x48(%rbp)
callq 0xa3e0
cvttsd2si -0x30(%rbp), %r14d
leaq -0x668(%rbp), %rdi
callq 0xa370
leaq -0x8c0(%rbp), %rdi
callq 0xa370
movq %rsp, -0x1d0(%rbp)
movq %r14, -0x118(%rbp)
leal 0x1(%r14), %r13d
movl %ebx, %eax
movq %rax, -0x1e8(%rbp)
imulq %rax, %r13
movq %r13, %rax
shlq $0x5, %rax
movq %rsp, %rcx
subq %rax, %rcx
movq %rcx, -0x78(%rbp)
movq %rcx, %rsp
testq %r13, %r13
je 0x1153b
movq -0x78(%rbp), %rcx
addq $0x10, %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rcx
addq $-0x20, %rax
jne 0x11525
leaq -0x240(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0xa410
movq -0xc8(%rbp), %rax
addq $0x68, %rax
movq %rax, -0x40(%rbp)
xorl %ecx, %ecx
movq -0x38(%rbp), %rax
testl %eax, %eax
cmovgl %eax, %ecx
incl %ecx
movq %rcx, -0x50(%rbp)
pushq $0x1
popq %rax
leaq -0x8c0(%rbp), %r15
cmpq -0x50(%rbp), %rax
je 0x118bd
movq %rax, -0x30(%rbp)
leal -0x1(%rax), %esi
leaq -0x478(%rbp), %r14
movq %r14, %rdi
callq 0xa9a0
movq %r15, %rdi
leaq 0xdc14(%rip), %rsi      # 0x1f1b3
movq %r14, %rdx
callq 0xac40
leaq -0x1c8(%rbp), %rdi
movq %r15, %rsi
leaq 0xdc6b(%rip), %rdx      # 0x1f223
callq 0xa150
movq %r15, %rdi
callq 0xa370
leaq -0x478(%rbp), %rdi
callq 0xa370
movq %r15, %rdi
movq -0x30(%rbp), %rsi
callq 0xa9a0
leaq -0xb8(%rbp), %rbx
leaq -0x140(%rbp), %r14
movq %r14, %rdi
leaq 0xdfb9(%rip), %rsi      # 0x1f5ae
movq %r15, %rdx
callq 0xac40
movq %r15, %r12
movq %r15, %rdi
callq 0xa370
leaq -0x990(%rbp), %r15
movq %r15, %rdi
leaq 0xdf8e(%rip), %rsi      # 0x1f5a7
movq %r14, %rdx
callq 0xa6c0
movq -0xf0(%rbp), %rdi
movq %r15, %rsi
callq 0xa3e0
movq %r15, %rdi
callq 0xa370
movq %rbx, %rdi
movq -0x30(%rbp), %rsi
callq 0xa9a0
leaq -0x648(%rbp), %rdi
leaq 0xdf6b(%rip), %rsi      # 0x1f5bd
movq %rbx, %rdx
callq 0xac40
movq %r12, %r15
leaq -0x478(%rbp), %rdi
leaq 0xe087(%rip), %rsi      # 0x1f6f2
leaq -0x1c8(%rbp), %rbx
movq %rbx, %rdx
callq 0xa6c0
leaq -0x458(%rbp), %rdi
leaq 0xde30(%rip), %rsi      # 0x1f4b8
movq %rbx, %rdx
callq 0xa6c0
leaq -0x628(%rbp), %rdi
leaq -0x478(%rbp), %rsi
pushq $0x2
popq %rdx
leaq -0x70(%rbp), %rcx
callq 0xa170
leaq -0x970(%rbp), %r12
movq %r12, %rdi
leaq -0x140(%rbp), %rsi
leaq 0xdf0c(%rip), %rdx      # 0x1f5ce
callq 0xa960
leaq -0x1c8(%rbp), %r14
movq %r15, %rdi
leaq -0x648(%rbp), %rsi
leaq -0x628(%rbp), %rbx
movq %rbx, %rdx
movq %r12, %rcx
callq 0xa240
movq %r12, %rdi
callq 0xa370
movq %rbx, %rdi
callq 0xa550
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x478, %rdi           # imm = 0xFB88
callq 0xa370
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x116fd
leaq -0x648(%rbp), %rdi
callq 0xa370
leaq -0xb8(%rbp), %rdi
callq 0xa370
leaq -0x70(%rbp), %rbx
movq %rbx, %rdi
movq -0x30(%rbp), %rsi
callq 0xa9a0
leaq -0x610(%rbp), %rdi
leaq 0xde85(%rip), %rsi      # 0x1f5d2
movq %rbx, %rdx
callq 0xac40
leaq -0xb8(%rbp), %rdi
leaq 0xdf8f(%rip), %rsi      # 0x1f6f2
movq %r14, %rdx
callq 0xa6c0
leaq -0x98(%rbp), %rdi
leaq 0xdd3f(%rip), %rsi      # 0x1f4b8
movq %r14, %rdx
callq 0xa6c0
leaq -0x5f0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
pushq $0x2
popq %rdx
leaq -0xe8(%rbp), %rcx
callq 0xa170
leaq -0x950(%rbp), %r12
movq %r12, %rdi
leaq -0x140(%rbp), %rsi
leaq 0xde2c(%rip), %rdx      # 0x1f5e2
callq 0xa960
leaq -0x478(%rbp), %rdi
leaq -0x610(%rbp), %rsi
leaq -0x5f0(%rbp), %rbx
movq %rbx, %rdx
movq %r12, %rcx
callq 0xadf0
movq %r12, %rdi
callq 0xa370
movq %rbx, %rdi
callq 0xa550
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0xb8, %rdi
callq 0xa370
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x117ee
leaq -0x610(%rbp), %rdi
callq 0xa370
leaq -0x70(%rbp), %rdi
callq 0xa370
movq -0x30(%rbp), %rdi
shlq $0x5, %rdi
addq -0x78(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0xa410
leaq -0x14b8(%rbp), %rbx
leaq -0x1320(%rbp), %r14
movq %rbx, %rdi
movq %r15, %rsi
callq 0xa850
movq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0xa600
movq %rbx, %rdi
callq 0xa230
movq %r14, %rdi
leaq -0x478(%rbp), %rsi
callq 0xa850
movq -0x40(%rbp), %rdi
movq %r14, %rsi
callq 0xa600
movq %r14, %rdi
callq 0xa230
leaq -0x478(%rbp), %rdi
callq 0xa230
movq %r15, %rdi
callq 0xa230
leaq -0x140(%rbp), %rdi
callq 0xa370
leaq -0x1c8(%rbp), %rdi
callq 0xa370
movq -0x30(%rbp), %rax
incq %rax
jmp 0x11575
leaq 0xdd22(%rip), %rsi      # 0x1f5e6
leaq -0x1c8(%rbp), %rdi
leaq -0x8c0(%rbp), %rdx
callq 0xac60
leaq -0xb8(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0xa9a0
leaq 0xd8c5(%rip), %rsi      # 0x1f1b3
leaq -0x478(%rbp), %rdi
leaq -0xb8(%rbp), %rdx
callq 0xac40
leaq 0xdca1(%rip), %rdx      # 0x1f5a9
leaq -0x8c0(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0xa150
leaq -0x5d8(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
leaq -0x1c8(%rbp), %rdx
callq 0xaaf0
leaq -0x5d8(%rbp), %rsi
movq -0xf0(%rbp), %rdi
callq 0xa3e0
leaq -0x5d8(%rbp), %rdi
callq 0xa370
leaq -0x8c0(%rbp), %rdi
callq 0xa370
leaq -0x478(%rbp), %rdi
callq 0xa370
leaq -0xb8(%rbp), %rdi
callq 0xa370
leaq 0xdc73(%rip), %rsi      # 0x1f5f2
leaq -0x5b8(%rbp), %rdi
leaq -0x8c0(%rbp), %rdx
callq 0xac60
leaq -0x5b8(%rbp), %rsi
movq -0x48(%rbp), %rdi
callq 0xa3e0
leaq -0x5b8(%rbp), %rdi
callq 0xa370
leaq -0x98(%rbp), %rax
movq %rax, -0xc0(%rbp)
xorl %ebx, %ebx
movq -0x118(%rbp), %rax
testl %eax, %eax
cmovlel %ebx, %eax
movq %rax, -0x118(%rbp)
movslq -0x38(%rbp), %rax
movq %rax, -0x200(%rbp)
cmpq -0x118(%rbp), %rbx
je 0x121db
cvtsi2sd %ebx, %xmm0
callq 0xa6e0
cvttsd2si %xmm0, %eax
leaq 0x1(%rbx), %rsi
movq %rsi, %rdi
movq -0x1e8(%rbp), %rdx
imulq %rdx, %rdi
shlq $0x5, %rdi
movq -0x78(%rbp), %rcx
addq %rcx, %rdi
movq %rdi, -0x1a8(%rbp)
movq %rsi, -0x48(%rbp)
cvtsi2sd %esi, %xmm0
movsd %xmm0, -0x1f0(%rbp)
imulq %rdx, %rbx
shlq $0x5, %rbx
addq %rcx, %rbx
movq %rbx, -0x50(%rbp)
cltq
movq %rax, -0x1f8(%rbp)
xorl %r14d, %r14d
cmpq -0x200(%rbp), %r14
jg 0x121d2
movq %r14, %rbx
subq -0x1f8(%rbp), %rbx
jge 0x11a7e
movq %r14, %rdi
shlq $0x5, %rdi
movq -0x50(%rbp), %rax
leaq (%rax,%rdi), %rsi
addq -0x1a8(%rbp), %rdi
callq 0xa410
jmp 0x121ca
movq %r14, -0x30(%rbp)
leaq -0xb8(%rbp), %r14
movq %r14, %rdi
movq -0x48(%rbp), %rsi
callq 0xa9a0
leaq -0x478(%rbp), %r15
movq %r15, %rdi
leaq 0xdb67(%rip), %rsi      # 0x1f60d
movq %r14, %rdx
callq 0xac40
leaq -0x8c0(%rbp), %rdi
movq %r15, %rsi
leaq 0xdaf8(%rip), %rdx      # 0x1f5b7
callq 0xa150
leaq -0x70(%rbp), %r15
movq %r15, %rdi
movq -0x30(%rbp), %rsi
callq 0xa9a0
leaq -0x140(%rbp), %r12
movq %r12, %rdi
leaq -0x8c0(%rbp), %r14
movq %r14, %rsi
movq %r15, %rdx
callq 0xa640
movq %r15, %rdi
callq 0xa370
movq %r14, %rdi
callq 0xa370
leaq -0x478(%rbp), %rdi
callq 0xa370
leaq -0xb8(%rbp), %rdi
callq 0xa370
leaq -0x930(%rbp), %r14
movq %r14, %rdi
leaq 0xda7e(%rip), %rsi      # 0x1f5a7
movq %r12, %rdx
callq 0xa6c0
movq -0xf0(%rbp), %rdi
movq %r14, %rsi
callq 0xa3e0
movq %r14, %rdi
callq 0xa370
movq -0x30(%rbp), %r14
shlq $0x5, %r14
movq -0x1a8(%rbp), %rax
leaq (%rax,%r14), %rdi
movq %rdi, -0x120(%rbp)
leaq -0x140(%rbp), %rsi
callq 0xa410
movsd -0x1f0(%rbp), %xmm0
callq 0xa6e0
cvtsi2sdl -0x30(%rbp), %xmm1
ucomisd %xmm0, %xmm1
jae 0x11fa3
leaq -0x110(%rbp), %r15
movq %r15, %rdi
movq -0x48(%rbp), %rsi
callq 0xa9a0
leaq -0xe8(%rbp), %r12
movq %r12, %rdi
leaq 0xda68(%rip), %rsi      # 0x1f616
movq %r15, %rdx
callq 0xac40
leaq -0x70(%rbp), %rdi
movq %r12, %rsi
leaq 0xd9f3(%rip), %rdx      # 0x1f5b7
callq 0xa150
leaq -0x160(%rbp), %r15
movq %r15, %rdi
movq -0x30(%rbp), %rsi
callq 0xa9a0
leaq -0x578(%rbp), %rdi
leaq -0x70(%rbp), %rsi
movq %r15, %rdx
callq 0xa640
shlq $0x5, %rbx
addq -0x50(%rbp), %rbx
leaq -0x478(%rbp), %rdi
movq %rbx, %rsi
leaq 0xd9da(%rip), %rdx      # 0x1f5e2
callq 0xa960
leaq -0x458(%rbp), %rdi
movq %rdi, %r15
movq %rbx, %rsi
leaq 0xd9ad(%rip), %rbx      # 0x1f5ce
movq %rbx, %rdx
callq 0xa960
addq -0x50(%rbp), %r14
leaq -0x438(%rbp), %rdi
movq %rdi, %r15
movq %r14, %rsi
leaq 0xd9a1(%rip), %rdx      # 0x1f5e2
callq 0xa960
leaq -0x418(%rbp), %rdi
movq %rdi, %r15
movq %r14, %rsi
movq %rbx, %rdx
callq 0xa960
leaq -0x288(%rbp), %rdi
leaq -0x478(%rbp), %rsi
pushq $0x4
popq %rdx
leaq -0x2e0(%rbp), %rcx
callq 0xa170
leaq -0x180(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
leaq 0xd526(%rip), %rdx      # 0x1f1b3
callq 0xa960
leaq -0x220(%rbp), %r14
movq %r14, %rdi
movq -0x30(%rbp), %rsi
callq 0xa9a0
leaq -0x1a0(%rbp), %r12
movq %r12, %rdi
leaq -0x180(%rbp), %rsi
movq %r14, %rdx
callq 0xa640
leaq -0xb8(%rbp), %rdi
movq %rdi, %r15
movq %r12, %rsi
leaq 0xd551(%rip), %rdx      # 0x1f223
callq 0xa150
leaq -0x98(%rbp), %rdi
movq %rdi, %r15
movq -0x120(%rbp), %rsi
movq %rbx, %rdx
callq 0xa960
leaq -0x8d8(%rbp), %rbx
movq %rbx, %rdi
leaq -0xb8(%rbp), %rsi
pushq $0x2
popq %rdx
leaq -0x2c0(%rbp), %rcx
callq 0xa170
leaq -0x8c0(%rbp), %rdi
leaq -0x578(%rbp), %rsi
leaq -0x288(%rbp), %rdx
movq %rbx, %rcx
callq 0xa740
movq %rbx, %rdi
callq 0xa550
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0xb8, %rdi
callq 0xa370
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x11d38
leaq -0x1a0(%rbp), %rdi
callq 0xa370
leaq -0x220(%rbp), %rdi
callq 0xa370
leaq -0x180(%rbp), %rdi
callq 0xa370
leaq -0x288(%rbp), %rdi
callq 0xa550
pushq $0x60
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x478, %rdi           # imm = 0xFB88
callq 0xa370
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x11d85
leaq -0x578(%rbp), %rdi
callq 0xa370
leaq -0x160(%rbp), %rdi
callq 0xa370
leaq -0x70(%rbp), %rbx
movq %rbx, %rdi
callq 0xa370
leaq -0xe8(%rbp), %r14
movq %r14, %rdi
callq 0xa370
leaq -0x110(%rbp), %rdi
callq 0xa370
movq %r14, %rdi
movq -0x48(%rbp), %rsi
callq 0xa9a0
movq %rbx, %rdi
leaq 0xd82d(%rip), %rsi      # 0x1f621
movq %r14, %rdx
callq 0xac40
leaq -0xb8(%rbp), %rdi
movq %rbx, %rsi
leaq 0xd7aa(%rip), %rdx      # 0x1f5b7
callq 0xa150
leaq -0x110(%rbp), %rbx
movq %rbx, %rdi
movq -0x30(%rbp), %rsi
callq 0xa9a0
leaq -0x728(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
movq %rbx, %rdx
callq 0xa640
leaq -0x1a0(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
leaq 0xd363(%rip), %rdx      # 0x1f1b3
callq 0xa960
leaq -0x180(%rbp), %r14
movq %r14, %rdi
movq -0x30(%rbp), %rsi
callq 0xa9a0
leaq -0x160(%rbp), %rbx
movq %rbx, %rdi
leaq -0x1a0(%rbp), %rsi
movq %r14, %rdx
callq 0xa640
leaq -0x708(%rbp), %rdi
movq %rbx, %rsi
leaq 0xd391(%rip), %rdx      # 0x1f223
callq 0xa150
leaq -0x910(%rbp), %r12
movq %r12, %rdi
movq -0x120(%rbp), %rsi
leaq 0xd733(%rip), %rdx      # 0x1f5e2
callq 0xa960
leaq -0x478(%rbp), %rbx
movq %rbx, %rdi
leaq -0x728(%rbp), %r14
movq %r14, %rsi
leaq -0x708(%rbp), %r15
movq %r15, %rdx
movq %r12, %rcx
callq 0xad30
movq %r12, %rdi
callq 0xa370
movq %r15, %rdi
callq 0xa370
leaq -0x160(%rbp), %rdi
callq 0xa370
leaq -0x180(%rbp), %rdi
callq 0xa370
leaq -0x1a0(%rbp), %rdi
callq 0xa370
movq %r14, %rdi
callq 0xa370
leaq -0x110(%rbp), %rdi
callq 0xa370
leaq -0xb8(%rbp), %rdi
callq 0xa370
leaq -0x70(%rbp), %rdi
callq 0xa370
leaq -0xe8(%rbp), %rdi
callq 0xa370
leaq -0xff0(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0xa850
movq -0x40(%rbp), %rdi
movq %r14, %rsi
callq 0xa600
movq %r14, %rdi
callq 0xa230
leaq -0xe58(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
callq 0xa850
movq -0x40(%rbp), %rdi
leaq -0xe58(%rbp), %rbx
movq %rbx, %rsi
callq 0xa600
movq %rbx, %rdi
callq 0xa230
leaq -0x478(%rbp), %rdi
jmp 0x121a9
leaq -0x110(%rbp), %r15
movq %r15, %rdi
movq -0x48(%rbp), %rsi
callq 0xa9a0
leaq -0xe8(%rbp), %r12
movq %r12, %rdi
leaq 0xd64f(%rip), %rsi      # 0x1f616
movq %r15, %rdx
callq 0xac40
leaq -0x70(%rbp), %rdi
movq %r12, %rsi
leaq 0xd5da(%rip), %rdx      # 0x1f5b7
callq 0xa150
leaq -0x160(%rbp), %r15
movq %r15, %rdi
movq -0x30(%rbp), %rsi
callq 0xa9a0
leaq -0x598(%rbp), %rdi
leaq -0x70(%rbp), %rsi
movq %r15, %rdx
callq 0xa640
shlq $0x5, %rbx
addq -0x50(%rbp), %rbx
leaq -0x478(%rbp), %rdi
movq %rbx, %rsi
leaq 0xd5c1(%rip), %rdx      # 0x1f5e2
callq 0xa960
leaq -0x458(%rbp), %rdi
movq %rdi, %r15
movq %rbx, %rsi
leaq 0xd594(%rip), %rbx      # 0x1f5ce
movq %rbx, %rdx
callq 0xa960
addq -0x50(%rbp), %r14
leaq -0x438(%rbp), %rdi
movq %rdi, %r15
movq %r14, %rsi
leaq 0xd588(%rip), %rdx      # 0x1f5e2
callq 0xa960
leaq -0x418(%rbp), %rdi
movq %rdi, %r15
movq %r14, %rsi
movq %rbx, %rdx
callq 0xa960
leaq -0x2a0(%rbp), %rdi
leaq -0x478(%rbp), %rsi
pushq $0x4
popq %rdx
leaq -0x1a0(%rbp), %rcx
callq 0xa170
leaq -0xb8(%rbp), %rdi
movq -0x120(%rbp), %r14
movq %r14, %rsi
leaq 0xd539(%rip), %rdx      # 0x1f5e2
callq 0xa960
leaq -0x98(%rbp), %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0xa960
leaq -0x8f0(%rbp), %rbx
movq %rbx, %rdi
leaq -0xb8(%rbp), %rsi
pushq $0x2
popq %rdx
leaq -0x180(%rbp), %rcx
callq 0xa170
leaq -0x8c0(%rbp), %rdi
leaq -0x598(%rbp), %rsi
leaq -0x2a0(%rbp), %rdx
movq %rbx, %rcx
callq 0xa740
movq %rbx, %rdi
callq 0xa550
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0xb8, %rdi
callq 0xa370
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x12108
leaq -0x2a0(%rbp), %rdi
callq 0xa550
pushq $0x60
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x478, %rdi           # imm = 0xFB88
callq 0xa370
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x12131
leaq -0x598(%rbp), %rdi
callq 0xa370
leaq -0x160(%rbp), %rdi
callq 0xa370
leaq -0x70(%rbp), %rdi
callq 0xa370
leaq -0xe8(%rbp), %rdi
callq 0xa370
leaq -0x110(%rbp), %rdi
callq 0xa370
leaq -0x1188(%rbp), %rbx
movq %rbx, %rdi
leaq -0x8c0(%rbp), %rsi
callq 0xa850
movq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0xa600
movq %rbx, %rdi
callq 0xa230
leaq -0x8c0(%rbp), %rdi
callq 0xa230
leaq -0x140(%rbp), %rdi
callq 0xa370
movq -0x30(%rbp), %r14
incq %r14
jmp 0x11a45
movq -0x48(%rbp), %rbx
jmp 0x119dc
leaq 0xd44f(%rip), %rsi      # 0x1f631
leaq -0x140(%rbp), %rdi
leaq -0x8c0(%rbp), %rdx
callq 0xac60
movq -0x38(%rbp), %rax
leal -0x1(%rax), %ebx
leaq -0xb8(%rbp), %rdi
movl %ebx, %esi
callq 0xa9a0
leaq 0xcfa2(%rip), %rsi      # 0x1f1b3
leaq -0x478(%rbp), %rdi
leaq -0xb8(%rbp), %rdx
callq 0xac40
leaq 0xd37e(%rip), %rdx      # 0x1f5a9
leaq -0x8c0(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0xa150
leaq -0x558(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
leaq -0x140(%rbp), %rdx
callq 0xaaf0
leaq -0x558(%rbp), %rsi
movq -0xf0(%rbp), %rdi
callq 0xa3e0
leaq -0x558(%rbp), %rdi
callq 0xa370
leaq -0x8c0(%rbp), %rdi
callq 0xa370
leaq -0x478(%rbp), %rdi
callq 0xa370
leaq -0xb8(%rbp), %rdi
callq 0xa370
leaq 0xd3a1(%rip), %rsi      # 0x1f643
leaq -0x538(%rbp), %rdi
leaq -0xb8(%rbp), %rdx
callq 0xac60
leaq 0xd436(%rip), %rsi      # 0x1f6f2
leaq -0x478(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0xac60
leaq -0x458(%rbp), %rdi
leaq 0xd1de(%rip), %rsi      # 0x1f4b8
leaq -0xe8(%rbp), %rdx
callq 0xac60
leaq -0x270(%rbp), %rdi
leaq -0x478(%rbp), %rsi
pushq $0x2
popq %rdx
leaq -0x110(%rbp), %rcx
callq 0xa170
leaq -0x518(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0xaa40
leaq -0x8c0(%rbp), %rdi
leaq -0x538(%rbp), %rsi
leaq -0x270(%rbp), %rdx
leaq -0x518(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0xa330
leaq -0x518(%rbp), %rdi
callq 0xa370
leaq -0x270(%rbp), %rdi
callq 0xa550
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x478, %rdi           # imm = 0xFB88
callq 0xa370
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x12357
leaq -0x538(%rbp), %rdi
callq 0xa370
leaq 0xd2c9(%rip), %rsi      # 0x1f64d
leaq -0x4f8(%rbp), %rdi
leaq -0x160(%rbp), %rdx
callq 0xac60
leaq -0xb8(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0xaa40
leaq 0xce02(%rip), %rdx      # 0x1f1b3
leaq -0xe8(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0xa960
leaq -0x110(%rbp), %rdi
movl %ebx, %esi
callq 0xa9a0
leaq -0x70(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
leaq -0x110(%rbp), %rdx
callq 0xa640
leaq -0x98(%rbp), %rdi
leaq 0xce2a(%rip), %rdx      # 0x1f221
leaq -0x70(%rbp), %rsi
callq 0xa150
leaq -0x258(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
pushq $0x2
popq %rdx
leaq -0x1a0(%rbp), %rcx
callq 0xa170
leaq 0xd09d(%rip), %rsi      # 0x1f4c1
leaq -0x4d8(%rbp), %rdi
leaq -0x180(%rbp), %rdx
callq 0xac60
leaq -0x478(%rbp), %rdi
leaq -0x4f8(%rbp), %rsi
leaq -0x258(%rbp), %rdx
leaq -0x4d8(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0xa330
leaq -0x4d8(%rbp), %rdi
callq 0xa370
leaq -0x258(%rbp), %rdi
callq 0xa550
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0xb8, %rdi
callq 0xa370
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x12477
leaq -0x70(%rbp), %rdi
callq 0xa370
leaq -0x110(%rbp), %rdi
callq 0xa370
leaq -0xe8(%rbp), %rdi
callq 0xa370
leaq -0x4f8(%rbp), %rdi
callq 0xa370
leaq -0xcc0(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
callq 0xa850
leaq -0xcc0(%rbp), %rsi
movq -0x40(%rbp), %rdi
callq 0xa600
leaq -0xcc0(%rbp), %rdi
callq 0xa230
leaq -0xb28(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0xa850
leaq -0xb28(%rbp), %rsi
movq -0x40(%rbp), %rdi
callq 0xa600
leaq -0xb28(%rbp), %rdi
callq 0xa230
leaq -0xe8(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0xa9a0
leaq 0xd124(%rip), %rsi      # 0x1f657
leaq -0x70(%rbp), %rdi
leaq -0xe8(%rbp), %rdx
callq 0xac40
leaq 0xd048(%rip), %rdx      # 0x1f592
leaq -0x4b8(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0xa150
leaq -0xb8(%rbp), %rdi
leaq -0x4b8(%rbp), %rdx
movq -0xc8(%rbp), %r14
movq %r14, %rsi
callq 0xa3f0
leaq 0x20(%r14), %rdi
leaq -0xb8(%rbp), %rbx
movq %rbx, %rsi
callq 0xa920
movq %rbx, %rdi
callq 0xa370
leaq -0x4b8(%rbp), %rdi
callq 0xa370
leaq -0x70(%rbp), %rdi
callq 0xa370
leaq -0xe8(%rbp), %rdi
callq 0xa370
movl 0x190(%r14), %esi
leaq -0x498(%rbp), %rdi
callq 0xa9a0
leaq 0xd091(%rip), %rsi      # 0x1f65e
leaq -0x2c0(%rbp), %rdi
leaq -0x498(%rbp), %rdx
callq 0xac40
movq -0x1e0(%rbp), %rbx
leaq 0xcbd8(%rip), %rdx      # 0x1f1c6
leaq -0x2e0(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0xa150
leaq -0x220(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
callq 0xaaf0
leaq 0xca4b(%rip), %rdx      # 0x1f06d
leaq -0x180(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0xa150
movq %rbx, %rdi
xorl %esi, %esi
callq 0xa200
leaq -0x1a0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
movq %rax, %rdx
callq 0xaaf0
leaq 0xca14(%rip), %rdx      # 0x1f070
leaq -0x160(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0xa150
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0xa200
leaq -0x110(%rbp), %rdi
leaq -0x160(%rbp), %rsi
movq %rax, %rdx
callq 0xaaf0
leaq 0xc9d9(%rip), %rdx      # 0x1f070
leaq -0xe8(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xa150
movq -0x1d8(%rbp), %rdi
xorl %esi, %esi
callq 0xa200
leaq -0x70(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
movq %rax, %rdx
callq 0xaaf0
leaq 0xd03f(%rip), %rdx      # 0x1f711
leaq -0xb8(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0xa150
movq -0xc8(%rbp), %rdi
addq $0x40, %rdi
leaq -0xb8(%rbp), %rbx
movq %rbx, %rsi
callq 0xa920
movq %rbx, %rdi
callq 0xa370
leaq -0x70(%rbp), %rdi
callq 0xa370
leaq -0xe8(%rbp), %rdi
callq 0xa370
leaq -0x110(%rbp), %rdi
callq 0xa370
leaq -0x160(%rbp), %rdi
callq 0xa370
leaq -0x1a0(%rbp), %rdi
callq 0xa370
leaq -0x180(%rbp), %rdi
callq 0xa370
leaq -0x220(%rbp), %rdi
callq 0xa370
leaq -0x2e0(%rbp), %rdi
callq 0xa370
leaq -0x2c0(%rbp), %rdi
callq 0xa370
leaq -0x498(%rbp), %rdi
callq 0xa370
leaq -0x478(%rbp), %rdi
callq 0xa230
leaq -0x8c0(%rbp), %rdi
callq 0xa230
leaq -0x140(%rbp), %rdi
callq 0xa370
leaq -0x1c8(%rbp), %rdi
callq 0xa370
testq %r13, %r13
movq -0x78(%rbp), %rbx
je 0x127c9
addq $-0x20, %rbx
shlq $0x5, %r13
leaq (%rbx,%r13), %rdi
callq 0xa370
addq $-0x20, %r13
jne 0x127ba
movq -0x1d0(%rbp), %rsp
leaq -0x240(%rbp), %rdi
callq 0xa370
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0xa370
jmp 0x12a96
movq %rax, %rbx
jmp 0x12aa2
movq %rax, %rbx
jmp 0x12abf
movq %rax, %rbx
jmp 0x12adc
movq %rax, %rbx
jmp 0x12ae8
movq %rax, %rbx
jmp 0x12af4
movq %rax, %rbx
jmp 0x12b00
jmp 0x12ebf
movq %rax, %rbx
leaq -0x4b8(%rbp), %rdi
callq 0xa370
jmp 0x12845
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0xa370
jmp 0x12853
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
jmp 0x12b07
jmp 0x12ebf
movq %rax, %rbx
leaq -0xb28(%rbp), %rdi
jmp 0x12e5b
movq %rax, %rbx
leaq -0xcc0(%rbp), %rdi
jmp 0x12e5b
movq %rax, %rbx
leaq -0x4d8(%rbp), %rdi
callq 0xa370
jmp 0x12896
movq %rax, %rbx
leaq -0x258(%rbp), %rdi
callq 0xa550
jmp 0x128a7
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0xb8, %rdi
callq 0xa370
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x128ab
movb $0x1, %r14b
jmp 0x128d0
movq %rax, %rbx
xorl %r14d, %r14d
leaq -0x70(%rbp), %rdi
callq 0xa370
jmp 0x128e1
movq %rax, %rbx
xorl %r14d, %r14d
leaq -0x110(%rbp), %rdi
callq 0xa370
leaq -0xe8(%rbp), %rdi
callq 0xa370
testb %r14b, %r14b
je 0x1290b
jmp 0x1291c
movq %rax, %rbx
xorl %r14d, %r14d
jmp 0x128ed
movq %rax, %rbx
leaq -0xb8(%rbp), %rdi
callq 0xa370
jmp 0x1291c
movq %rax, %rbx
leaq -0x4f8(%rbp), %rdi
jmp 0x12e2e
jmp 0x12db2
movq %rax, %rbx
leaq -0x518(%rbp), %rdi
callq 0xa370
jmp 0x12941
movq %rax, %rbx
leaq -0x270(%rbp), %rdi
callq 0xa550
jmp 0x12952
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x478, %rdi           # imm = 0xFB88
callq 0xa370
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x12956
jmp 0x12986
movq %rax, %rbx
leaq -0x478(%rbp), %rdi
callq 0xa370
jmp 0x12986
movq %rax, %rbx
leaq -0x538(%rbp), %rdi
jmp 0x1303c
jmp 0x1309c
movq %rax, %rbx
leaq -0x558(%rbp), %rdi
callq 0xa370
jmp 0x129ab
movq %rax, %rbx
leaq -0x8c0(%rbp), %rdi
callq 0xa370
jmp 0x129bc
movq %rax, %rbx
leaq -0x478(%rbp), %rdi
jmp 0x12c6f
jmp 0x12bd0
jmp 0x1309c
jmp 0x12fc1
movq %rax, %rbx
leaq -0x5b8(%rbp), %rdi
jmp 0x13048
jmp 0x12fc1
movq %rax, %rbx
leaq -0x5d8(%rbp), %rdi
jmp 0x12eee
jmp 0x12f8c
jmp 0x12edf
jmp 0x12f87
jmp 0x12fc1
jmp 0x12bb0
jmp 0x12bb0
movq %rax, %rbx
leaq -0x668(%rbp), %rdi
callq 0xa370
jmp 0x12a2c
movq %rax, %rbx
leaq -0x8c0(%rbp), %rdi
jmp 0x12a41
jmp 0x12a4b
movq %rax, %rbx
leaq -0x688(%rbp), %rdi
callq 0xa370
jmp 0x13079
movq %rax, %rbx
jmp 0x13079
jmp 0x12b16
movq %rax, %rbx
leaq -0x6a8(%rbp), %rdi
jmp 0x12a84
jmp 0x12b16
movq %rax, %rbx
leaq -0x6c8(%rbp), %rdi
jmp 0x12a84
jmp 0x12b16
movq %rax, %rbx
leaq -0x6e8(%rbp), %rdi
callq 0xa370
jmp 0x1308c
jmp 0x12b16
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
callq 0xa370
leaq -0x110(%rbp), %rdi
callq 0xa370
jmp 0x12ab3
movq %rax, %rbx
leaq -0x160(%rbp), %rdi
callq 0xa370
leaq -0x1a0(%rbp), %rdi
callq 0xa370
jmp 0x12ad0
movq %rax, %rbx
leaq -0x180(%rbp), %rdi
callq 0xa370
leaq -0x220(%rbp), %rdi
callq 0xa370
leaq -0x2e0(%rbp), %rdi
callq 0xa370
leaq -0x2c0(%rbp), %rdi
callq 0xa370
leaq -0x498(%rbp), %rdi
callq 0xa370
jmp 0x12ec2
jmp 0x12ebf
movq %rax, %rbx
jmp 0x1308c
movq %rax, %rbx
leaq -0x1320(%rbp), %rdi
jmp 0x12e5b
movq %rax, %rbx
leaq -0xb8(%rbp), %rdi
callq 0xa370
jmp 0x12bbb
movq %rax, %rbx
jmp 0x12b63
movq %rax, %rbx
jmp 0x12b57
movq %rax, %rbx
leaq -0x950(%rbp), %rdi
callq 0xa370
leaq -0x5f0(%rbp), %rdi
callq 0xa550
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0xb8, %rdi
callq 0xa370
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x12b67
jmp 0x12bbb
movq %rax, %rbx
leaq -0x14b8(%rbp), %rdi
jmp 0x12e5b
jmp 0x12db2
movq %rax, %rbx
leaq -0x990(%rbp), %rdi
jmp 0x1303c
movq %rax, %rbx
jmp 0x12bc7
jmp 0x1309c
movq %rax, %rbx
jmp 0x13059
movq %rax, %rbx
leaq -0x610(%rbp), %rdi
callq 0xa370
leaq -0x70(%rbp), %rdi
jmp 0x12e2e
movq %rax, %rbx
jmp 0x12c74
movq %rax, %rbx
jmp 0x12bf4
movq %rax, %rbx
jmp 0x12c68
movq %rax, %rbx
leaq -0x8c0(%rbp), %rdi
callq 0xa370
leaq -0x478(%rbp), %rdi
jmp 0x13054
movq %rax, %rbx
leaq -0x478(%rbp), %rdi
callq 0xa370
jmp 0x12c68
jmp 0x12fc1
movq %rax, %rbx
jmp 0x12c4a
movq %rax, %rbx
jmp 0x12c3e
movq %rax, %rbx
leaq -0x8c0(%rbp), %rdi
jmp 0x13048
movq %rax, %rbx
leaq -0x970(%rbp), %rdi
callq 0xa370
leaq -0x628(%rbp), %rdi
callq 0xa550
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x478, %rdi           # imm = 0xFB88
callq 0xa370
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x12c4e
leaq -0x648(%rbp), %rdi
callq 0xa370
leaq -0xb8(%rbp), %rdi
jmp 0x1303c
jmp 0x1309c
jmp 0x12ebf
jmp 0x12cad
jmp 0x12e67
movq %rax, %rbx
jmp 0x12e06
movq %rax, %rbx
leaq -0xb8(%rbp), %rdi
callq 0xa370
jmp 0x12e90
movq %rax, %rbx
jmp 0x13020
jmp 0x12d10
movq %rax, %rbx
leaq -0xb8(%rbp), %rax
movq %rax, -0xc0(%rbp)
xorl %r14d, %r14d
jmp 0x12f11
movq %rax, %rbx
jmp 0x12e12
movq %rax, %rbx
leaq -0xb8(%rbp), %rax
movq %rax, -0xc0(%rbp)
xorl %r14d, %r14d
jmp 0x12f1d
movq %rax, %rbx
leaq -0xff0(%rbp), %rdi
jmp 0x12e5b
movq %rax, %rbx
jmp 0x12e90
movq %rax, %rbx
jmp 0x12e1e
movq %rax, %rbx
jmp 0x13029
jmp 0x12d3b
movq %rax, %rbx
jmp 0x12e9c
movq %rax, %rbx
leaq -0x910(%rbp), %rdi
callq 0xa370
jmp 0x12d5b
movq %rax, %rbx
jmp 0x12f5b
movq %rax, %rbx
jmp 0x13035
movq %rax, %rbx
jmp 0x12e27
jmp 0x1309c
movq %rax, %rbx
jmp 0x12f67
movq %rax, %rbx
leaq -0x708(%rbp), %rdi
callq 0xa370
jmp 0x12d73
jmp 0x1309c
jmp 0x12db2
movq %rax, %rbx
leaq -0x160(%rbp), %rdi
callq 0xa370
jmp 0x12da4
movq %rax, %rbx
leaq -0x1188(%rbp), %rdi
jmp 0x12ec9
movq %rax, %rbx
leaq -0x8d8(%rbp), %rdi
callq 0xa550
jmp 0x12dbd
movq %rax, %rbx
leaq -0x180(%rbp), %rdi
callq 0xa370
jmp 0x12dee
movq %rax, %rbx
jmp 0x12ece
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0xb8, %rdi
callq 0xa370
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x12dc1
movb $0x1, %r14b
jmp 0x12f05
movq %rax, %rbx
jmp 0x13008
movq %rax, %rbx
leaq -0x1a0(%rbp), %rdi
callq 0xa370
leaq -0x728(%rbp), %rdi
callq 0xa370
leaq -0x110(%rbp), %rdi
callq 0xa370
leaq -0xb8(%rbp), %rdi
callq 0xa370
leaq -0x70(%rbp), %rdi
callq 0xa370
leaq -0xe8(%rbp), %rdi
callq 0xa370
jmp 0x12ece
movq %rax, %rbx
leaq -0x8f0(%rbp), %rdi
callq 0xa550
jmp 0x12e72
movq %rax, %rbx
jmp 0x12fe4
movq %rax, %rbx
leaq -0xe58(%rbp), %rdi
callq 0xa230
jmp 0x12ec2
movq %rax, %rbx
jmp 0x12dfa
movq %rax, %rbx
jmp 0x13014
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0xb8, %rdi
callq 0xa370
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x12e76
leaq -0x2a0(%rbp), %rdi
callq 0xa550
pushq $0x60
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x478, %rdi           # imm = 0xFB88
callq 0xa370
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x12ea0
jmp 0x13008
movq %rax, %rbx
leaq -0x478(%rbp), %rdi
callq 0xa230
leaq -0x8c0(%rbp), %rdi
callq 0xa230
jmp 0x13041
movq %rax, %rbx
jmp 0x12f9b
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0xa370
jmp 0x12f8f
movq %rax, %rbx
xorl %r14d, %r14d
movq %r15, -0xc0(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0xa370
leaq -0x220(%rbp), %rdi
callq 0xa370
leaq -0x180(%rbp), %rdi
callq 0xa370
leaq -0xb8(%rbp), %r15
cmpq -0xc0(%rbp), %r15
sete %al
testb %r14b, %r14b
jne 0x12f5b
testb %al, %al
jne 0x12f5b
movq -0xc0(%rbp), %r14
addq $-0x20, %r14
movq %r14, %rdi
callq 0xa370
cmpq %r15, %r14
jne 0x12f4a
leaq -0x288(%rbp), %rdi
callq 0xa550
pushq $0x60
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x478, %rdi           # imm = 0xFB88
callq 0xa370
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x12f6b
jmp 0x12fe4
movq %rax, %rbx
jmp 0x12fa7
movq %rax, %rbx
leaq -0x8c0(%rbp), %rdi
callq 0xa370
leaq -0x478(%rbp), %rdi
callq 0xa370
leaq -0xb8(%rbp), %rdi
jmp 0x13048
movq %rax, %rbx
leaq -0x930(%rbp), %rdi
jmp 0x1303c
jmp 0x12fc1
movq %rax, %rbx
jmp 0x1304d
movq %rax, %rbx
leaq -0x478(%rbp), %r14
addq $-0x20, %r15
movq %r15, %rdi
callq 0xa370
cmpq %r14, %r15
jne 0x12fd3
leaq -0x578(%rbp), %rdi
jmp 0x1300f
movq %rax, %rbx
leaq -0x478(%rbp), %r14
addq $-0x20, %r15
movq %r15, %rdi
callq 0xa370
cmpq %r14, %r15
jne 0x12ff7
leaq -0x598(%rbp), %rdi
callq 0xa370
leaq -0x160(%rbp), %rdi
callq 0xa370
leaq -0x70(%rbp), %rdi
callq 0xa370
leaq -0xe8(%rbp), %rdi
callq 0xa370
leaq -0x110(%rbp), %rdi
callq 0xa370
leaq -0x140(%rbp), %rdi
callq 0xa370
leaq -0x1c8(%rbp), %rdi
callq 0xa370
testq %r13, %r13
je 0x13079
movq -0x78(%rbp), %r14
addq $-0x20, %r14
shlq $0x5, %r13
leaq (%r14,%r13), %rdi
callq 0xa370
addq $-0x20, %r13
jne 0x1306a
leaq -0x240(%rbp), %rdi
callq 0xa370
movq -0xc8(%rbp), %r12
movq %r12, %rdi
callq 0xa230
movq %rbx, %rdi
callq 0xad00
movq %rax, %rbx
jmp 0x13041
nop