// File: /workspace/github_cpp_makefile_star2_O2/eecs280staff[P]unit_test_framework/./unit_test_framework.hpp
// Function: void unit_test_framework::Assertions::assert_sequence_equal<std::vector<double, std::allocator<double>>&, int (&) [2]>(std::vector<double, std::allocator<double>>&, int (&) [2], int, char const*)
static void assert_sequence_equal(First&& first, Second&& second,
                                      int line_number,
                                      const char* assertion_text) {
      using std::begin;
      using std::end;
      auto it1 = begin(first);
      auto it2 = begin(second);
      auto end1 = end(first);
      auto end2 = end(second);
      auto len1 = std::distance(it1, end1);
      auto len2 = std::distance(it2, end2);
      if (len1 != len2) {  // different number of elements
        std::ostringstream reason;
        Diagnostic::print(reason, first);
        reason << " != ";
        Diagnostic::print(reason, second);
        reason << " (sizes differ: " << len1 << " != " << len2 << ")";
        throw TestFailure(reason.str(), line_number, assertion_text);
      }

      bool equal = true;
      std::size_t position = 0;
      for (; it1 != end1 and it2 != end2; ++it1, ++it2, ++position) {
        if (not safe_equals<decltype(*it1),
                            decltype(*it2)>::equals(*it1, *it2)) {
          equal = false;
          break;
        }
      }

      if (not equal) {
        std::ostringstream reason;
        Diagnostic::print(reason, first);
        reason << " != ";
        Diagnostic::print(reason, second);
        reason << " (elements at position " << position << " differ: ";
        Diagnostic::print(reason, *it1);
        reason << " != ";
        Diagnostic::print(reason, *it2);
        reason << ")";
        throw TestFailure(reason.str(), line_number, assertion_text);
      }
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1c8, %rsp            # imm = 0x1C8
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %r13
movq (%rdi), %r15
movq 0x8(%rdi), %rax
movq %rax, %r12
subq %r15, %r12
cmpq $0x10, %r12
jne 0x3533
xorl %ebx, %ebx
xorl %r12d, %r12d
cmpq %rax, %r15
je 0x343a
cmpq $-0x8, %rbx
je 0x343a
movsd (%r15), %xmm0
cvtsi2sdl (%r14,%r12,4), %xmm1
ucomisd %xmm1, %xmm0
jne 0x344c
jp 0x344c
addq $0x8, %r15
incq %r12
addq $-0x4, %rbx
jmp 0x340f
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rcx, 0x8(%rsp)
leaq 0x50(%rsp), %rdi
callq 0x2240
leaq 0x50(%rsp), %rdi
movq %r13, %rsi
callq 0x37ae
leaq 0x1c39(%rip), %rsi      # 0x50a8
leaq 0x50(%rsp), %rdi
callq 0x21c0
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x3064
leaq 0x1c31(%rip), %rsi      # 0x50be
leaq 0x50(%rsp), %rdi
callq 0x21c0
movq %rax, %rdi
movq %r12, %rsi
callq 0x2110
leaq 0x1c0b(%rip), %rsi      # 0x50b4
movq %rax, %rdi
callq 0x21c0
leaq 0x50(%rsp), %rdi
movq %r15, %rsi
callq 0x37a4
leaq 0x1be3(%rip), %rsi      # 0x50a8
leaq 0x50(%rsp), %rdi
callq 0x21c0
subq %rbx, %r14
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x305c
leaq 0x1c44(%rip), %rsi      # 0x512a
leaq 0x50(%rsp), %rdi
callq 0x21c0
pushq $0x30
popq %rdi
callq 0x20e0
movq %rax, %r14
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x22b0
movq %r14, %rcx
addq $0x10, %rcx
movq %rcx, (%r14)
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdx
cmpq %rax, %rdx
jne 0x35f1
movupd (%rax), %xmm0
movupd %xmm0, (%rcx)
jmp 0x35fd
movq %rcx, %rbx
leaq 0x50(%rsp), %r15
movq %r15, %rdi
callq 0x2240
movq %r15, %rdi
movq %r13, %rsi
callq 0x37ae
leaq 0x1b53(%rip), %rsi      # 0x50a8
leaq 0x50(%rsp), %rdi
callq 0x21c0
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x3064
leaq 0x1b3a(%rip), %rsi      # 0x50ad
leaq 0x50(%rsp), %rdi
callq 0x21c0
sarq $0x3, %r12
movq %rax, %rdi
movq %r12, %rsi
callq 0x21b0
leaq 0x1b15(%rip), %rsi      # 0x50a8
movq %rax, %rdi
callq 0x21c0
pushq $0x2
popq %rsi
movq %rax, %rdi
callq 0x21b0
leaq 0x1b7d(%rip), %rsi      # 0x512a
movq %rax, %rdi
callq 0x21c0
pushq $0x30
popq %rdi
callq 0x20e0
movq %rax, %r14
leaq 0x58(%rsp), %rsi
leaq 0x30(%rsp), %rdi
callq 0x22b0
movq %r14, %rcx
addq $0x10, %rcx
movq %rcx, (%r14)
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdx
cmpq %rax, %rdx
jne 0x363b
movupd (%rax), %xmm0
movupd %xmm0, (%rcx)
jmp 0x3647
movq %rdx, (%r14)
movq 0x20(%rsp), %rcx
movq %rcx, 0x10(%r14)
movq 0x18(%rsp), %rcx
movq %rcx, 0x8(%r14)
movq %rax, 0x10(%rsp)
andq $0x0, 0x18(%rsp)
movb $0x0, 0x20(%rsp)
movl %ebp, 0x20(%r14)
movq 0x8(%rsp), %rax
movq %rax, 0x28(%r14)
leaq 0x4726(%rip), %rsi      # 0x7d50
leaq -0x5db(%rip), %rdx      # 0x3056
movq %r14, %rdi
callq 0x2300
jmp 0x367e
movq %rdx, (%r14)
movq 0x40(%rsp), %rcx
movq %rcx, 0x10(%r14)
movq 0x38(%rsp), %rcx
movq %rcx, 0x8(%r14)
movq %rax, 0x30(%rsp)
andq $0x0, 0x38(%rsp)
movb $0x0, 0x40(%rsp)
movl %ebp, 0x20(%r14)
movq %rbx, 0x28(%r14)
leaq 0x46e1(%rip), %rsi      # 0x7d50
leaq -0x620(%rip), %rdx      # 0x3056
movq %r14, %rdi
callq 0x2300
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x3692
jmp 0x3699
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x20c0
jmp 0x36ab
movq %rax, %rbx
movq %r14, %rdi
callq 0x2150
jmp 0x36ab
jmp 0x36a8
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x2060
movq %rbx, %rdi
callq 0x2320
nop