// File: /workspace/github_c_makefile_star2_O0/aligusnet[P]morpheus/external/Unity/unity.c
// Function: UnityAssertEqualDoubleArray
void UnityAssertEqualDoubleArray(UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* expected,
                                 UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* actual,
                                 const UNITY_UINT32 num_elements,
                                 const char* msg,
                                 const UNITY_LINE_TYPE lineNumber,
                                 const UNITY_FLAGS_T flags)
{
    UNITY_UINT32 elements = num_elements;
    UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* ptr_expected = expected;
    UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* ptr_actual = actual;

    RETURN_IF_FAIL_OR_IGNORE;

    if (elements == 0)
    {
        UnityPrintPointlessAndBail();
    }

    if (expected == actual) return; /* Both are NULL or same pointer */
    if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg))
        UNITY_FAIL_AND_BAIL;

    while (elements--)
    {
        if (!UnityDoublesWithin(*ptr_expected * UNITY_DOUBLE_PRECISION, *ptr_expected, *ptr_actual))
        {
            UnityTestResultsFailBegin(lineNumber);
            UnityPrint(UnityStrElement);
            UnityPrintNumberUnsigned(num_elements - elements - 1);
            UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(*ptr_expected, *ptr_actual);
            UnityAddMsgIfSpecified(msg);
            UNITY_FAIL_AND_BAIL;
        }
        if (flags == UNITY_ARRAY_TO_ARRAY)
        {
            ptr_expected++;
        }
        ptr_actual++;
    }
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movl %edx, 0x34(%rsp)
movq %rcx, 0x28(%rsp)
movq %r8, 0x20(%rsp)
movl %r9d, 0x1c(%rsp)
movl 0x34(%rsp), %eax
movl %eax, 0x18(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x720b(%rip)      # 0x10110
jne 0x8f11
cmpq $0x0, 0x7209(%rip)      # 0x10118
je 0x8f16
jmp 0x90a5
cmpl $0x0, 0x18(%rsp)
jne 0x8f5d
movq 0x20(%rsp), %rdi
callq 0x8250
leaq 0x4382(%rip), %rdi      # 0xd2b0
callq 0x7860
movq 0x28(%rsp), %rdi
callq 0x8280
movq $0x1, 0x71c8(%rip) # 0x10110
leaq 0x7181(%rip), %rdi      # 0x100d0
addq $0x50, %rdi
movl $0x1, %esi
callq 0x10e0
movq 0x40(%rsp), %rax
cmpq 0x38(%rsp), %rax
jne 0x8f6e
jmp 0x90a5
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq 0x20(%rsp), %rdx
movq 0x28(%rsp), %rcx
callq 0x8680
cmpl $0x0, %eax
je 0x8fac
movq $0x1, 0x7179(%rip) # 0x10110
leaq 0x7132(%rip), %rdi      # 0x100d0
addq $0x50, %rdi
movl $0x1, %esi
callq 0x10e0
jmp 0x8fae
movl 0x18(%rsp), %eax
movl %eax, %ecx
addl $-0x1, %ecx
movl %ecx, 0x18(%rsp)
cmpl $0x0, %eax
je 0x90a5
movq 0x10(%rsp), %rax
movsd 0x2c4f(%rip), %xmm0     # 0xbc20
mulsd (%rax), %xmm0
movq 0x10(%rsp), %rax
movsd (%rax), %xmm1
movq 0x8(%rsp), %rax
movsd (%rax), %xmm2
callq 0x90b0
cmpl $0x0, %eax
jne 0x907d
movq 0x20(%rsp), %rdi
callq 0x8250
leaq 0x42e1(%rip), %rdi      # 0xd2e7
callq 0x7860
movl 0x34(%rsp), %eax
subl 0x18(%rsp), %eax
subl $0x1, %eax
movl %eax, %eax
movl %eax, %edi
callq 0x7bb0
leaq 0x426a(%rip), %rdi      # 0xd290
callq 0x7860
movq 0x10(%rsp), %rax
movsd (%rax), %xmm0
callq 0x7cc0
leaq 0x425b(%rip), %rdi      # 0xd29b
callq 0x7860
movq 0x8(%rsp), %rax
movsd (%rax), %xmm0
callq 0x7cc0
movq 0x28(%rsp), %rdi
callq 0x8280
movq $0x1, 0x70a8(%rip) # 0x10110
leaq 0x7061(%rip), %rdi      # 0x100d0
addq $0x50, %rdi
movl $0x1, %esi
callq 0x10e0
cmpl $0x1, 0x1c(%rsp)
jne 0x9092
movq 0x10(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x8(%rsp)
jmp 0x8fae
addq $0x48, %rsp
retq
nopw (%rax,%rax)