// File: toxaart[P]hierarchical_block_sparse_lib/source/HierarchicalBlockSparseMatrix.h
// Function: hbsm::HierarchicalBlockSparseMatrix<double>::add_scaled_identity(hbsm::HierarchicalBlockSparseMatrix<double> const&, double)
void HierarchicalBlockSparseMatrix<Treal>::add_scaled_identity(const HierarchicalBlockSparseMatrix<Treal> & other, Treal alpha) {

			if(other.empty()){
				throw std::runtime_error("Error in HierarchicalBlockSparseMatrix::add_scaled_identity(): empty matrix as input!");
			}

			if(other.nRows != other.nCols)
				throw std::runtime_error("Error in HierarchicalBlockSparseMatrix::add_scaled_identity(): non-square matrix as input!");

			this->clear();

			this->set_params(other.get_params());

			this->resize(other.nRows_orig,other.nCols_orig);

			if(other.lowest_level()){
				memcpy(&submatrix[0], &(other.submatrix[0]), sizeof(Treal) * other.submatrix.size());
				for(int i = 0; i < nRows; ++i){
					submatrix[i*nRows + i] += alpha;
				}

				return;
			}

			//non-leaf case
			if(other.children[1] != NULL){
				children[1] = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
				children[1]->parent = this;
				children[1]->copy(*(other.children[1]));
			}

			if(other.children[2] != NULL){
				children[2] = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
				children[2]->parent = this;
				children[2]->copy(*(other.children[2]));
			}


			if(other.children[0] != NULL){

				if(children[0] != NULL) throw std::runtime_error("Error in HierarchicalBlockSparseMatrix::add_scaled_identity(): non-null child0 occured");
				children[0] = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
				children[0]->parent = this;
				children[0]->add_scaled_identity(*other.children[0],alpha);

			}
			else{

				if(children[0] != NULL) throw std::runtime_error("Error in HierarchicalBlockSparseMatrix::add_scaled_identity(): non-null child0 occured");

				children[0] = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
				children[0]->parent = this;
				children[0]->set_params(get_params());
				children[0]->resize(nRows/2, nCols/2);

				std::vector<int> rows, cols;
				std::vector<Treal> vals;

				rows.resize(nRows/2);
				cols.resize(nRows/2);
				vals.resize(nRows/2);

				for(int i = 0; i < nRows/2; ++i){
					rows[i] = i;
					cols[i] = i;
					vals[i] = alpha;
				}

				children[0]->assign_from_vectors(rows, cols, vals);
			}


			if(other.children[3] != NULL){

				if(children[3] != NULL) throw std::runtime_error("Error in HierarchicalBlockSparseMatrix::add_scaled_identity(): non-null child3 occured");

				children[3] = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();

				children[3]->parent = this;

				children[3]->add_scaled_identity(*other.children[3],alpha);

			}
			else{

				if(children[3] != NULL) throw std::runtime_error("Error in HierarchicalBlockSparseMatrix::add_scaled_identity(): non-null child3 occured");

				children[3] = std::make_shared<HierarchicalBlockSparseMatrix<Treal> >();
				children[3]->parent = this;
				children[3]->set_params(get_params());
				children[3]->resize(nRows/2, nCols/2);

				std::vector<int> rows, cols;
				std::vector<Treal> vals;

				rows.resize(nRows/2);
				cols.resize(nRows/2);
				vals.resize(nRows/2);

				for(int i = 0; i < nRows/2; ++i){
					rows[i] = i;
					cols[i] = i;
					vals[i] = alpha;
				}

				children[3]->assign_from_vectors(rows, cols, vals);
			}


		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x220, %rsp            # imm = 0x220
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movsd %xmm0, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x10(%rbp), %rdi
callq 0x4970
testb $0x1, %al
jne 0x7f12
jmp 0x7f6e
movl $0x10, %edi
callq 0x20a0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x150(%rbp)
leaq 0xa1dc(%rip), %rsi      # 0x1210c
callq 0x2070
jmp 0x7f37
movq -0x150(%rbp), %rdi
movq 0x100ab(%rip), %rsi     # 0x17ff0
movq 0x10074(%rip), %rdx     # 0x17fc0
callq 0x22c0
movq -0x150(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x2130
jmp 0x8a8c
movq -0x10(%rbp), %rax
movl (%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x4(%rcx), %eax
je 0x7fd9
movl $0x10, %edi
callq 0x20a0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x158(%rbp)
leaq 0xa1c7(%rip), %rsi      # 0x12162
callq 0x2070
jmp 0x7fa2
movq -0x158(%rbp), %rdi
movq 0x10040(%rip), %rsi     # 0x17ff0
movq 0x10009(%rip), %rdx     # 0x17fc0
callq 0x22c0
movq -0x158(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x2130
jmp 0x8a8c
movq -0x148(%rbp), %rdi
callq 0x4be0
movq -0x10(%rbp), %rdi
callq 0xbc70
movq -0x148(%rbp), %rdi
movl %eax, -0x28(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x48e0
movq -0x148(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
movq -0x10(%rbp), %rax
movl 0xc(%rax), %edx
xorl %eax, %eax
movl %eax, %ecx
callq 0x49d0
movq -0x10(%rbp), %rdi
callq 0x97b0
testb $0x1, %al
jne 0x8031
jmp 0x80ec
movq -0x148(%rbp), %rdi
addq $0x70, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x5070
movq %rax, -0x168(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9c20
movq %rax, -0x160(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x8cf0
movq -0x168(%rbp), %rdi
movq -0x160(%rbp), %rsi
movq %rax, %rdx
shlq $0x3, %rdx
callq 0x2160
movl $0x0, -0x2c(%rbp)
movq -0x148(%rbp), %rcx
movl -0x2c(%rbp), %eax
cmpl (%rcx), %eax
jge 0x80e7
movq -0x148(%rbp), %rcx
movsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x170(%rbp)
movq %rcx, %rdi
addq $0x70, %rdi
movl -0x2c(%rbp), %eax
imull (%rcx), %eax
addl -0x2c(%rbp), %eax
movslq %eax, %rsi
callq 0x5070
movsd -0x170(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x8092
jmp 0x8a83
movq -0x10(%rbp), %rdi
addq $0x28, %rdi
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9800
testb $0x1, %al
jne 0x810a
jmp 0x818b
leaq -0x40(%rbp), %rdi
callq 0xbc00
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
addq $0x10, %rdi
leaq -0x40(%rbp), %rsi
callq 0x9870
leaq -0x40(%rbp), %rdi
callq 0x98a0
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
addq $0x10, %rdi
callq 0x9830
movq -0x148(%rbp), %rdi
movq %rdi, 0x68(%rax)
addq $0x28, %rdi
addq $0x10, %rdi
callq 0x9830
movq %rax, -0x178(%rbp)
movq -0x10(%rbp), %rdi
addq $0x28, %rdi
addq $0x10, %rdi
callq 0xe570
movq -0x178(%rbp), %rdi
movq %rax, %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x7990
movq -0x10(%rbp), %rdi
addq $0x28, %rdi
addq $0x20, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9800
testb $0x1, %al
jne 0x81a9
jmp 0x822a
leaq -0x50(%rbp), %rdi
callq 0xbc00
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
addq $0x20, %rdi
leaq -0x50(%rbp), %rsi
callq 0x9870
leaq -0x50(%rbp), %rdi
callq 0x98a0
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
addq $0x20, %rdi
callq 0x9830
movq -0x148(%rbp), %rdi
movq %rdi, 0x68(%rax)
addq $0x28, %rdi
addq $0x20, %rdi
callq 0x9830
movq %rax, -0x180(%rbp)
movq -0x10(%rbp), %rdi
addq $0x28, %rdi
addq $0x20, %rdi
callq 0xe570
movq -0x180(%rbp), %rdi
movq %rax, %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x7990
movq -0x10(%rbp), %rdi
addq $0x28, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9800
testb $0x1, %al
jne 0x8244
jmp 0x8331
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9800
testb $0x1, %al
jne 0x825e
jmp 0x82ba
movl $0x10, %edi
callq 0x20a0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x188(%rbp)
leaq 0x9f41(%rip), %rsi      # 0x121bd
callq 0x2070
jmp 0x8283
movq -0x188(%rbp), %rdi
movq 0xfd5f(%rip), %rsi      # 0x17ff0
movq 0xfd28(%rip), %rdx      # 0x17fc0
callq 0x22c0
movq -0x188(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x2130
jmp 0x8a8c
leaq -0x60(%rbp), %rdi
callq 0xbc00
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
leaq -0x60(%rbp), %rsi
callq 0x9870
leaq -0x60(%rbp), %rdi
callq 0x98a0
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
callq 0x9830
movq -0x148(%rbp), %rdi
movq %rdi, 0x68(%rax)
addq $0x28, %rdi
callq 0x9830
movq %rax, -0x190(%rbp)
movq -0x10(%rbp), %rdi
addq $0x28, %rdi
callq 0xe570
movq -0x190(%rbp), %rdi
movq %rax, %rsi
movsd -0x18(%rbp), %xmm0
callq 0x7ee0
jmp 0x8641
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9800
testb $0x1, %al
jne 0x834b
jmp 0x83a7
movl $0x10, %edi
callq 0x20a0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x198(%rbp)
leaq 0x9e54(%rip), %rsi      # 0x121bd
callq 0x2070
jmp 0x8370
movq -0x198(%rbp), %rdi
movq 0xfc72(%rip), %rsi      # 0x17ff0
movq 0xfc3b(%rip), %rdx      # 0x17fc0
callq 0x22c0
movq -0x198(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x2130
jmp 0x8a8c
leaq -0x70(%rbp), %rdi
movq %rdi, -0x1b8(%rbp)
callq 0xbc00
movq -0x1b8(%rbp), %rsi
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x9870
movq -0x1b8(%rbp), %rdi
callq 0x98a0
movq -0x1a8(%rbp), %rdi
callq 0x9830
movq -0x1a8(%rbp), %rdi
movq -0x148(%rbp), %rcx
movq %rcx, 0x68(%rax)
callq 0x9830
movq -0x148(%rbp), %rdi
movq %rax, -0x1b0(%rbp)
callq 0xbc70
movq -0x1b0(%rbp), %rdi
movl %eax, -0x74(%rbp)
leaq -0x74(%rbp), %rsi
callq 0x48e0
movq -0x1a8(%rbp), %rdi
callq 0x9830
movq %rax, %rdi
movq -0x148(%rbp), %rax
movl (%rax), %esi
movl 0x4(%rax), %edx
movl %esi, %eax
shrl $0x1f, %eax
addl %eax, %esi
sarl %esi
movl %edx, %eax
shrl $0x1f, %eax
addl %eax, %edx
sarl %edx
xorl %eax, %eax
movl %eax, %ecx
callq 0x49d0
leaq -0x90(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
callq 0x53c0
leaq -0xa8(%rbp), %rdi
callq 0x53c0
leaq -0xc0(%rbp), %rdi
callq 0x53e0
movq -0x148(%rbp), %rax
movq -0x1a0(%rbp), %rdi
movl (%rax), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %ecx, %eax
sarl %eax
movslq %eax, %rsi
callq 0xef10
jmp 0x84ae
movq -0x148(%rbp), %rax
movl (%rax), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %ecx, %eax
sarl %eax
movslq %eax, %rsi
leaq -0xa8(%rbp), %rdi
callq 0xef10
jmp 0x84d1
movq -0x148(%rbp), %rax
movl (%rax), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %ecx, %eax
sarl %eax
movslq %eax, %rsi
leaq -0xc0(%rbp), %rdi
callq 0x8c60
jmp 0x84f4
movl $0x0, -0xc4(%rbp)
movq -0x148(%rbp), %rax
movl -0xc4(%rbp), %ecx
movl %ecx, -0x1bc(%rbp)
movl (%rax), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x1bc(%rbp), %eax
cmpl %ecx, %eax
jge 0x85ee
movl -0xc4(%rbp), %eax
movl %eax, -0x1d0(%rbp)
movslq -0xc4(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0x5050
movl -0x1d0(%rbp), %ecx
movl %ecx, (%rax)
movl -0xc4(%rbp), %eax
movl %eax, -0x1cc(%rbp)
movslq -0xc4(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0x5050
movl -0x1cc(%rbp), %ecx
movl %ecx, (%rax)
movsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x1c8(%rbp)
movslq -0xc4(%rbp), %rsi
leaq -0xc0(%rbp), %rdi
callq 0x5070
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0xc4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc4(%rbp)
jmp 0x84fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x5300
leaq -0xa8(%rbp), %rdi
callq 0x5360
leaq -0x90(%rbp), %rdi
callq 0x5360
jmp 0x8a8c
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
callq 0x9830
movq %rax, %rdi
leaq -0x90(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
leaq -0xc0(%rbp), %rcx
callq 0x5090
jmp 0x861d
leaq -0xc0(%rbp), %rdi
callq 0x5300
leaq -0xa8(%rbp), %rdi
callq 0x5360
leaq -0x90(%rbp), %rdi
callq 0x5360
movq -0x10(%rbp), %rdi
addq $0x28, %rdi
addq $0x30, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9800
testb $0x1, %al
jne 0x865f
jmp 0x8769
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
addq $0x30, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9800
testb $0x1, %al
jne 0x867d
jmp 0x86d9
movl $0x10, %edi
callq 0x20a0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x1d8(%rbp)
leaq 0x9b79(%rip), %rsi      # 0x12214
callq 0x2070
jmp 0x86a2
movq -0x1d8(%rbp), %rdi
movq 0xf940(%rip), %rsi      # 0x17ff0
movq 0xf909(%rip), %rdx      # 0x17fc0
callq 0x22c0
movq -0x1d8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x2130
jmp 0x8a8c
leaq -0xd8(%rbp), %rdi
callq 0xbc00
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
addq $0x30, %rdi
leaq -0xd8(%rbp), %rsi
callq 0x9870
leaq -0xd8(%rbp), %rdi
callq 0x98a0
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
addq $0x30, %rdi
callq 0x9830
movq -0x148(%rbp), %rdi
movq %rdi, 0x68(%rax)
addq $0x28, %rdi
addq $0x30, %rdi
callq 0x9830
movq %rax, -0x1e0(%rbp)
movq -0x10(%rbp), %rdi
addq $0x28, %rdi
addq $0x30, %rdi
callq 0xe570
movq -0x1e0(%rbp), %rdi
movq %rax, %rsi
movsd -0x18(%rbp), %xmm0
callq 0x7ee0
jmp 0x8a83
movq -0x148(%rbp), %rdi
addq $0x28, %rdi
addq $0x30, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9800
testb $0x1, %al
jne 0x8787
jmp 0x87e3
movl $0x10, %edi
callq 0x20a0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x1e8(%rbp)
leaq 0x9a6f(%rip), %rsi      # 0x12214
callq 0x2070
jmp 0x87ac
movq -0x1e8(%rbp), %rdi
movq 0xf836(%rip), %rsi      # 0x17ff0
movq 0xf7ff(%rip), %rdx      # 0x17fc0
callq 0x22c0
movq -0x1e8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x2130
jmp 0x8a8c
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0xbc00
movq -0x208(%rbp), %rsi
movq -0x148(%rbp), %rdi
addq $0x58, %rdi
movq %rdi, -0x1f8(%rbp)
callq 0x9870
movq -0x208(%rbp), %rdi
callq 0x98a0
movq -0x1f8(%rbp), %rdi
callq 0x9830
movq -0x1f8(%rbp), %rdi
movq -0x148(%rbp), %rcx
movq %rcx, 0x68(%rax)
callq 0x9830
movq -0x148(%rbp), %rdi
movq %rax, -0x200(%rbp)
callq 0xbc70
movq -0x200(%rbp), %rdi
movl %eax, -0xec(%rbp)
leaq -0xec(%rbp), %rsi
callq 0x48e0
movq -0x1f8(%rbp), %rdi
callq 0x9830
movq %rax, %rdi
movq -0x148(%rbp), %rax
movl (%rax), %esi
movl 0x4(%rax), %edx
movl %esi, %eax
shrl $0x1f, %eax
addl %eax, %esi
sarl %esi
movl %edx, %eax
shrl $0x1f, %eax
addl %eax, %edx
sarl %edx
xorl %eax, %eax
movl %eax, %ecx
callq 0x49d0
leaq -0x108(%rbp), %rdi
movq %rdi, -0x1f0(%rbp)
callq 0x53c0
leaq -0x120(%rbp), %rdi
callq 0x53c0
leaq -0x138(%rbp), %rdi
callq 0x53e0
movq -0x148(%rbp), %rax
movq -0x1f0(%rbp), %rdi
movl (%rax), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %ecx, %eax
sarl %eax
movslq %eax, %rsi
callq 0xef10
jmp 0x88f3
movq -0x148(%rbp), %rax
movl (%rax), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %ecx, %eax
sarl %eax
movslq %eax, %rsi
leaq -0x120(%rbp), %rdi
callq 0xef10
jmp 0x8916
movq -0x148(%rbp), %rax
movl (%rax), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %ecx, %eax
sarl %eax
movslq %eax, %rsi
leaq -0x138(%rbp), %rdi
callq 0x8c60
jmp 0x8939
movl $0x0, -0x13c(%rbp)
movq -0x148(%rbp), %rax
movl -0x13c(%rbp), %ecx
movl %ecx, -0x20c(%rbp)
movl (%rax), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x20c(%rbp), %eax
cmpl %ecx, %eax
jge 0x8a30
movl -0x13c(%rbp), %eax
movl %eax, -0x220(%rbp)
movslq -0x13c(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0x5050
movl -0x220(%rbp), %ecx
movl %ecx, (%rax)
movl -0x13c(%rbp), %eax
movl %eax, -0x21c(%rbp)
movslq -0x13c(%rbp), %rsi
leaq -0x120(%rbp), %rdi
callq 0x5050
movl -0x21c(%rbp), %ecx
movl %ecx, (%rax)
movsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x218(%rbp)
movslq -0x13c(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0x5070
movsd -0x218(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x13c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13c(%rbp)
jmp 0x8943
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x5300
leaq -0x120(%rbp), %rdi
callq 0x5360
leaq -0x108(%rbp), %rdi
callq 0x5360
jmp 0x8a8c
movq -0x148(%rbp), %rdi
addq $0x58, %rdi
callq 0x9830
movq %rax, %rdi
leaq -0x108(%rbp), %rsi
leaq -0x120(%rbp), %rdx
leaq -0x138(%rbp), %rcx
callq 0x5090
jmp 0x8a5f
leaq -0x138(%rbp), %rdi
callq 0x5300
leaq -0x120(%rbp), %rdi
callq 0x5360
leaq -0x108(%rbp), %rdi
callq 0x5360
addq $0x220, %rsp            # imm = 0x220
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x22e0
nopw %cs:(%rax,%rax)
nop