// File: ef-gy[P]libefgy/src/test-case/cube-mask.cpp
// Function: bool analyseCubeMaskProperties<efgy::geometry::generators::mask::cube<3ul>>(std::ostream&)
bool analyseCubeMaskProperties(std::ostream &log) {
  auto faces = C::faces();

  long c = 0;

  for (auto &f : faces) {
    std::cerr << "\n[";
    for (auto v : f) {
      log << "  (";
      for (auto w : v) {
        log << " " << w;
      }
      log << " )";
    }
    log << " ]";

    auto t = f;
    c++;
  }

  if (C::size() != faces.size()) {
    log << "wrong size() result; object said it would have " << C::size()
        << " elements, but iterator gave us " << c << " elements.\n";
    return false;
  }

  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0x10(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x33970
movq $0x0, -0x48(%rbp)
leaq -0x40(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
callq 0x34000
movq %rax, -0x58(%rbp)
movq -0x50(%rbp), %rdi
callq 0x34030
movq %rax, -0x60(%rbp)
leaq -0x58(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x34060
testb $0x1, %al
jne 0x6ab8
jmp 0x6c66
leaq -0x58(%rbp), %rdi
callq 0x34090
movq %rax, -0x68(%rbp)
movq 0x5451c(%rip), %rdi     # 0x5afe8
leaq 0x360dd(%rip), %rsi     # 0x3cbb0
callq 0x5350
jmp 0x6ada
movq -0x68(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
callq 0x340b0
movq %rax, -0x88(%rbp)
movq -0x80(%rbp), %rdi
callq 0x340d0
movq %rax, -0x90(%rbp)
movq -0x88(%rbp), %rax
cmpq -0x90(%rbp), %rax
je 0x6c23
movq -0x88(%rbp), %rax
movb 0x2(%rax), %cl
movb %cl, -0x92(%rbp)
movw (%rax), %ax
movw %ax, -0x94(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x36078(%rip), %rsi     # 0x3cbb3
callq 0x5350
jmp 0x6b42
leaq -0x94(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x340f0
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x34110
movq %rax, -0xb0(%rbp)
movq -0xa8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
je 0x6bf8
movq -0xa8(%rbp), %rax
movb (%rax), %al
andb $0x1, %al
movb %al, -0xb1(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x35fbf(%rip), %rsi     # 0x3cb61
callq 0x5350
movq %rax, -0xd0(%rbp)
jmp 0x6bb0
movq -0xd0(%rbp), %rdi
movzbl -0xb1(%rbp), %esi
andl $0x1, %esi
callq 0x55d0
jmp 0x6bc8
jmp 0x6bca
movq -0xa8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa8(%rbp)
jmp 0x6b76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x341d0
jmp 0x6d52
movq -0x10(%rbp), %rdi
leaq 0x35fb4(%rip), %rsi     # 0x3cbb7
callq 0x5350
jmp 0x6c0a
jmp 0x6c0c
movq -0x88(%rbp), %rax
addq $0x3, %rax
movq %rax, -0x88(%rbp)
jmp 0x6b02
movq -0x10(%rbp), %rdi
leaq 0x35f8c(%rip), %rsi     # 0x3cbba
callq 0x5350
jmp 0x6c35
movq -0x68(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0xbd(%rbp)
movl 0x8(%rax), %eax
movl %eax, -0xb5(%rbp)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x34130
jmp 0x6aa2
callq 0x34160
movq %rax, -0xd8(%rbp)
jmp 0x6c74
leaq -0x40(%rbp), %rdi
callq 0x341b0
movq %rax, %rcx
movq -0xd8(%rbp), %rax
cmpq %rcx, %rax
je 0x6d2d
movq -0x10(%rbp), %rdi
leaq 0x35f22(%rip), %rsi     # 0x3cbbd
callq 0x5350
movq %rax, -0xe0(%rbp)
jmp 0x6ca9
callq 0x34160
movq %rax, -0xe8(%rbp)
jmp 0x6cb7
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdi
callq 0x50a0
movq %rax, -0xf0(%rbp)
jmp 0x6cd3
movq -0xf0(%rbp), %rdi
leaq 0x35f0c(%rip), %rsi     # 0x3cbed
callq 0x5350
movq %rax, -0xf8(%rbp)
jmp 0x6cef
movq -0xf8(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x5600
movq %rax, -0x100(%rbp)
jmp 0x6d08
movq -0x100(%rbp), %rdi
leaq 0x35ef8(%rip), %rsi     # 0x3cc0e
callq 0x5350
jmp 0x6d1d
movb $0x0, -0x1(%rbp)
movl $0x1, -0xc4(%rbp)
jmp 0x6d3b
movb $0x1, -0x1(%rbp)
movl $0x1, -0xc4(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x341d0
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
movq -0x70(%rbp), %rdi
callq 0x55b0
nopl (%rax,%rax)