// File: /workspace/github_cpp_makefile_star2_O2/temelmertcan[P]multgen/src/adders.cpp
// Function: create_hc_adder(int, bool, 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>>>>>&)
void create_hc_adder (int size, bool carryin, std::queue<string>& verilog){

  int index = 0;

  string* g = new string[size];
  string* p = new string[size];

  string* gtmp = new string[size];
  string* ptmp = new string[size];

  ppx_preprocess(size, carryin, index, "HC", gtmp, ptmp, verilog);
  pgtmp_to_pg(size, gtmp, g);
  pgtmp_to_pg(size, ptmp, p);

  verilog.push("\n// Han-Carlson Adder \n");


  // hc step1 :
  verilog.push("");
  verilog.push("// HC stage 1");

  for (int i = 1; i<size; i+=2){

    string new_p = "p_1_"+ to_string(i);
    string new_g = "g_1_"+ to_string(i);

    verilog.push ("wire logic " + new_p + ";");
    verilog.push ("wire logic "+ new_g + ";");

    verilog.push ("assign "+ new_p + " = " + p[i] + " & " + p[i-1] + ";");
    verilog.push ("assign "+ new_g + " = (" + p[i] + " & " + g[i-1] + ") | " + g[i] + ";");

    gtmp[i] =  new_g;
    ptmp[i] =  new_p;
    //index++;
  }

  pgtmp_to_pg(size, gtmp, g);
  pgtmp_to_pg(size, ptmp, p);

  int stage=1;

  // hc midsteps
  for (int diff = 2; diff < size; diff *= 2){
    verilog.push("");
    verilog.push("// HC stage " + to_string(++stage));
    for (int i=1+diff; i < size; i+=2){

      string new_p = "p_" + to_string(stage)+ "_" + to_string(i);
      string new_g = "g_" + to_string(stage)+ "_" + to_string(i);

      verilog.push ("wire logic "+ new_p + ";");
      verilog.push ("wire logic "+ new_g + ";");

      verilog.push ("assign "+ new_p + " = " + p[i] + " & " + p[i-diff] + ";");
      verilog.push ("assign "+ new_g + " = (" + p[i] + " & " + g[i-diff] + ") | " + g[i] + ";");

      gtmp[i] =  new_g;
      ptmp[i] =  new_p;
      index++;
    }
    pgtmp_to_pg(size, gtmp, g);
    pgtmp_to_pg(size, ptmp, p);
  }

  //hc final step
  verilog.push("");
  verilog.push("// HC stage " + to_string(++stage));
  for (int i = 2; i<size; i+=2){

    string new_p = "p_" + to_string(stage)+ "_" + to_string(i);
    string new_g = "g_" + to_string(stage)+ "_" + to_string(i);

    verilog.push ("wire logic "+ new_p + ";");
    verilog.push ("wire logic "+ new_g + ";");

    verilog.push ("assign "+ new_p + " = " + p[i] + " & " + p[i-1] + ";");
    verilog.push ("assign "+ new_g + " = (" + p[i] + " & " + g[i-1] + ") | " + g[i] + ";");

    gtmp[i] =  new_g;
    ptmp[i] =  new_p;
    index++;
  }

  pgtmp_to_pg(size, gtmp, g);
  pgtmp_to_pg(size, ptmp, p);

  verilog.push("");
  verilog.push("// HC postprocess ");

  ppx_postprocess (size, index, g, p, verilog);

  delete[] p;
  delete[] g;

  delete[] ptmp;
  delete[] gtmp;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1e8, %rsp            # imm = 0x1E8
movq %rdx, %r12
movl %esi, %ebx
movl %edi, -0x8c(%rbp)
movslq %edi, %r13
movq %r13, %r15
shlq $0x5, %r15
leaq 0x8(%r15), %rax
testl %r13d, %r13d
pushq $-0x1
popq %r14
cmovnsq %rax, %r14
movq %r14, %rdi
callq 0x2030
leaq 0x8(%rax), %rdx
movq %rax, -0x30(%rbp)
movq %r13, (%rax)
movq %r13, -0x88(%rbp)
testl %r13d, %r13d
je 0x14ba3
movq -0x30(%rbp), %rax
leaq 0x18(%rax), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rcx
addq $-0x20, %r15
jne 0x14b8d
movq %rdx, -0xd8(%rbp)
movq %r14, %rdi
callq 0x2030
leaq 0x8(%rax), %rsi
movq %rax, -0xb8(%rbp)
movq -0x88(%rbp), %rcx
movq %rcx, (%rax)
testl %ecx, %ecx
je 0x14bf7
movq -0xb8(%rbp), %rax
leaq 0x18(%rax), %rcx
movq -0x88(%rbp), %rdx
shlq $0x5, %rdx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rcx
addq $-0x20, %rdx
jne 0x14be1
movq %rsi, -0x140(%rbp)
movq %r14, %rdi
callq 0x2030
leaq 0x8(%rax), %rsi
movq -0x88(%rbp), %rcx
movq %rax, -0x38(%rbp)
movq %rcx, (%rax)
testl %ecx, %ecx
movl -0x8c(%rbp), %r15d
je 0x14c4c
movq -0x38(%rbp), %rax
leaq 0x18(%rax), %rcx
movq -0x88(%rbp), %rdx
shlq $0x5, %rdx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rcx
addq $-0x20, %rdx
jne 0x14c36
movq %rsi, -0xd0(%rbp)
movq %r14, %rdi
callq 0x2030
movq %rax, %r14
addq $0x8, %rax
movq -0x88(%rbp), %rcx
movq %rcx, (%r14)
testl %ecx, %ecx
je 0x14c95
leaq 0x18(%r14), %rcx
movq -0x88(%rbp), %rdx
shlq $0x5, %rdx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rcx
addq $-0x20, %rdx
jne 0x14c7f
movq %rax, -0xc8(%rbp)
leaq 0x1ca36(%rip), %rsi     # 0x316d9
leaq -0x200(%rbp), %rdi
leaq -0x60(%rbp), %rdx
callq 0x20b0
movq %r12, (%rsp)
movzbl %bl, %esi
leaq -0x200(%rbp), %rcx
leaq -0xd0(%rbp), %r8
leaq -0xc8(%rbp), %r9
movl %r15d, %edi
callq 0x13d7c
leaq -0x200(%rbp), %rdi
callq 0x20f0
leaq -0xd0(%rbp), %rsi
leaq -0xd8(%rbp), %rdx
movl %r15d, %edi
callq 0x14ae8
leaq -0xc8(%rbp), %rsi
leaq -0x140(%rbp), %rdx
movl %r15d, %edi
callq 0x14ae8
leaq 0x1df13(%rip), %rsi     # 0x32c29
leaq -0x60(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x20b0
leaq -0x60(%rbp), %rsi
movq %r12, %rdi
callq 0x120e4
leaq -0x60(%rbp), %rdi
callq 0x20f0
leaq 0x1e88f(%rip), %rsi     # 0x335d1
leaq -0x60(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x20b0
leaq -0x60(%rbp), %rsi
movq %r12, %rdi
callq 0x120e4
leaq -0x60(%rbp), %rdi
callq 0x20f0
leaq 0x1ded3(%rip), %rsi     # 0x32c41
leaq -0x60(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x20b0
leaq -0x60(%rbp), %rsi
movq %r12, -0x40(%rbp)
movq %r12, %rdi
callq 0x120e4
leaq -0x60(%rbp), %rdi
callq 0x20f0
movq -0xb8(%rbp), %rax
leaq 0x28(%rax), %r15
addq $0x28, -0x30(%rbp)
addq $0x28, %r14
addq $0x28, -0x38(%rbp)
pushq $0x1
popq %rax
leaq -0x118(%rbp), %rbx
cmpq -0x88(%rbp), %rax
jge 0x150fc
leaq -0xb0(%rbp), %r12
movq %r12, %rdi
movq %rax, %r13
movl %r13d, %esi
callq 0x11c73
leaq -0x60(%rbp), %rdi
leaq 0x1de68(%rip), %rsi     # 0x32c4f
movq %r12, %rdx
callq 0x11d49
movq %r12, %rdi
callq 0x20f0
movq %rbx, %rdi
movq %r13, -0xc0(%rbp)
movl %r13d, %esi
callq 0x11c73
movq %r12, %rdi
leaq 0x1de41(%rip), %rsi     # 0x32c54
movq %rbx, %rdx
callq 0x11d49
movq %rbx, %rdi
callq 0x20f0
leaq -0x80(%rbp), %r12
movq %r12, %rdi
leaq 0x1de28(%rip), %rsi     # 0x32c59
leaq -0x60(%rbp), %rdx
callq 0x11cd3
movq %rbx, %rdi
movq %r12, %rsi
leaq 0x1e89a(%rip), %rdx     # 0x336e1
callq 0x11ba1
movq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x120e4
movq %rbx, %rdi
callq 0x20f0
movq %r12, %rdi
callq 0x20f0
movq %r12, %rdi
leaq 0x1dde7(%rip), %rsi     # 0x32c59
leaq -0xb0(%rbp), %rdx
callq 0x11cd3
movq %rbx, %rdi
movq %r12, %rsi
leaq 0x1e856(%rip), %rdx     # 0x336e1
callq 0x11ba1
movq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x120e4
movq %rbx, %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
callq 0x20f0
leaq -0x160(%rbp), %r12
movq %r12, %rdi
leaq 0x1d6f1(%rip), %rsi     # 0x325af
leaq -0x60(%rbp), %rdx
callq 0x11cd3
leaq -0x180(%rbp), %r13
movq %r13, %rdi
movq %r12, %rsi
leaq 0x1d378(%rip), %rdx     # 0x32253
callq 0x11ba1
leaq -0x138(%rbp), %r12
movq %r12, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x11d77
leaq -0xf8(%rbp), %r13
movq %r13, %rdi
movq %r12, %rsi
leaq 0x1e27c(%rip), %rdx     # 0x33185
callq 0x11ba1
leaq -0x20(%r15), %rdx
leaq -0x80(%rbp), %r12
movq %r12, %rdi
movq %r13, %rsi
callq 0x11d77
movq %rbx, %rdi
movq %r12, %rsi
leaq 0x1e7b3(%rip), %rdx     # 0x336e1
callq 0x11ba1
movq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x120e4
movq %rbx, %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
callq 0x20f0
leaq -0xf8(%rbp), %rdi
callq 0x20f0
leaq -0x138(%rbp), %rdi
callq 0x20f0
leaq -0x180(%rbp), %rdi
callq 0x20f0
leaq -0x160(%rbp), %rdi
callq 0x20f0
leaq -0x1b8(%rbp), %r12
movq %r12, %rdi
leaq 0x1d61e(%rip), %rsi     # 0x325af
leaq -0xb0(%rbp), %rdx
callq 0x11cd3
leaq -0x1d8(%rbp), %r13
movq %r13, %rdi
movq %r12, %rsi
leaq 0x1d4f6(%rip), %rdx     # 0x324a7
callq 0x11ba1
leaq -0x160(%rbp), %r12
movq %r12, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x11d77
leaq -0x180(%rbp), %r13
movq %r13, %rdi
movq %r12, %rsi
leaq 0x1e1a6(%rip), %rdx     # 0x33185
callq 0x11ba1
movq -0x30(%rbp), %rax
leaq -0x20(%rax), %rdx
leaq -0x138(%rbp), %r12
movq %r12, %rdi
movq %r13, %rsi
callq 0x11d77
leaq -0xf8(%rbp), %r13
movq %r13, %rdi
movq %r12, %rsi
leaq 0x1e056(%rip), %rdx     # 0x33068
callq 0x11ba1
leaq -0x80(%rbp), %r12
movq %r12, %rdi
movq %r13, %rsi
movq -0x30(%rbp), %rdx
callq 0x11d77
movq %rbx, %rdi
movq %r12, %rsi
leaq 0x1e6aa(%rip), %rdx     # 0x336e1
callq 0x11ba1
movq %r15, %r13
movq -0x40(%rbp), %rdi
movq %rbx, %rsi
callq 0x120e4
movq %rbx, %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
callq 0x20f0
leaq -0xf8(%rbp), %rdi
callq 0x20f0
leaq -0x138(%rbp), %rdi
callq 0x20f0
leaq -0x180(%rbp), %rdi
callq 0x20f0
leaq -0x160(%rbp), %rdi
callq 0x20f0
leaq -0x1d8(%rbp), %rdi
callq 0x20f0
leaq -0x1b8(%rbp), %rdi
callq 0x20f0
movq -0x38(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x2130
leaq -0x60(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x2130
leaq -0xb0(%rbp), %rdi
callq 0x20f0
movq %r15, %rdi
callq 0x20f0
movq -0xc0(%rbp), %rax
addq $0x2, %rax
movq %r13, %r15
addq $0x40, %r15
addq $0x40, -0x30(%rbp)
addq $0x40, %r14
addq $0x40, -0x38(%rbp)
jmp 0x14dba
leaq -0xd0(%rbp), %rsi
leaq -0xd8(%rbp), %rdx
movl -0x8c(%rbp), %ebx
movl %ebx, %edi
callq 0x14ae8
leaq -0xc8(%rbp), %rsi
leaq -0x140(%rbp), %rdx
movl %ebx, %edi
callq 0x14ae8
movq -0xb8(%rbp), %rax
addq $0x28, %rax
movq %rax, -0x190(%rbp)
pushq $0x2
popq %r15
pushq $0x1
popq %rax
movl %eax, -0x38(%rbp)
movq $0x0, -0x198(%rbp)
leaq -0x118(%rbp), %r12
movq -0x40(%rbp), %r13
cmpl %ebx, %r15d
jge 0x1566e
leaq -0x60(%rbp), %rbx
movq %rbx, %rdi
leaq 0x1e45c(%rip), %rsi     # 0x335d1
leaq -0xb0(%rbp), %rdx
callq 0x20b0
movq %r13, %rdi
movq %rbx, %rsi
callq 0x120e4
movq %rbx, %rdi
callq 0x20f0
movl -0x38(%rbp), %esi
incl %esi
leaq -0xb0(%rbp), %r14
movq %r14, %rdi
movl %esi, -0x38(%rbp)
callq 0x11c73
movq %rbx, %rdi
leaq 0x1dab0(%rip), %rsi     # 0x32c65
movq %r14, %rdx
callq 0x11d49
movq %r13, %rdi
movq %rbx, %rsi
callq 0x120e4
movq %rbx, %rdi
callq 0x20f0
leaq -0xb0(%rbp), %rdi
callq 0x20f0
movl %r15d, -0x184(%rbp)
movslq %r15d, %rcx
movq %rcx, %rdx
orq $0x1, %rdx
shlq $0x5, %rcx
movq -0x190(%rbp), %rax
movq %rcx, -0xc0(%rbp)
addq %rcx, %rax
movq %rax, -0x1e0(%rbp)
xorl %ebx, %ebx
cmpq -0x88(%rbp), %rdx
jge 0x1562f
movq %rdx, -0x30(%rbp)
leaq -0x80(%rbp), %r14
movq %r14, %rdi
movl -0x38(%rbp), %esi
callq 0x11c73
movq %r12, %rdi
leaq 0x1d384(%rip), %rsi     # 0x325b9
movq %r14, %rdx
callq 0x11d49
leaq -0xb0(%rbp), %rdi
movq %r12, %rsi
leaq 0x1def8(%rip), %rdx     # 0x33146
callq 0x11ba1
leaq -0xf8(%rbp), %r15
movq %r15, %rdi
movq -0x30(%rbp), %rsi
callq 0x11c73
leaq -0x60(%rbp), %rdi
leaq -0xb0(%rbp), %r14
movq %r14, %rsi
movq %r15, %rdx
callq 0x11bca
movq %r15, %rdi
callq 0x20f0
movq %r14, %rdi
callq 0x20f0
movq %r12, %rdi
callq 0x20f0
leaq -0x80(%rbp), %r14
movq %r14, %rdi
callq 0x20f0
movq %r15, %rdi
movl -0x38(%rbp), %esi
callq 0x11c73
movq %r14, %rdi
leaq 0x1d9bd(%rip), %rsi     # 0x32c72
movq %r15, %rdx
callq 0x11d49
movq %r12, %rdi
movq %r14, %rsi
leaq 0x1de7c(%rip), %rdx     # 0x33146
callq 0x11ba1
leaq -0x138(%rbp), %r15
movq %r15, %rdi
movq -0x30(%rbp), %rsi
callq 0x11c73
leaq -0xb0(%rbp), %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x11bca
movq %r15, %rdi
callq 0x20f0
movq %r12, %rdi
callq 0x20f0
movq %r14, %rdi
callq 0x20f0
leaq -0xf8(%rbp), %rdi
callq 0x20f0
movq %r14, %rdi
leaq 0x1d937(%rip), %rsi     # 0x32c59
leaq -0x60(%rbp), %rdx
callq 0x11cd3
movq %r12, %rdi
movq %r14, %rsi
leaq 0x1e3a9(%rip), %rdx     # 0x336e1
callq 0x11ba1
movq %r13, %rdi
movq %r12, %rsi
callq 0x120e4
movq %r12, %rdi
callq 0x20f0
movq %r14, %rdi
callq 0x20f0
movq %r14, %rdi
leaq 0x1d8f7(%rip), %rsi     # 0x32c59
leaq -0xb0(%rbp), %rdx
callq 0x11cd3
movq %r12, %rdi
movq %r14, %rsi
leaq 0x1e366(%rip), %rdx     # 0x336e1
callq 0x11ba1
movq %r13, %rdi
movq %r12, %rsi
callq 0x120e4
movq %r12, %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
callq 0x20f0
leaq -0x160(%rbp), %r14
movq %r14, %rdi
leaq 0x1d202(%rip), %rsi     # 0x325af
leaq -0x60(%rbp), %rdx
callq 0x11cd3
leaq -0x180(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
leaq 0x1ce89(%rip), %rdx     # 0x32253
callq 0x11ba1
movq -0x1e0(%rbp), %rax
leaq (%rax,%rbx), %r13
leaq -0x138(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x11d77
leaq -0xf8(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
leaq 0x1dd82(%rip), %rdx     # 0x33185
callq 0x11ba1
movq -0x190(%rbp), %rax
leaq (%rax,%rbx), %rdx
leaq -0x80(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x11d77
movq %r12, %rdi
movq %r14, %rsi
leaq 0x1e2b2(%rip), %rdx     # 0x336e1
callq 0x11ba1
movq -0x40(%rbp), %rdi
movq %r12, %rsi
callq 0x120e4
movq %r12, %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
callq 0x20f0
leaq -0xf8(%rbp), %rdi
callq 0x20f0
leaq -0x138(%rbp), %rdi
callq 0x20f0
leaq -0x180(%rbp), %rdi
callq 0x20f0
leaq -0x160(%rbp), %rdi
callq 0x20f0
leaq -0x1b8(%rbp), %r14
movq %r14, %rdi
leaq 0x1d11d(%rip), %rsi     # 0x325af
leaq -0xb0(%rbp), %rdx
callq 0x11cd3
leaq -0x1d8(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
leaq 0x1cff5(%rip), %rdx     # 0x324a7
callq 0x11ba1
leaq -0x160(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x11d77
leaq -0x180(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
leaq 0x1dca5(%rip), %rdx     # 0x33185
callq 0x11ba1
movq -0xd8(%rbp), %r13
leaq (%rbx,%r13), %rdx
addq $0x20, %rdx
leaq -0x138(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x11d77
leaq -0xf8(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
leaq 0x1db4e(%rip), %rdx     # 0x33068
callq 0x11ba1
addq -0xc0(%rbp), %r13
leaq (%rbx,%r13), %rdx
addq $0x20, %rdx
leaq -0x80(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x11d77
movq %r12, %rdi
movq %r14, %rsi
leaq 0x1e197(%rip), %rdx     # 0x336e1
callq 0x11ba1
movq -0x40(%rbp), %r13
movq %r13, %rdi
movq %r12, %rsi
callq 0x120e4
movq %r12, %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
callq 0x20f0
leaq -0xf8(%rbp), %rdi
callq 0x20f0
leaq -0x138(%rbp), %rdi
callq 0x20f0
leaq -0x180(%rbp), %rdi
callq 0x20f0
leaq -0x160(%rbp), %rdi
callq 0x20f0
leaq -0x1d8(%rbp), %rdi
callq 0x20f0
leaq -0x1b8(%rbp), %rdi
callq 0x20f0
movq -0xd0(%rbp), %rax
movq -0xc0(%rbp), %r14
addq %r14, %rax
leaq (%rbx,%rax), %rdi
addq $0x20, %rdi
leaq -0xb0(%rbp), %rsi
callq 0x2130
leaq -0x60(%rbp), %r15
movq -0xc8(%rbp), %rax
addq %r14, %rax
leaq (%rbx,%rax), %rdi
addq $0x20, %rdi
movq %r15, %rsi
callq 0x2130
movq -0x198(%rbp), %rax
incl %eax
movq %rax, -0x198(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x20f0
movq %r15, %rdi
callq 0x20f0
movq -0x30(%rbp), %rdx
addq $0x2, %rdx
addq $0x40, %rbx
jmp 0x1520b
movl -0x8c(%rbp), %ebx
movl %ebx, %edi
leaq -0xd0(%rbp), %rsi
leaq -0xd8(%rbp), %rdx
callq 0x14ae8
movl %ebx, %edi
leaq -0xc8(%rbp), %rsi
leaq -0x140(%rbp), %rdx
callq 0x14ae8
movl -0x184(%rbp), %r15d
addl %r15d, %r15d
jmp 0x1515e
leaq 0x1df5c(%rip), %rsi     # 0x335d1
leaq -0x60(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x20b0
leaq -0x60(%rbp), %rsi
movq %r13, %rdi
callq 0x120e4
leaq -0x60(%rbp), %rdi
callq 0x20f0
movl -0x38(%rbp), %esi
incl %esi
leaq -0xb0(%rbp), %rbx
movq %rbx, %rdi
movl %esi, -0x38(%rbp)
callq 0x11c73
leaq 0x1d5ad(%rip), %rsi     # 0x32c65
leaq -0x60(%rbp), %rdi
movq %rbx, %rdx
callq 0x11d49
leaq -0x60(%rbp), %rsi
movq %r13, %rdi
callq 0x120e4
leaq -0x60(%rbp), %r14
movq %r14, %rdi
callq 0x20f0
leaq -0xb0(%rbp), %rdi
callq 0x20f0
pushq $0x2
popq %rax
movq $0x0, -0x30(%rbp)
cmpq -0x88(%rbp), %rax
jge 0x15b3e
movq %rax, -0xc0(%rbp)
leaq -0x80(%rbp), %rbx
movq %rbx, %rdi
movl -0x38(%rbp), %esi
callq 0x11c73
leaq -0x118(%rbp), %r15
movq %r15, %rdi
leaq 0x1ce92(%rip), %rsi     # 0x325b9
movq %rbx, %rdx
callq 0x11d49
leaq -0xb0(%rbp), %rdi
movq %r15, %rsi
leaq 0x1da06(%rip), %rdx     # 0x33146
callq 0x11ba1
leaq -0xf8(%rbp), %r15
movq %r15, %rdi
movq -0xc0(%rbp), %rsi
callq 0x11c73
movq %r14, %rdi
leaq -0xb0(%rbp), %rbx
movq %rbx, %rsi
movq %r15, %rdx
callq 0x11bca
movq %r15, %rdi
callq 0x20f0
movq %rbx, %rdi
callq 0x20f0
leaq -0x118(%rbp), %rdi
callq 0x20f0
leaq -0x80(%rbp), %rbx
movq %rbx, %rdi
callq 0x20f0
movq %r15, %rdi
movl -0x38(%rbp), %esi
callq 0x11c73
movq %rbx, %rdi
leaq 0x1d4c5(%rip), %rsi     # 0x32c72
movq %r15, %rdx
callq 0x11d49
leaq -0x118(%rbp), %rdi
movq %rbx, %rsi
leaq 0x1d980(%rip), %rdx     # 0x33146
callq 0x11ba1
leaq -0x138(%rbp), %rbx
movq %rbx, %rdi
movq -0xc0(%rbp), %rsi
callq 0x11c73
leaq -0xb0(%rbp), %rdi
leaq -0x118(%rbp), %r15
movq %r15, %rsi
movq %rbx, %rdx
callq 0x11bca
movq %rbx, %rdi
callq 0x20f0
movq %r15, %rdi
callq 0x20f0
leaq -0x80(%rbp), %rbx
movq %rbx, %rdi
callq 0x20f0
leaq -0xf8(%rbp), %rdi
callq 0x20f0
movq %rbx, %rdi
leaq 0x1d42d(%rip), %rsi     # 0x32c59
movq %r14, %rdx
callq 0x11cd3
movq %r15, %rdi
movq %rbx, %rsi
leaq 0x1dea0(%rip), %rdx     # 0x336e1
callq 0x11ba1
movq -0x40(%rbp), %rdi
movq %r15, %rsi
callq 0x120e4
movq %r15, %rdi
callq 0x20f0
movq %rbx, %rdi
callq 0x20f0
movq %rbx, %rdi
leaq 0x1d3ed(%rip), %rsi     # 0x32c59
leaq -0xb0(%rbp), %rdx
callq 0x11cd3
movq %r15, %rdi
movq %rbx, %rsi
leaq 0x1de5c(%rip), %rdx     # 0x336e1
callq 0x11ba1
movq -0x40(%rbp), %rdi
movq %r15, %rsi
callq 0x120e4
movq %r15, %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
callq 0x20f0
leaq -0x160(%rbp), %r15
movq %r15, %rdi
leaq 0x1ccf7(%rip), %rsi     # 0x325af
movq %r14, %rdx
callq 0x11cd3
movq %r14, %rbx
leaq -0x180(%rbp), %r13
movq %r13, %rdi
movq %r15, %rsi
leaq 0x1c97c(%rip), %rdx     # 0x32253
callq 0x11ba1
movq -0xb8(%rbp), %rax
movq -0x30(%rbp), %rcx
leaq (%rax,%rcx), %r14
addq $0x48, %r14
leaq -0x138(%rbp), %r12
movq %r12, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x11d77
leaq -0xf8(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
leaq 0x1d86d(%rip), %rdx     # 0x33185
callq 0x11ba1
movq -0xb8(%rbp), %rax
movq -0x30(%rbp), %rcx
leaq (%rax,%rcx), %rdx
addq $0x28, %rdx
leaq -0x80(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x11d77
leaq -0x118(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
leaq 0x1dd8e(%rip), %rdx     # 0x336e1
callq 0x11ba1
movq -0x40(%rbp), %rdi
movq %r15, %rsi
callq 0x120e4
movq %r15, %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
callq 0x20f0
leaq -0xf8(%rbp), %rdi
callq 0x20f0
leaq -0x138(%rbp), %rdi
callq 0x20f0
leaq -0x180(%rbp), %rdi
callq 0x20f0
leaq -0x160(%rbp), %rdi
callq 0x20f0
leaq -0x1b8(%rbp), %r15
movq %r15, %rdi
leaq 0x1cbf9(%rip), %rsi     # 0x325af
leaq -0xb0(%rbp), %rdx
callq 0x11cd3
leaq -0x1d8(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
leaq 0x1cad1(%rip), %rdx     # 0x324a7
callq 0x11ba1
leaq -0x160(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x11d77
movq %r13, %rdi
movq %r15, %rsi
leaq 0x1d788(%rip), %rdx     # 0x33185
callq 0x11ba1
movq -0xd8(%rbp), %r14
movq -0x30(%rbp), %rax
leaq (%r14,%rax), %rdx
addq $0x20, %rdx
leaq -0x138(%rbp), %r12
movq %r12, %rdi
movq %r13, %rsi
callq 0x11d77
leaq -0xf8(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
leaq 0x1d62d(%rip), %rdx     # 0x33068
callq 0x11ba1
movq -0x30(%rbp), %rax
leaq (%r14,%rax), %rdx
addq $0x40, %rdx
leaq -0x80(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x11d77
leaq -0x118(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
leaq 0x1dc72(%rip), %rdx     # 0x336e1
callq 0x11ba1
movq %rbx, %r14
movq -0x40(%rbp), %rdi
movq %r15, %rsi
callq 0x120e4
movq %r15, %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
callq 0x20f0
leaq -0xf8(%rbp), %rdi
callq 0x20f0
leaq -0x138(%rbp), %rdi
callq 0x20f0
leaq -0x180(%rbp), %rdi
callq 0x20f0
leaq -0x160(%rbp), %rdi
callq 0x20f0
leaq -0x1d8(%rbp), %rdi
callq 0x20f0
leaq -0x1b8(%rbp), %rdi
callq 0x20f0
movq -0xd0(%rbp), %rax
movq -0x30(%rbp), %rbx
leaq (%rax,%rbx), %rdi
addq $0x40, %rdi
leaq -0xb0(%rbp), %rsi
callq 0x2130
movq -0xc8(%rbp), %rax
leaq (%rax,%rbx), %rdi
addq $0x40, %rdi
movq %r14, %rsi
callq 0x2130
leaq -0xb0(%rbp), %rdi
callq 0x20f0
movq %r14, %rdi
callq 0x20f0
movq -0xc0(%rbp), %rax
addq $0x2, %rax
addq $0x40, %rbx
movq %rbx, -0x30(%rbp)
jmp 0x156f3
leaq -0xd0(%rbp), %rsi
leaq -0xd8(%rbp), %rdx
movl -0x8c(%rbp), %r14d
movl %r14d, %edi
callq 0x14ae8
leaq -0xc8(%rbp), %rsi
leaq -0x140(%rbp), %rdx
movl %r14d, %edi
callq 0x14ae8
leaq 0x1da59(%rip), %rsi     # 0x335d1
leaq -0x60(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x20b0
leaq -0x60(%rbp), %rsi
movq -0x40(%rbp), %rbx
movq %rbx, %rdi
callq 0x120e4
leaq -0x60(%rbp), %rdi
callq 0x20f0
leaq 0x1d0cd(%rip), %rsi     # 0x32c75
leaq -0x60(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x20b0
leaq -0x60(%rbp), %rsi
movq %rbx, %rdi
callq 0x120e4
leaq -0x60(%rbp), %rdi
callq 0x20f0
leaq -0xd8(%rbp), %rdx
movl %r14d, %edi
movq %rbx, %r8
callq 0x146e9
movq -0xb8(%rbp), %rax
movq (%rax), %rbx
testq %rbx, %rbx
je 0x15c0c
shlq $0x5, %rbx
movq -0xb8(%rbp), %r14
addq $-0x18, %r14
leaq (%r14,%rbx), %rdi
callq 0x20f0
addq $-0x20, %rbx
jne 0x15bfd
movq -0xb8(%rbp), %rdi
callq 0x2230
movq -0xd8(%rbp), %r14
testq %r14, %r14
je 0x15c50
leaq -0x8(%r14), %rbx
movq -0x8(%r14), %r15
testq %r15, %r15
je 0x15c48
addq $-0x20, %r14
shlq $0x5, %r15
leaq (%r14,%r15), %rdi
callq 0x20f0
addq $-0x20, %r15
jne 0x15c39
movq %rbx, %rdi
callq 0x2230
movq -0xc8(%rbp), %r14
testq %r14, %r14
je 0x15c88
leaq -0x8(%r14), %rbx
movq -0x8(%r14), %r15
testq %r15, %r15
je 0x15c80
addq $-0x20, %r14
shlq $0x5, %r15
leaq (%r14,%r15), %rdi
callq 0x20f0
addq $-0x20, %r15
jne 0x15c71
movq %rbx, %rdi
callq 0x2230
movq -0xd0(%rbp), %r14
testq %r14, %r14
je 0x15cc0
leaq -0x8(%r14), %rbx
movq -0x8(%r14), %r15
testq %r15, %r15
je 0x15cb8
addq $-0x20, %r14
shlq $0x5, %r15
leaq (%r14,%r15), %rdi
callq 0x20f0
addq $-0x20, %r15
jne 0x15ca9
movq %rbx, %rdi
callq 0x2230
addq $0x1e8, %rsp            # imm = 0x1E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x15fdc
jmp 0x15ddc
jmp 0x15fdc
jmp 0x15ddc
jmp 0x15dc7
jmp 0x15e09
jmp 0x15fdc
jmp 0x15ddc
jmp 0x15fdc
jmp 0x15ddc
jmp 0x15fdc
jmp 0x15ddc
jmp 0x15fdc
jmp 0x15ddc
movq %rax, %rbx
leaq -0x200(%rbp), %rdi
jmp 0x16021
jmp 0x15ddc
jmp 0x15e97
jmp 0x15e8d
jmp 0x15e80
jmp 0x15e92
jmp 0x15e73
jmp 0x1600e
jmp 0x15e85
jmp 0x15e9c
jmp 0x15ea4
jmp 0x15ec8
jmp 0x15ebe
jmp 0x15f13
jmp 0x15ec3
jmp 0x15f39
jmp 0x15fed
jmp 0x15f8b
jmp 0x15f8b
jmp 0x15fdc
jmp 0x15fa3
jmp 0x15fb4
jmp 0x15fe1
jmp 0x15f90
jmp 0x15f9c
jmp 0x1600e
jmp 0x15f7a
jmp 0x15f97
jmp 0x15f5d
jmp 0x15fc2
jmp 0x1600e
jmp 0x15fc2
jmp 0x1600e
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x20f0
jmp 0x15e0c
jmp 0x15e09
jmp 0x15fdc
movq %rax, %rbx
jmp 0x16026
jmp 0x15e8d
jmp 0x15e80
jmp 0x15e92
jmp 0x15e73
jmp 0x15ea4
jmp 0x15e97
jmp 0x15ec8
jmp 0x15ebe
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
jmp 0x16021
jmp 0x15f9c
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
jmp 0x16018
jmp 0x1600e
jmp 0x15f39
jmp 0x15fc2
jmp 0x1600e
jmp 0x15f8b
jmp 0x15ec3
jmp 0x1600e
jmp 0x15f13
jmp 0x15e85
jmp 0x15fc2
jmp 0x1600e
jmp 0x15e9c
jmp 0x15f8b
jmp 0x15fdc
jmp 0x1600e
jmp 0x1600e
movq %rax, %rbx
jmp 0x15efb
jmp 0x1600e
movq %rax, %rbx
jmp 0x15ee3
movq %rax, %rbx
jmp 0x15f2b
movq %rax, %rbx
jmp 0x15ed7
movq %rax, %rbx
jmp 0x15eef
movq %rax, %rbx
jmp 0x15eb3
movq %rax, %rbx
jmp 0x15f48
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
callq 0x20f0
jmp 0x15ecb
movq %rax, %rbx
jmp 0x15f07
movq %rax, %rbx
jmp 0x15f22
movq %rax, %rbx
leaq -0xf8(%rbp), %rdi
callq 0x20f0
leaq -0x138(%rbp), %rdi
callq 0x20f0
leaq -0x180(%rbp), %rdi
callq 0x20f0
leaq -0x160(%rbp), %rdi
callq 0x20f0
leaq -0x1d8(%rbp), %rdi
callq 0x20f0
leaq -0x1b8(%rbp), %rdi
jmp 0x15fd5
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
callq 0x20f0
leaq -0xf8(%rbp), %rdi
callq 0x20f0
jmp 0x15f3c
movq %rax, %rbx
leaq -0x138(%rbp), %rdi
callq 0x20f0
leaq -0x180(%rbp), %rdi
callq 0x20f0
leaq -0x160(%rbp), %rdi
jmp 0x15fd5
movq %rax, %rbx
leaq -0x138(%rbp), %rdi
callq 0x20f0
jmp 0x15fa6
jmp 0x15f8b
jmp 0x1600e
jmp 0x1600e
movq %rax, %rbx
leaq -0xf8(%rbp), %rdi
callq 0x20f0
jmp 0x15ff0
movq %rax, %rbx
jmp 0x15fd1
movq %rax, %rbx
jmp 0x15ffc
jmp 0x1600e
movq %rax, %rbx
jmp 0x16008
movq %rax, %rbx
jmp 0x15f54
jmp 0x15fc2
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
callq 0x20f0
jmp 0x15fb7
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x20f0
jmp 0x15fe4
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
callq 0x20f0
jmp 0x16011
movq %rax, %rbx
jmp 0x1601d
movq %rax, %rbx
leaq -0xf8(%rbp), %rdi
jmp 0x16018
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
callq 0x20f0
leaq -0x118(%rbp), %rdi
callq 0x20f0
leaq -0x80(%rbp), %rdi
jmp 0x16021
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
callq 0x20f0
leaq -0x60(%rbp), %rdi
callq 0x20f0
movq %rbx, %rdi
callq 0x2330