// File: temelmertcan[P]multgen/src/wallace.cpp
// Function: create_two_result_vectors(std::queue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::deque<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>>>>>*&, int, std::queue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::deque<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>>>>>&, bool, int&, bool**&)
void create_two_result_vectors (std::queue<string>*& main_queue,
                                int out_size,
                                std::queue<string>& verilog,
                                bool signed_mult,
                                int& result_vector_size,
                                bool**& zeros_in_output){

  int final_offset = 0;
  int final_size = 0;
  bool flag = false;

  string final_in1 = " }";
  string final_in2 = " }";

  std::queue<string> fin1;
  std::queue<string> fin2;

  zeros_in_output = new bool*[2];
  for (int i = 0; i < 2; i++){
    zeros_in_output[i] = new bool[out_size];
    for (int j = 0; j < out_size; j++)
      zeros_in_output[i][j] = false;
  }
  

  //cout << "hereee" << endl;

  for (int j = 0; j < out_size; j++){

    if (flag || main_queue[j].size()>1) {
      flag = true;

      bool b = false;
      for (int i = j; main_queue[i].empty() && i<out_size; i++ )
        if (i==out_size-1)
          b=true;
      if(b)
        break;

      fin1.push (main_queue[j].empty() ? "1'b0" : main_queue[j].front());

      if(main_queue[j].empty())
	zeros_in_output[0][j] = true;

      // final_in1 += (main_queue[j].empty() ? "1'b0" : main_queue[j].front());

      if (!main_queue[j].empty())
        main_queue[j].pop();

      fin2.push (main_queue[j].empty() ? "1'b0" : main_queue[j].front());
      
      if(main_queue[j].empty())
	zeros_in_output[1][j] = true;
      
      //final_in2 += (main_queue[j].empty() ? "1'b0" : main_queue[j].front());
      if (!main_queue[j].empty())
        main_queue[j].pop();
      final_size++;

    } else {
      final_offset++;
      string cur = "assign result0[" + to_string(j) + "] = "
        + main_queue[j].front() + ";";
      main_queue[j].pop();
      verilog.push(cur);
      cur = "assign result1[" + to_string(j) + "] = 1'b0;";
      zeros_in_output[1][j] = true;
      verilog.push(cur);
    }
  }

  while (!fin1.empty()) {
    final_in1 = fin1.front() + final_in1;
    if (fin1.size() > 1)
      final_in1 = ", " + final_in1;
    else
      final_in1 = "{" + final_in1;
    fin1.pop();
  }

  while (!fin2.empty()) {
    final_in2 = fin2.front() + final_in2;
    if (fin2.size() > 1)
      final_in2 = ", " + final_in2;
    else
      final_in2 = "{" + final_in2;
    fin2.pop();
  }

  verilog.push ("");

  if (final_size > 0){

    verilog.push ("assign result0[" + to_string(final_size+final_offset+-1) + ":"
                  + to_string(final_offset) + "] = " + final_in1 + ";");
    verilog.push ("assign result1[" + to_string(final_size+final_offset+-1) + ":"
                  + to_string(final_offset) + "] = " + final_in2 + ";");

  }

  result_vector_size = final_size+final_offset;

  for (int i = result_vector_size; i< out_size; i++)
    if (signed_mult && false){
      verilog.push("assign result0["+to_string(i)+"] = result0["+to_string(result_vector_size-1)+"];");
      verilog.push("assign result1["+to_string(i)+"] = result1["+to_string(result_vector_size-1)+"];");
    }else{
      zeros_in_output[0][i] = true;
      zeros_in_output[1][i] = true;
      verilog.push("assign result0["+to_string(i)+"] = 1'b0;");
      verilog.push("assign result1["+to_string(i)+"] = 1'b0;");
    }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x8d0, %rsp            # imm = 0x8D0
movb %cl, %al
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movl $0x0, -0x34(%rbp)
movl $0x0, -0x38(%rbp)
movb $0x0, -0x39(%rbp)
leaq -0x61(%rbp), %rdi
movq %rdi, -0x7e0(%rbp)
callq 0x3430
movq -0x7e0(%rbp), %rdx
leaq 0xd08f(%rip), %rsi      # 0x59684
leaq -0x60(%rbp), %rdi
callq 0x3320
jmp 0x4c600
leaq -0x61(%rbp), %rdi
callq 0x32a0
leaq -0x99(%rbp), %rdi
movq %rdi, -0x7e8(%rbp)
callq 0x3430
movq -0x7e8(%rbp), %rdx
leaq 0xd05a(%rip), %rsi      # 0x59684
leaq -0x98(%rbp), %rdi
callq 0x3320
jmp 0x4c638
leaq -0x99(%rbp), %rdi
callq 0x32a0
leaq -0xf0(%rbp), %rdi
callq 0x1ed10
jmp 0x4c652
leaq -0x140(%rbp), %rdi
callq 0x1ed10
jmp 0x4c660
movl $0x10, %edi
callq 0x3030
movq %rax, -0x7f0(%rbp)
jmp 0x4c673
movq -0x7f0(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, (%rax)
movl $0x0, -0x144(%rbp)
cmpl $0x2, -0x144(%rbp)
jge 0x4c798
movslq -0xc(%rbp), %rdi
testq %rdi, %rdi
movq $-0x1, %rax
cmovsq %rax, %rdi
callq 0x3030
movq %rax, -0x7f8(%rbp)
jmp 0x4c6b8
movq -0x7f8(%rbp), %rdx
movq -0x30(%rbp), %rax
movq (%rax), %rax
movslq -0x144(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl $0x0, -0x148(%rbp)
movl -0x148(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x4c782
movq -0x30(%rbp), %rax
movq (%rax), %rax
movslq -0x144(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x148(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movl -0x148(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x148(%rbp)
jmp 0x4c6db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x61(%rbp), %rdi
callq 0x32a0
jmp 0x4dc27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x99(%rbp), %rdi
callq 0x32a0
jmp 0x4dc1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4dc12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4dc06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4dbfa
jmp 0x4c784
movl -0x144(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x144(%rbp)
jmp 0x4c68b
movl $0x0, -0x14c(%rbp)
movl -0x14c(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x4cee6
testb $0x1, -0x39(%rbp)
jne 0x4c7ef
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x487c0
movq %rax, -0x800(%rbp)
jmp 0x4c7de
movq -0x800(%rbp), %rax
cmpq $0x1, %rax
jbe 0x4cc35
movb $0x1, -0x39(%rbp)
movb $0x0, -0x14d(%rbp)
movl -0x14c(%rbp), %eax
movl %eax, -0x154(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x154(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x1ecb0
movb %al, -0x801(%rbp)
jmp 0x4c82c
movb -0x801(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x802(%rbp)
jne 0x4c841
jmp 0x4c853
movl -0x154(%rbp), %eax
cmpl -0xc(%rbp), %eax
setl %al
movb %al, -0x802(%rbp)
movb -0x802(%rbp), %al
testb $0x1, %al
jne 0x4c85f
jmp 0x4c88c
movl -0x154(%rbp), %eax
movl -0xc(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x4c876
movb $0x1, -0x14d(%rbp)
jmp 0x4c878
movl -0x154(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x154(%rbp)
jmp 0x4c806
testb $0x1, -0x14d(%rbp)
je 0x4c89a
jmp 0x4cee6
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
movb $0x0, -0x17a(%rbp)
callq 0x1ecb0
movb %al, -0x803(%rbp)
jmp 0x4c8c7
movb -0x803(%rbp), %al
testb $0x1, %al
jne 0x4c8d3
jmp 0x4c90b
leaq -0x179(%rbp), %rdi
movq %rdi, -0x810(%rbp)
callq 0x3430
movq -0x810(%rbp), %rdx
movb $0x1, -0x17a(%rbp)
leaq 0xc6d9(%rip), %rsi      # 0x58fd4
leaq -0x178(%rbp), %rdi
callq 0x3320
jmp 0x4c909
jmp 0x4c949
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x1ecd0
movq %rax, -0x818(%rbp)
jmp 0x4c932
movq -0x818(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x3100
jmp 0x4c947
jmp 0x4c949
leaq -0xf0(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x1e3c0
jmp 0x4c95e
leaq -0x178(%rbp), %rdi
callq 0x31a0
testb $0x1, -0x17a(%rbp)
jne 0x4c975
jmp 0x4c981
leaq -0x179(%rbp), %rdi
callq 0x32a0
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x1ecb0
movb %al, -0x819(%rbp)
jmp 0x4c9a7
movb -0x819(%rbp), %al
testb $0x1, %al
jne 0x4c9b3
jmp 0x4ca0c
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rax
movslq -0x14c(%rbp), %rcx
movb $0x1, (%rax,%rcx)
jmp 0x4ca0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4c9f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x31a0
testb $0x1, -0x17a(%rbp)
jne 0x4c9fb
jmp 0x4ca07
leaq -0x179(%rbp), %rdi
callq 0x32a0
jmp 0x4dbfa
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x1ecb0
movb %al, -0x81a(%rbp)
jmp 0x4ca32
movb -0x81a(%rbp), %al
testb $0x1, %al
jne 0x4ca60
jmp 0x4ca3e
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x1ecf0
jmp 0x4ca5e
jmp 0x4ca60
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
movb $0x0, -0x1a2(%rbp)
callq 0x1ecb0
movb %al, -0x81b(%rbp)
jmp 0x4ca8d
movb -0x81b(%rbp), %al
testb $0x1, %al
jne 0x4ca99
jmp 0x4cad1
leaq -0x1a1(%rbp), %rdi
movq %rdi, -0x828(%rbp)
callq 0x3430
movq -0x828(%rbp), %rdx
movb $0x1, -0x1a2(%rbp)
leaq 0xc513(%rip), %rsi      # 0x58fd4
leaq -0x1a0(%rbp), %rdi
callq 0x3320
jmp 0x4cacf
jmp 0x4cb0f
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x1ecd0
movq %rax, -0x830(%rbp)
jmp 0x4caf8
movq -0x830(%rbp), %rsi
leaq -0x1a0(%rbp), %rdi
callq 0x3100
jmp 0x4cb0d
jmp 0x4cb0f
leaq -0x140(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x1e3c0
jmp 0x4cb24
leaq -0x1a0(%rbp), %rdi
callq 0x31a0
testb $0x1, -0x1a2(%rbp)
jne 0x4cb3b
jmp 0x4cb47
leaq -0x1a1(%rbp), %rdi
callq 0x32a0
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x1ecb0
movb %al, -0x831(%rbp)
jmp 0x4cb6d
movb -0x831(%rbp), %al
testb $0x1, %al
jne 0x4cb79
jmp 0x4cbd3
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movslq -0x14c(%rbp), %rcx
movb $0x1, (%rax,%rcx)
jmp 0x4cbd3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4cbb7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x31a0
testb $0x1, -0x1a2(%rbp)
jne 0x4cbc2
jmp 0x4cbce
leaq -0x1a1(%rbp), %rdi
callq 0x32a0
jmp 0x4dbfa
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x1ecb0
movb %al, -0x832(%rbp)
jmp 0x4cbf9
movb -0x832(%rbp), %al
testb $0x1, %al
jne 0x4cc27
jmp 0x4cc05
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x1ecf0
jmp 0x4cc25
jmp 0x4cc27
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x4ced0
movl -0x34(%rbp), %eax
incl %eax
movl %eax, -0x34(%rbp)
movl -0x14c(%rbp), %esi
leaq -0x248(%rbp), %rdi
callq 0x1e700
jmp 0x4cc51
leaq 0xca2f(%rip), %rsi      # 0x59687
leaq -0x228(%rbp), %rdi
leaq -0x248(%rbp), %rdx
callq 0x1e930
jmp 0x4cc6d
leaq 0xb5e1(%rip), %rdx      # 0x58255
leaq -0x208(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x1e560
jmp 0x4cc89
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x1ecd0
movq %rax, -0x840(%rbp)
jmp 0x4ccb0
movq -0x840(%rbp), %rdx
leaq -0x1e8(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x1e980
jmp 0x4cccc
leaq 0xca38(%rip), %rdx      # 0x5970b
leaq -0x1c8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x1e560
jmp 0x4cce8
leaq -0x1e8(%rbp), %rdi
callq 0x31a0
leaq -0x208(%rbp), %rdi
callq 0x31a0
leaq -0x228(%rbp), %rdi
callq 0x31a0
leaq -0x248(%rbp), %rdi
callq 0x31a0
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movslq -0x14c(%rbp), %rax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
addq %rax, %rdi
callq 0x1ecf0
jmp 0x4cd38
movq -0x18(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x2e150
jmp 0x4cd4a
movl -0x14c(%rbp), %esi
leaq -0x2a8(%rbp), %rdi
callq 0x1e700
jmp 0x4cd5e
leaq 0xc932(%rip), %rsi      # 0x59697
leaq -0x288(%rbp), %rdi
leaq -0x2a8(%rbp), %rdx
callq 0x1e930
jmp 0x4cd7a
leaq 0xc926(%rip), %rdx      # 0x596a7
leaq -0x268(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x1e560
jmp 0x4cd96
leaq -0x1c8(%rbp), %rdi
movq %rdi, -0x848(%rbp)
leaq -0x268(%rbp), %rsi
movq %rsi, -0x850(%rbp)
callq 0x32b0
movq -0x850(%rbp), %rdi
callq 0x31a0
leaq -0x288(%rbp), %rdi
callq 0x31a0
leaq -0x2a8(%rbp), %rdi
callq 0x31a0
movq -0x848(%rbp), %rsi
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movslq -0x14c(%rbp), %rcx
movb $0x1, (%rax,%rcx)
movq -0x18(%rbp), %rdi
callq 0x2e150
jmp 0x4ce03
leaq -0x1c8(%rbp), %rdi
callq 0x31a0
jmp 0x4ced0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4ce6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4ce62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4ce56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x31a0
leaq -0x208(%rbp), %rdi
callq 0x31a0
leaq -0x228(%rbp), %rdi
callq 0x31a0
leaq -0x248(%rbp), %rdi
callq 0x31a0
jmp 0x4dbfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4cebf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4ceb3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x31a0
leaq -0x2a8(%rbp), %rdi
callq 0x31a0
leaq -0x1c8(%rbp), %rdi
callq 0x31a0
jmp 0x4dbfa
jmp 0x4ced2
movl -0x14c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14c(%rbp)
jmp 0x4c7a2
jmp 0x4cee8
leaq -0xf0(%rbp), %rdi
callq 0x1ecb0
movb %al, -0x851(%rbp)
jmp 0x4cefc
movb -0x851(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4cf0d
jmp 0x4cfff
leaq -0xf0(%rbp), %rdi
callq 0x1ecd0
movq %rax, -0x860(%rbp)
jmp 0x4cf22
movq -0x860(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
leaq -0x60(%rbp), %rdx
callq 0x1ed40
jmp 0x4cf3b
leaq -0x60(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
movq %rsi, -0x870(%rbp)
callq 0x32b0
movq -0x870(%rbp), %rdi
callq 0x31a0
leaq -0xf0(%rbp), %rdi
callq 0x487c0
movq %rax, -0x868(%rbp)
jmp 0x4cf73
movq -0x868(%rbp), %rax
cmpq $0x1, %rax
jbe 0x4cfb7
leaq 0xb672(%rip), %rsi      # 0x585f9
leaq -0x2e8(%rbp), %rdi
leaq -0x60(%rbp), %rdx
callq 0x1e820
jmp 0x4cf99
leaq -0x60(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x32b0
leaq -0x2e8(%rbp), %rdi
callq 0x31a0
jmp 0x4cfec
leaq 0xbf93(%rip), %rsi      # 0x58f51
leaq -0x308(%rbp), %rdi
leaq -0x60(%rbp), %rdx
callq 0x1e820
jmp 0x4cfd0
leaq -0x60(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x32b0
leaq -0x308(%rbp), %rdi
callq 0x31a0
leaq -0xf0(%rbp), %rdi
callq 0x1ecf0
jmp 0x4cffa
jmp 0x4cee8
jmp 0x4d001
leaq -0x140(%rbp), %rdi
callq 0x1ecb0
movb %al, -0x871(%rbp)
jmp 0x4d015
movb -0x871(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4d026
jmp 0x4d12a
leaq -0x140(%rbp), %rdi
callq 0x1ecd0
movq %rax, -0x880(%rbp)
jmp 0x4d03b
movq -0x880(%rbp), %rsi
leaq -0x328(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x1ed40
jmp 0x4d057
leaq -0x98(%rbp), %rdi
leaq -0x328(%rbp), %rsi
movq %rsi, -0x890(%rbp)
callq 0x32b0
movq -0x890(%rbp), %rdi
callq 0x31a0
leaq -0x140(%rbp), %rdi
callq 0x487c0
movq %rax, -0x888(%rbp)
jmp 0x4d092
movq -0x888(%rbp), %rax
cmpq $0x1, %rax
jbe 0x4d0dc
leaq 0xb553(%rip), %rsi      # 0x585f9
leaq -0x348(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x1e820
jmp 0x4d0bb
leaq -0x98(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x32b0
leaq -0x348(%rbp), %rdi
callq 0x31a0
jmp 0x4d117
leaq 0xbe6e(%rip), %rsi      # 0x58f51
leaq -0x368(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x1e820
jmp 0x4d0f8
leaq -0x98(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0x32b0
leaq -0x368(%rbp), %rdi
callq 0x31a0
leaq -0x140(%rbp), %rdi
callq 0x1ecf0
jmp 0x4d125
jmp 0x4d001
movq -0x18(%rbp), %rax
movq %rax, -0x8a0(%rbp)
leaq -0x389(%rbp), %rdi
movq %rdi, -0x898(%rbp)
callq 0x3430
movq -0x898(%rbp), %rdx
leaq 0xc48b(%rip), %rsi      # 0x595e1
leaq -0x388(%rbp), %rdi
callq 0x3320
jmp 0x4d164
movq -0x8a0(%rbp), %rdi
leaq -0x388(%rbp), %rsi
callq 0x1e3c0
jmp 0x4d179
leaq -0x388(%rbp), %rdi
callq 0x31a0
leaq -0x389(%rbp), %rdi
callq 0x32a0
cmpl $0x0, -0x38(%rbp)
jle 0x4d636
movq -0x18(%rbp), %rax
movq %rax, -0x8a8(%rbp)
movl -0x38(%rbp), %edx
movl -0x34(%rbp), %eax
movl %eax, %ecx
movl %edx, %eax
leal -0x1(%rax,%rcx), %esi
leaq -0x470(%rbp), %rdi
callq 0x1e700
jmp 0x4d1c2
leaq 0xc4be(%rip), %rsi      # 0x59687
leaq -0x450(%rbp), %rdi
leaq -0x470(%rbp), %rdx
callq 0x1e930
jmp 0x4d1de
leaq 0x94c5(%rip), %rdx      # 0x566aa
leaq -0x430(%rbp), %rdi
leaq -0x450(%rbp), %rsi
callq 0x1e560
jmp 0x4d1fa
movl -0x34(%rbp), %esi
leaq -0x490(%rbp), %rdi
callq 0x1e700
jmp 0x4d20b
leaq -0x410(%rbp), %rdi
leaq -0x430(%rbp), %rsi
leaq -0x490(%rbp), %rdx
callq 0x1e5b0
jmp 0x4d227
leaq 0xb027(%rip), %rdx      # 0x58255
leaq -0x3f0(%rbp), %rdi
leaq -0x410(%rbp), %rsi
callq 0x1e560
jmp 0x4d243
leaq -0x3d0(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
leaq -0x60(%rbp), %rdx
callq 0x1e980
jmp 0x4d25c
leaq 0xc4a8(%rip), %rdx      # 0x5970b
leaq -0x3b0(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x1e560
jmp 0x4d278
movq -0x8a8(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x1e3c0
jmp 0x4d28d
leaq -0x3b0(%rbp), %rdi
callq 0x31a0
leaq -0x3d0(%rbp), %rdi
callq 0x31a0
leaq -0x3f0(%rbp), %rdi
callq 0x31a0
leaq -0x410(%rbp), %rdi
callq 0x31a0
leaq -0x490(%rbp), %rdi
callq 0x31a0
leaq -0x430(%rbp), %rdi
callq 0x31a0
leaq -0x450(%rbp), %rdi
callq 0x31a0
leaq -0x470(%rbp), %rdi
callq 0x31a0
movq -0x18(%rbp), %rax
movq %rax, -0x8b0(%rbp)
movl -0x38(%rbp), %edx
movl -0x34(%rbp), %eax
movl %eax, %ecx
movl %edx, %eax
leal -0x1(%rax,%rcx), %esi
leaq -0x570(%rbp), %rdi
callq 0x1e700
jmp 0x4d314
leaq 0xc37c(%rip), %rsi      # 0x59697
leaq -0x550(%rbp), %rdi
leaq -0x570(%rbp), %rdx
callq 0x1e930
jmp 0x4d330
leaq 0x9373(%rip), %rdx      # 0x566aa
leaq -0x530(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0x1e560
jmp 0x4d34c
movl -0x34(%rbp), %esi
leaq -0x590(%rbp), %rdi
callq 0x1e700
jmp 0x4d35d
leaq -0x510(%rbp), %rdi
leaq -0x530(%rbp), %rsi
leaq -0x590(%rbp), %rdx
callq 0x1e5b0
jmp 0x4d379
leaq 0xaed5(%rip), %rdx      # 0x58255
leaq -0x4f0(%rbp), %rdi
leaq -0x510(%rbp), %rsi
callq 0x1e560
jmp 0x4d395
leaq -0x4d0(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
leaq -0x98(%rbp), %rdx
callq 0x1e980
jmp 0x4d3b1
leaq 0xc353(%rip), %rdx      # 0x5970b
leaq -0x4b0(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x1e560
jmp 0x4d3cd
movq -0x8b0(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
callq 0x1e3c0
jmp 0x4d3e2
leaq -0x4b0(%rbp), %rdi
callq 0x31a0
leaq -0x4d0(%rbp), %rdi
callq 0x31a0
leaq -0x4f0(%rbp), %rdi
callq 0x31a0
leaq -0x510(%rbp), %rdi
callq 0x31a0
leaq -0x590(%rbp), %rdi
callq 0x31a0
leaq -0x530(%rbp), %rdi
callq 0x31a0
leaq -0x550(%rbp), %rdi
callq 0x31a0
leaq -0x570(%rbp), %rdi
callq 0x31a0
jmp 0x4d636
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d46d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x31a0
leaq -0x389(%rbp), %rdi
callq 0x32a0
jmp 0x4dbfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d549
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d53d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d531
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d525
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d519
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d50d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d501
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x31a0
leaq -0x3d0(%rbp), %rdi
callq 0x31a0
leaq -0x3f0(%rbp), %rdi
callq 0x31a0
leaq -0x410(%rbp), %rdi
callq 0x31a0
leaq -0x490(%rbp), %rdi
callq 0x31a0
leaq -0x430(%rbp), %rdi
callq 0x31a0
leaq -0x450(%rbp), %rdi
callq 0x31a0
leaq -0x470(%rbp), %rdi
callq 0x31a0
jmp 0x4dbfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d625
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d619
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d60d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d601
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d5f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d5e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d5dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0x31a0
leaq -0x4d0(%rbp), %rdi
callq 0x31a0
leaq -0x4f0(%rbp), %rdi
callq 0x31a0
leaq -0x510(%rbp), %rdi
callq 0x31a0
leaq -0x590(%rbp), %rdi
callq 0x31a0
leaq -0x530(%rbp), %rdi
callq 0x31a0
leaq -0x550(%rbp), %rdi
callq 0x31a0
leaq -0x570(%rbp), %rdi
callq 0x31a0
jmp 0x4dbfa
movl -0x38(%rbp), %ecx
addl -0x34(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, (%rax)
movq -0x28(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x594(%rbp)
movl -0x594(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x4dbc4
testb $0x1, -0x19(%rbp)
je 0x4d9bf
xorl %eax, %eax
testb $0x1, %al
jne 0x4d672
jmp 0x4d9bf
movq -0x18(%rbp), %rax
movq %rax, -0x8b8(%rbp)
movl -0x594(%rbp), %esi
leaq -0x638(%rbp), %rdi
callq 0x1e700
jmp 0x4d691
leaq 0xbfef(%rip), %rsi      # 0x59687
leaq -0x618(%rbp), %rdi
leaq -0x638(%rbp), %rdx
callq 0x1e930
jmp 0x4d6ad
leaq 0xbffd(%rip), %rdx      # 0x596b1
leaq -0x5f8(%rbp), %rdi
leaq -0x618(%rbp), %rsi
callq 0x1e560
jmp 0x4d6c9
movq -0x28(%rbp), %rax
movl (%rax), %esi
decl %esi
leaq -0x658(%rbp), %rdi
callq 0x1e700
jmp 0x4d6df
leaq -0x5d8(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
leaq -0x658(%rbp), %rdx
callq 0x1e5b0
jmp 0x4d6fb
leaq 0xb35b(%rip), %rdx      # 0x58a5d
leaq -0x5b8(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0x1e560
jmp 0x4d717
movq -0x8b8(%rbp), %rdi
leaq -0x5b8(%rbp), %rsi
callq 0x1e3c0
jmp 0x4d72c
leaq -0x5b8(%rbp), %rdi
callq 0x31a0
leaq -0x5d8(%rbp), %rdi
callq 0x31a0
leaq -0x658(%rbp), %rdi
callq 0x31a0
leaq -0x5f8(%rbp), %rdi
callq 0x31a0
leaq -0x618(%rbp), %rdi
callq 0x31a0
leaq -0x638(%rbp), %rdi
callq 0x31a0
movq -0x18(%rbp), %rax
movq %rax, -0x8c0(%rbp)
movl -0x594(%rbp), %esi
leaq -0x6f8(%rbp), %rdi
callq 0x1e700
jmp 0x4d793
leaq 0xbefd(%rip), %rsi      # 0x59697
leaq -0x6d8(%rbp), %rdi
leaq -0x6f8(%rbp), %rdx
callq 0x1e930
jmp 0x4d7af
leaq 0xbf08(%rip), %rdx      # 0x596be
leaq -0x6b8(%rbp), %rdi
leaq -0x6d8(%rbp), %rsi
callq 0x1e560
jmp 0x4d7cb
movq -0x28(%rbp), %rax
movl (%rax), %esi
decl %esi
leaq -0x718(%rbp), %rdi
callq 0x1e700
jmp 0x4d7e1
leaq -0x698(%rbp), %rdi
leaq -0x6b8(%rbp), %rsi
leaq -0x718(%rbp), %rdx
callq 0x1e5b0
jmp 0x4d7fd
leaq 0xb259(%rip), %rdx      # 0x58a5d
leaq -0x678(%rbp), %rdi
leaq -0x698(%rbp), %rsi
callq 0x1e560
jmp 0x4d819
movq -0x8c0(%rbp), %rdi
leaq -0x678(%rbp), %rsi
callq 0x1e3c0
jmp 0x4d82e
leaq -0x678(%rbp), %rdi
callq 0x31a0
leaq -0x698(%rbp), %rdi
callq 0x31a0
leaq -0x718(%rbp), %rdi
callq 0x31a0
leaq -0x6b8(%rbp), %rdi
callq 0x31a0
leaq -0x6d8(%rbp), %rdi
callq 0x31a0
leaq -0x6f8(%rbp), %rdi
callq 0x31a0
jmp 0x4dbae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d90c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d900
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d8f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d8e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d8dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x5b8(%rbp), %rdi
callq 0x31a0
leaq -0x5d8(%rbp), %rdi
callq 0x31a0
leaq -0x658(%rbp), %rdi
callq 0x31a0
leaq -0x5f8(%rbp), %rdi
callq 0x31a0
leaq -0x618(%rbp), %rdi
callq 0x31a0
leaq -0x638(%rbp), %rdi
callq 0x31a0
jmp 0x4dbfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d9ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d9a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d996
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d98a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4d97e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x678(%rbp), %rdi
callq 0x31a0
leaq -0x698(%rbp), %rdi
callq 0x31a0
leaq -0x718(%rbp), %rdi
callq 0x31a0
leaq -0x6b8(%rbp), %rdi
callq 0x31a0
leaq -0x6d8(%rbp), %rdi
callq 0x31a0
leaq -0x6f8(%rbp), %rdi
callq 0x31a0
jmp 0x4dbfa
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rax
movslq -0x594(%rbp), %rcx
movb $0x1, (%rax,%rcx)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movslq -0x594(%rbp), %rcx
movb $0x1, (%rax,%rcx)
movq -0x18(%rbp), %rax
movq %rax, -0x8c8(%rbp)
movl -0x594(%rbp), %esi
leaq -0x778(%rbp), %rdi
callq 0x1e700
jmp 0x4da09
leaq 0xbc77(%rip), %rsi      # 0x59687
leaq -0x758(%rbp), %rdi
leaq -0x778(%rbp), %rdx
callq 0x1e930
jmp 0x4da25
leaq 0xbc7b(%rip), %rdx      # 0x596a7
leaq -0x738(%rbp), %rdi
leaq -0x758(%rbp), %rsi
callq 0x1e560
jmp 0x4da41
movq -0x8c8(%rbp), %rdi
leaq -0x738(%rbp), %rsi
callq 0x1e3c0
jmp 0x4da56
leaq -0x738(%rbp), %rdi
callq 0x31a0
leaq -0x758(%rbp), %rdi
callq 0x31a0
leaq -0x778(%rbp), %rdi
callq 0x31a0
movq -0x18(%rbp), %rax
movq %rax, -0x8d0(%rbp)
movl -0x594(%rbp), %esi
leaq -0x7d8(%rbp), %rdi
callq 0x1e700
jmp 0x4da99
leaq 0xbbf7(%rip), %rsi      # 0x59697
leaq -0x7b8(%rbp), %rdi
leaq -0x7d8(%rbp), %rdx
callq 0x1e930
jmp 0x4dab5
leaq 0xbbeb(%rip), %rdx      # 0x596a7
leaq -0x798(%rbp), %rdi
leaq -0x7b8(%rbp), %rsi
callq 0x1e560
jmp 0x4dad1
movq -0x8d0(%rbp), %rdi
leaq -0x798(%rbp), %rsi
callq 0x1e3c0
jmp 0x4dae6
leaq -0x798(%rbp), %rdi
callq 0x31a0
leaq -0x7b8(%rbp), %rdi
callq 0x31a0
leaq -0x7d8(%rbp), %rdi
callq 0x31a0
jmp 0x4dbae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4db4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4db43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x738(%rbp), %rdi
callq 0x31a0
leaq -0x758(%rbp), %rdi
callq 0x31a0
leaq -0x778(%rbp), %rdi
callq 0x31a0
jmp 0x4dbfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4dba0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x4db94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x798(%rbp), %rdi
callq 0x31a0
leaq -0x7b8(%rbp), %rdi
callq 0x31a0
leaq -0x7d8(%rbp), %rdi
callq 0x31a0
jmp 0x4dbfa
jmp 0x4dbb0
movl -0x594(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x594(%rbp)
jmp 0x4d64e
leaq -0x140(%rbp), %rdi
callq 0x1edc0
leaq -0xf0(%rbp), %rdi
callq 0x1edc0
leaq -0x98(%rbp), %rdi
callq 0x31a0
leaq -0x60(%rbp), %rdi
callq 0x31a0
addq $0x8d0, %rsp            # imm = 0x8D0
popq %rbp
retq
leaq -0x140(%rbp), %rdi
callq 0x1edc0
leaq -0xf0(%rbp), %rdi
callq 0x1edc0
leaq -0x98(%rbp), %rdi
callq 0x31a0
leaq -0x60(%rbp), %rdi
callq 0x31a0
movq -0x70(%rbp), %rdi
callq 0x3420