// File: /workspace/github_cpp_makefile_star2_O2/ef-gy[P]libefgy/src/test-case/polytope.cpp
// Function: bool testPolytopeIteratorNotInfinite<efgy::geometry::adapt<float, 3ul, efgy::geometry::ifs<float, 2ul, efgy::geometry::cube, efgy::geometry::generators::gasket>, efgy::math::format::cartesian>, 10000l, 1l>(std::ostream&)
bool testPolytopeIteratorNotInfinite(std::ostream &log) {
  auto params = geometry::parameters<float>();
  std::ostringstream os("");

  auto p = C(params, typename C::format());
  long c = 0;

  log << "iterating through '" << p.id() << "': ";

  for (auto &f : p) {
    auto t = f;
    if (c > lim) {
      log << "suspect infinite loop while iterating through a '" << p.id()
          << "': more than '" << lim << "' iterations.\n";
      return false;
    }
    os << "vector: [";
    for (auto &n : t) {
      os << " " << n;
    }
    os << " ]\n";
    c++;
  }

  if (c < min) {
    log << "not enough iterations while going through a '" << p.id()
        << "': want at least '" << min << "', but did: '" << c << "'\n";
    return false;
  }

  if (c != p.size()) {
    log << "wrong size() result for object type '" << p.id()
        << "'; object said it would have " << p.size()
        << " elements, but iterator gave us " << c << " elements.\n";
    return false;
  }

  return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x318, %rsp            # imm = 0x318
movq %rdi, 0x8(%rsp)
leaq 0x158(%rsp), %rbx
movq %rbx, %rdi
callq 0x14b62
leaq 0x1848d(%rip), %rsi     # 0x20232
leaq 0x68(%rsp), %rdi
leaq 0xf8(%rsp), %rdx
callq 0x4f2a
leaq 0x1a0(%rsp), %rdi
leaq 0x68(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x4390
leaq 0x68(%rsp), %rdi
callq 0x4120
movq %rbx, 0x10(%rsp)
movq %rbx, 0x20(%rsp)
leaq 0x18d81(%rip), %rsi     # 0x20b68
movq 0x8(%rsp), %rdi
callq 0x4290
leaq 0x18ec5(%rip), %rsi     # 0x20cbd
movq %rax, %rdi
callq 0x4290
leaq 0x18d75(%rip), %rsi     # 0x20b7c
movq %rax, %rdi
callq 0x4290
leaq 0x68(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1f24c
leaq 0xf8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1f29c
xorl %r15d, %r15d
leaq 0x68(%rsp), %r12
leaq 0xf8(%rsp), %r13
leaq 0x1a0(%rsp), %rbx
leaq 0x18cca(%rip), %r14     # 0x20b19
movq %r12, %rdi
movq %r13, %rsi
callq 0x1d062
movl %eax, %ebp
testb %al, %al
je 0x7f4c
leaq 0xc8(%rsp), %rdi
movq %r12, %rsi
callq 0x1f2ec
movups 0xc8(%rsp), %xmm0
movups 0xd8(%rsp), %xmm1
movups 0xe8(%rsp), %xmm2
movaps %xmm2, 0x50(%rsp)
movaps %xmm1, 0x40(%rsp)
movaps %xmm0, 0x30(%rsp)
cmpq $0x2711, %r15           # imm = 0x2711
je 0x7efb
movq %rbx, %rdi
leaq 0x18d22(%rip), %rsi     # 0x20bd0
callq 0x4290
xorl %ebp, %ebp
cmpq $0x30, %rbp
je 0x7edc
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4290
leaq (%rsp,%rbp), %rsi
addq $0x30, %rsi
movq %rax, %rdi
callq 0x15168
addq $0xc, %rbp
jmp 0x7eb5
movq %rbx, %rdi
leaq 0x18cf4(%rip), %rsi     # 0x20bda
callq 0x4290
incq %r15
movq %r12, %rdi
callq 0x1d126
jmp 0x7e4f
leaq 0x18c7e(%rip), %rsi     # 0x20b80
movq 0x8(%rsp), %rdi
callq 0x4290
leaq 0x18daa(%rip), %rsi     # 0x20cbd
movq %rax, %rdi
callq 0x4290
leaq 0x18c90(%rip), %rsi     # 0x20bb2
movq %rax, %rdi
callq 0x4290
movl $0x2710, %esi           # imm = 0x2710
movq %rax, %rdi
callq 0x4280
leaq 0x18c83(%rip), %rsi     # 0x20bc1
movq %rax, %rdi
callq 0x4290
movl $0x2711, %r15d          # imm = 0x2711
leaq 0xf8(%rsp), %rdi
callq 0x1f346
leaq 0x68(%rsp), %rdi
callq 0x1f346
testb %bpl, %bpl
jne 0x8052
testq %r15, %r15
je 0x7ff0
leaq 0x20(%rsp), %rdi
callq 0x1d15a
movb $0x1, %bl
cmpq %rax, %r15
je 0x8054
leaq 0x18ca3(%rip), %rsi     # 0x20c30
movq 0x8(%rsp), %rdi
callq 0x4290
leaq 0x18d1f(%rip), %rsi     # 0x20cbd
movq %rax, %rdi
callq 0x4290
leaq 0x18ca9(%rip), %rsi     # 0x20c56
movq %rax, %rdi
callq 0x4290
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x1d15a
movq %rbx, %rdi
movq %rax, %rsi
callq 0x41d0
leaq 0x18ca0(%rip), %rsi     # 0x20c74
movq %rax, %rdi
callq 0x4290
movq %rax, %rdi
movq %r15, %rsi
callq 0x4280
leaq 0x18ca7(%rip), %rsi     # 0x20c95
jmp 0x804a
leaq 0x18be7(%rip), %rsi     # 0x20bde
movq 0x8(%rsp), %rdi
callq 0x4290
leaq 0x18cb5(%rip), %rsi     # 0x20cbd
movq %rax, %rdi
callq 0x4290
leaq 0x18bf5(%rip), %rsi     # 0x20c0c
movq %rax, %rdi
callq 0x4290
pushq $0x1
popq %rsi
movq %rax, %rdi
callq 0x4280
leaq 0x18bee(%rip), %rsi     # 0x20c1f
movq %rax, %rdi
callq 0x4290
movq %rax, %rdi
xorl %esi, %esi
callq 0x4280
leaq 0x18be3(%rip), %rsi     # 0x20c2d
movq %rax, %rdi
callq 0x4290
xorl %ebx, %ebx
leaq 0x1a0(%rsp), %rdi
callq 0x4070
leaq 0x188(%rsp), %rdi
callq 0x14d80
movl %ebx, %eax
addq $0x318, %rsp            # imm = 0x318
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x80ba
jmp 0x809f
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x4120
jmp 0x80d1
movq %rax, %rbx
jmp 0x80d1
jmp 0x80aa
movq %rax, %rbx
jmp 0x80c4
jmp 0x80aa
jmp 0x80aa
jmp 0x80aa
movq %rax, %rbx
leaq 0xf8(%rsp), %rdi
callq 0x1f346
leaq 0x68(%rsp), %rdi
callq 0x1f346
leaq 0x1a0(%rsp), %rdi
callq 0x4070
leaq 0x188(%rsp), %rdi
callq 0x14d80
movq %rbx, %rdi
callq 0x4450