// File: /workspace/github_cpp_makefile_star2_O2/IlanPrice[P]Linear-Algebra-Library-in-Cplusplus/Matrix.cpp
// Function: Matrix::setElements(int, int, int, int, Matrix)
void Matrix:: setElements(int istart, int iend, int jstart, int jend, Matrix A)
{
	if (istart < 1 || jstart < 1 || iend < 1 || jend < 1)
	    {
	      throw Exception("out of range",
			  "accessing vector through () - index too small");
	    }
	  else if (iend > mRows || jend > mColumns || istart > mRows || jstart > mColumns)
	    {
	      throw Exception("length mismatch",
			  "accessing vector through () - index too high");
	    }

	int sRows = iend - istart + 1; int sColumns = jend - jstart + 1;
	Matrix slice(sRows, sColumns);
	for (int i = 0; i<sRows; i++)
	{
		for (int j = 0; j<sColumns; j++)
		{
			mElements[istart -1 + i][jstart -1 + j] = A.mElements[i][j];
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
testl %r8d, %r8d
jle 0x321b
movl %edx, %r13d
testl %edx, %edx
jle 0x321b
movl %esi, %r12d
testl %esi, %esi
jle 0x321b
movl %ecx, %ebp
testl %ecx, %ecx
jle 0x321b
movq %rdi, %r14
movl 0x8(%rdi), %eax
cmpl %r13d, %eax
jl 0x31b5
movl 0xc(%r14), %ecx
cmpl %ebp, %ecx
jl 0x31b5
cmpl %r12d, %eax
jb 0x31b5
movl %r8d, %r15d
cmpl %r8d, %ecx
jl 0x31b5
movq %r9, %rbx
subl %r12d, %r13d
leal 0x1(%r13), %esi
subl %ebp, %r15d
leal 0x1(%r15), %edx
leaq 0x8(%rsp), %rdi
callq 0x285c
movslq %r15d, %rax
movslq %r13d, %rcx
movl %r12d, %edx
movl %ebp, %esi
leaq -0x8(,%rsi,8), %rsi
xorl %edi, %edi
cmpq %rcx, %rdi
jg 0x3199
leaq (,%rdi,8), %r8
addq (%r14), %r8
xorl %r9d, %r9d
cmpq %rax, %r9
jg 0x3194
movq (%rbx), %r10
movq (%r10,%rdi,8), %r10
movsd (%r10,%r9,8), %xmm0
movq -0x8(%r8,%rdx,8), %r10
addq %rsi, %r10
movsd %xmm0, (%r10,%r9,8)
incq %r9
jmp 0x316f
incq %rdi
jmp 0x315c
leaq 0x8(%rsp), %rdi
callq 0x2a78
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x40
popq %rdi
callq 0x1080
movq %rax, %rbx
leaq 0x5f6d(%rip), %rsi      # 0x9134
leaq 0x38(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1060
leaq 0x603b(%rip), %rsi      # 0x9218
leaq 0x18(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x1060
movb $0x1, %bpl
leaq 0x38(%rsp), %rsi
leaq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x2790
xorl %ebp, %ebp
leaq 0xab96(%rip), %rsi      # 0xdda0
leaq -0xa97(%rip), %rdx      # 0x277a
movq %rbx, %rdi
callq 0x1150
jmp 0x327f
pushq $0x40
popq %rdi
callq 0x1080
movq %rax, %rbx
leaq 0x5fb0(%rip), %rsi      # 0x91dd
leaq 0x78(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1060
leaq 0x5fa7(%rip), %rsi      # 0x91ea
leaq 0x58(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x1060
movb $0x1, %bpl
leaq 0x78(%rsp), %rsi
leaq 0x58(%rsp), %rdx
movq %rbx, %rdi
callq 0x2790
xorl %ebp, %ebp
leaq 0xab30(%rip), %rsi      # 0xdda0
leaq -0xafd(%rip), %rdx      # 0x277a
movq %rbx, %rdi
callq 0x1150
movq %rax, %r14
leaq 0x58(%rsp), %rdi
callq 0x1070
jmp 0x3294
movq %rax, %r14
movb $0x1, %bpl
leaq 0x78(%rsp), %rdi
jmp 0x32b5
movq %rax, %r14
leaq 0x18(%rsp), %rdi
callq 0x1070
jmp 0x32b0
movq %rax, %r14
movb $0x1, %bpl
leaq 0x38(%rsp), %rdi
callq 0x1070
testb %bpl, %bpl
jne 0x32c6
jmp 0x32ce
jmp 0x32c3
movq %rax, %r14
movq %rbx, %rdi
callq 0x10b0
movq %r14, %rdi
callq 0x1180