// File: /workspace/github_cpp_makefile_star2_O3/toxaart[P]hierarchical_block_sparse_lib/source/HierarchicalBlockSparseMatrix.h
// Function: hbsm::HierarchicalBlockSparseMatrix<double>::symm_multiply(hbsm::HierarchicalBlockSparseMatrix<double> const&, bool, hbsm::HierarchicalBlockSparseMatrix<double> const&, bool, hbsm::HierarchicalBlockSparseMatrix<double>&)
void HierarchicalBlockSparseMatrix<Treal>::symm_multiply(HierarchicalBlockSparseMatrix<Treal> const & A, bool sA,
						 HierarchicalBlockSparseMatrix<Treal> const & B, bool sB,
						 HierarchicalBlockSparseMatrix<Treal> & C){

				if(A.nRows < B.nRows){ // A is to be adjusted
					HierarchicalBlockSparseMatrix<Treal>  A_alias;
					A_alias.copy(A);
					adjust_sizes(A_alias,B.nRows, B.nCols);
					symm_multiply(A_alias, sA, B, sB, C);
					return;
				}
				if(A.nRows > B.nRows){ // B is to be adjusted
					HierarchicalBlockSparseMatrix<Treal>  B_alias;
					B_alias.copy(B);
					adjust_sizes(B_alias, A.nRows, A.nCols);
					symm_multiply(A, sA, B_alias, sB, C);
					return;
				}


				if (!sA && !sB) throw std::runtime_error("Error in hbsm::symm_multiply, Neither A nor B are symmetric, one and only one of them should be symmetric.");

		    if (sA && sB) throw std::runtime_error("Error in hbsm::symm_multiply, Both A and B are symmetric, one and only one of them should be symmetric.");

				if(!C.empty()) throw std::runtime_error("Error in HierarchicalBlockSparseMatrix::symm_multiply(): non-empty matrix to write result!");

				if(A.nCols_orig != B.nRows_orig) throw std::runtime_error("Error in HierarchicalBlockSparseMatrix::symm_multiply(): matrices have bad sizes!");

				C.set_params(A.get_params());

				C.resize(A.nRows_orig,B.nCols_orig);



				if(A.lowest_level()){

					const Treal ZERO = 0.0;
					const Treal ONE = 1.0;

					//at this point all submatrices are square and have equal sizes!
					int M     = C.nRows;
					int N     = C.nCols;

					const Treal *aptr = A.get_submatrix_ptr();
					const Treal *bptr = B.get_submatrix_ptr();
					Treal *cptr = C.get_submatrix_ptr_for_modification();

					if(sA) symm("L", "U", &M, &N, &ONE, aptr, &M, bptr, &M, &ZERO, cptr, &M);
					if(sB) symm("R", "U", &M, &N, &ONE, bptr, &N, aptr, &M, &ZERO, cptr, &M);

					return;
				}


				if(sA){

					// same as regular multiplication, except that if A0 or A3 is involved, then recursive call is made

					// C0 = A0xB0 + A2xB1
					// C1 = A1xB0 + A3xB1
					// C2 = A0xB2 + A2xB3
					// C3 = A1xB2 + A3xB3

					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A0xB0;
					if(A.children[0] != NULL && B.children[0] != NULL){
						A0xB0 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						symm_multiply(*A.children[0], sA, *B.children[0], sB, *A0xB0);
					}


					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A2xB1;
					if(A.children[2] != NULL && B.children[1] != NULL){
						A2xB1 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						multiply(*A.children[2], false, *B.children[1], false, *A2xB1);
					}


					if(A0xB0 != NULL && A2xB1 == NULL){C.children[0] = A0xB0;C.children[0]->parent = &C;}
					if(A0xB0 == NULL && A2xB1 != NULL){C.children[0] = A2xB1;C.children[0]->parent = &C;}
					if(A0xB0 != NULL && A2xB1 != NULL){
						add_to_first(*A0xB0, *A2xB1);
						C.children[0] = A0xB0;
						C.children[0]->parent = &C;
					}


					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A2TxB0;
					if(A.children[2] != NULL && B.children[0] != NULL){
						A2TxB0 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						multiply(*A.children[2], true, *B.children[0], false, *A2TxB0);
					}



					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A3xB1;
					if(A.children[3] != NULL && B.children[1] != NULL){
						A3xB1 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						symm_multiply(*A.children[3], sA, *B.children[1], sB,* A3xB1);
					}



					if(A2TxB0 != NULL && A3xB1 == NULL){C.children[1] = A2TxB0;C.children[1]->parent = &C;}
					if(A2TxB0 == NULL && A3xB1 != NULL){C.children[1] = A3xB1; C.children[1]->parent = &C;}
					if(A2TxB0 != NULL && A3xB1 != NULL){
						add_to_first(*A2TxB0, *A3xB1);
						C.children[1] = A2TxB0;
						C.children[1]->parent = &C;
					}


					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A0xB2;
					if(A.children[0] != NULL && B.children[2] != NULL){
						A0xB2 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						symm_multiply(*A.children[0], sA, *B.children[2], sB, *A0xB2);
					}


					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A2xB3;
					if(A.children[2] != NULL && B.children[3] != NULL){
						A2xB3 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						multiply(*A.children[2], false, *B.children[3], false, *A2xB3);
					}


					if(A0xB2 != NULL && A2xB3 == NULL){C.children[2] = A0xB2;C.children[2]->parent = &C;}
					if(A0xB2 == NULL && A2xB3 != NULL){C.children[2] = A2xB3;C.children[2]->parent = &C;}
					if(A0xB2 != NULL && A2xB3 != NULL){
						add_to_first(*A0xB2, *A2xB3);
						C.children[2] = A0xB2;
						C.children[2]->parent = &C;
					}

					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A2TxB2;
					if(A.children[2] != NULL && B.children[2] != NULL){
						A2TxB2 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						multiply(*A.children[2], true, *B.children[2], false, *A2TxB2);
					}


					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A3xB3;
					if(A.children[3] != NULL && B.children[3] != NULL){
						A3xB3 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						symm_multiply(*A.children[3], sA, *B.children[3], sB, *A3xB3);
					}


				    if(A2TxB2 != NULL && A3xB3 == NULL){C.children[3] = A2TxB2;C.children[3]->parent = &C;}
					if(A2TxB2 == NULL && A3xB3 != NULL){C.children[3] = A3xB3;C.children[3]->parent = &C;}
					if(A2TxB2 != NULL && A3xB3 != NULL){
						add_to_first(*A2TxB2, *A3xB3);
						C.children[3] = A2TxB2;
						C.children[3]->parent = &C;
					}

					return;


				}

				if(sB){

					// same as regular multiplication, except that if B0 or B3 is involved, then recursive call is made
					// C0 = A0xB0 + A2xB1
					// C1 = A1xB0 + A3xB1
					// C2 = A0xB2 + A2xB3
					// C3 = A1xB2 + A3xB3


					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A0xB0;
					if(A.children[0] != NULL && B.children[0] != NULL){
						A0xB0 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						symm_multiply(*A.children[0], sA, *B.children[0], sB, *A0xB0);
					}


					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A2xB2T;
					if(A.children[2] != NULL && B.children[2] != NULL){
						A2xB2T = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						multiply(*A.children[2], false, *B.children[2], true, *A2xB2T);
					}


					if(A0xB0 != NULL && A2xB2T == NULL){C.children[0] = A0xB0;C.children[0]->parent = &C;}
					if(A0xB0 == NULL && A2xB2T != NULL){C.children[0] = A2xB2T;C.children[0]->parent = &C;}
					if(A0xB0 != NULL && A2xB2T != NULL){
						add_to_first(*A0xB0, *A2xB2T);
						C.children[0] = A0xB0;
						C.children[0]->parent = &C;
					}


					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A1xB0;
					if(A.children[1] != NULL && B.children[0] != NULL){
						A1xB0 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						symm_multiply(*A.children[1], sA, *B.children[0], sB, *A1xB0);
					}



					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A3xB2T;
					if(A.children[3] != NULL && B.children[2] != NULL){
						A3xB2T = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						multiply(*A.children[3], false, *B.children[2], true, *A3xB2T);
					}


					if(A1xB0 != NULL && A3xB2T == NULL){C.children[1] = A1xB0;C.children[1]->parent = &C;}
					if(A1xB0 == NULL && A3xB2T != NULL){C.children[1] = A3xB2T;C.children[1]->parent = &C;}
					if(A1xB0 != NULL && A3xB2T != NULL){
						add_to_first(*A1xB0, *A3xB2T);
						C.children[1] = A1xB0;
						C.children[1]->parent = &C;
					}


					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A0xB2;
					if(A.children[0] != NULL && B.children[2] != NULL){
						A0xB2 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						multiply(*A.children[0], false, *B.children[2], false, *A0xB2);
					}


					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A2xB3;
					if(A.children[2] != NULL && B.children[3] != NULL){
						A2xB3 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						symm_multiply(*A.children[2], sA, *B.children[3], sB, *A2xB3);
					}


					if(A0xB2 != NULL && A2xB3 == NULL){C.children[2] = A0xB2;C.children[2]->parent = &C;}
					if(A0xB2 == NULL && A2xB3 != NULL){C.children[2] = A2xB3;C.children[2]->parent = &C;}
					if(A0xB2 != NULL && A2xB3 != NULL){
						add_to_first(*A0xB2, *A2xB3);
						C.children[2] = A0xB2;
						C.children[2]->parent = &C;
					}

					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A1xB2;
					if(A.children[1] != NULL && B.children[2] != NULL){
						A1xB2 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						multiply(*A.children[1], false, *B.children[2], false, *A1xB2);
					}


					std::shared_ptr<HierarchicalBlockSparseMatrix<Treal> > A3xB3;
					if(A.children[3] != NULL && B.children[3] != NULL){
						A3xB3 = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
						symm_multiply(*A.children[3], sA, *B.children[3], sB, *A3xB3);
					}



					if(A1xB2 != NULL && A3xB3 == NULL){C.children[3] = A1xB2;C.children[3]->parent = &C;}
					if(A1xB2 == NULL && A3xB3 != NULL){C.children[3] = A3xB3;C.children[3]->parent = &C;}
					if(A1xB2 != NULL && A3xB3 != NULL){
						add_to_first(*A1xB2,*A3xB3);
						C.children[3] = A1xB2;
						C.children[3]->parent = &C;
					}

					return;

				}

				return;

		 }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %r8, %rbp
