// File: eecs280staff[P]unit_test_framework/./unit_test_framework.hpp
// Function: void unit_test_framework::Assertions::assert_sequence_equal<int (&) [2], int (&) [2]>(int (&) [2], 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
movq %rsp, %rbp
subq $0x400, %rsp            # imm = 0x400
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0x5490
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5490
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
callq 0x54a0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x54a0
movq %rax, -0x40(%rbp)
movq -0x28(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x54c0
movq %rax, -0x48(%rbp)
movq -0x30(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x54c0
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
je 0x5218
leaq -0x1c8(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
callq 0x32f0
movq -0x3b0(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x5500
jmp 0x5093
leaq 0x5fc8(%rip), %rsi      # 0xb062
leaq -0x1c8(%rbp), %rdi
callq 0x3210
jmp 0x50a8
movq -0x10(%rbp), %rsi
leaq -0x1c8(%rbp), %rdi
callq 0x5500
jmp 0x50ba
leaq 0x5fa6(%rip), %rsi      # 0xb067
leaq -0x1c8(%rbp), %rdi
callq 0x3210
movq %rax, -0x3b8(%rbp)
jmp 0x50d6
movq -0x3b8(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x3400
movq %rax, -0x3c0(%rbp)
jmp 0x50ef
movq -0x3c0(%rbp), %rdi
leaq 0x5f65(%rip), %rsi      # 0xb062
callq 0x3210
movq %rax, -0x3c8(%rbp)
jmp 0x510b
movq -0x3c8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x3400
movq %rax, -0x3d0(%rbp)
jmp 0x5124
movq -0x3d0(%rbp), %rdi
leaq 0x5fb2(%rip), %rsi      # 0xb0e4
callq 0x3210
jmp 0x5139
movb $0x1, -0x1f9(%rbp)
movl $0x30, %edi
callq 0x3100
movq %rax, -0x3d8(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x3240
jmp 0x5166
movq -0x3d8(%rbp), %rdi
movl -0x14(%rbp), %edx
movq -0x20(%rbp), %rcx
leaq -0x1f8(%rbp), %rsi
callq 0x5530
jmp 0x5182
movq -0x3d8(%rbp), %rdi
movb $0x0, -0x1f9(%rbp)
leaq 0xbba9(%rip), %rsi      # 0x10d40
leaq 0x3d2(%rip), %rdx       # 0x5570
callq 0x33a0
jmp 0x5486
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x5207
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x51ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x3150
testb $0x1, -0x1f9(%rbp)
jne 0x51f9
jmp 0x5205
movq -0x3d8(%rbp), %rdi
callq 0x31a0
jmp 0x5207
leaq -0x1c8(%rbp), %rdi
callq 0x3080
jmp 0x547a
movb $0x1, -0x1fa(%rbp)
movq $0x0, -0x208(%rbp)
movq -0x28(%rbp), %rcx
xorl %eax, %eax
cmpq -0x38(%rbp), %rcx
movb %al, -0x3d9(%rbp)
je 0x524d
movq -0x30(%rbp), %rax
cmpq -0x40(%rbp), %rax
setne %al
movb %al, -0x3d9(%rbp)
movb -0x3d9(%rbp), %al
testb $0x1, %al
jne 0x5259
jmp 0x52a1
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x5590
testb $0x1, %al
jne 0x5273
movb $0x0, -0x1fa(%rbp)
jmp 0x52a1
jmp 0x5275
movq -0x28(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x28(%rbp)
movq -0x30(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x30(%rbp)
movq -0x208(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x208(%rbp)
jmp 0x522a
testb $0x1, -0x1fa(%rbp)
jne 0x5471
leaq -0x380(%rbp), %rdi
movq %rdi, -0x3e8(%rbp)
callq 0x32f0
movq -0x3e8(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x5500
jmp 0x52d3
leaq 0x5d88(%rip), %rsi      # 0xb062
leaq -0x380(%rbp), %rdi
callq 0x3210
jmp 0x52e8
movq -0x10(%rbp), %rsi
leaq -0x380(%rbp), %rdi
callq 0x5500
jmp 0x52fa
leaq 0x5d77(%rip), %rsi      # 0xb078
leaq -0x380(%rbp), %rdi
callq 0x3210
movq %rax, -0x3f0(%rbp)
jmp 0x5316
movq -0x3f0(%rbp), %rdi
movq -0x208(%rbp), %rsi
callq 0x3070
movq %rax, -0x3f8(%rbp)
jmp 0x5332
movq -0x3f8(%rbp), %rdi
leaq 0x5d2e(%rip), %rsi      # 0xb06e
callq 0x3210
jmp 0x5347
movq -0x28(%rbp), %rsi
leaq -0x380(%rbp), %rdi
callq 0x55c0
jmp 0x5359
leaq 0x5d02(%rip), %rsi      # 0xb062
leaq -0x380(%rbp), %rdi
callq 0x3210
jmp 0x536e
movq -0x30(%rbp), %rsi
leaq -0x380(%rbp), %rdi
callq 0x55c0
jmp 0x5380
leaq 0x5d5d(%rip), %rsi      # 0xb0e4
leaq -0x380(%rbp), %rdi
callq 0x3210
jmp 0x5395
movb $0x1, -0x3a1(%rbp)
movl $0x30, %edi
callq 0x3100
movq %rax, -0x400(%rbp)
leaq -0x3a0(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x3240
jmp 0x53c2
movq -0x400(%rbp), %rdi
movl -0x14(%rbp), %edx
movq -0x20(%rbp), %rcx
leaq -0x3a0(%rbp), %rsi
callq 0x5530
jmp 0x53de
movq -0x400(%rbp), %rdi
movb $0x0, -0x3a1(%rbp)
leaq 0xb94d(%rip), %rsi      # 0x10d40
leaq 0x176(%rip), %rdx       # 0x5570
callq 0x33a0
jmp 0x5486
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x5463
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
jmp 0x544a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1d0(%rbp)
movl %eax, -0x1d4(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x3150
testb $0x1, -0x3a1(%rbp)
jne 0x5455
jmp 0x5461
movq -0x400(%rbp), %rdi
callq 0x31a0
jmp 0x5463
leaq -0x380(%rbp), %rdi
callq 0x3080
jmp 0x547a
addq $0x400, %rsp            # imm = 0x400
popq %rbp
retq
movq -0x1d0(%rbp), %rdi
callq 0x33d0
nopw %cs:(%rax,%rax)