// File: toxaart[P]hierarchical_block_sparse_lib/source/HierarchicalBlockSparseMatrix.h
// Function: hbsm::HierarchicalBlockSparseMatrix<double>::check_if_matrix_is_consistent() const
bool HierarchicalBlockSparseMatrix<Treal>::check_if_matrix_is_consistent() const {

			if(lowest_level()){
				if(!children_exist() && submatrix.size() > 0) return true;
				else return false;
			}

			if(!children_exist()) return false;

			bool child0_ok = true, child1_ok = true, child2_ok = true, child3_ok = true;

			if(children[0]!=NULL) child0_ok = children[0]->check_if_matrix_is_consistent() && children[0]->nRows < nRows;
			if(children[1]!=NULL) child1_ok = children[1]->check_if_matrix_is_consistent() && children[1]->nRows < nRows;
			if(children[2]!=NULL) child2_ok = children[2]->check_if_matrix_is_consistent() && children[2]->nRows < nRows;
			if(children[3]!=NULL) child3_ok = children[3]->check_if_matrix_is_consistent() && children[3]->nRows < nRows;

			return child0_ok && child1_ok && child2_ok && child3_ok;

		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x20(%rbp)
callq 0x23500
testb $0x1, %al
jne 0x22dff
jmp 0x22e31
movq -0x20(%rbp), %rdi
callq 0x23140
testb $0x1, %al
jne 0x22e28
movq -0x20(%rbp), %rdi
addq $0x70, %rdi
callq 0x22b40
cmpq $0x0, %rax
jbe 0x22e28
movb $0x1, -0x1(%rbp)
jmp 0x2301e
movb $0x0, -0x1(%rbp)
jmp 0x2301e
movq -0x20(%rbp), %rdi
callq 0x23140
testb $0x1, %al
jne 0x22e47
movb $0x0, -0x1(%rbp)
jmp 0x2301e
movq -0x20(%rbp), %rdi
movb $0x1, -0x11(%rbp)
movb $0x1, -0x12(%rbp)
movb $0x1, -0x13(%rbp)
movb $0x1, -0x14(%rbp)
addq $0x28, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x232b0
testb $0x1, %al
jne 0x22e6e
jmp 0x22eb4
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
callq 0x23570
movq %rax, %rdi
callq 0x22de0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x21(%rbp)
jne 0x22e91
jmp 0x22eac
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
callq 0x23570
movq -0x20(%rbp), %rcx
movl (%rax), %eax
cmpl (%rcx), %eax
setl %al
movb %al, -0x21(%rbp)
movb -0x21(%rbp), %al
andb $0x1, %al
movb %al, -0x11(%rbp)
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x232b0
testb $0x1, %al
jne 0x22ecf
jmp 0x22f1d
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
addq $0x10, %rdi
callq 0x23570
movq %rax, %rdi
callq 0x22de0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x22(%rbp)
jne 0x22ef6
jmp 0x22f15
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
addq $0x10, %rdi
callq 0x23570
movq -0x20(%rbp), %rcx
movl (%rax), %eax
cmpl (%rcx), %eax
setl %al
movb %al, -0x22(%rbp)
movb -0x22(%rbp), %al
andb $0x1, %al
movb %al, -0x12(%rbp)
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
addq $0x20, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x232b0
testb $0x1, %al
jne 0x22f38
jmp 0x22f86
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
addq $0x20, %rdi
callq 0x23570
movq %rax, %rdi
callq 0x22de0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x23(%rbp)
jne 0x22f5f
jmp 0x22f7e
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
addq $0x20, %rdi
callq 0x23570
movq -0x20(%rbp), %rcx
movl (%rax), %eax
cmpl (%rcx), %eax
setl %al
movb %al, -0x23(%rbp)
movb -0x23(%rbp), %al
andb $0x1, %al
movb %al, -0x13(%rbp)
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
addq $0x30, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x232b0
testb $0x1, %al
jne 0x22fa1
jmp 0x22fef
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
addq $0x30, %rdi
callq 0x23570
movq %rax, %rdi
callq 0x22de0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x24(%rbp)
jne 0x22fc8
jmp 0x22fe7
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
addq $0x30, %rdi
callq 0x23570
movq -0x20(%rbp), %rcx
movl (%rax), %eax
cmpl (%rcx), %eax
setl %al
movb %al, -0x24(%rbp)
movb -0x24(%rbp), %al
andb $0x1, %al
movb %al, -0x14(%rbp)
xorl %eax, %eax
testb $0x1, -0x11(%rbp)
movb %al, -0x25(%rbp)
je 0x23016
xorl %eax, %eax
testb $0x1, -0x12(%rbp)
movb %al, -0x25(%rbp)
je 0x23016
xorl %eax, %eax
testb $0x1, -0x13(%rbp)
movb %al, -0x25(%rbp)
je 0x23016
movb -0x14(%rbp), %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)