// File: /workspace/github_cpp_makefile_star2_O3/temelmertcan[P]multgen/src/pp_gen.cpp
// Function: create_signedpp(int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>**&, int&, int&, std::__cxx11::list<int, std::allocator<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>>>>>&)
void create_signedpp (int m, int n,
                      string**& pp_matrix,
                      int& pp_dim1,
                      int& pp_dim2,
                      std::list<int>& extra_ones_indices,
		   
                      std::queue<string>& verilog){

  pp_dim1 = m+1;
  pp_dim2 = n+m;

  pp_matrix = new string*[pp_dim1];
  for (int i = 0; i < pp_dim1; i++){
    pp_matrix[i] = new string[pp_dim2];
    for (int j = 0; j < pp_dim2; j++)
      pp_matrix[i][j] = "";
  }

  // if (m != n) {
  //   cout << "Simple signed partial products are only supported when IN1 and IN2 has the same dimensions." << endl;
  //   return;
  // }


  for (int i = 0; i<m; i++)
    verilog.push ( "wire logic [" + to_string(n-1) + ":0] pp" + to_string(i) + ";");

  for (int i = 0; i < m; i++){
    pp_matrix[i] = new string[pp_dim2];
    for (int j = 0; j < i; j++){
      pp_matrix[i][j] = "";
    }
    for (int j = 0; j < n; j++){
      string cur;
      cur = "pp" + to_string(i) + "[" + to_string(j) + "]";
      pp_matrix[i][j+i] = cur;
    }

    for (int j = n+i; j < pp_dim2; j++){
      pp_matrix[i][j] = "";
    }

    if (i==m-1)
      verilog.push ("assign pp" + to_string(i)  + " = ~({"
                    + to_string(n)
                    + "{IN1["
                    + to_string(i)
                    + "]}} & IN2) ^ ((1'b1)<<" + to_string(n-1) + ");");
    else
      verilog.push ("assign pp" + to_string(i)  + " = ({"
                    + to_string(n)
                    + "{IN1["
                    + to_string(i)
                    + "]}} & IN2) ^ ((1'b1)<<" + to_string(n-1) + ");");
  }

  std::list<int> extra_ones_indices1;
  for (int i = n-1; i<m-1+n-1; i++)
    extra_ones_indices1.push_back (i);
  std::list<int> extra_ones_indices2;
  for (int i = m-1; i<m-1+n-1; i++)
    extra_ones_indices2.push_back (i);

  extra_ones_indices = merge_extra_ones_indices(extra_ones_indices1,extra_ones_indices2,0);

  // extra_ones_indices.push_back(n);
  // extra_ones_indices.push_back(m+n-1);
  // pp_matrix[m][n] = "1'b1";
  // pp_matrix[m][m+n-1] = "1'b1";

  // print_pp(pp_matrix, pp_dim1, pp_dim2, verilog, true);

  //print_pp(pp_matrix, pp_dim1, pp_dim2);

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
movq %r9, -0x218(%rbp)
movq %rdx, %r12
leal 0x1(%rdi), %eax
movl %eax, (%rcx)
movq %rdi, -0x130(%rbp)
movq %rsi, -0x1a0(%rbp)
leal (%rsi,%rdi), %ebx
movq %r8, -0x1b8(%rbp)
movl %ebx, (%r8)
movq %rcx, -0x108(%rbp)
movslq (%rcx), %r15
leaq (,%r15,8), %rdi
testq %r15, %r15
movq $-0x1, %rax
cmovsq %rax, %rdi
callq 0x3030
movq %rax, (%r12)
testq %r15, %r15
movq %r12, -0x1c0(%rbp)
jle 0x3d092
movq %r15, %r14
xorl %edx, %edx
movq %rdx, -0xe0(%rbp)
movslq %ebx, %r13
movq %r13, %r15
shlq $0x5, %r15
leaq 0x8(%r15), %rdi
testl %r13d, %r13d
movq $-0x1, %rax
cmovsq %rax, %rdi
callq 0x3030
leaq 0x8(%rax), %rcx
movq %r13, (%rax)
testl %r13d, %r13d
je 0x3d06b
addq $0x18, %rax
movq -0x1c0(%rbp), %r12
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
addq $0x20, %rax
addq $-0x20, %r15
jne 0x3cfe8
movq (%r12), %rax
movq -0xe0(%rbp), %rdx
movq %rcx, (%rax,%rdx,8)
testl %ebx, %ebx
leaq 0x3c5e8(%rip), %rcx     # 0x79601
jle 0x3d083
xorl %r15d, %r15d
xorl %r13d, %r13d
movq -0x1b8(%rbp), %r14
movq (%r12), %rax
movq (%rax,%rdx,8), %rdi
movq 0x8(%rdi,%r15), %rdx
addq %r15, %rdi
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x3310
leaq 0x3c5b8(%rip), %rcx     # 0x79601
movq -0xe0(%rbp), %rdx
incq %r13
movslq (%r14), %rbx
addq $0x20, %r15
cmpq %rbx, %r13
jl 0x3d028
movq -0x108(%rbp), %rax
movl (%rax), %r14d
jmp 0x3d083
movq -0x1c0(%rbp), %r12
movq (%r12), %rax
movq -0xe0(%rbp), %rdx
movq %rcx, (%rax,%rdx,8)
xorl %ebx, %ebx
incq %rdx
movslq %r14d, %rax
cmpq %rax, %rdx
jl 0x3cfa5
movq -0x130(%rbp), %rax
testl %eax, %eax
jle 0x3e8b4
movq -0x1a0(%rbp), %rax
decl %eax
movl %eax, %r13d
negl %r13d
cmovsl %eax, %r13d
movq %rax, -0x198(%rbp)
shrl $0x1f, %eax
movq %rax, -0x1e8(%rbp)
leaq -0xc0(%rbp), %rdx
xorl %r14d, %r14d
movl $0xd1b71759, %r12d      # imm = 0xD1B71759
movq -0x1e8(%rbp), %rbx
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x3d12a
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x3d121
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3d127
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3d12a
movl %eax, %ecx
imulq %r12, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3d0f1
addl $-0x3, %r15d
jmp 0x3d12a
addl $-0x2, %r15d
jmp 0x3d12a
decl %r15d
leal (%r15,%rbx), %esi
movq %rdx, -0xd0(%rbp)
leaq -0xd0(%rbp), %r12
movq %r12, %rdi
movl $0x2d, %edx
callq 0x3250
movq -0xd0(%rbp), %rdi
addq %rbx, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x2a6a5
movl $0xc, %r8d
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x3adbb(%rip), %rcx     # 0x77f2d
callq 0x3230
leaq -0x80(%rbp), %rsi
movq %rsi, -0x90(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq -0x58(%rbp), %r15
je 0x3d1a5
movq %rdx, -0x90(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x80(%rbp)
jmp 0x3d1ab
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movl $0xd1b71759, %r12d      # imm = 0xD1B71759
movq 0x8(%rax), %rdx
movq %rdx, -0x88(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x90(%rbp), %rdi
leaq 0x3bd84(%rip), %rsi     # 0x78f5d
callq 0x33d0
movq %r15, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3d1fe
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x3d205
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r15d
cmpl $0xa, %r14d
jb 0x3d26a
movl $0x4, %r15d
movl %r14d, %eax
cmpl $0x63, %eax
jbe 0x3d261
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3d267
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3d26a
movl %eax, %ecx
imulq %r12, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3d231
addl $-0x3, %r15d
jmp 0x3d26a
addl $-0x2, %r15d
jmp 0x3d26a
decl %r15d
movl %r15d, %esi
leaq -0xa0(%rbp), %rax
movq %rax, -0xb0(%rbp)
leaq -0xb0(%rbp), %rdi
movl $0x2d, %edx
callq 0x3250
movq -0xb0(%rbp), %rdi
movl %r15d, %esi
movl %r14d, %edx
callq 0x2a6a5
movq -0x68(%rbp), %rcx
movl $0xf, %edi
leaq -0x58(%rbp), %r15
cmpq %r15, %rcx
je 0x3d2b4
movq -0x58(%rbp), %rdi
movq -0x60(%rbp), %r8
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x3d2ec
movl $0xf, %edi
leaq -0xa0(%rbp), %r9
cmpq %r9, %rsi
je 0x3d2e7
movq -0xa0(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x3d2f7
leaq -0x68(%rbp), %rdi
callq 0x30a0
jmp 0x3d307
leaq -0xb0(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0x38(%rbp), %rsi
movq %rsi, -0x48(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x3d328
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x3d32e
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x48(%rbp), %rdi
leaq 0x3c3bc(%rip), %rsi     # 0x79711
callq 0x33d0
leaq -0x118(%rbp), %rsi
movq %rsi, -0x128(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3d38a
movq %rdx, -0x128(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x118(%rbp)
jmp 0x3d390
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x120(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x10(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x2a942
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0x3d3d2
callq 0x31d0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x3d3e4
callq 0x31d0
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x3d3fc
callq 0x31d0
movq -0x68(%rbp), %rdi
cmpq %r15, %rdi
je 0x3d40a
callq 0x31d0
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x3d41f
callq 0x31d0
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
cmpq %rdx, %rdi
je 0x3d43e
callq 0x31d0
leaq -0xc0(%rbp), %rdx
incl %r14d
cmpl -0x130(%rbp), %r14d
jne 0x3d0dc
movq -0x130(%rbp), %rax
testl %eax, %eax
jle 0x3e8b4
leal -0x1(%rax), %ebx
movq -0x1a0(%rbp), %rcx
movl %ecx, %edx
negl %edx
cmovsl %ecx, %edx
movl %edx, -0x1a4(%rbp)
movl %ecx, %edx
shrl $0x1f, %edx
movq %rdx, -0x1b0(%rbp)
movq -0x198(%rbp), %rdx
movl %edx, %esi
negl %esi
cmovsl %edx, %esi
movl %esi, -0x6c(%rbp)
movslq %ecx, %rdx
movq %rdx, -0x228(%rbp)
movl %eax, %eax
movq %rax, -0x220(%rbp)
movl %ecx, %eax
movq %rax, -0x230(%rbp)
xorl %r15d, %r15d
xorl %r14d, %r14d
movl %ecx, -0x1a8(%rbp)
movq -0x1b8(%rbp), %rax
movq %rbx, -0xd8(%rbp)
movq %r15, -0x1f0(%rbp)
movslq (%rax), %r15
movq %r15, %rbx
shlq $0x5, %rbx
leaq 0x8(%rbx), %rdi
testq %r15, %r15
movq $-0x1, %rax
cmovsq %rax, %rdi
callq 0x3030
movq %r15, (%rax)
testq %r15, %r15
je 0x3d514
leaq 0x18(%rax), %rcx
movq %rcx, -0x10(%rcx)
movq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rcx
addq $-0x20, %rbx
jne 0x3d4fb
addq $0x8, %rax
movq -0x1c0(%rbp), %r12
movq (%r12), %rcx
movq %rax, (%rcx,%r14,8)
testq %r14, %r14
movq -0x1f0(%rbp), %r15
movq %r14, %r13
leaq 0x3c0c6(%rip), %r14     # 0x79601
je 0x3d565
xorl %ebx, %ebx
movq (%r12), %rax
movq (%rax,%r13,8), %rdi
movq 0x8(%rdi,%rbx), %rdx
addq %rbx, %rdi
xorl %esi, %esi
movq %r14, %rcx
xorl %r8d, %r8d
callq 0x3310
addq $0x20, %rbx
cmpq %rbx, %r15
jne 0x3d53f
cmpl $0x0, -0x1a0(%rbp)
movq %r13, %r14
movq %r13, -0x108(%rbp)
movq %r12, %r13
leaq -0x118(%rbp), %r12
leaq -0x128(%rbp), %r15
jle 0x3d97e
movq $0x0, -0xe0(%rbp)
movq %r12, -0x128(%rbp)
movq $0x0, -0x120(%rbp)
movb $0x0, -0x118(%rbp)
movl $0x1, %ebx
cmpq $0xa, %r14
jb 0x3d5fe
movl $0x4, %ebx
movl %r14d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x3d5f7
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3d5fc
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3d5fe
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %ebx
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3d5c9
addl $-0x3, %ebx
jmp 0x3d5fe
addl $-0x2, %ebx
jmp 0x3d5fe
decl %ebx
movq %r12, %r14
movq %r13, %r12
movl %ebx, %esi
leaq -0xa0(%rbp), %rax
movq %rax, -0xb0(%rbp)
leaq -0xb0(%rbp), %r13
movq %r13, %rdi
movl $0x2d, %edx
callq 0x3250
movq -0xb0(%rbp), %rdi
movl %ebx, %esi
movq -0x108(%rbp), %rdx
callq 0x2a6a5
movl $0x2, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x3b910(%rip), %rcx     # 0x78f61
callq 0x3230
leaq -0xc0(%rbp), %rsi
movq %rsi, -0xd0(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3d686
movq %rdx, -0xd0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xc0(%rbp)
jmp 0x3d68c
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %r12, %r13
movq 0x8(%rax), %rdx
movq %rdx, -0xc8(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0xd0(%rbp), %rdi
leaq 0x3add3(%rip), %rsi     # 0x7848a
movq %r14, %r12
callq 0x33d0
leaq -0x80(%rbp), %rsi
movq %rsi, -0x90(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3d6e9
movq %rdx, -0x90(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x80(%rbp)
jmp 0x3d6ef
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
leaq -0xf0(%rbp), %rdi
movq -0x108(%rbp), %r14
movq 0x8(%rax), %rdx
movq %rdx, -0x88(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %ebx
cmpq $0xa, -0xe0(%rbp)
jb 0x3d76c
movl $0x4, %ebx
movq -0xe0(%rbp), %rax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x3d765
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3d76a
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3d76c
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %ebx
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3d737
addl $-0x3, %ebx
jmp 0x3d76c
addl $-0x2, %ebx
jmp 0x3d76c
decl %ebx
movl %ebx, %esi
movq %rdi, -0x100(%rbp)
leaq -0x100(%rbp), %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x100(%rbp), %rdi
movl %ebx, %esi
movq -0xe0(%rbp), %rdx
callq 0x2a6a5
movq -0x90(%rbp), %rcx
movl $0xf, %edi
leaq -0x80(%rbp), %rax
cmpq %rax, %rcx
je 0x3d7b4
movq -0x80(%rbp), %rdi
movq -0x88(%rbp), %r8
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
leaq -0x38(%rbp), %rbx
jbe 0x3d7f3
movl $0xf, %edi
leaq -0xf0(%rbp), %r9
cmpq %r9, %rsi
je 0x3d7ee
movq -0xf0(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x3d801
leaq -0x90(%rbp), %rdi
callq 0x30a0
jmp 0x3d811
leaq -0x100(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0x58(%rbp), %rsi
movq %rsi, -0x68(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x3d832
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x3d838
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x68(%rbp), %rdi
leaq 0x3a5ba(%rip), %rsi     # 0x77e19
callq 0x33d0
movq %rbx, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3d884
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x3d88a
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r15, %rdi
leaq -0x48(%rbp), %rsi
callq 0x3260
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x3d8bb
callq 0x31d0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x3d8cd
callq 0x31d0
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x3d8e5
callq 0x31d0
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x3d8fa
callq 0x31d0
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x3d912
callq 0x31d0
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x3d92a
callq 0x31d0
movq (%r13), %rax
movq -0xe0(%rbp), %rcx
shlq $0x5, %rcx
addq (%rax,%r14,8), %rcx
movq %r14, %rdi
shlq $0x5, %rdi
addq %rcx, %rdi
movq %r15, %rsi
callq 0x3120
movq -0x128(%rbp), %rdi
cmpq %r12, %rdi
je 0x3d960
callq 0x31d0
movq -0xe0(%rbp), %rcx
incq %rcx
movq %rcx, -0xe0(%rbp)
cmpq -0x230(%rbp), %rcx
jne 0x3d598
movq -0x228(%rbp), %rax
addq %r14, %rax
movq %r13, %rdx
movq -0x1b8(%rbp), %r12
movslq (%r12), %rcx
cmpq %rcx, %rax
leaq 0x3bc61(%rip), %r13     # 0x79601
jge 0x3d9e3
movslq -0x1a8(%rbp), %rbx
movq %rbx, %r15
shlq $0x5, %r15
movq (%rdx), %rax
movq (%rax,%r14,8), %rdi
movq 0x8(%rdi,%r15), %rdx
addq %r15, %rdi
xorl %esi, %esi
movq %r13, %rcx
xorl %r8d, %r8d
callq 0x3310
movq -0x1c0(%rbp), %rdx
incq %rbx
movslq (%r12), %rax
addq $0x20, %r15
cmpq %rax, %rbx
jl 0x3d9b0
cmpq -0xd8(%rbp), %r14
jne 0x3da57
movl $0x1, %ebx
cmpl $0xb, -0x130(%rbp)
leaq -0x118(%rbp), %r12
leaq -0x1d0(%rbp), %r15
jb 0x3dac9
movl $0x4, %ebx
movq -0xd8(%rbp), %rax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x3daba
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3dac7
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3dac9
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %ebx
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3da1d
addl $-0x3, %ebx
jmp 0x3dac9
movl $0x1, %ebx
cmpq $0xa, %r14
leaq -0x118(%rbp), %r12
leaq -0x1d0(%rbp), %r13
jb 0x3dc41
movl $0x4, %ebx
movl %r14d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x3dabf
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3dc3f
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3dc41
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %ebx
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3da81
addl $-0x3, %ebx
jmp 0x3dc41
addl $-0x2, %ebx
jmp 0x3dac9
addl $-0x2, %ebx
jmp 0x3dc41
decl %ebx
movl %ebx, %esi
leaq -0x200(%rbp), %rax
movq %rax, -0x210(%rbp)
leaq -0x210(%rbp), %r14
movq %r14, %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x210(%rbp), %rdi
movl %ebx, %esi
movq -0xd8(%rbp), %rdx
callq 0x2a6a5
movl $0x9, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x3b44e(%rip), %rcx     # 0x78f64
callq 0x3230
movq %r15, -0x1e0(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movl -0x1a4(%rbp), %r13d
je 0x3db4b
movq %rdx, -0x1e0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x1d0(%rbp)
jmp 0x3db52
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq -0x108(%rbp), %r14
movq 0x8(%rax), %rdx
movq %rdx, -0x1d8(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x1e0(%rbp), %rdi
leaq 0x3b3fd(%rip), %rsi     # 0x78f7e
callq 0x33d0
leaq -0xf0(%rbp), %rsi
movq %rsi, -0x100(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3dbb6
movq %rdx, -0x100(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xf0(%rbp)
jmp 0x3dbbc
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq -0x1b0(%rbp), %rbx
movq 0x8(%rax), %rdx
movq %rdx, -0xf8(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x3ddbb
movl $0x4, %r15d
movl %r13d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x3dc36
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3ddb8
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3ddbb
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3dbfb
addl $-0x3, %r15d
jmp 0x3ddbb
addl $-0x2, %r15d
jmp 0x3ddbb
decl %ebx
movl %ebx, %esi
leaq -0x200(%rbp), %rax
movq %rax, -0x210(%rbp)
movq %r14, %r15
leaq -0x210(%rbp), %r14
movq %r14, %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x210(%rbp), %rdi
movl %ebx, %esi
movl %r15d, %edx
callq 0x2a6a5
movl $0x9, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x3b2d7(%rip), %rcx     # 0x78f64
callq 0x3230
movq %r13, -0x1e0(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq %r13, %rsi
movl -0x1a4(%rbp), %r13d
je 0x3dcc5
movq %rdx, -0x1e0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x1d0(%rbp)
jmp 0x3dccb
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq -0x108(%rbp), %r14
movq 0x8(%rax), %rdx
movq %rdx, -0x1d8(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x1e0(%rbp), %rdi
leaq 0x3b2a2(%rip), %rsi     # 0x78f9c
callq 0x33d0
leaq -0xf0(%rbp), %rsi
movq %rsi, -0x100(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3dd2f
movq %rdx, -0x100(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xf0(%rbp)
jmp 0x3dd35
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq -0x1b0(%rbp), %rbx
movq 0x8(%rax), %rdx
movq %rdx, -0xf8(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x3df8e
movl $0x4, %r15d
movl %r13d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x3ddaf
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3df8b
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3df8e
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3dd74
addl $-0x3, %r15d
jmp 0x3df8e
addl $-0x2, %r15d
jmp 0x3df8e
decl %r15d
leal (%rbx,%r15), %esi
leaq -0x180(%rbp), %rax
movq %rax, -0x190(%rbp)
leaq -0x190(%rbp), %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x190(%rbp), %rdi
addq %rbx, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x2a6a5
movq -0x100(%rbp), %rcx
movl $0xf, %edi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rcx
je 0x3de12
movq -0xf0(%rbp), %rdi
movq -0xf8(%rbp), %r8
movq -0x190(%rbp), %rsi
movq -0x188(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
leaq -0x58(%rbp), %r15
leaq -0xb0(%rbp), %rbx
jbe 0x3de58
movl $0xf, %edi
leaq -0x180(%rbp), %r9
cmpq %r9, %rsi
je 0x3de53
movq -0x180(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x3de66
leaq -0x100(%rbp), %rdi
callq 0x30a0
jmp 0x3de76
leaq -0x190(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0xa0(%rbp), %rsi
movq %rsi, -0xb0(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x3dea3
movq %rdx, -0xb0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xa0(%rbp)
jmp 0x3dea9
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0xa8(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq %rbx, %rdi
leaq 0x3a4bb(%rip), %rsi     # 0x7838d
callq 0x33d0
leaq -0xc0(%rbp), %rsi
movq %rsi, -0xd0(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3df07
movq %rdx, -0xd0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xc0(%rbp)
jmp 0x3df0d
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xc8(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %ebx
cmpl $0xb, -0x130(%rbp)
jb 0x3e159
movl $0x4, %ebx
movq -0xd8(%rbp), %rax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x3df83
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3e157
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3e159
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %ebx
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3df4a
addl $-0x3, %ebx
jmp 0x3e159
addl $-0x2, %ebx
jmp 0x3e159
decl %r15d
leal (%rbx,%r15), %esi
leaq -0x180(%rbp), %rax
movq %rax, -0x190(%rbp)
leaq -0x190(%rbp), %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x190(%rbp), %rdi
addq %rbx, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x2a6a5
movq -0x100(%rbp), %rcx
movl $0xf, %edi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rcx
je 0x3dfe5
movq -0xf0(%rbp), %rdi
movq -0xf8(%rbp), %r8
movq -0x190(%rbp), %rsi
movq -0x188(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
leaq -0x58(%rbp), %r15
leaq -0xb0(%rbp), %rbx
jbe 0x3e02b
movl $0xf, %edi
leaq -0x180(%rbp), %r9
cmpq %r9, %rsi
je 0x3e026
movq -0x180(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x3e039
leaq -0x100(%rbp), %rdi
callq 0x30a0
jmp 0x3e049
leaq -0x190(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0xa0(%rbp), %rsi
movq %rsi, -0xb0(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x3e076
movq %rdx, -0xb0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xa0(%rbp)
jmp 0x3e07c
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0xa8(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq %rbx, %rdi
leaq 0x3a2e8(%rip), %rsi     # 0x7838d
callq 0x33d0
leaq -0xc0(%rbp), %rsi
movq %rsi, -0xd0(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3e0da
movq %rdx, -0xd0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xc0(%rbp)
jmp 0x3e0e0
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xc8(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %ebx
cmpq $0xa, %r14
jb 0x3e30f
movl $0x4, %ebx
movl %r14d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x3e14f
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3e30d
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3e30f
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %ebx
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3e116
addl $-0x3, %ebx
jmp 0x3e30f
addl $-0x2, %ebx
jmp 0x3e30f
decl %ebx
movl %ebx, %esi
leaq -0x160(%rbp), %rax
movq %rax, -0x170(%rbp)
leaq -0x170(%rbp), %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x170(%rbp), %rdi
movl %ebx, %esi
movq -0xd8(%rbp), %rdx
callq 0x2a6a5
movq -0xd0(%rbp), %rcx
movl $0xf, %edi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rcx
je 0x3e1ae
movq -0xc0(%rbp), %rdi
movq -0xc8(%rbp), %r8
movq -0x170(%rbp), %rsi
movq -0x168(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
movq -0x1e8(%rbp), %rbx
jbe 0x3e1f0
movl $0xf, %edi
leaq -0x160(%rbp), %r9
cmpq %r9, %rsi
je 0x3e1eb
movq -0x160(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x3e1fe
leaq -0xd0(%rbp), %rdi
callq 0x30a0
jmp 0x3e20e
leaq -0x170(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0x80(%rbp), %rsi
movq %rsi, -0x90(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x3e235
movq %rdx, -0x90(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x80(%rbp)
jmp 0x3e23b
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x88(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x90(%rbp), %rdi
leaq 0x3ad1d(%rip), %rsi     # 0x78f85
callq 0x33d0
movq %r15, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3e28d
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x3e294
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r15d
cmpl $0xa, -0x6c(%rbp)
jb 0x3e4c2
movl $0x4, %r15d
movl -0x6c(%rbp), %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x3e304
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3e4bf
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3e4c2
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3e2c9
addl $-0x3, %r15d
jmp 0x3e4c2
addl $-0x2, %r15d
jmp 0x3e4c2
decl %ebx
movl %ebx, %esi
leaq -0x160(%rbp), %rax
movq %rax, -0x170(%rbp)
leaq -0x170(%rbp), %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x170(%rbp), %rdi
movl %ebx, %esi
movl %r14d, %edx
callq 0x2a6a5
movq -0xd0(%rbp), %rcx
movl $0xf, %edi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rcx
je 0x3e360
movq -0xc0(%rbp), %rdi
movq -0xc8(%rbp), %r8
movq -0x170(%rbp), %rsi
movq -0x168(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
movq -0x1e8(%rbp), %rbx
jbe 0x3e3a2
movl $0xf, %edi
leaq -0x160(%rbp), %r9
cmpq %r9, %rsi
je 0x3e39d
movq -0x160(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x3e3b0
leaq -0xd0(%rbp), %rdi
callq 0x30a0
jmp 0x3e3c0
leaq -0x170(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0x80(%rbp), %rsi
movq %rsi, -0x90(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x3e3e7
movq %rdx, -0x90(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x80(%rbp)
jmp 0x3e3ed
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x88(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x90(%rbp), %rdi
leaq 0x3ab6b(%rip), %rsi     # 0x78f85
callq 0x33d0
movq %r15, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3e43f
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x3e446
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r15d
cmpl $0xa, -0x6c(%rbp)
jb 0x3e620
movl $0x4, %r15d
movl -0x6c(%rbp), %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x3e4b6
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3e61d
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3e620
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3e47b
addl $-0x3, %r15d
jmp 0x3e620
addl $-0x2, %r15d
jmp 0x3e620
decl %r15d
leal (%rbx,%r15), %esi
leaq -0x140(%rbp), %rax
movq %rax, -0x150(%rbp)
leaq -0x150(%rbp), %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x150(%rbp), %rdi
addq %rbx, %rdi
movl %r15d, %esi
movl -0x6c(%rbp), %edx
callq 0x2a6a5
movq -0x68(%rbp), %rcx
movl $0xf, %edi
leaq -0x58(%rbp), %rbx
cmpq %rbx, %rcx
je 0x3e510
movq -0x58(%rbp), %rdi
movq -0x60(%rbp), %r8
movq -0x150(%rbp), %rsi
movq -0x148(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
leaq -0x1d0(%rbp), %r15
jbe 0x3e54f
movl $0xf, %edi
leaq -0x140(%rbp), %r9
cmpq %r9, %rsi
je 0x3e54a
movq -0x140(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x3e55a
leaq -0x68(%rbp), %rdi
callq 0x30a0
jmp 0x3e56a
leaq -0x150(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0x38(%rbp), %rsi
movq %rsi, -0x48(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x3e58b
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x3e591
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x48(%rbp), %rdi
leaq 0x3b158(%rip), %rsi     # 0x79710
callq 0x33d0
movq %r12, -0x128(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3e5e6
movq %rdx, -0x128(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x118(%rbp)
jmp 0x3e5ee
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, -0x120(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x10(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x2a942
jmp 0x3e776
decl %r15d
leal (%rbx,%r15), %esi
leaq -0x140(%rbp), %rax
movq %rax, -0x150(%rbp)
leaq -0x150(%rbp), %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x150(%rbp), %rdi
addq %rbx, %rdi
movl %r15d, %esi
movl -0x6c(%rbp), %edx
callq 0x2a6a5
movq -0x68(%rbp), %rcx
movl $0xf, %edi
leaq -0x58(%rbp), %rbx
cmpq %rbx, %rcx
je 0x3e66e
movq -0x58(%rbp), %rdi
movq -0x60(%rbp), %r8
movq -0x150(%rbp), %rsi
movq -0x148(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
leaq -0x1d0(%rbp), %r15
jbe 0x3e6ad
movl $0xf, %edi
leaq -0x140(%rbp), %r9
cmpq %r9, %rsi
je 0x3e6a8
movq -0x140(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x3e6b8
leaq -0x68(%rbp), %rdi
callq 0x30a0
jmp 0x3e6c8
leaq -0x150(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0x38(%rbp), %rsi
movq %rsi, -0x48(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x3e6e9
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x3e6ef
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x48(%rbp), %rdi
leaq 0x3affa(%rip), %rsi     # 0x79710
callq 0x33d0
movq %r12, -0x128(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3e744
movq %rdx, -0x128(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x118(%rbp)
jmp 0x3e74c
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, -0x120(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x10(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x2a942
movq -0x128(%rbp), %rdi
cmpq %r12, %rdi
je 0x3e787
callq 0x31d0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x3e799
callq 0x31d0
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x3e7b1
callq 0x31d0
movq -0x68(%rbp), %rdi
cmpq %rbx, %rdi
je 0x3e7bf
callq 0x31d0
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x3e7d4
callq 0x31d0
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x3e7ec
callq 0x31d0
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x3e804
callq 0x31d0
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x3e81c
callq 0x31d0
movq -0x190(%rbp), %rdi
leaq -0x180(%rbp), %rax
cmpq %rax, %rdi
je 0x3e834
callq 0x31d0
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x3e84c
callq 0x31d0
movq -0x1e0(%rbp), %rdi
cmpq %r15, %rdi
je 0x3e85d
callq 0x31d0
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
movq -0xd8(%rbp), %rbx
movq -0x1f0(%rbp), %r15
je 0x3e883
callq 0x31d0
incq %r14
incl -0x1a8(%rbp)
addq $0x20, %r15
cmpq -0x220(%rbp), %r14
movq -0x1b8(%rbp), %rax
jne 0x3d4c7
movq -0x1a0(%rbp), %rcx
movq -0x198(%rbp), %rdx
jmp 0x3e8c1
movq -0x1a0(%rbp), %rcx
leal -0x1(%rcx), %edx
leal -0x1(%rax), %ebx
leaq -0x128(%rbp), %r12
movq %r12, 0x8(%r12)
movq %r12, (%r12)
movq $0x0, 0x10(%r12)
movq %rdx, -0x198(%rbp)
movq %rbx, -0xd8(%rbp)
leal (%rdx,%rbx), %r14d
cmpl %ecx, %r14d
jl 0x3e934
leaq -0x128(%rbp), %rbx
movq -0xd8(%rbp), %rax
movl %eax, %r15d
movq -0x198(%rbp), %rax
movl %eax, %r13d
movl $0x18, %edi
callq 0x3200
movl %r13d, 0x10(%rax)
movq %rax, %rdi
movq %rbx, %rsi
callq 0x3060
incq -0x118(%rbp)
incl %r13d
decl %r15d
jne 0x3e90c
leaq -0x48(%rbp), %r13
movq %r13, 0x8(%r13)
movq %r13, (%r13)
movq $0x0, 0x10(%r13)
cmpl -0x130(%rbp), %r14d
movq -0x198(%rbp), %r14
movq -0xd8(%rbp), %r15
jl 0x3e988
leaq -0x48(%rbp), %rbx
movl $0x18, %edi
callq 0x3200
movl %r15d, 0x10(%rax)
movq %rax, %rdi
movq %rbx, %rsi
callq 0x3060
incq -0x38(%rbp)
incl %r15d
decl %r14d
jne 0x3e963
leaq -0x90(%rbp), %rcx
movl $0x0, (%rcx)
leaq -0x68(%rbp), %r15
leaq -0x128(%rbp), %rbx
leaq -0x48(%rbp), %r14
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x3b77c
movq -0x218(%rbp), %rdi
movq %r15, %rsi
callq 0x65b80
movq -0x68(%rbp), %rdi
cmpq %r15, %rdi
je 0x3e9da
movq (%rdi), %r12
callq 0x31d0
movq %r12, %rdi
cmpq %r15, %r12
jne 0x3e9ca
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
je 0x3e9f3
movq (%rdi), %r15
callq 0x31d0
movq %r15, %rdi
cmpq %r14, %r15
jne 0x3e9e3
movq -0x128(%rbp), %rdi
cmpq %rbx, %rdi
je 0x3ea0f
movq (%rdi), %r14
callq 0x31d0
movq %r14, %rdi
cmpq %rbx, %r14
jne 0x3e9ff
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3eb92
jmp 0x3ea32
jmp 0x3ea3a
jmp 0x3ea4a
jmp 0x3ea42
jmp 0x3ea68
jmp 0x3ea52
movq %rax, %rbx
jmp 0x3eb67
movq %rax, %rbx
jmp 0x3eb37
movq %rax, %rbx
jmp 0x3eada
movq %rax, %rbx
jmp 0x3eb07
movq %rax, %rbx
movq -0x128(%rbp), %rdi
cmpq %r12, %rdi
je 0x3ea99
callq 0x31d0
jmp 0x3ea99
movq %rax, %rbx
jmp 0x3eaab
jmp 0x3ea79
jmp 0x3ea81
jmp 0x3ea8e
jmp 0x3ea89
jmp 0x3eac5
jmp 0x3ea96
movq %rax, %rbx
jmp 0x3eb7f
movq %rax, %rbx
jmp 0x3eb4f
movq %rax, %rbx
jmp 0x3eaef
movq %rax, %rbx
jmp 0x3eb1f
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x3eaab
callq 0x31d0
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x3eac8
callq 0x31d0
jmp 0x3eac8
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x3eada
callq 0x31d0
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x3eaef
callq 0x31d0
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x3eb07
callq 0x31d0
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x3eb1f
callq 0x31d0
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x3eb37
callq 0x31d0
movq -0x190(%rbp), %rdi
leaq -0x180(%rbp), %rax
cmpq %rax, %rdi
je 0x3eb4f
callq 0x31d0
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x3eb67
callq 0x31d0
movq -0x1e0(%rbp), %rdi
leaq -0x1d0(%rbp), %rax
cmpq %rax, %rdi
je 0x3eb7f
callq 0x31d0
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
jmp 0x3ec6e
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x3ebb3
movq (%rdi), %r14
callq 0x31d0
movq %r14, %rdi
cmpq %r13, %r14
jne 0x3eb9e
jmp 0x3ebb3
movq %rax, %rbx
movq -0x128(%rbp), %rdi
cmpq %r12, %rdi
je 0x3ed2d
movq (%rdi), %r14
callq 0x31d0
movq %r14, %rdi
cmpq %r12, %r14
jne 0x3ebc3
jmp 0x3ed2d
movq %rax, %rbx
jmp 0x3ec60
movq %rax, %rbx
jmp 0x3ec4b
movq %rax, %rbx
jmp 0x3ec39
movq %rax, %rbx
jmp 0x3ec21
movq %rax, %rbx
jmp 0x3ec0f
movq %rax, %rbx
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0x3ec0f
callq 0x31d0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x3ec21
callq 0x31d0
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x3ec39
callq 0x31d0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x3ec4b
callq 0x31d0
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x3ec60
callq 0x31d0
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
jne 0x3ed28
jmp 0x3ed2d
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x3ecbf
callq 0x31d0
jmp 0x3ecbf
movq %rax, %rbx
jmp 0x3ed1c
movq %rax, %rbx
leaq -0xa0(%rbp), %rax
movq %r14, %r12
jmp 0x3ed0b
movq %rax, %rbx
movq %r14, %r12
jmp 0x3ed1c
movq %rax, %rbx
jmp 0x3ecec
movq %rax, %rbx
jmp 0x3ecd7
movq %rax, %rbx
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x3ecd7
callq 0x31d0
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x3ecec
callq 0x31d0
leaq -0xc0(%rbp), %r13
movq -0xd0(%rbp), %rdi
cmpq %r13, %rdi
je 0x3ed04
callq 0x31d0
leaq -0xa0(%rbp), %rax
movq -0xb0(%rbp), %rdi
cmpq %rax, %rdi
je 0x3ed1c
callq 0x31d0
movq -0x128(%rbp), %rdi
cmpq %r12, %rdi
je 0x3ed2d
callq 0x31d0
movq %rbx, %rdi
callq 0x33a0