// File: j-faria[P]kima/eigen/Eigen/src/Core/Redux.h
// Function: double Eigen::internal::redux_impl<Eigen::internal::scalar_sum_op<double, double>, Eigen::internal::redux_evaluator<Eigen::CwiseUnaryOp<Eigen::internal::scalar_abs_op<double>, Eigen::Block<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 1, -1, false>, 1, -1, false> const>>, 0, 0>::run<Eigen::CwiseUnaryOp<Eigen::internal::scalar_abs_op<double>, Eigen::Block<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 1, -1, false>, 1, -1, false> const>>(Eigen::internal::redux_evaluator<Eigen::CwiseUnaryOp<Eigen::internal::scalar_abs_op<double>, Eigen::Block<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 1, -1, false>, 1, -1, false> const>> const&, Eigen::internal::scalar_sum_op<double, double> const&, Eigen::CwiseUnaryOp<Eigen::internal::scalar_abs_op<double>, Eigen::Block<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 1, -1, false>, 1, -1, false> const> const&)
EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE
  Scalar run(const Evaluator &eval, const Func& func, const XprType& xpr)
  {
    eigen_assert(xpr.rows()>0 && xpr.cols()>0 && "you are using an empty matrix");
    Scalar res;
    res = eval.coeffByOuterInner(0, 0);
    for(Index i = 1; i < xpr.innerSize(); ++i)
      res = func(res, eval.coeffByOuterInner(0, i));
    for(Index i = 1; i < xpr.outerSize(); ++i)
      for(Index j = 0; j < xpr.innerSize(); ++j)
        res = func(res, eval.coeffByOuterInner(i, j));
    return res;
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x36ab0
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x49(%rbp)
jle 0x36bac
movq -0x18(%rbp), %rdi
callq 0x36af0
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x49(%rbp)
jle 0x36bac
movb $0x1, %al
movb %al, -0x49(%rbp)
jmp 0x36bac
movb -0x49(%rbp), %al
testb $0x1, %al
jne 0x36bb5
jmp 0x36bb7
jmp 0x36bd6
leaq 0x82ffb(%rip), %rdi     # 0xb9bb9
leaq 0x8f250(%rip), %rsi     # 0xc5e15
movl $0xc8, %edx
leaq 0x83028(%rip), %rcx     # 0xb9bf9
callq 0x6340
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x370a0
movsd %xmm0, -0x20(%rbp)
movq $0x1, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rdi
callq 0x370d0
movq %rax, %rcx
movq -0x58(%rbp), %rax
cmpq %rcx, %rax
jge 0x36c52
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rdx
xorl %eax, %eax
movl %eax, %esi
callq 0x370a0
movq -0x60(%rbp), %rdi
movsd %xmm0, -0x30(%rbp)
leaq -0x20(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x35960
movsd %xmm0, -0x20(%rbp)
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x36bf3
movq $0x1, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rdi
callq 0x370f0
movq %rax, %rcx
movq -0x68(%rbp), %rax
cmpq %rcx, %rax
jge 0x36cf1
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x18(%rbp), %rdi
callq 0x370d0
movq %rax, %rcx
movq -0x70(%rbp), %rax
cmpq %rcx, %rax
jge 0x36cde
movq -0x10(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x8(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x370a0
movq -0x78(%rbp), %rdi
movsd %xmm0, -0x48(%rbp)
leaq -0x20(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x35960
movsd %xmm0, -0x20(%rbp)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x36c7f
jmp 0x36ce0
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x36c5a
movsd -0x20(%rbp), %xmm0
addq $0x80, %rsp
popq %rbp
retq
nop