// File: /workspace/github_cpp_makefile_star2_O1/Luthaf[P]zeopp/ray.cc
// Function: reportRays(std::ostream&, std::vector<ray, std::allocator<ray>>&, std::vector<ray, std::allocator<ray>>&, bool)
void reportRays(ostream &output, vector<ray>& axsray, vector<ray>& inaxsray, bool colors){
  if (colors == true)
    {
      //Colors are in order of the rainbow
      output << "{color purple}" << "\n";
      for(unsigned int i = 0; i < axsray.size(); i++)
	{
	  if (axsray[i].vector.magnitude() < 3)
	    {
	      ray rand_ray = axsray.at(i);
	      Point addition = rand_ray.base + rand_ray.vector;
	      output << "{line {" << rand_ray.base << "} {" << addition << "}}" << "\n";
	    }
	}
      output << "{color blue}" << "\n";
      for(unsigned int i = 0; i < axsray.size(); i++)
	{
	  if (axsray[i].vector.magnitude() < 6 && axsray[i].vector.magnitude() >= 3)
	    {
	      ray rand_ray = axsray.at(i);
	      Point addition = rand_ray.base + rand_ray.vector;
	      output << "{line {" << rand_ray.base << "} {" << addition << "}}" << "\n";
	    }
	}
      output << "{color cyan}" << "\n";
      for(unsigned int i = 0; i < axsray.size(); i++)
	{
	  if (axsray[i].vector.magnitude() >= 6 && axsray[i].vector.magnitude() < 9)
	    {
	      ray rand_ray = axsray.at(i);
	      Point addition = rand_ray.base + rand_ray.vector;
	      output << "{line {" << rand_ray.base << "} {" << addition << "}}" << "\n";
	    }
	}
      output << "{color lime}" << "\n";
      for(unsigned int i = 0; i < axsray.size(); i++)
	{
	  if (axsray[i].vector.magnitude() >= 9 && axsray[i].vector.magnitude() < 12)
	    {
	      ray rand_ray = axsray.at(i);
	      Point addition = rand_ray.base + rand_ray.vector;
	      output << "{line {" << rand_ray.base << "} {" << addition << "}}" << "\n";
	    }
	}
      output << "{color orange}" << "\n";
      for(unsigned int i = 0; i < axsray.size(); i++)
	{
	  if (axsray[i].vector.magnitude() >= 12 && axsray[i].vector.magnitude() < 20)
	    {
	      ray rand_ray = axsray.at(i);
	      Point addition = rand_ray.base + rand_ray.vector;
	      output << "{line {" << rand_ray.base << "} {" << addition << "}}" << "\n";
	    }
	}
      output << "{color red}" << "\n";
      for(unsigned int i = 0; i < axsray.size(); i++)
	{
	  if (axsray[i].vector.magnitude() >= 20)
	    {
	      ray rand_ray = axsray.at(i);
	      Point addition = rand_ray.base + rand_ray.vector;
	      output << "{line {" << rand_ray.base << "} {" << addition << "}}" << "\n";
	    }
	}
    }
  else //colors if false
    {
      output << "{color blue}" << "\n";
      for(unsigned int i = 0; i < axsray.size(); i++){
	ray rand_ray = axsray.at(i);
	Point addition = rand_ray.base + rand_ray.vector;
	output << "{line {" << rand_ray.base << "} {" << addition << "}}" << "\n";
      }  
      output << "{color red}" << "\n";
      for(unsigned int i = 0; i < inaxsray.size(); i++){
	ray rand_ray = inaxsray.at(i);
	Point addition = rand_ray.base + rand_ray.vector;
	output << "{line {" <<  rand_ray.base << "} {" << addition << "}}" << "\n";
      }
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rsi, %r14
movq %rdi, %rbp
testl %ecx, %ecx
movq %rdi, 0x18(%rsp)
je 0x4fbca
leaq 0x105288(%rip), %rsi    # 0x15453f
movl $0xe, %edx
movq %rbp, %rdi
callq 0x44e0
leaq 0x106263(%rip), %rsi    # 0x15552e
movl $0x1, %edx
movq %rbp, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4f41c
movl $0x1, %ebp
xorl %r13d, %r13d
movabsq $-0x5555555555555555, %r15 # imm = 0xAAAAAAAAAAAAAAAB
leaq (,%r13,2), %rbx
addq %r13, %rbx
shlq $0x4, %rbx
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8555a
movsd 0x104ec5(%rip), %xmm1   # 0x1541e0
ucomisd %xmm0, %xmm1
jbe 0x4f3fc
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %r15, %rdx
cmpq %r13, %rdx
jbe 0x4fe3f
movups (%rax,%rbx), %xmm0
movupd 0x10(%rax,%rbx), %xmm1
movups 0x20(%rax,%rbx), %xmm2
movaps %xmm2, 0x40(%rsp)
movapd %xmm1, 0x30(%rsp)
movaps %xmm0, 0x20(%rsp)
leaq 0x38(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x10(%rsp)
movupd (%rcx), %xmm0
movupd %xmm0, (%rsp)
leaq 0x60(%rsp), %r12
movq %r12, %rdi
leaq 0x20(%rsp), %r13
movq %r13, %rsi
callq 0x857a0
movl $0x7, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x104171(%rip), %rsi    # 0x153510
callq 0x44e0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x104fba(%rip), %rsi    # 0x15437b
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x1041fc(%rip), %rsi    # 0x1535df
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
leaq 0x106137(%rip), %rsi    # 0x15552e
callq 0x44e0
movl %ebp, %r13d
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
imulq %r15, %rcx
incl %ebp
cmpq %r13, %rcx
ja 0x4f2f7
leaq 0x10512b(%rip), %rsi    # 0x15454e
movl $0xc, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x44e0
leaq 0x1060f2(%rip), %rsi    # 0x15552e
movl $0x1, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4f5ab
movl $0x1, %ebp
xorl %r13d, %r13d
movabsq $-0x5555555555555555, %r15 # imm = 0xAAAAAAAAAAAAAAAB
leaq (,%r13,2), %rbx
addq %r13, %rbx
shlq $0x4, %rbx
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8555a
movsd 0x104d5c(%rip), %xmm1   # 0x1541e8
ucomisd %xmm0, %xmm1
jbe 0x4f58b
movq (%r14), %rax
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8555a
ucomisd 0x104d32(%rip), %xmm0   # 0x1541e0
jb 0x4f58b
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %r15, %rdx
cmpq %r13, %rdx
jbe 0x4fe3f
movups (%rax,%rbx), %xmm0
movupd 0x10(%rax,%rbx), %xmm1
movups 0x20(%rax,%rbx), %xmm2
movaps %xmm2, 0x40(%rsp)
movapd %xmm1, 0x30(%rsp)
movaps %xmm0, 0x20(%rsp)
leaq 0x38(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x10(%rsp)
movupd (%rcx), %xmm0
movupd %xmm0, (%rsp)
leaq 0x60(%rsp), %r12
movq %r12, %rdi
leaq 0x20(%rsp), %r13
movq %r13, %rsi
callq 0x857a0
movl $0x7, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x103fe2(%rip), %rsi    # 0x153510
callq 0x44e0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x104e2b(%rip), %rsi    # 0x15437b
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x10406d(%rip), %rsi    # 0x1535df
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
leaq 0x105fa8(%rip), %rsi    # 0x15552e
callq 0x44e0
movl %ebp, %r13d
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
imulq %r15, %rcx
incl %ebp
cmpq %r13, %rcx
ja 0x4f468
leaq 0x104fa9(%rip), %rsi    # 0x15455b
movl $0xc, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x44e0
leaq 0x105f63(%rip), %rsi    # 0x15552e
movl $0x1, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4f73a
movl $0x1, %ebp
xorl %r13d, %r13d
movabsq $-0x5555555555555555, %r15 # imm = 0xAAAAAAAAAAAAAAAB
leaq (,%r13,2), %rbx
addq %r13, %rbx
shlq $0x4, %rbx
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8555a
ucomisd 0x104bcd(%rip), %xmm0   # 0x1541e8
jb 0x4f71a
movq (%r14), %rax
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8555a
movsd 0xff9d7(%rip), %xmm1    # 0x14f010
ucomisd %xmm0, %xmm1
jbe 0x4f71a
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %r15, %rdx
cmpq %r13, %rdx
jbe 0x4fe3f
movups (%rax,%rbx), %xmm0
movupd 0x10(%rax,%rbx), %xmm1
movups 0x20(%rax,%rbx), %xmm2
movaps %xmm2, 0x40(%rsp)
movapd %xmm1, 0x30(%rsp)
movaps %xmm0, 0x20(%rsp)
leaq 0x38(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x10(%rsp)
movupd (%rcx), %xmm0
movupd %xmm0, (%rsp)
leaq 0x60(%rsp), %r12
movq %r12, %rdi
leaq 0x20(%rsp), %r13
movq %r13, %rsi
callq 0x857a0
movl $0x7, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x103e53(%rip), %rsi    # 0x153510
callq 0x44e0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x104c9c(%rip), %rsi    # 0x15437b
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x103ede(%rip), %rsi    # 0x1535df
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
leaq 0x105e19(%rip), %rsi    # 0x15552e
callq 0x44e0
movl %ebp, %r13d
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
imulq %r15, %rcx
incl %ebp
cmpq %r13, %rcx
ja 0x4f5f7
leaq 0x104e27(%rip), %rsi    # 0x154568
movl $0xc, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x44e0
leaq 0x105dd4(%rip), %rsi    # 0x15552e
movl $0x1, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4f8c9
movl $0x1, %ebp
xorl %r13d, %r13d
movabsq $-0x5555555555555555, %r15 # imm = 0xAAAAAAAAAAAAAAAB
leaq (,%r13,2), %rbx
addq %r13, %rbx
shlq $0x4, %rbx
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8555a
ucomisd 0xff866(%rip), %xmm0    # 0x14f010
jb 0x4f8a9
movq (%r14), %rax
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8555a
movsd 0x104a28(%rip), %xmm1   # 0x1541f0
ucomisd %xmm0, %xmm1
jbe 0x4f8a9
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %r15, %rdx
cmpq %r13, %rdx
jbe 0x4fe3f
movups (%rax,%rbx), %xmm0
movupd 0x10(%rax,%rbx), %xmm1
movups 0x20(%rax,%rbx), %xmm2
movaps %xmm2, 0x40(%rsp)
movapd %xmm1, 0x30(%rsp)
movaps %xmm0, 0x20(%rsp)
leaq 0x38(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x10(%rsp)
movupd (%rcx), %xmm0
movupd %xmm0, (%rsp)
leaq 0x60(%rsp), %r12
movq %r12, %rdi
leaq 0x20(%rsp), %r13
movq %r13, %rsi
callq 0x857a0
movl $0x7, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x103cc4(%rip), %rsi    # 0x153510
callq 0x44e0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x104b0d(%rip), %rsi    # 0x15437b
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x103d4f(%rip), %rsi    # 0x1535df
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
leaq 0x105c8a(%rip), %rsi    # 0x15552e
callq 0x44e0
movl %ebp, %r13d
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
imulq %r15, %rcx
incl %ebp
cmpq %r13, %rcx
ja 0x4f786
leaq 0x104ca5(%rip), %rsi    # 0x154575
movl $0xe, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x44e0
leaq 0x105c45(%rip), %rsi    # 0x15552e
movl $0x1, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4fa58
movl $0x1, %ebp
xorl %r13d, %r13d
movabsq $-0x5555555555555555, %r15 # imm = 0xAAAAAAAAAAAAAAAB
leaq (,%r13,2), %rbx
addq %r13, %rbx
shlq $0x4, %rbx
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8555a
ucomisd 0x1048b7(%rip), %xmm0   # 0x1541f0
jb 0x4fa38
movq (%r14), %rax
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8555a
movsd 0x1048a1(%rip), %xmm1   # 0x1541f8
ucomisd %xmm0, %xmm1
jbe 0x4fa38
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %r15, %rdx
cmpq %r13, %rdx
jbe 0x4fe3f
movups (%rax,%rbx), %xmm0
movupd 0x10(%rax,%rbx), %xmm1
movups 0x20(%rax,%rbx), %xmm2
movaps %xmm2, 0x40(%rsp)
movapd %xmm1, 0x30(%rsp)
movaps %xmm0, 0x20(%rsp)
leaq 0x38(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x10(%rsp)
movupd (%rcx), %xmm0
movupd %xmm0, (%rsp)
leaq 0x60(%rsp), %r12
movq %r12, %rdi
leaq 0x20(%rsp), %r13
movq %r13, %rsi
callq 0x857a0
movl $0x7, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x103b35(%rip), %rsi    # 0x153510
callq 0x44e0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x10497e(%rip), %rsi    # 0x15437b
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x103bc0(%rip), %rsi    # 0x1535df
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
leaq 0x105afb(%rip), %rsi    # 0x15552e
callq 0x44e0
movl %ebp, %r13d
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
imulq %r15, %rcx
incl %ebp
cmpq %r13, %rcx
ja 0x4f915
leaq 0x103b83(%rip), %rsi    # 0x1535e2
movl $0xb, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x44e0
leaq 0x105ab6(%rip), %rsi    # 0x15552e
movl $0x1, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4fe30
movl $0x1, %ebp
xorl %r13d, %r13d
movabsq $-0x5555555555555555, %r15 # imm = 0xAAAAAAAAAAAAAAAB
leaq (,%r13,2), %rbx
addq %r13, %rbx
shlq $0x4, %rbx
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8555a
ucomisd 0x104730(%rip), %xmm0   # 0x1541f8
jb 0x4fba5
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %r15, %rdx
cmpq %r13, %rdx
jbe 0x4fe3f
movups (%rax,%rbx), %xmm0
movupd 0x10(%rax,%rbx), %xmm1
movups 0x20(%rax,%rbx), %xmm2
movaps %xmm2, 0x40(%rsp)
movapd %xmm1, 0x30(%rsp)
movaps %xmm0, 0x20(%rsp)
leaq 0x38(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x10(%rsp)
movupd (%rcx), %xmm0
movupd %xmm0, (%rsp)
leaq 0x60(%rsp), %r12
movq %r12, %rdi
leaq 0x20(%rsp), %r13
movq %r13, %rsi
callq 0x857a0
movl $0x7, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1039c8(%rip), %rsi    # 0x153510
callq 0x44e0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x104811(%rip), %rsi    # 0x15437b
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x103a53(%rip), %rsi    # 0x1535df
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
leaq 0x10598e(%rip), %rsi    # 0x15552e
callq 0x44e0
movl %ebp, %r13d
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
imulq %r15, %rcx
incl %ebp
cmpq %r13, %rcx
ja 0x4faa4
jmp 0x4fe30
movq %rdx, 0x58(%rsp)
leaq 0x104978(%rip), %rsi    # 0x15454e
movl $0xc, %edx
movq %rbp, %rdi
callq 0x44e0
leaq 0x105944(%rip), %rsi    # 0x15552e
movl $0x1, %edx
movq %rbp, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4fcf9
movl $0x1, %ebx
leaq 0x38(%rsp), %r15
xorl %ecx, %ecx
leaq 0x60(%rsp), %r12
leaq 0x20(%rsp), %r13
leaq (%rcx,%rcx,2), %rcx
shlq $0x4, %rcx
movups (%rax,%rcx), %xmm0
movupd 0x10(%rax,%rcx), %xmm1
movups 0x20(%rax,%rcx), %xmm2
movaps %xmm2, 0x40(%rsp)
movapd %xmm1, 0x30(%rsp)
movaps %xmm0, 0x20(%rsp)
movq 0x10(%r15), %rax
movq %rax, 0x10(%rsp)
movupd (%r15), %xmm0
movupd %xmm0, (%rsp)
movq %r12, %rdi
movq %r13, %rsi
callq 0x857a0
movl $0x7, %edx
movq %rbp, %rdi
leaq 0x1038a2(%rip), %rsi    # 0x153510
callq 0x44e0
movq %rbp, %rdi
movq %r13, %rsi
callq 0x8585c
movq %rax, %rbp
movl $0x3, %edx
movq %rax, %rdi
leaq 0x1046eb(%rip), %rsi    # 0x15437b
callq 0x44e0
movq %rbp, %rdi
movq %r12, %rsi
callq 0x8585c
movq %rax, %rbp
movl $0x2, %edx
movq %rax, %rdi
leaq 0x10392d(%rip), %rsi    # 0x1535df
callq 0x44e0
movl $0x1, %edx
movq %rbp, %rdi
movq 0x18(%rsp), %rbp
leaq 0x105863(%rip), %rsi    # 0x15552e
callq 0x44e0
movl %ebx, %ecx
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
movabsq $-0x5555555555555555, %rsi # imm = 0xAAAAAAAAAAAAAAAB
imulq %rsi, %rdx
incl %ebx
cmpq %rcx, %rdx
ja 0x4fc1a
leaq 0x1038e2(%rip), %rsi    # 0x1535e2
movl $0xb, %edx
movq %rbp, %rdi
callq 0x44e0
leaq 0x10581a(%rip), %rsi    # 0x15552e
movl $0x1, %edx
movq %rbp, %rdi
callq 0x44e0
movq 0x58(%rsp), %rcx
movq (%rcx), %rax
cmpq %rax, 0x8(%rcx)
je 0x4fe30
movl $0x1, %ebx
leaq 0x38(%rsp), %r15
xorl %ecx, %ecx
leaq 0x60(%rsp), %r14
leaq 0x20(%rsp), %r12
leaq 0x1057de(%rip), %rbp    # 0x15552e
leaq (%rcx,%rcx,2), %rcx
shlq $0x4, %rcx
movups (%rax,%rcx), %xmm0
movupd 0x10(%rax,%rcx), %xmm1
movups 0x20(%rax,%rcx), %xmm2
movaps %xmm2, 0x40(%rsp)
movapd %xmm1, 0x30(%rsp)
movaps %xmm0, 0x20(%rsp)
movq 0x10(%r15), %rax
movq %rax, 0x10(%rsp)
movupd (%r15), %xmm0
movupd %xmm0, (%rsp)
movq %r14, %rdi
movq %r12, %rsi
callq 0x857a0
movl $0x7, %edx
movq 0x18(%rsp), %r13
movq %r13, %rdi
leaq 0x103767(%rip), %rsi    # 0x153510
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x1045b0(%rip), %rsi    # 0x15437b
callq 0x44e0
movq %r13, %rdi
movq %r14, %rsi
callq 0x8585c
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x1037f2(%rip), %rsi    # 0x1535df
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
movq %rbp, %rsi
callq 0x44e0
movq 0x58(%rsp), %rdx
movl %ebx, %ecx
movq (%rdx), %rax
movq 0x8(%rdx), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
movabsq $-0x5555555555555555, %rsi # imm = 0xAAAAAAAAAAAAAAAB
imulq %rsi, %rdx
incl %ebx
cmpq %rcx, %rdx
ja 0x4fd50
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xff85f(%rip), %rdi     # 0x14f6a5
movq %r13, %rsi
xorl %eax, %eax
callq 0x4630