// File: ef-gy[P]libefgy/src/test-case/factory.cpp
// Function: testGeometryFactory(std::ostream&)
bool testGeometryFactory(std::ostream &log) {
  std::cerr << "\n";
  model<float, functor::echo, cube, 7, 7, format::cartesian>::with(
      log, 5, 0, format::cartesian());

  std::set<const char *> models;
  models = with<float, functor::models, 7>(models, "*", 0, 0);

  bool haveCube = false;

  for (std::string m : models) {
    haveCube || (haveCube = (m == "cube"));
    std::cerr << m << "\n";
  }

  if (!haveCube) {
    log << "no cube model\n";
    return false;
  }

  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x10(%rbp)
movq 0x6e432(%rip), %rdi     # 0x73fe8
leaq 0x4d690(%rip), %rsi     # 0x5324d
callq 0x5350
movq -0x10(%rbp), %rdi
movq $0x5, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
leaq -0x18(%rbp), %rsi
leaq -0x20(%rbp), %rdx
leaq -0x21(%rbp), %rcx
callq 0x7020
leaq -0x58(%rbp), %rdi
callq 0x7240
leaq -0x79(%rbp), %rdi
movq %rdi, -0xf0(%rbp)
callq 0x55b0
movq -0xf0(%rbp), %rdx
leaq 0x4d5e4(%rip), %rsi     # 0x531f2
leaq -0x78(%rbp), %rdi
callq 0x6c10
jmp 0x5c19
movq $0x0, -0x98(%rbp)
movq $0x0, -0xa0(%rbp)
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rsi
leaq -0x98(%rbp), %rdx
leaq -0xa0(%rbp), %rcx
leaq -0xa1(%rbp), %r8
callq 0x5ea0
movq %rax, -0xf8(%rbp)
jmp 0x5c5a
movq -0xf8(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x7260
jmp 0x5c6c
leaq -0x78(%rbp), %rdi
callq 0x5220
leaq -0x79(%rbp), %rdi
callq 0x53b0
movb $0x0, -0xa2(%rbp)
leaq -0x58(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x7290
movq %rax, -0xb8(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x72c0
movq %rax, -0xc0(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x72f0
testb $0x1, %al
jne 0x5cd2
jmp 0x5e23
leaq -0xb8(%rbp), %rdi
callq 0x7320
movq (%rax), %rax
movq %rax, -0x108(%rbp)
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x55b0
movq -0x108(%rbp), %rsi
movq -0x100(%rbp), %rdx
leaq -0xe0(%rbp), %rdi
callq 0x6c10
jmp 0x5d17
leaq -0xe1(%rbp), %rdi
callq 0x53b0
testb $0x1, -0xa2(%rbp)
jne 0x5d55
leaq 0x4d4c1(%rip), %rsi     # 0x531f4
leaq -0xe0(%rbp), %rdi
callq 0x7340
movb %al, -0x109(%rbp)
jmp 0x5d47
movb -0x109(%rbp), %al
andb $0x1, %al
movb %al, -0xa2(%rbp)
movq 0x6e28c(%rip), %rdi     # 0x73fe8
leaq -0xe0(%rbp), %rsi
callq 0x5320
movq %rax, -0x118(%rbp)
jmp 0x5d71
movq -0x118(%rbp), %rdi
leaq 0x4d4ce(%rip), %rsi     # 0x5324d
callq 0x5350
jmp 0x5d86
leaq -0xe0(%rbp), %rdi
callq 0x5220
leaq -0xb8(%rbp), %rdi
callq 0x7370
jmp 0x5cb6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x5dd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x5220
leaq -0x79(%rbp), %rdi
callq 0x53b0
jmp 0x5e87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xe1(%rbp), %rdi
callq 0x53b0
jmp 0x5e87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x5220
jmp 0x5e87
testb $0x1, -0xa2(%rbp)
jne 0x5e62
movq -0x10(%rbp), %rdi
leaq 0x4d3c2(%rip), %rsi     # 0x531f9
callq 0x5350
jmp 0x5e3e
movb $0x0, -0x1(%rbp)
movl $0x1, -0xe8(%rbp)
jmp 0x5e70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x5e87
movb $0x1, -0x1(%rbp)
movl $0x1, -0xe8(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x73a0
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
leaq -0x58(%rbp), %rdi
callq 0x73a0
movq -0x88(%rbp), %rdi
callq 0x55a0
nopl (%rax)