movl %ecx, %r14d
movq %rdx, %rbx
movl %esi, %r12d
movq %rdi, %r15
movl (%rdx), %eax
cmpl %eax, (%rdi)
jge 0x1dce8
xorps %xmm0, %xmm0
leaq 0x80(%rsp), %rdi
movaps %xmm0, (%rdi)
movl $0xffffffff, 0x10(%rdi) # imm = 0xFFFFFFFF
movups %xmm0, 0x18(%rdi)
movups %xmm0, 0x28(%rdi)
movups %xmm0, 0x38(%rdi)
movups %xmm0, 0x48(%rdi)
movups %xmm0, 0x58(%rdi)
movups %xmm0, 0x68(%rdi)
movups %xmm0, 0x78(%rdi)
movq %r15, %rsi
xorl %edx, %edx
callq 0x1f218
movl (%rbx), %esi
movl 0x4(%rbx), %edx
leaq 0x80(%rsp), %rdi
callq 0x1f3d2
movzbl %r12b, %esi
movzbl %r14b, %ecx
leaq 0x80(%rsp), %rdi
movq %rbx, %rdx
movq %rbp, %r8
callq 0x1dc58
jmp 0x1dd58
jle 0x1dd77
xorps %xmm0, %xmm0
leaq 0x80(%rsp), %rdi
movaps %xmm0, (%rdi)
movl $0xffffffff, 0x10(%rdi) # imm = 0xFFFFFFFF
movups %xmm0, 0x18(%rdi)
movups %xmm0, 0x28(%rdi)
movups %xmm0, 0x38(%rdi)
movups %xmm0, 0x48(%rdi)
movups %xmm0, 0x58(%rdi)
movups %xmm0, 0x68(%rdi)
movups %xmm0, 0x78(%rdi)
movq %rbx, %rsi
xorl %edx, %edx
callq 0x1f218
movl (%r15), %esi
movl 0x4(%r15), %edx
leaq 0x80(%rsp), %rdi
callq 0x1f3d2
movzbl %r12b, %esi
movzbl %r14b, %ecx
leaq 0x80(%rsp), %rdx
movq %r15, %rdi
movq %rbp, %r8
callq 0x1dc58
leaq 0x80(%rsp), %rdi
callq 0xed24
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl %r12d, %eax
orb %r14b, %al
je 0x1efcc
movl %r12d, %eax
andb %r14b, %al
cmpb $0x1, %al
je 0x1efea
movq %rbp, %rdi
callq 0x1b2de
testb %al, %al
je 0x1f008
movl 0xc(%r15), %eax
cmpl 0x8(%rbx), %eax
jne 0x1f026
movl 0x10(%r15), %eax
leaq 0x80(%rsp), %r13
movl %eax, (%r13)
movq %rbp, %rdi
movq %r13, %rsi
callq 0x9920
movl 0x8(%r15), %esi
movl 0xc(%rbx), %edx
movq %rbp, %rdi
xorl %ecx, %ecx
callq 0x9986
movq %r15, %rdi
callq 0x1b448
testb %al, %al
je 0x1ded9
movl %r14d, 0x7c(%rsp)
movq %rbp, %rcx
xorl %ebp, %ebp
movq %rbp, 0x80(%rsp)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x20(%rsp)
movl (%rcx), %eax
movl %eax, 0x10(%rsp)
movq %rcx, %r14
movl 0x4(%rcx), %eax
movl %eax, (%rsp)
movq %r15, %rdi
callq 0x1b448
movl $0x0, %ecx
movq %rcx, 0x70(%rsp)
testb %al, %al
je 0x1de39
movq 0x70(%r15), %rax
movq %rax, 0x70(%rsp)
movq %rbx, %rdi
callq 0x1b448
movl $0x0, %r15d
testb %al, %al
je 0x1de4f
movq 0x70(%rbx), %r15
movq %r14, %rdi
callq 0x1b448
testb %al, %al
je 0x1de5f
movq 0x70(%r14), %rbp
testb %r12b, %r12b
je 0x1de95
leaq 0x10(%rsp), %rdx
leaq 0x7752(%rip), %rdi      # 0x255c2
leaq 0x7a2e(%rip), %rsi      # 0x258a5
movq %rsp, %rcx
leaq 0x20(%rsp), %r8
movq 0x70(%rsp), %r9
pushq %rdx
pushq %rbp
pushq %r13
pushq %rdx
pushq %r15
pushq %rdx
callq 0x2050
addq $0x30, %rsp
cmpb $0x0, 0x7c(%rsp)
je 0x1dd65
leaq 0x10(%rsp), %rdx
movq %rsp, %rcx
leaq 0x79f8(%rip), %rdi      # 0x258a7
leaq 0x79ef(%rip), %rsi      # 0x258a5
leaq 0x20(%rsp), %r8
movq %r15, %r9
pushq %rdx
pushq %rbp
pushq %r13
pushq %rdx
pushq 0x90(%rsp)
pushq %rcx
callq 0x2050
addq $0x30, %rsp
jmp 0x1dd65
testb %r12b, %r12b
je 0x1e053
xorps %xmm0, %xmm0
movaps %xmm0, 0x80(%rsp)
cmpq $0x0, 0x28(%r15)
je 0x1df99
cmpq $0x0, 0x28(%rbx)
je 0x1df99
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xddf6(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x80(%rsp)
movq 0x88(%rsp), %rdi
movq %rax, 0x88(%rsp)
testq %rdi, %rdi
je 0x1df83
callq 0x1b482
movq 0x80(%rsp), %r8
movq 0x28(%r15), %rdi
movq 0x28(%rbx), %rdx
movzbl %r14b, %ecx
movl $0x1, %esi
callq 0x1dc58
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
cmpq $0x0, 0x48(%r15)
je 0x1e1ce
cmpq $0x0, 0x38(%rbx)
je 0x1e1ce
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xdd42(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x20(%rsp)
movq 0x28(%rsp), %rdi
movq %rax, 0x28(%rsp)
testq %rdi, %rdi
je 0x1e02b
callq 0x1b482
movq 0x20(%rsp), %r8
movq 0x48(%r15), %rdi
movq 0x38(%rbx), %rdx
subq $0x8, %rsp
xorl %esi, %esi
xorl %ecx, %ecx
xorl %r9d, %r9d
pushq $0x0
callq 0xa4b0
addq $0x10, %rsp
movq 0x20(%rsp), %rsi
jmp 0x1e1d0
testb %r14b, %r14b
je 0x1dd65
xorps %xmm0, %xmm0
movaps %xmm0, 0x80(%rsp)
cmpq $0x0, 0x28(%r15)
je 0x1e111
cmpq $0x0, 0x28(%rbx)
je 0x1e111
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xdc7c(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x80(%rsp)
movq 0x88(%rsp), %rdi
movq %rax, 0x88(%rsp)
testq %rdi, %rdi
je 0x1e0fd
callq 0x1b482
movq 0x80(%rsp), %r8
movq 0x28(%r15), %rdi
movq 0x28(%rbx), %rdx
xorl %esi, %esi
movl $0x1, %ecx
callq 0x1dc58
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
cmpq $0x0, 0x48(%r15)
je 0x1e8d8
cmpq $0x0, 0x48(%rbx)
je 0x1e8d8
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xdbca(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x20(%rsp)
movq 0x28(%rsp), %rdi
movq %rax, 0x28(%rsp)
testq %rdi, %rdi
je 0x1e1a3
callq 0x1b482
movq 0x20(%rsp), %r8
movq 0x48(%r15), %rdi
movq 0x48(%rbx), %rdx
subq $0x8, %rsp
xorl %esi, %esi
movl $0x1, %ecx
xorl %r9d, %r9d
pushq $0x0
callq 0xa4b0
addq $0x10, %rsp
movq 0x20(%rsp), %rsi
jmp 0x1e8da
xorl %esi, %esi
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x1e216
testq %rsi, %rsi
jne 0x1e24c
movq %rdi, 0x28(%rbp)
leaq 0x30(%rbp), %rdi
movl %r14d, %r12d
leaq 0x88(%rsp), %r14
movq %r14, %rsi
callq 0x1c8e8
movq 0x28(%rbp), %rax
movq %rbp, 0x68(%rax)
movq -0x8(%r14), %rdi
movl %r12d, %r14d
movq 0x20(%rsp), %rsi
testq %rdi, %rdi
jne 0x1e247
testq %rsi, %rsi
je 0x1e274
movq %rsi, 0x28(%rbp)
leaq 0x30(%rbp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x1c8e8
movq 0x28(%rbp), %rax
movq %rbp, 0x68(%rax)
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x1e274
movq 0x20(%rsp), %rsi
testq %rsi, %rsi
je 0x1e274
xorl %edx, %edx
callq 0x1c932
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
movq %rax, 0x28(%rbp)
leaq 0x30(%rbp), %rdi
callq 0x1c8e8
movq 0x28(%rbp), %rax
movq %rbp, 0x68(%rax)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
cmpq $0x0, 0x48(%r15)
je 0x1e327
cmpq $0x0, 0x28(%rbx)
je 0x1e327
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xda67(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x10(%rsp)
movq 0x18(%rsp), %rdi
movq %rax, 0x18(%rsp)
testq %rdi, %rdi
je 0x1e306
callq 0x1b482
movq 0x10(%rsp), %r8
movq 0x48(%r15), %rdi
movq 0x28(%rbx), %rdx
subq $0x8, %rsp
movl $0x1, %esi
xorl %ecx, %ecx
xorl %r9d, %r9d
pushq $0x0
callq 0xa4b0
addq $0x10, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
cmpq $0x0, 0x58(%r15)
je 0x1e3d2
cmpq $0x0, 0x38(%rbx)
je 0x1e3d2
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xd9b5(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, (%rsp)
movq 0x8(%rsp), %rdi
movq %rax, 0x8(%rsp)
testq %rdi, %rdi
je 0x1e3b6
callq 0x1b482
movq (%rsp), %r8
movq 0x58(%r15), %rdi
movq 0x38(%rbx), %rdx
movzbl %r14b, %ecx
movl $0x1, %esi
callq 0x1dc58
movq (%rsp), %rsi
jmp 0x1e3d4
xorl %esi, %esi
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1e413
testq %rsi, %rsi
jne 0x1e445
movq %rdi, 0x38(%rbp)
leaq 0x40(%rbp), %rdi
movl %r14d, %r12d
leaq 0x18(%rsp), %r14
movq %r14, %rsi
callq 0x1c8e8
movq 0x38(%rbp), %rax
movq %rbp, 0x68(%rax)
movq -0x8(%r14), %rdi
movl %r12d, %r14d
movq (%rsp), %rsi
testq %rdi, %rdi
jne 0x1e440
testq %rsi, %rsi
je 0x1e46a
movq %rsi, 0x38(%rbp)
leaq 0x40(%rbp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1c8e8
movq 0x38(%rbp), %rax
movq %rbp, 0x68(%rax)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1e46a
movq (%rsp), %rsi
testq %rsi, %rsi
je 0x1e46a
xorl %edx, %edx
callq 0x1c932
leaq 0x18(%rsp), %rsi
movq -0x8(%rsi), %rax
movq %rax, 0x38(%rbp)
leaq 0x40(%rbp), %rdi
callq 0x1c8e8
movq 0x38(%rbp), %rax
movq %rbp, 0x68(%rax)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
cmpq $0x0, 0x28(%r15)
je 0x1e512
cmpq $0x0, 0x48(%rbx)
je 0x1e512
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xd871(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x60(%rsp)
movq 0x68(%rsp), %rdi
movq %rax, 0x68(%rsp)
testq %rdi, %rdi
je 0x1e4fc
callq 0x1b482
movq 0x60(%rsp), %r8
movq 0x28(%r15), %rdi
movq 0x48(%rbx), %rdx
movzbl %r14b, %ecx
movl $0x1, %esi
callq 0x1dc58
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
cmpq $0x0, 0x48(%r15)
je 0x1e5c9
cmpq $0x0, 0x58(%rbx)
je 0x1e5c9
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xd7c9(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x50(%rsp)
movq 0x58(%rsp), %rdi
movq %rax, 0x58(%rsp)
testq %rdi, %rdi
je 0x1e5a4
callq 0x1b482
movq 0x50(%rsp), %r8
movq 0x48(%r15), %rdi
movq 0x58(%rbx), %rdx
subq $0x8, %rsp
xorl %esi, %esi
xorl %ecx, %ecx
xorl %r9d, %r9d
pushq $0x0
callq 0xa4b0
addq $0x10, %rsp
movq 0x50(%rsp), %rsi
jmp 0x1e5cb
xorl %esi, %esi
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x1e60b
testq %rsi, %rsi
jne 0x1e63e
movq %rdi, 0x48(%rbp)
leaq 0x50(%rbp), %rdi
movl %r14d, %r12d
leaq 0x68(%rsp), %r14
movq %r14, %rsi
callq 0x1c8e8
movq 0x48(%rbp), %rax
movq %rbp, 0x68(%rax)
movq -0x8(%r14), %rdi
movl %r12d, %r14d
movq 0x50(%rsp), %rsi
testq %rdi, %rdi
jne 0x1e639
testq %rsi, %rsi
je 0x1e663
movq %rsi, 0x48(%rbp)
leaq 0x50(%rbp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x1c8e8
movq 0x48(%rbp), %rax
movq %rbp, 0x68(%rax)
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x1e663
movq 0x50(%rsp), %rsi
testq %rsi, %rsi
je 0x1e663
xorl %edx, %edx
callq 0x1c932
leaq 0x68(%rsp), %rsi
movq -0x8(%rsi), %rax
movq %rax, 0x48(%rbp)
leaq 0x50(%rbp), %rdi
callq 0x1c8e8
movq 0x48(%rbp), %rax
movq %rbp, 0x68(%rax)
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
cmpq $0x0, 0x48(%r15)
je 0x1e716
cmpq $0x0, 0x48(%rbx)
je 0x1e716
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xd678(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x40(%rsp)
movq 0x48(%rsp), %rdi
movq %rax, 0x48(%rsp)
testq %rdi, %rdi
je 0x1e6f5
callq 0x1b482
movq 0x40(%rsp), %r8
movq 0x48(%r15), %rdi
movq 0x48(%rbx), %rdx
subq $0x8, %rsp
movl $0x1, %esi
xorl %ecx, %ecx
xorl %r9d, %r9d
pushq $0x0
callq 0xa4b0
addq $0x10, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
cmpq $0x0, 0x58(%r15)
je 0x1e7c5
cmpq $0x0, 0x58(%rbx)
je 0x1e7c5
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xd5c5(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x30(%rsp)
movq 0x38(%rsp), %rdi
movq %rax, 0x38(%rsp)
testq %rdi, %rdi
je 0x1e7a8
callq 0x1b482
movq 0x30(%rsp), %r8
movq 0x58(%r15), %rdi
movq 0x58(%rbx), %rdx
movzbl %r14b, %ecx
movl $0x1, %esi
callq 0x1dc58
movq 0x30(%rsp), %rsi
jmp 0x1e7c7
xorl %esi, %esi
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1e801
testq %rsi, %rsi
jne 0x1e834
movq %rdi, 0x58(%rbp)
leaq 0x60(%rbp), %rdi
leaq 0x48(%rsp), %rbx
movq %rbx, %rsi
callq 0x1c8e8
movq 0x58(%rbp), %rax
movq %rbp, 0x68(%rax)
movq -0x8(%rbx), %rdi
movq 0x30(%rsp), %rsi
testq %rdi, %rdi
jne 0x1e82f
testq %rsi, %rsi
je 0x1e859
movq %rsi, 0x58(%rbp)
leaq 0x60(%rbp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x1c8e8
movq 0x58(%rbp), %rax
movq %rbp, 0x68(%rax)
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1e859
movq 0x30(%rsp), %rsi
testq %rsi, %rsi
je 0x1e859
xorl %edx, %edx
callq 0x1c932
leaq 0x48(%rsp), %rsi
movq -0x8(%rsi), %rax
movq %rax, 0x58(%rbp)
leaq 0x60(%rbp), %rdi
callq 0x1c8e8
movq 0x58(%rbp), %rax
movq %rbp, 0x68(%rax)
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1e868
callq 0x1b482
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x1e877
callq 0x1b482
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x1e886
callq 0x1b482
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x1e895
callq 0x1b482
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1e8a4
callq 0x1b482
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1e8b3
callq 0x1b482
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x1e8c2
callq 0x1b482
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x1dd65
jmp 0x1efc2
xorl %esi, %esi
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x1e91a
testq %rsi, %rsi
jne 0x1e950
movq %rdi, 0x28(%rbp)
leaq 0x30(%rbp), %rdi
leaq 0x88(%rsp), %r14
movq %r14, %rsi
callq 0x1c8e8
movq 0x28(%rbp), %rax
movq %rbp, 0x68(%rax)
movq -0x8(%r14), %rdi
movq 0x20(%rsp), %rsi
testq %rdi, %rdi
jne 0x1e94b
testq %rsi, %rsi
je 0x1e978
movq %rsi, 0x28(%rbp)
leaq 0x30(%rbp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x1c8e8
movq 0x28(%rbp), %rax
movq %rbp, 0x68(%rax)
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x1e978
movq 0x20(%rsp), %rsi
testq %rsi, %rsi
je 0x1e978
xorl %edx, %edx
callq 0x1c932
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
movq %rax, 0x28(%rbp)
leaq 0x30(%rbp), %rdi
callq 0x1c8e8
movq 0x28(%rbp), %rax
movq %rbp, 0x68(%rax)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
cmpq $0x0, 0x38(%r15)
je 0x1ea1e
cmpq $0x0, 0x28(%rbx)
je 0x1ea1e
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xd363(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x10(%rsp)
movq 0x18(%rsp), %rdi
movq %rax, 0x18(%rsp)
testq %rdi, %rdi
je 0x1ea0a
callq 0x1b482
movq 0x10(%rsp), %r8
movq 0x38(%r15), %rdi
movq 0x28(%rbx), %rdx
xorl %esi, %esi
movl $0x1, %ecx
callq 0x1dc58
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
cmpq $0x0, 0x58(%r15)
je 0x1ead4
cmpq $0x0, 0x48(%rbx)
je 0x1ead4
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xd2be(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, (%rsp)
movq 0x8(%rsp), %rdi
movq %rax, 0x8(%rsp)
testq %rdi, %rdi
je 0x1eaad
callq 0x1b482
movq (%rsp), %r8
movq 0x58(%r15), %rdi
movq 0x48(%rbx), %rdx
subq $0x8, %rsp
xorl %esi, %esi
movl $0x1, %ecx
xorl %r9d, %r9d
pushq $0x0
callq 0xa4b0
addq $0x10, %rsp
movq (%rsp), %rsi
jmp 0x1ead6
xorl %esi, %esi
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1eb0f
testq %rsi, %rsi
jne 0x1eb41
movq %rdi, 0x38(%rbp)
leaq 0x40(%rbp), %rdi
leaq 0x18(%rsp), %r14
movq %r14, %rsi
callq 0x1c8e8
movq 0x38(%rbp), %rax
movq %rbp, 0x68(%rax)
movq -0x8(%r14), %rdi
movq (%rsp), %rsi
testq %rdi, %rdi
jne 0x1eb3c
testq %rsi, %rsi
je 0x1eb66
movq %rsi, 0x38(%rbp)
leaq 0x40(%rbp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1c8e8
movq 0x38(%rbp), %rax
movq %rbp, 0x68(%rax)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1eb66
movq (%rsp), %rsi
testq %rsi, %rsi
je 0x1eb66
xorl %edx, %edx
callq 0x1c932
leaq 0x18(%rsp), %rsi
movq -0x8(%rsi), %rax
movq %rax, 0x38(%rbp)
leaq 0x40(%rbp), %rdi
callq 0x1c8e8
movq 0x38(%rbp), %rax
movq %rbp, 0x68(%rax)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
cmpq $0x0, 0x28(%r15)
je 0x1ec16
cmpq $0x0, 0x48(%rbx)
je 0x1ec16
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xd175(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x60(%rsp)
movq 0x68(%rsp), %rdi
movq %rax, 0x68(%rsp)
testq %rdi, %rdi
je 0x1ebf8
callq 0x1b482
movq 0x60(%rsp), %r8
movq 0x28(%r15), %rdi
movq 0x48(%rbx), %rdx
subq $0x8, %rsp
xorl %esi, %esi
xorl %ecx, %ecx
xorl %r9d, %r9d
pushq $0x0
callq 0xa4b0
addq $0x10, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
cmpq $0x0, 0x48(%r15)
je 0x1ecc3
cmpq $0x0, 0x58(%rbx)
je 0x1ecc3
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xd0c5(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x50(%rsp)
movq 0x58(%rsp), %rdi
movq %rax, 0x58(%rsp)
testq %rdi, %rdi
je 0x1eca8
callq 0x1b482
movq 0x50(%rsp), %r8
movq 0x48(%r15), %rdi
movq 0x58(%rbx), %rdx
xorl %esi, %esi
movl $0x1, %ecx
callq 0x1dc58
movq 0x50(%rsp), %rsi
jmp 0x1ecc5
xorl %esi, %esi
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x1ecff
testq %rsi, %rsi
jne 0x1ed32
movq %rdi, 0x48(%rbp)
leaq 0x50(%rbp), %rdi
leaq 0x68(%rsp), %r14
movq %r14, %rsi
callq 0x1c8e8
movq 0x48(%rbp), %rax
movq %rbp, 0x68(%rax)
movq -0x8(%r14), %rdi
movq 0x50(%rsp), %rsi
testq %rdi, %rdi
jne 0x1ed2d
testq %rsi, %rsi
je 0x1ed57
movq %rsi, 0x48(%rbp)
leaq 0x50(%rbp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x1c8e8
movq 0x48(%rbp), %rax
movq %rbp, 0x68(%rax)
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x1ed57
movq 0x50(%rsp), %rsi
testq %rsi, %rsi
je 0x1ed57
xorl %edx, %edx
callq 0x1c932
leaq 0x68(%rsp), %rsi
movq -0x8(%rsi), %rax
movq %rax, 0x48(%rbp)
leaq 0x50(%rbp), %rdi
callq 0x1c8e8
movq 0x48(%rbp), %rax
movq %rbp, 0x68(%rax)
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
cmpq $0x0, 0x38(%r15)
je 0x1ee07
cmpq $0x0, 0x48(%rbx)
je 0x1ee07
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xcf84(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x40(%rsp)
movq 0x48(%rsp), %rdi
movq %rax, 0x48(%rsp)
testq %rdi, %rdi
je 0x1ede9
callq 0x1b482
movq 0x40(%rsp), %r8
movq 0x38(%r15), %rdi
movq 0x48(%rbx), %rdx
subq $0x8, %rsp
xorl %esi, %esi
xorl %ecx, %ecx
xorl %r9d, %r9d
pushq $0x0
callq 0xa4b0
addq $0x10, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
cmpq $0x0, 0x58(%r15)
je 0x1eeb4
cmpq $0x0, 0x58(%rbx)
je 0x1eeb4
movl $0x98, %edi
callq 0x21c0
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x8(%rax)
leaq 0xced4(%rip), %rcx      # 0x2bd18
movq %rcx, (%rax)
movq %rax, %r8
addq $0x10, %r8
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movups %xmm0, 0x28(%rax)
movups %xmm0, 0x38(%rax)
movups %xmm0, 0x48(%rax)
movups %xmm0, 0x58(%rax)
movups %xmm0, 0x68(%rax)
movups %xmm0, 0x78(%rax)
movups %xmm0, 0x88(%rax)
movq %r8, 0x30(%rsp)
movq 0x38(%rsp), %rdi
movq %rax, 0x38(%rsp)
testq %rdi, %rdi
je 0x1ee99
callq 0x1b482
movq 0x30(%rsp), %r8
movq 0x58(%r15), %rdi
movq 0x58(%rbx), %rdx
xorl %esi, %esi
movl $0x1, %ecx
callq 0x1dc58
movq 0x30(%rsp), %rsi
jmp 0x1eeb6
xorl %esi, %esi
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1eef0
testq %rsi, %rsi
jne 0x1ef23
movq %rdi, 0x58(%rbp)
leaq 0x60(%rbp), %rdi
leaq 0x48(%rsp), %rbx
movq %rbx, %rsi
callq 0x1c8e8
movq 0x58(%rbp), %rax
movq %rbp, 0x68(%rax)
movq -0x8(%rbx), %rdi
movq 0x30(%rsp), %rsi
testq %rdi, %rdi
jne 0x1ef1e
testq %rsi, %rsi
je 0x1ef48
movq %rsi, 0x58(%rbp)
leaq 0x60(%rbp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x1c8e8
movq 0x58(%rbp), %rax
movq %rbp, 0x68(%rax)
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1ef48
movq 0x30(%rsp), %rsi
testq %rsi, %rsi
je 0x1ef48
xorl %edx, %edx
callq 0x1c932
leaq 0x48(%rsp), %rsi
movq -0x8(%rsi), %rax
movq %rax, 0x58(%rbp)
leaq 0x60(%rbp), %rdi
callq 0x1c8e8
movq 0x58(%rbp), %rax
movq %rbp, 0x68(%rax)
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1ef57
callq 0x1b482
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x1ef66
callq 0x1b482
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x1ef75
callq 0x1b482
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x1ef84
callq 0x1b482
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1ef93
callq 0x1b482
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1efa2
callq 0x1b482
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x1efb1
callq 0x1b482
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x1dd65
callq 0x1b482
jmp 0x1dd65
movl $0x10, %edi
callq 0x20c0
movq %rax, %r14
leaq 0x6745(%rip), %rsi      # 0x25725
movq %rax, %rdi
callq 0x20a0
jmp 0x1f042
movl $0x10, %edi
callq 0x20c0
movq %rax, %r14
leaq 0x6792(%rip), %rsi      # 0x25790
movq %rax, %rdi
callq 0x20a0
jmp 0x1f042
movl $0x10, %edi
callq 0x20c0
movq %rax, %r14
leaq 0x67dc(%rip), %rsi      # 0x257f8
movq %rax, %rdi
callq 0x20a0
jmp 0x1f042
movl $0x10, %edi
callq 0x20c0
movq %rax, %r14
leaq 0x6819(%rip), %rsi      # 0x25853
movq %rax, %rdi
callq 0x20a0
movq 0xcfa7(%rip), %rsi      # 0x2bff0
movq 0xcf70(%rip), %rdx      # 0x2bfc0
movq %r14, %rdi
callq 0x2290
jmp 0x1f05c
jmp 0x1f0ca
movq %rax, %rbx
jmp 0x1f0dc
jmp 0x1f068
jmp 0x1f0ed
movq %rax, %rbx
jmp 0x1f0ff
jmp 0x1f077
jmp 0x1f110
movq %rax, %rbx
jmp 0x1f122
jmp 0x1f086
jmp 0x1f133
movq %rax, %rbx
jmp 0x1f145
jmp 0x1f095
jmp 0x1f15b
movq %rax, %rbx
jmp 0x1f16d
jmp 0x1f0a4
jmp 0x1f17e
movq %rax, %rbx
jmp 0x1f190
jmp 0x1f0b3
jmp 0x1f1a1
movq %rax, %rbx
jmp 0x1f1b3
jmp 0x1f0c2
jmp 0x1f1c4
movq %rax, %rbx
jmp 0x1f1d6
movq %rax, %rbx
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1f0dc
callq 0x1b482
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x1f0f0
callq 0x1b482
jmp 0x1f0f0
movq %rax, %rbx
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x1f0ff
callq 0x1b482
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x1f113
callq 0x1b482
jmp 0x1f113
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1f122
callq 0x1b482
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1f136
callq 0x1b482
jmp 0x1f136
movq %rax, %rbx
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x1f145
callq 0x1b482
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x1f20f
jmp 0x1f1e3
movq %rax, %rbx
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1f16d
callq 0x1b482
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x1f181
callq 0x1b482
jmp 0x1f181
movq %rax, %rbx
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x1f190
callq 0x1b482
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x1f1a4
callq 0x1b482
jmp 0x1f1a4
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1f1b3
callq 0x1b482
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1f1c7
callq 0x1b482
jmp 0x1f1c7
movq %rax, %rbx
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x1f1d6
callq 0x1b482
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x1f20f
callq 0x1b482
jmp 0x1f20f
jmp 0x1f1f0
jmp 0x1f1f0
jmp 0x1f1f0
movq %rax, %rbx
movq %r14, %rdi
callq 0x2140
jmp 0x1f20f
jmp 0x1f1ff
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0xed24
movq %rbx, %rdi
callq 0x22b0
nop