// File: /workspace/github_cpp_makefile_star2_O3/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 0x4f8a1
leaq 0x103661(%rip), %rsi    # 0x1525ef
movl $0xe, %edx
movq %rbp, %rdi
callq 0x44e0
leaq 0x10467c(%rip), %rsi    # 0x15361e
movl $0x1, %edx
movq %rbp, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4f0f3
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 0x8406c
movsd 0x10329e(%rip), %xmm1   # 0x152290
ucomisd %xmm0, %xmm1
jbe 0x4f0d3
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %r15, %rdx
cmpq %r13, %rdx
jbe 0x4fb16
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 0x84196
movl $0x7, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10252a(%rip), %rsi    # 0x1515a0
callq 0x44e0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x84242
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x103393(%rip), %rsi    # 0x15242b
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x84242
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x1025d5(%rip), %rsi    # 0x15168f
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
leaq 0x104550(%rip), %rsi    # 0x15361e
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 0x4efce
leaq 0x103504(%rip), %rsi    # 0x1525fe
movl $0xc, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x44e0
leaq 0x10450b(%rip), %rsi    # 0x15361e
movl $0x1, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4f282
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 0x8406c
movsd 0x103135(%rip), %xmm1   # 0x152298
ucomisd %xmm0, %xmm1
jbe 0x4f262
movq (%r14), %rax
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8406c
ucomisd 0x10310b(%rip), %xmm0   # 0x152290
jb 0x4f262
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %r15, %rdx
cmpq %r13, %rdx
jbe 0x4fb16
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 0x84196
movl $0x7, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10239b(%rip), %rsi    # 0x1515a0
callq 0x44e0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x84242
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x103204(%rip), %rsi    # 0x15242b
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x84242
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x102446(%rip), %rsi    # 0x15168f
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
leaq 0x1043c1(%rip), %rsi    # 0x15361e
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 0x4f13f
leaq 0x103382(%rip), %rsi    # 0x15260b
movl $0xc, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x44e0
leaq 0x10437c(%rip), %rsi    # 0x15361e
movl $0x1, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4f411
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 0x8406c
ucomisd 0x102fa6(%rip), %xmm0   # 0x152298
jb 0x4f3f1
movq (%r14), %rax
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8406c
movsd 0xfdd00(%rip), %xmm1    # 0x14d010
ucomisd %xmm0, %xmm1
jbe 0x4f3f1
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %r15, %rdx
cmpq %r13, %rdx
jbe 0x4fb16
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 0x84196
movl $0x7, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10220c(%rip), %rsi    # 0x1515a0
callq 0x44e0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x84242
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x103075(%rip), %rsi    # 0x15242b
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x84242
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x1022b7(%rip), %rsi    # 0x15168f
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
leaq 0x104232(%rip), %rsi    # 0x15361e
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 0x4f2ce
leaq 0x103200(%rip), %rsi    # 0x152618
movl $0xc, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x44e0
leaq 0x1041ed(%rip), %rsi    # 0x15361e
movl $0x1, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4f5a0
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 0x8406c
ucomisd 0xfdb8f(%rip), %xmm0    # 0x14d010
jb 0x4f580
movq (%r14), %rax
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8406c
movsd 0x102e01(%rip), %xmm1   # 0x1522a0
ucomisd %xmm0, %xmm1
jbe 0x4f580
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %r15, %rdx
cmpq %r13, %rdx
jbe 0x4fb16
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 0x84196
movl $0x7, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10207d(%rip), %rsi    # 0x1515a0
callq 0x44e0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x84242
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x102ee6(%rip), %rsi    # 0x15242b
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x84242
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x102128(%rip), %rsi    # 0x15168f
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
leaq 0x1040a3(%rip), %rsi    # 0x15361e
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 0x4f45d
leaq 0x10307e(%rip), %rsi    # 0x152625
movl $0xe, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x44e0
leaq 0x10405e(%rip), %rsi    # 0x15361e
movl $0x1, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4f72f
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 0x8406c
ucomisd 0x102c90(%rip), %xmm0   # 0x1522a0
jb 0x4f70f
movq (%r14), %rax
leaq (%rax,%rbx), %rdi
addq $0x18, %rdi
callq 0x8406c
movsd 0x102c7a(%rip), %xmm1   # 0x1522a8
ucomisd %xmm0, %xmm1
jbe 0x4f70f
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %r15, %rdx
cmpq %r13, %rdx
jbe 0x4fb16
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 0x84196
movl $0x7, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x101eee(%rip), %rsi    # 0x1515a0
callq 0x44e0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x84242
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x102d57(%rip), %rsi    # 0x15242b
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x84242
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x101f99(%rip), %rsi    # 0x15168f
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
leaq 0x103f14(%rip), %rsi    # 0x15361e
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 0x4f5ec
leaq 0x101f5c(%rip), %rsi    # 0x151692
movl $0xb, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x44e0
leaq 0x103ecf(%rip), %rsi    # 0x15361e
movl $0x1, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4fb07
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 0x8406c
ucomisd 0x102b09(%rip), %xmm0   # 0x1522a8
jb 0x4f87c
movq (%r14), %rax
movq 0x8(%r14), %rdx
subq %rax, %rdx
sarq $0x4, %rdx
imulq %r15, %rdx
cmpq %r13, %rdx
jbe 0x4fb16
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 0x84196
movl $0x7, %edx
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
leaq 0x101d81(%rip), %rsi    # 0x1515a0
callq 0x44e0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x84242
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x102bea(%rip), %rsi    # 0x15242b
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x84242
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x101e2c(%rip), %rsi    # 0x15168f
callq 0x44e0
movl $0x1, %edx
movq %r13, %rdi
leaq 0x103da7(%rip), %rsi    # 0x15361e
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 0x4f77b
jmp 0x4fb07
movq %rdx, 0x58(%rsp)
leaq 0x102d51(%rip), %rsi    # 0x1525fe
movl $0xc, %edx
movq %rbp, %rdi
callq 0x44e0
leaq 0x103d5d(%rip), %rsi    # 0x15361e
movl $0x1, %edx
movq %rbp, %rdi
callq 0x44e0
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x4f9d0
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 0x84196
movl $0x7, %edx
movq %rbp, %rdi
leaq 0x101c5b(%rip), %rsi    # 0x1515a0
callq 0x44e0
movq %rbp, %rdi
movq %r13, %rsi
callq 0x84242
movq %rax, %rbp
movl $0x3, %edx
movq %rax, %rdi
leaq 0x102ac4(%rip), %rsi    # 0x15242b
callq 0x44e0
movq %rbp, %rdi
movq %r12, %rsi
callq 0x84242
movq %rax, %rbp
movl $0x2, %edx
movq %rax, %rdi
leaq 0x101d06(%rip), %rsi    # 0x15168f
callq 0x44e0
movl $0x1, %edx
movq %rbp, %rdi
movq 0x18(%rsp), %rbp
leaq 0x103c7c(%rip), %rsi    # 0x15361e
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 0x4f8f1
leaq 0x101cbb(%rip), %rsi    # 0x151692
movl $0xb, %edx
movq %rbp, %rdi
callq 0x44e0
leaq 0x103c33(%rip), %rsi    # 0x15361e
movl $0x1, %edx
movq %rbp, %rdi
callq 0x44e0
movq 0x58(%rsp), %rcx
movq (%rcx), %rax
cmpq %rax, 0x8(%rcx)
je 0x4fb07
movl $0x1, %ebx
leaq 0x38(%rsp), %r15
xorl %ecx, %ecx
leaq 0x60(%rsp), %r14
leaq 0x20(%rsp), %r12
leaq 0x103bf7(%rip), %rbp    # 0x15361e
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 0x84196
movl $0x7, %edx
movq 0x18(%rsp), %r13
movq %r13, %rdi
leaq 0x101b20(%rip), %rsi    # 0x1515a0
callq 0x44e0
movq %r13, %rdi
movq %r12, %rsi
callq 0x84242
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
leaq 0x102989(%rip), %rsi    # 0x15242b
callq 0x44e0
movq %r13, %rdi
movq %r14, %rsi
callq 0x84242
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x101bcb(%rip), %rsi    # 0x15168f
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 0x4fa27
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xfdbd8(%rip), %rdi     # 0x14d6f5
movq %r13, %rsi
xorl %eax, %eax
callq 0x4630