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

  // m multiplier size,
  // n multiplicand size,

  if (signed_mul) {
    verilog.push ("wire [" + to_string(m-1) + ":0] mult = IN1;");
    verilog.push ("wire [" + to_string(n-1) + ":0] mcand = IN2;");
  } else {
    verilog.push ("wire [" + to_string(m) + ":0] mult = {1'b0, IN1};");
    verilog.push ("wire [" + to_string(n) + ":0] mcand = {1'b0, IN2};");
    m++;
    n++;
  }

  int pp_msb = n-1;
  pp_dim1 = m+2; // number of rows
  int size_to_fit_all_pp = pp_msb + m;
  pp_dim2 = max(n+m, size_to_fit_all_pp); // number of columns

  pp_matrix = new string*[pp_dim1];
  // make sure it starts empty.
  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] = "";
  }

  /////
  // verilog.push ("wire [" + to_string(pp_msb) + ":0] mcand_1x;");
  // verilog.push ("assign mcand_1x = {{"+to_string(pp_msb - n + 1)+"{mcand["+ to_string(n-1) +"]}},  mcand};");

  /////

  for (int i = 0; i < m; i++){
    verilog.push ("");
    string m0 = (i == 0 ? "1'b0" : "mult[" + to_string(i-1) + "]");
    string m1 = "mult[" + to_string(i) + "]";

    verilog.push ("// Booth Radix-2 Partial Products. Multiplier selectors: " + m1 + " " + m0);

    string select_e = "select_e_" + to_string(i);
    string select_ne = "select_ne_" + to_string(i);
    string cmp = "tcomp" + to_string(i);

    verilog.push ( "wire logic " + select_e
                   + ", " + cmp
                   + ", " + select_ne
                   + ";");

    verilog.push ("assign " + select_e +
                  " = ~" + m1 + " & " + m0 + ";");// +
    //" | ((~ " + m2 + ") & (~ " + m0 + ") & " + m1 + ");");

    verilog.push ("assign " + select_ne +
                  " = " + m1 + " & ~" + m0 + ";");// +

    //////
    string cur_pp = "pp_" + to_string(i);
    verilog.push ("wire ["+ to_string(pp_msb) +":0] " + cur_pp + ";");
    verilog.push ("assign " + cur_pp + " = (1<<" + to_string(pp_msb) + ") ^ // flip the MSB ");
    verilog.push ("               ((" +  select_e   + " ? mcand : 0) | ");
    verilog.push ("                (" +  select_ne  + " ? (~ mcand) : 0)); " );

    verilog.push ("assign " + cmp + " = " + select_ne + ";");

  }

  for (int i = 0; i < pp_dim1-2; i++){
    pp_matrix[i] = new string[pp_dim2];
    for (int j = 0; j < i; j++){
      pp_matrix[i][j] = "";
    }
    for (int j = 0; j <= pp_msb && j+i < pp_dim2 ; j++){
      string cur;
      cur = "pp_" + to_string(i) + "[" + to_string(j) + "]";
      pp_matrix[i][j+i] = cur;
    }
  }

  // add tcomps for the extra 1 needed for twos complemented partial products
  pp_matrix[pp_dim1-2] = new string[pp_dim2];
  for (int j = 0; j < m; j+=1){
    pp_matrix[pp_dim1-2][j] = "tcomp"  + to_string(j);
  }

  for (int j = pp_msb; j < size_to_fit_all_pp; j += 1){
    extra_ones_indices.push_back(j);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movq %r9, -0x1b0(%rbp)
movq %r8, -0x1c0(%rbp)
movq %rcx, -0x140(%rbp)
movq %rsi, -0x138(%rbp)
testl %edx, %edx
movq %rdi, -0x1a8(%rbp)
je 0x3edd8
leal -0x1(%rdi), %r14d
movl %r14d, %ebx
negl %ebx
cmovsl %r14d, %ebx
movl $0x1, %r15d
cmpl $0xa, %ebx
jb 0x3ee4b
movl $0x4, %r15d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebx, %ecx
cmpl $0x63, %ecx
jbe 0x3ee39
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x3ee48
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x3ee4b
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r15d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x3ed99
addl $-0x3, %r15d
jmp 0x3ee4b
movl %edi, %ebx
negl %ebx
cmovsl %edi, %ebx
movl $0x1, %r14d
cmpl $0xa, %ebx
jb 0x3eff9
movl $0x4, %r14d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebx, %ecx
cmpl $0x63, %ecx
jbe 0x3ee3f
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x3eff6
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x3eff9
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r14d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x3edfb
addl $-0x3, %r14d
jmp 0x3eff9
addl $-0x2, %r15d
jmp 0x3ee4b
addl $-0x2, %r14d
jmp 0x3eff9
decl %r15d
shrl $0x1f, %r14d
leal (%r15,%r14), %esi
leaq -0x78(%rbp), %rax
movq %rax, -0x10(%rax)
leaq -0x88(%rbp), %r12
movq %r12, %rdi
movl $0x2d, %edx
callq 0x3250
addq (%r12), %r14
movq %r14, %rdi
movl %r15d, %esi
movl %ebx, %edx
callq 0x2a6a5
leaq 0x38ed7(%rip), %rcx     # 0x77d5e
movl $0x6, %r8d
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0x98(%rbp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq -0x138(%rbp), %rbx
je 0x3eecd
movq %rdx, -0xa8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x98(%rbp)
jmp 0x3eed4
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq -0xa8(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x3a0a9(%rip), %rsi     # 0x78fa2
callq 0x33d0
leaq -0x38(%rbp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3ef22
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x3ef2a
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq -0x48(%rbp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
callq 0x2a942
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x3ef5c
callq 0x31d0
movq -0xa8(%rbp), %rdi
cmpq %r14, %rdi
je 0x3ef6d
callq 0x31d0
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x3ef82
callq 0x31d0
leal -0x1(%rbx), %eax
movl %eax, %ebx
negl %ebx
movq %rax, -0x1b8(%rbp)
cmovsl %eax, %ebx
movl $0x1, %r14d
cmpl $0xa, %ebx
jb 0x3f1a1
movl $0x4, %r14d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebx, %ecx
cmpl $0x63, %ecx
jbe 0x3efed
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x3f19e
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x3f1a1
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r14d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x3efaf
addl $-0x3, %r14d
jmp 0x3f1a1
addl $-0x2, %r14d
jmp 0x3f1a1
decl %r14d
movq %rdi, %r15
shrl $0x1f, %r15d
leal (%r14,%r15), %esi
leaq -0x78(%rbp), %rax
movq %rax, -0x10(%rax)
leaq -0x88(%rbp), %r12
movq %r12, %rdi
movl $0x2d, %edx
callq 0x3250
addq (%r12), %r15
movq %r15, %rdi
movl %r14d, %esi
movl %ebx, %edx
callq 0x2a6a5
leaq 0x38d26(%rip), %rcx     # 0x77d5e
movl $0x6, %r8d
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0x98(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq -0x138(%rbp), %r14
je 0x3f07e
movq %rdx, -0xa8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x98(%rbp)
jmp 0x3f084
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
leaq -0xa8(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x39f1a(%rip), %rsi     # 0x78fc3
callq 0x33d0
leaq -0x38(%rbp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3f0d2
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x3f0da
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq -0x48(%rbp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
callq 0x2a942
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x3f10c
callq 0x31d0
movq -0xa8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x3f11d
callq 0x31d0
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x3f132
callq 0x31d0
movl %r14d, %ebx
negl %ebx
cmovsl %r14d, %ebx
movl $0x1, %r14d
cmpl $0xa, %ebx
jb 0x3f2f9
movl $0x4, %r14d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebx, %ecx
cmpl $0x63, %ecx
jbe 0x3f195
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x3f2f6
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x3f2f9
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r14d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x3f157
addl $-0x3, %r14d
jmp 0x3f2f9
addl $-0x2, %r14d
jmp 0x3f2f9
decl %r14d
movq -0x1b8(%rbp), %r15
shrl $0x1f, %r15d
leal (%r14,%r15), %esi
leaq -0x88(%rbp), %r12
leaq -0x78(%rbp), %rax
movq %rax, (%r12)
movq %r12, %rdi
movl $0x2d, %edx
callq 0x3250
addq (%r12), %r15
movq %r15, %rdi
movl %r14d, %esi
movl %ebx, %edx
callq 0x2a6a5
leaq 0x38b7a(%rip), %rcx     # 0x77d5e
movl $0x6, %r8d
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0x98(%rbp), %r12
movq %r12, -0xa8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq -0x138(%rbp), %rbx
movq -0x140(%rbp), %r14
movq -0x1a8(%rbp), %r15
je 0x3f23b
movq %rdx, -0xa8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x98(%rbp)
jmp 0x3f243
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq -0xa8(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x39d4a(%rip), %rsi     # 0x78fb2
callq 0x33d0
movq %r13, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3f28d
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x3f295
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq -0x48(%rbp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
callq 0x2a942
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x3f2c7
callq 0x31d0
movq -0xa8(%rbp), %rdi
cmpq %r12, %rdi
je 0x3f2d8
callq 0x31d0
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x3f456
callq 0x31d0
jmp 0x3f456
decl %r14d
movq -0x138(%rbp), %r15
shrl $0x1f, %r15d
leal (%r14,%r15), %esi
leaq -0x88(%rbp), %r12
leaq -0x78(%rbp), %rax
movq %rax, (%r12)
movq %r12, %rdi
movl $0x2d, %edx
callq 0x3250
addq (%r12), %r15
movq %r15, %rdi
movl %r14d, %esi
movl %ebx, %edx
callq 0x2a6a5
leaq 0x38a22(%rip), %rcx     # 0x77d5e
movl $0x6, %r8d
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0x98(%rbp), %r12
movq %r12, -0xa8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq -0x140(%rbp), %r14
movq -0x1a8(%rbp), %r15
je 0x3f38c
movq %rdx, -0xa8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x98(%rbp)
jmp 0x3f394
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq -0x138(%rbp), %rbx
movq 0x8(%rax), %rdx
leaq -0xa8(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x39c1b(%rip), %rsi     # 0x78fdb
callq 0x33d0
movq %r13, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3f3e5
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x3f3ed
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq -0x48(%rbp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
callq 0x2a942
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x3f41f
callq 0x31d0
movq -0xa8(%rbp), %rdi
cmpq %r12, %rdi
je 0x3f430
callq 0x31d0
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x3f445
callq 0x31d0
incl %r15d
movl %ebx, %eax
movq %rax, -0x1b8(%rbp)
leal 0x1(%rbx), %eax
movl %eax, %ebx
leal 0x2(%r15), %eax
movq -0x1c0(%rbp), %rcx
movl %eax, (%rcx)
movq %rbx, -0x138(%rbp)
movq %r15, -0x1a8(%rbp)
leal (%r15,%rbx), %r13d
movq -0x1b0(%rbp), %rax
movl %r13d, (%rax)
movslq (%rcx), %rbx
leaq (,%rbx,8), %rdi
testq %rbx, %rbx
movq $-0x1, %r12
cmovsq %r12, %rdi
callq 0x3030
movq %rax, (%r14)
testq %rbx, %rbx
jle 0x3f59e
xorl %edx, %edx
movq %rdx, -0xf0(%rbp)
movslq %r13d, %r15
movq %r15, %r14
shlq $0x5, %r14
leaq 0x8(%r14), %rdi
testl %r15d, %r15d
cmovsq %r12, %rdi
callq 0x3030
leaq 0x8(%rax), %rcx
movq %r15, (%rax)
testl %r15d, %r15d
je 0x3f577
addq $0x18, %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
addq $0x20, %rax
addq $-0x20, %r14
jne 0x3f4e0
movq -0x140(%rbp), %rax
movq (%rax), %rax
movq -0xf0(%rbp), %rdx
movq %rcx, (%rax,%rdx,8)
testl %r13d, %r13d
leaq 0x3a0e9(%rip), %rcx     # 0x79601
jle 0x3f58f
xorl %r14d, %r14d
xorl %r15d, %r15d
movq -0x140(%rbp), %rbx
movq -0x1b0(%rbp), %r12
movq (%rbx), %rax
movq (%rax,%rdx,8), %rdi
movq 0x8(%rdi,%r14), %rdx
addq %r14, %rdi
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x3310
leaq 0x3a0b3(%rip), %rcx     # 0x79601
movq -0xf0(%rbp), %rdx
incq %r15
movslq (%r12), %r13
addq $0x20, %r14
cmpq %r13, %r15
jl 0x3f52e
movq -0x1c0(%rbp), %rax
movl (%rax), %ebx
movq $-0x1, %r12
jmp 0x3f58f
movq -0x140(%rbp), %rax
movq (%rax), %rax
movq -0xf0(%rbp), %rdx
movq %rcx, (%rax,%rdx,8)
xorl %r13d, %r13d
incq %rdx
movslq %ebx, %rax
cmpq %rax, %rdx
jl 0x3f4ab
movq -0x1a8(%rbp), %r15
testl %r15d, %r15d
jle 0x40eee
leaq -0x38(%rbp), %rbx
movq -0x1b8(%rbp), %rax
movl %eax, %ecx
negl %ecx
cmovsl %eax, %ecx
movl %ecx, -0xf0(%rbp)
shrl $0x1f, %eax
movq %rax, -0x1c8(%rbp)
xorl %r14d, %r14d
leaq -0x48(%rbp), %r13
movq %rbx, -0x48(%rbp)
movq %r13, %rdi
leaq 0x3a01c(%rip), %rdx     # 0x79601
movq %rdx, %rsi
callq 0x2ac04
movq 0x20(%rbp), %rdi
movq %r13, %rsi
callq 0x2a942
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x3f607
callq 0x31d0
testl %r14d, %r14d
je 0x3f664
leal -0x1(%r14), %ebx
movl %ebx, %r15d
negl %r15d
cmovsl %ebx, %r15d
movl $0x1, %r13d
cmpl $0xa, %r15d
jb 0x3f69c
movl $0x4, %r13d
movl %r15d, %eax
cmpl $0x63, %eax
jbe 0x3f693
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3f699
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3f69c
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r13d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3f62f
addl $-0x3, %r13d
jmp 0x3f69c
movq %rbx, -0x48(%rbp)
movq %r13, %rdi
leaq 0x39982(%rip), %rsi     # 0x78ff4
leaq 0x3997f(%rip), %rdx     # 0x78ff8
callq 0x2ac04
movl $0x1, %r15d
movb $0x1, %r13b
leaq -0x130(%rbp), %rbx
jmp 0x3f825
addl $-0x2, %r13d
jmp 0x3f69c
decl %r13d
movq %r14, %r12
shrl $0x1f, %ebx
leal (%rbx,%r13), %esi
leaq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq -0x88(%rbp), %r14
movq %r14, %rdi
movl $0x2d, %edx
callq 0x3250
movl %ebx, %edi
addq -0x88(%rbp), %rdi
movl %r13d, %esi
movl %r15d, %edx
callq 0x2a6a5
movl $0x5, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x3990c(%rip), %rcx     # 0x78ff9
callq 0x3230
leaq -0x98(%rbp), %rsi
movq %rsi, -0xa8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq -0x38(%rbp), %rbx
leaq -0x78(%rbp), %r15
movq %r12, %r14
je 0x3f72d
movq %rdx, -0xa8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x98(%rbp)
jmp 0x3f733
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rsi, %r12
movq 0x8(%rax), %rdx
movq %rdx, -0xa0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0xa8(%rbp), %rdi
leaq 0x386bb(%rip), %rsi     # 0x77e19
callq 0x33d0
movq %rbx, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3f783
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x3f789
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
leaq -0x130(%rbp), %rbx
movq 0x8(%rax), %rdx
movq %rdx, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0xa8(%rbp), %rdi
cmpq %r12, %rdi
je 0x3f7b8
callq 0x31d0
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x3f7c9
callq 0x31d0
cmpl $0xa, %r14d
setb %r13b
jae 0x3f7de
movl $0x1, %r15d
movb $0x1, %r13b
jmp 0x3f825
movl $0x4, %r15d
movl %r14d, %eax
cmpl $0x63, %eax
jbe 0x3f81c
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3f822
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3f825
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3f7e7
addl $-0x3, %r15d
jmp 0x3f825
addl $-0x2, %r15d
jmp 0x3f825
decl %r15d
movl %r15d, %esi
leaq -0x120(%rbp), %rax
movq %rax, -0x130(%rbp)
movq %rbx, %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x130(%rbp), %rdi
movl %r15d, %esi
movl %r14d, %edx
callq 0x2a6a5
movl $0x5, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x39790(%rip), %rcx     # 0x78ff9
callq 0x3230
leaq -0x78(%rbp), %r15
movq %r15, -0x88(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3f898
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x3f89f
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x80(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x88(%rbp), %rdi
leaq 0x38555(%rip), %rsi     # 0x77e19
callq 0x33d0
leaq -0x98(%rbp), %rsi
movq %rsi, -0xa8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3f8f9
movq %rdx, -0xa8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x98(%rbp)
jmp 0x3f8ff
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xa0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x3f92a
callq 0x31d0
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x3f942
callq 0x31d0
leaq -0x180(%rbp), %r12
movq %r12, %rdi
leaq 0x396ac(%rip), %rsi     # 0x78fff
leaq -0xa8(%rbp), %rdx
callq 0x2a567
movq %r12, %rdi
leaq 0x372ab(%rip), %rsi     # 0x76c14
callq 0x33d0
leaq -0x120(%rbp), %rsi
movq %rsi, -0x130(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3f99e
movq %rdx, -0x130(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x120(%rbp)
jmp 0x3f9a4
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x128(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %rbx, %rdi
callq 0x30a0
movq %r15, -0x88(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3f9f4
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x3f9fb
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x80(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x2a942
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x3fa33
callq 0x31d0
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x3fa4b
callq 0x31d0
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x3fa63
callq 0x31d0
movl $0x1, %r15d
testb %r13b, %r13b
jne 0x3fab5
movl $0x4, %r15d
movl %r14d, %eax
cmpl $0x63, %eax
jbe 0x3faac
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3fab2
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3fab5
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3fa77
addl $-0x3, %r15d
jmp 0x3fab5
addl $-0x2, %r15d
jmp 0x3fab5
decl %r15d
movl %r15d, %esi
leaq -0x120(%rbp), %rax
movq %rax, -0x130(%rbp)
movq %rbx, %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x130(%rbp), %rdi
movl %r15d, %esi
movl %r14d, %edx
callq 0x2a6a5
movl $0x9, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x39540(%rip), %rcx     # 0x79039
callq 0x3230
leaq -0x78(%rbp), %rsi
movq %rsi, -0x88(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq -0x120(%rbp), %r8
je 0x3fb2f
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x3fb35
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x80(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x130(%rbp), %rdi
cmpq %r8, %rdi
je 0x3fb5d
callq 0x31d0
movl $0x1, %r15d
testb %r13b, %r13b
leaq -0x170(%rbp), %rdx
jne 0x3fbb6
movl $0x4, %r15d
movl %r14d, %eax
cmpl $0x63, %eax
jbe 0x3fbad
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3fbb3
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3fbb6
movl %eax, %ecx
movl $0xd1b71759, %esi       # imm = 0xD1B71759
imulq %rsi, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3fb78
addl $-0x3, %r15d
jmp 0x3fbb6
addl $-0x2, %r15d
jmp 0x3fbb6
decl %r15d
movl %r15d, %esi
movq %rdx, -0x180(%rbp)
leaq -0x180(%rbp), %r12
movq %r12, %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x180(%rbp), %rdi
movl %r15d, %esi
movl %r14d, %edx
callq 0x2a6a5
movl $0xa, %r8d
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x39449(%rip), %rcx     # 0x79043
callq 0x3230
leaq -0x120(%rbp), %rsi
movq %rsi, -0x130(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3fc2f
movq %rdx, -0x130(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x120(%rbp)
jmp 0x3fc35
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x128(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x3fc67
callq 0x31d0
movl $0x1, %r15d
testb %r13b, %r13b
leaq -0x100(%rbp), %rdx
jne 0x3fcc0
movl $0x4, %r15d
movl %r14d, %eax
cmpl $0x63, %eax
jbe 0x3fcb7
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3fcbd
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3fcc0
movl %eax, %ecx
movl $0xd1b71759, %esi       # imm = 0xD1B71759
imulq %rsi, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3fc82
addl $-0x3, %r15d
jmp 0x3fcc0
addl $-0x2, %r15d
jmp 0x3fcc0
decl %r15d
movl %r15d, %esi
movq %rdx, -0x110(%rbp)
leaq -0x110(%rbp), %r12
movq %r12, %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x110(%rbp), %rdi
movl %r15d, %esi
movl %r14d, %edx
callq 0x2a6a5
movl $0x5, %r8d
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x3934a(%rip), %rcx     # 0x7904e
callq 0x3230
leaq -0x170(%rbp), %rsi
movq %rsi, -0x180(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq -0x150(%rbp), %r15
je 0x3fd40
movq %rdx, -0x180(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x170(%rbp)
jmp 0x3fd46
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x178(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x3fd78
callq 0x31d0
leaq -0x1a0(%rbp), %r12
movq %r12, %rdi
leaq 0x38f00(%rip), %rsi     # 0x78c89
leaq -0x88(%rbp), %rdx
callq 0x2a567
movq %r12, %rdi
leaq 0x38857(%rip), %rsi     # 0x785f6
callq 0x33d0
movq %r15, -0x160(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3fdcd
movq %rdx, -0x160(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x150(%rbp)
jmp 0x3fdd4
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x158(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x180(%rbp), %rsi
movq -0x178(%rbp), %rdx
leaq -0x160(%rbp), %rdi
callq 0x30a0
leaq -0xd8(%rbp), %rsi
movq %rsi, -0xe8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3fe38
movq %rdx, -0xe8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xd8(%rbp)
jmp 0x3fe3e
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xe0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0xe8(%rbp), %rdi
leaq 0x38790(%rip), %rsi     # 0x785f6
callq 0x33d0
leaq -0xb8(%rbp), %rsi
movq %rsi, -0xc8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3fe9b
movq %rdx, -0xc8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xb8(%rbp)
jmp 0x3fea1
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xc0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x130(%rbp), %rsi
movq -0x128(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
callq 0x30a0
leaq -0x58(%rbp), %rsi
movq %rsi, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3fef9
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x3feff
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x68(%rbp), %rdi
leaq 0x397f0(%rip), %rsi     # 0x79711
callq 0x33d0
leaq -0x100(%rbp), %rsi
movq %rsi, -0x110(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3ff56
movq %rdx, -0x110(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x100(%rbp)
jmp 0x3ff5c
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x108(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x2a942
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x3ff9e
callq 0x31d0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x3ffb0
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x3ffc8
callq 0x31d0
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x3ffe0
callq 0x31d0
movq -0x160(%rbp), %rdi
cmpq %r15, %rdi
je 0x3fff1
callq 0x31d0
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x40009
callq 0x31d0
movq %r12, %rdi
leaq 0x3859c(%rip), %rsi     # 0x785af
leaq -0x88(%rbp), %rdx
callq 0x2a567
movq %r12, %rdi
leaq 0x3922b(%rip), %rsi     # 0x79254
callq 0x33d0
movq %r15, -0x160(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40057
movq %rdx, -0x160(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x150(%rbp)
jmp 0x4005e
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x158(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0xa8(%rbp), %rsi
movq -0xa0(%rbp), %rdx
leaq -0x160(%rbp), %rdi
callq 0x30a0
leaq -0xd8(%rbp), %rsi
movq %rsi, -0xe8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x400c2
movq %rdx, -0xe8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xd8(%rbp)
jmp 0x400c8
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xe0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0xe8(%rbp), %rdi
leaq 0x390c5(%rip), %rsi     # 0x791b5
callq 0x33d0
leaq -0xb8(%rbp), %rsi
movq %rsi, -0xc8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40125
movq %rdx, -0xc8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xb8(%rbp)
jmp 0x4012b
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xc0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
callq 0x30a0
leaq -0x58(%rbp), %rsi
movq %rsi, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4017d
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x40183
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x68(%rbp), %rdi
leaq 0x3956c(%rip), %rsi     # 0x79711
callq 0x33d0
leaq -0x100(%rbp), %rsi
movq %rsi, -0x110(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x401da
movq %rdx, -0x110(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x100(%rbp)
jmp 0x401e0
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x108(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x2a942
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x40222
callq 0x31d0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x40234
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x4024c
callq 0x31d0
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x40264
callq 0x31d0
movq -0x160(%rbp), %rdi
cmpq %r15, %rdi
je 0x40275
callq 0x31d0
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x4028d
callq 0x31d0
movq %r12, %rdi
leaq 0x38318(%rip), %rsi     # 0x785af
movq %rbx, %rdx
callq 0x2a567
movq %r12, %rdi
leaq 0x37faa(%rip), %rsi     # 0x78253
callq 0x33d0
movq %r15, -0x160(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x402d7
movq %rdx, -0x160(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x150(%rbp)
jmp 0x402de
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x158(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0xa8(%rbp), %rsi
movq -0xa0(%rbp), %rdx
leaq -0x160(%rbp), %rdi
callq 0x30a0
leaq -0xd8(%rbp), %rsi
movq %rsi, -0xe8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40342
movq %rdx, -0xe8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xd8(%rbp)
jmp 0x40348
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xe0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0xe8(%rbp), %rdi
leaq 0x38ce4(%rip), %rsi     # 0x79054
callq 0x33d0
leaq -0xb8(%rbp), %rsi
movq %rsi, -0xc8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x403a5
movq %rdx, -0xc8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xb8(%rbp)
jmp 0x403ab
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xc0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
callq 0x30a0
leaq -0x58(%rbp), %rsi
movq %rsi, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x403fd
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x40403
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x68(%rbp), %rdi
leaq 0x392ec(%rip), %rsi     # 0x79711
callq 0x33d0
leaq -0x100(%rbp), %rsi
movq %rsi, -0x110(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4045a
movq %rdx, -0x110(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x100(%rbp)
jmp 0x40460
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x108(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x2a942
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x404a2
callq 0x31d0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x404b4
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x404cc
callq 0x31d0
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x404e4
callq 0x31d0
movq -0x160(%rbp), %rdi
cmpq %r15, %rdi
je 0x404f5
callq 0x31d0
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x4050d
callq 0x31d0
movl $0x1, %r15d
testb %r13b, %r13b
leaq -0x98(%rbp), %r12
jne 0x40566
movl $0x4, %r15d
movl %r14d, %eax
cmpl $0x63, %eax
jbe 0x4055d
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x40563
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x40566
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x40528
addl $-0x3, %r15d
jmp 0x40566
addl $-0x2, %r15d
jmp 0x40566
decl %r15d
movl %r15d, %esi
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq -0x68(%rbp), %rbx
movq %rbx, %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x68(%rbp), %rdi
movl %r15d, %esi
movl %r14d, %edx
callq 0x2a6a5
movl $0x3, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x38ab4(%rip), %rcx     # 0x79059
callq 0x3230
leaq -0x100(%rbp), %rsi
movq %rsi, -0x110(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq -0x58(%rbp), %r8
je 0x405de
movq %rdx, -0x110(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x100(%rbp)
jmp 0x405e4
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x108(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x68(%rbp), %rdi
cmpq %r8, %rdi
je 0x4060c
callq 0x31d0
movl $0x1, %r15d
cmpl $0xa, -0xf0(%rbp)
movq -0x1c8(%rbp), %rdx
jb 0x4066c
movl $0x4, %r15d
movl -0xf0(%rbp), %eax
cmpl $0x63, %eax
jbe 0x40663
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x40669
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x4066c
movl %eax, %ecx
movl $0xd1b71759, %esi       # imm = 0xD1B71759
imulq %rsi, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x4062e
addl $-0x3, %r15d
jmp 0x4066c
addl $-0x2, %r15d
jmp 0x4066c
decl %r15d
movq %r12, %rbx
leal (%rdx,%r15), %esi
leaq -0x190(%rbp), %rax
movq %rax, -0x1a0(%rbp)
leaq -0x1a0(%rbp), %r13
movq %r13, %rdi
movq %rdx, %r12
movl $0x2d, %edx
callq 0x3250
movq -0x1a0(%rbp), %rdi
addq %r12, %rdi
movl %r15d, %esi
movl -0xf0(%rbp), %edx
callq 0x2a6a5
movl $0x6, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x3769a(%rip), %rcx     # 0x77d5e
callq 0x3230
leaq -0x150(%rbp), %r15
movq %r15, -0x160(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq -0x160(%rbp), %r13
je 0x40700
movq %rdx, -0x160(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x150(%rbp)
jmp 0x40707
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x158(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r13, %rdi
leaq 0x37ec4(%rip), %rsi     # 0x785ef
callq 0x33d0
leaq -0xd8(%rbp), %rsi
movq %rsi, -0xe8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40760
movq %rdx, -0xe8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xd8(%rbp)
jmp 0x40766
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xe0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
leaq -0xe8(%rbp), %rdi
callq 0x30a0
leaq -0xb8(%rbp), %rsi
movq %rsi, -0xc8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x407ca
movq %rdx, -0xc8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xb8(%rbp)
jmp 0x407d0
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xc0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0xc8(%rbp), %rdi
leaq 0x38f19(%rip), %rsi     # 0x79711
callq 0x33d0
leaq -0x58(%rbp), %rsi
movq %rsi, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40821
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x40827
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x2a942
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x4085d
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x40875
callq 0x31d0
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x4088d
callq 0x31d0
movq -0x160(%rbp), %rdi
cmpq %r15, %rdi
je 0x4089e
callq 0x31d0
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
leaq -0x110(%rbp), %r15
je 0x408bd
callq 0x31d0
movq %r13, %rdi
leaq 0x37ce8(%rip), %rsi     # 0x785af
movq %r15, %rdx
callq 0x2a567
movq %r13, %rdi
leaq 0x38784(%rip), %rsi     # 0x7905d
callq 0x33d0
leaq -0xd8(%rbp), %rsi
movq %rsi, -0xe8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4090e
movq %rdx, -0xe8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xd8(%rbp)
jmp 0x40914
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xe0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r15d
cmpl $0xa, -0xf0(%rbp)
movq -0x1c8(%rbp), %rdx
jb 0x4098e
movl $0x4, %r15d
movl -0xf0(%rbp), %eax
cmpl $0x63, %eax
jbe 0x40985
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x4098b
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x4098e
movl %eax, %ecx
movl $0xd1b71759, %esi       # imm = 0xD1B71759
imulq %rsi, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x40950
addl $-0x3, %r15d
jmp 0x4098e
addl $-0x2, %r15d
jmp 0x4098e
decl %r15d
leal (%rdx,%r15), %esi
leaq -0x190(%rbp), %rax
movq %rax, -0x1a0(%rbp)
leaq -0x1a0(%rbp), %rdi
movq %rdx, %r12
movl $0x2d, %edx
callq 0x3250
movq -0x1a0(%rbp), %rdi
addq %r12, %rdi
movl %r15d, %esi
movl -0xf0(%rbp), %edx
callq 0x2a6a5
movq -0xe8(%rbp), %rcx
movl $0xf, %edi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rcx
je 0x409eb
movq -0xd8(%rbp), %rdi
movq -0xe0(%rbp), %r8
movq -0x1a0(%rbp), %rsi
movq -0x198(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
movq -0x1a8(%rbp), %r15
leaq -0x130(%rbp), %rbx
jbe 0x40a34
movl $0xf, %edi
leaq -0x190(%rbp), %r9
cmpq %r9, %rsi
je 0x40a2f
movq -0x190(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x40a42
leaq -0xe8(%rbp), %rdi
callq 0x30a0
jmp 0x40a52
leaq -0x1a0(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0xb8(%rbp), %rsi
movq %rsi, -0xc8(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x40a7f
movq %rdx, -0xc8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xb8(%rbp)
jmp 0x40a85
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0xc0(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0xc8(%rbp), %rdi
leaq 0x385b3(%rip), %rsi     # 0x79065
callq 0x33d0
leaq -0x58(%rbp), %rsi
movq %rsi, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40adb
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x40ae1
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x2a942
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x40b17
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x40b2f
callq 0x31d0
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x40b47
callq 0x31d0
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x40b5f
callq 0x31d0
movq -0x160(%rbp), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
je 0x40b77
callq 0x31d0
leaq -0xc8(%rbp), %r12
movq %r12, %rdi
leaq 0x384f2(%rip), %rsi     # 0x7907a
leaq -0x88(%rbp), %rdx
callq 0x2a567
movq %r12, %rdi
leaq 0x384ee(%rip), %rsi     # 0x7908c
callq 0x33d0
leaq -0x58(%rbp), %rsi
movq %rsi, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40bc7
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x40bcd
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x2a942
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x40c03
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x40c1b
callq 0x31d0
movq %r12, %rdi
leaq 0x38478(%rip), %rsi     # 0x7909d
movq %rbx, %rdx
callq 0x2a567
movq %r12, %rdi
leaq 0x38478(%rip), %rsi     # 0x790af
callq 0x33d0
leaq -0x58(%rbp), %rsi
movq %rsi, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40c60
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x40c66
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x2a942
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x40c9c
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x40cb4
callq 0x31d0
movq %r13, %rdi
leaq 0x378f1(%rip), %rsi     # 0x785af
leaq -0x180(%rbp), %rdx
callq 0x2a567
movq %r13, %rdi
leaq 0x3757f(%rip), %rsi     # 0x78253
callq 0x33d0
leaq -0xd8(%rbp), %rsi
movq %rsi, -0xe8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40d09
movq %rdx, -0xe8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xd8(%rbp)
jmp 0x40d0f
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xe0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x130(%rbp), %rsi
movq -0x128(%rbp), %rdx
leaq -0xe8(%rbp), %rdi
callq 0x30a0
leaq -0xb8(%rbp), %rsi
movq %rsi, -0xc8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40d73
movq %rdx, -0xc8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xb8(%rbp)
jmp 0x40d79
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xc0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0xc8(%rbp), %rdi
leaq 0x38970(%rip), %rsi     # 0x79711
callq 0x33d0
leaq -0x58(%rbp), %rsi
movq %rsi, -0x68(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40dca
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0x40dd0
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x2a942
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x40e06
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x40e1e
callq 0x31d0
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x40e36
callq 0x31d0
movq -0x160(%rbp), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
leaq -0x38(%rbp), %rbx
leaq -0x48(%rbp), %r13
je 0x40e56
callq 0x31d0
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x40e6e
callq 0x31d0
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x40e86
callq 0x31d0
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x40e9e
callq 0x31d0
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x40eb3
callq 0x31d0
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x40ecb
callq 0x31d0
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x40ed9
callq 0x31d0
incl %r14d
cmpl %r15d, %r14d
jne 0x3f5d7
movq -0x1c0(%rbp), %rax
movl (%rax), %ebx
cmpl $0x3, %ebx
movq -0x140(%rbp), %r12
movq -0x1b0(%rbp), %rcx
jl 0x413ec
movl -0x138(%rbp), %eax
movq %rax, -0xf0(%rbp)
xorl %edx, %edx
leaq 0x386e6(%rip), %r12     # 0x79601
xorl %r14d, %r14d
movq %rdx, -0x1c8(%rbp)
movslq (%rcx), %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 0x40f6b
leaq 0x18(%rax), %rcx
movq %rcx, -0x10(%rcx)
movq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rcx
addq $-0x20, %rbx
jne 0x40f52
addq $0x8, %rax
movq -0x140(%rbp), %r13
movq (%r13), %rcx
movq %rax, (%rcx,%r14,8)
testq %r14, %r14
movq -0x1c8(%rbp), %r15
je 0x40fb2
xorl %ebx, %ebx
movq (%r13), %rax
movq (%rax,%r14,8), %rdi
movq 0x8(%rdi,%rbx), %rdx
addq %rbx, %rdi
xorl %esi, %esi
movq %r12, %rcx
xorl %r8d, %r8d
callq 0x3310
addq $0x20, %rbx
cmpq %rbx, %r15
jne 0x40f8c
cmpl $0x0, -0x138(%rbp)
movq -0x1b0(%rbp), %rcx
leaq -0x110(%rbp), %r13
jle 0x413b9
xorl %r15d, %r15d
leaq (%r15,%r14), %rbx
movslq (%rcx), %rax
cmpq %rax, %rbx
jge 0x413b9
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movb $0x0, -0x38(%rbp)
movl $0x1, %r12d
cmpq $0xa, %r14
jb 0x41047
movl $0x4, %r12d
movl %r14d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x4103e
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x41044
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x41047
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r12d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x4100e
addl $-0x3, %r12d
jmp 0x41047
addl $-0x2, %r12d
jmp 0x41047
decl %r12d
movl %r12d, %esi
leaq -0x100(%rbp), %rax
movq %rax, -0x110(%rbp)
movq %r13, %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x110(%rbp), %rdi
movl %r12d, %esi
movl %r14d, %edx
callq 0x2a6a5
movl $0x3, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x37fce(%rip), %rcx     # 0x79059
callq 0x3230
leaq -0x170(%rbp), %rsi
movq %rsi, -0x180(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x410c0
movq %rdx, -0x180(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x170(%rbp)
jmp 0x410c6
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x178(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x180(%rbp), %rdi
leaq 0x3739c(%rip), %rsi     # 0x7848a
callq 0x33d0
leaq -0x120(%rbp), %rsi
movq %rsi, -0x130(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x41123
movq %rdx, -0x130(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x120(%rbp)
jmp 0x41129
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x128(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r12d
cmpq $0xa, %r15
jb 0x41196
movl $0x4, %r12d
movl %r15d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x4118d
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x41193
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x41196
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r12d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x4115d
addl $-0x3, %r12d
jmp 0x41196
addl $-0x2, %r12d
jmp 0x41196
decl %r12d
movl %r12d, %esi
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq -0x68(%rbp), %rdi
movl $0x2d, %edx
callq 0x3250
movq -0x68(%rbp), %rdi
movl %r12d, %esi
movl %r15d, %edx
callq 0x2a6a5
movq -0x130(%rbp), %rcx
movl $0xf, %edi
leaq -0x120(%rbp), %rax
cmpq %rax, %rcx
je 0x411dd
movq -0x120(%rbp), %rdi
movq -0x128(%rbp), %r8
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x4120c
movl $0xf, %edi
leaq -0x58(%rbp), %r9
cmpq %r9, %rsi
je 0x41207
movq -0x58(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x4121a
leaq -0x130(%rbp), %rdi
callq 0x30a0
jmp 0x41227
leaq -0x68(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0x78(%rbp), %rsi
movq %rsi, -0x88(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x4124e
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x41254
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x80(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x88(%rbp), %rdi
leaq 0x36b9b(%rip), %rsi     # 0x77e19
callq 0x33d0
movq %r13, %r12
leaq -0x98(%rbp), %r13
movq %r13, -0xa8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x412b6
movq %rdx, -0xa8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x98(%rbp)
jmp 0x412be
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, -0xa0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x48(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x3260
movq -0xa8(%rbp), %rdi
cmpq %r13, %rdi
je 0x412f9
callq 0x31d0
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
movq %r12, %r13
je 0x41311
callq 0x31d0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
leaq 0x382de(%rip), %r12     # 0x79601
je 0x4132a
callq 0x31d0
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x41342
callq 0x31d0
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x4135a
callq 0x31d0
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x41372
callq 0x31d0
movq -0x140(%rbp), %rax
movq (%rax), %rax
shlq $0x5, %rbx
addq (%rax,%r14,8), %rbx
movq %rbx, %rdi
leaq -0x48(%rbp), %rsi
callq 0x3120
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x413a2
callq 0x31d0
incq %r15
cmpq -0xf0(%rbp), %r15
movq -0x1b0(%rbp), %rcx
jne 0x40fd0
incq %r14
movq -0x1c0(%rbp), %rax
movslq (%rax), %rbx
leaq -0x2(%rbx), %rax
movq -0x1c8(%rbp), %rdx
addq $0x20, %rdx
cmpq %rax, %r14
jl 0x40f1e
movq -0x1a8(%rbp), %r15
movq -0x140(%rbp), %r12
movq %rbx, %r13
movslq (%rcx), %r14
movq %r14, %rbx
shlq $0x5, %rbx
leaq 0x8(%rbx), %rax
testq %r14, %r14
movq $-0x1, %rdi
cmovnsq %rax, %rdi
callq 0x3030
leaq 0x8(%rax), %rcx
movq %r14, (%rax)
testq %r14, %r14
je 0x41439
addq $0x18, %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
addq $0x20, %rax
addq $-0x20, %rbx
jne 0x41420
movq (%r12), %rax
movslq %r13d, %rdx
movq %rcx, -0x10(%rax,%rdx,8)
testl %r15d, %r15d
movq -0x1b8(%rbp), %rax
jle 0x415fb
addl %r15d, %eax
movl %eax, -0x1b0(%rbp)
leaq -0x38(%rbp), %rbx
movl %r15d, %eax
movq %rax, -0xf0(%rbp)
xorl %r14d, %r14d
leaq -0xa8(%rbp), %r15
movl $0xd1b71759, %r13d      # imm = 0xD1B71759
movl $0x1, %r12d
cmpq $0xa, %r14
jb 0x414ca
movl $0x4, %r12d
movl %r14d, %eax
cmpl $0x63, %eax
jbe 0x414c1
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x414c7
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x414ca
movl %eax, %ecx
imulq %r13, %rcx
shrq $0x2d, %rcx
addl $0x4, %r12d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x41491
addl $-0x3, %r12d
jmp 0x414ca
addl $-0x2, %r12d
jmp 0x414ca
decl %r12d
movl %r12d, %esi
leaq -0x98(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq %r15, %rdi
movl $0x2d, %edx
callq 0x3250
movq -0xa8(%rbp), %rdi
movl %r12d, %esi
movl %r14d, %edx
callq 0x2a6a5
movl $0x5, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x37b40(%rip), %rcx     # 0x7904e
callq 0x3230
movq %rbx, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq -0x140(%rbp), %rsi
je 0x4153a
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x41540
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 (%rsi), %rax
movq -0x1c0(%rbp), %rcx
movslq (%rcx), %rcx
movq %r14, %rdi
shlq $0x5, %rdi
addq -0x10(%rax,%rcx,8), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3260
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x41587
callq 0x31d0
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x4159f
callq 0x31d0
incq %r14
cmpq -0xf0(%rbp), %r14
jne 0x4147c
cmpl $0x0, -0x1a8(%rbp)
movq -0x1b8(%rbp), %rbx
movq 0x10(%rbp), %r14
movl -0x1b0(%rbp), %r15d
jle 0x415fb
movq -0x138(%rbp), %rax
cmpl %r15d, %eax
cmovgl %eax, %r15d
movl $0x18, %edi
callq 0x3200
movl %ebx, 0x10(%rax)
movq %rax, %rdi
movq %r14, %rsi
callq 0x3060
incq 0x10(%r14)
incl %ebx
cmpl %ebx, %r15d
jne 0x415d8
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4161b
jmp 0x4161b
jmp 0x41630
jmp 0x41630
jmp 0x41656
jmp 0x41656
jmp 0x4161b
movq %rax, %r14
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x41633
callq 0x31d0
jmp 0x41633
jmp 0x41630
movq %rax, %r14
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
jne 0x4166a
jmp 0x4166f
jmp 0x41656
jmp 0x41656
jmp 0x41b4a
jmp 0x41b4a
movq %rax, %r14
jmp 0x4166f
movq %rax, %r14
movq -0xa8(%rbp), %rdi
cmpq %r12, %rdi
je 0x4166f
callq 0x31d0
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
jmp 0x41bef
movq %rax, %r14
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
jmp 0x41bef
jmp 0x4173e
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x416dd
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x416c5
leaq -0x38(%rbp), %rbx
movq %rax, %r14
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x416c5
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x416dd
callq 0x31d0
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
jmp 0x41777
jmp 0x4172d
jmp 0x416f8
jmp 0x41701
jmp 0x4172d
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x4171a
leaq -0x38(%rbp), %rbx
movq %rax, %r14
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x4171a
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
jmp 0x419a3
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x419ad
jmp 0x4198e
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x41781
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x41769
leaq -0x38(%rbp), %rbx
movq %rax, %r14
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x41769
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x41781
callq 0x31d0
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x41995
callq 0x31d0
jmp 0x41995
leaq -0x38(%rbp), %rbx
movq %rax, %r14
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x41b3a
callq 0x31d0
jmp 0x41b3a
jmp 0x417e6
jmp 0x417fd
jmp 0x41809
jmp 0x41812
jmp 0x4181b
jmp 0x41824
jmp 0x4182d
jmp 0x417e6
jmp 0x417fd
jmp 0x41809
jmp 0x41812
jmp 0x4181b
jmp 0x41824
jmp 0x4182d
movq %rax, %r14
leaq -0x78(%rbp), %r15
leaq -0x38(%rbp), %rbx
leaq -0x98(%rbp), %r12
jmp 0x419d0
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x418a6
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x4188e
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x41876
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x4185e
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x4184c
leaq -0x38(%rbp), %rbx
movq %rax, %r14
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x4184c
callq 0x31d0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x4185e
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x41876
callq 0x31d0
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x4188e
callq 0x31d0
movq -0x160(%rbp), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
je 0x418a6
callq 0x31d0
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x418be
callq 0x31d0
leaq -0x98(%rbp), %r12
leaq -0x78(%rbp), %r15
jmp 0x419d0
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x418be
leaq -0x38(%rbp), %rbx
movq %rax, %r14
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
jmp 0x418b4
jmp 0x41982
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x41972
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x4195a
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x41942
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x4192a
leaq -0x38(%rbp), %rbx
movq %rax, %r14
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x4192a
callq 0x31d0
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x41942
callq 0x31d0
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x4195a
callq 0x31d0
movq -0x160(%rbp), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
je 0x41972
callq 0x31d0
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
jmp 0x419a3
movq %rax, %r14
movq %rbx, %r12
leaq -0x38(%rbp), %rbx
jmp 0x419b4
leaq -0x38(%rbp), %rbx
movq %rax, %r14
movq -0x160(%rbp), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
je 0x419ad
callq 0x31d0
leaq -0x98(%rbp), %r12
leaq -0x78(%rbp), %r15
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x419d0
callq 0x31d0
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x419e8
callq 0x31d0
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x41a00
callq 0x31d0
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x41a11
callq 0x31d0
movq -0xa8(%rbp), %rdi
cmpq %r12, %rdi
je 0x41a22
callq 0x31d0
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
jne 0x41bf4
jmp 0x41bf9
leaq -0x38(%rbp), %rbx
jmp 0x41b52
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x41a5e
leaq -0x38(%rbp), %rbx
movq %rax, %r14
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x41a5e
callq 0x31d0
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
jne 0x41a1d
jmp 0x41a22
jmp 0x41ac7
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x41ab7
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x41a9f
leaq -0x38(%rbp), %rbx
movq %rax, %r14
movq -0x88(%rbp), %rdi
cmpq %r15, %rdi
je 0x41a9f
callq 0x31d0
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x41ab7
callq 0x31d0
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
jmp 0x41ae5
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x41aef
leaq -0x38(%rbp), %rbx
movq %rax, %r14
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x41aef
callq 0x31d0
leaq -0x98(%rbp), %r12
jmp 0x41a11
leaq -0x38(%rbp), %rbx
movq %rax, %r14
jmp 0x41b23
leaq -0x38(%rbp), %rbx
movq %rax, %r14
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x41b23
callq 0x31d0
leaq -0x98(%rbp), %r12
leaq -0x78(%rbp), %r15
jmp 0x41a00
leaq -0x38(%rbp), %rbx
movq %rax, %r14
leaq -0x98(%rbp), %r12
leaq -0x78(%rbp), %r15
jmp 0x419e8
movq %rax, %r14
jmp 0x41bf9
movq %rax, %r14
jmp 0x41a22
jmp 0x41b80
movq %rax, %r14
jmp 0x41bcf
movq %rax, %r14
jmp 0x41b9f
movq %rax, %r14
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x41b8d
callq 0x31d0
jmp 0x41b8d
movq %rax, %r14
jmp 0x41be7
movq %rax, %r14
jmp 0x41bb7
movq %rax, %r14
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x41b9f
callq 0x31d0
leaq -0x120(%rbp), %rax
movq -0x130(%rbp), %rdi
cmpq %rax, %rdi
je 0x41bb7
callq 0x31d0
leaq -0x170(%rbp), %rax
movq -0x180(%rbp), %rdi
cmpq %rax, %rdi
je 0x41bcf
callq 0x31d0
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x41be7
callq 0x31d0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x41bf9
callq 0x31d0
movq %r14, %rdi
callq 0x33a0