// File: ef-gy[P]libefgy/src/test-case/polytope.cpp
// Function: bool testPolytopeIteratorNotInfinite<efgy::geometry::parametric<float, 2ul, efgy::geometry::formula::plane>, 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
movq %rsp, %rbp
subq $0x4f0, %rsp            # imm = 0x4F0
movq %rdi, -0x10(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x391e0
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x418(%rbp)
callq 0x55f0
movq -0x418(%rbp), %rdx
leaq 0x5f4ff(%rip), %rsi     # 0x69338
leaq -0x1f0(%rbp), %rdi
callq 0x67a0
jmp 0x9e47
leaq -0x1d0(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
movl $0x10, %edx
callq 0x54d0
jmp 0x9e61
leaq -0x1f0(%rbp), %rdi
callq 0x5230
leaq -0x1f1(%rbp), %rdi
callq 0x53d0
leaq -0x218(%rbp), %rdi
leaq -0x58(%rbp), %rsi
leaq -0x219(%rbp), %rdx
callq 0x56ba0
jmp 0x9e92
movq $0x0, -0x228(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x5fdf0(%rip), %rsi     # 0x69c98
callq 0x5370
movq %rax, -0x420(%rbp)
jmp 0x9eb6
callq 0x56bd0
movq %rax, -0x428(%rbp)
jmp 0x9ec4
movq -0x428(%rbp), %rsi
movq -0x420(%rbp), %rdi
callq 0x5370
movq %rax, -0x430(%rbp)
jmp 0x9ee0
movq -0x430(%rbp), %rdi
leaq 0x5fdbe(%rip), %rsi     # 0x69cac
callq 0x5370
jmp 0x9ef5
leaq -0x218(%rbp), %rax
movq %rax, -0x230(%rbp)
movq -0x230(%rbp), %rsi
leaq -0x2e8(%rbp), %rdi
callq 0x56be0
jmp 0x9f18
movq -0x230(%rbp), %rsi
leaq -0x3a0(%rbp), %rdi
callq 0x56c10
jmp 0x9f2d
jmp 0x9f2f
leaq -0x2e8(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x56cc0
movb %al, -0x431(%rbp)
jmp 0x9f4a
movb -0x431(%rbp), %al
testb $0x1, %al
jne 0x9ffd
jmp 0x9f5a
movl $0x2, -0x3a4(%rbp)
jmp 0xa1ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x9f9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x5230
leaq -0x1f1(%rbp), %rdi
callq 0x53d0
jmp 0xa470
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0xa464
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0xa214
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x56f90
jmp 0xa214
leaq -0x3d0(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x56cf0
jmp 0xa012
leaq -0x3d0(%rbp), %rax
movq %rax, -0x3b0(%rbp)
movq -0x3b0(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x3f0(%rbp)
movq 0x8(%rax), %rcx
movq %rcx, -0x3e8(%rbp)
movq 0x10(%rax), %rcx
movq %rcx, -0x3e0(%rbp)
movq 0x18(%rax), %rax
movq %rax, -0x3d8(%rbp)
cmpq $0x2710, -0x228(%rbp) # imm = 0x2710
jle 0xa104
movq -0x10(%rbp), %rdi
leaq 0x5fc42(%rip), %rsi     # 0x69cb0
callq 0x5370
movq %rax, -0x440(%rbp)
jmp 0xa07c
callq 0x56bd0
movq %rax, -0x448(%rbp)
jmp 0xa08a
movq -0x448(%rbp), %rsi
movq -0x440(%rbp), %rdi
callq 0x5370
movq %rax, -0x450(%rbp)
jmp 0xa0a6
movq -0x450(%rbp), %rdi
leaq 0x5fc2e(%rip), %rsi     # 0x69ce2
callq 0x5370
movq %rax, -0x458(%rbp)
jmp 0xa0c2
movq -0x458(%rbp), %rdi
movl $0x2710, %esi           # imm = 0x2710
callq 0x5620
movq %rax, -0x460(%rbp)
jmp 0xa0dc
movq -0x460(%rbp), %rdi
leaq 0x5fc07(%rip), %rsi     # 0x69cf1
callq 0x5370
jmp 0xa0f1
movb $0x0, -0x1(%rbp)
movl $0x1, -0x3a4(%rbp)
jmp 0xa1ec
leaq 0x5fbf5(%rip), %rsi     # 0x69d00
leaq -0x1d0(%rbp), %rdi
callq 0x5370
jmp 0xa119
leaq -0x3f0(%rbp), %rax
movq %rax, -0x3f8(%rbp)
movq -0x3f8(%rbp), %rdi
callq 0x394e0
movq %rax, -0x400(%rbp)
movq -0x3f8(%rbp), %rdi
callq 0x39500
movq %rax, -0x408(%rbp)
movq -0x400(%rbp), %rax
cmpq -0x408(%rbp), %rax
je 0xa1b2
movq -0x400(%rbp), %rax
movq %rax, -0x410(%rbp)
leaq 0x5fad7(%rip), %rsi     # 0x69c49
leaq -0x1d0(%rbp), %rdi
callq 0x5370
movq %rax, -0x468(%rbp)
jmp 0xa187
movq -0x468(%rbp), %rdi
movq -0x410(%rbp), %rsi
callq 0x39520
jmp 0xa19c
jmp 0xa19e
movq -0x400(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x400(%rbp)
jmp 0xa14d
leaq 0x5fb51(%rip), %rsi     # 0x69d0a
leaq -0x1d0(%rbp), %rdi
callq 0x5370
jmp 0xa1c7
movq -0x228(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x228(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x56e40
jmp 0xa1e7
jmp 0x9f2f
leaq -0x3a0(%rbp), %rdi
callq 0x56f90
leaq -0x2e8(%rbp), %rdi
callq 0x56f90
movl -0x3a4(%rbp), %eax
subl $0x2, %eax
je 0xa225
jmp 0xa441
leaq -0x2e8(%rbp), %rdi
callq 0x56f90
jmp 0xa464
cmpq $0x1, -0x228(%rbp)
jge 0xa30c
movq -0x10(%rbp), %rdi
leaq 0x5fad0(%rip), %rsi     # 0x69d0e
callq 0x5370
movq %rax, -0x470(%rbp)
jmp 0xa24c
callq 0x56bd0
movq %rax, -0x478(%rbp)
jmp 0xa25a
movq -0x478(%rbp), %rsi
movq -0x470(%rbp), %rdi
callq 0x5370
movq %rax, -0x480(%rbp)
jmp 0xa276
movq -0x480(%rbp), %rdi
leaq 0x5fab8(%rip), %rsi     # 0x69d3c
callq 0x5370
movq %rax, -0x488(%rbp)
jmp 0xa292
movq -0x488(%rbp), %rdi
movl $0x1, %esi
callq 0x5620
movq %rax, -0x490(%rbp)
jmp 0xa2ac
movq -0x490(%rbp), %rdi
leaq 0x5fa95(%rip), %rsi     # 0x69d4f
callq 0x5370
movq %rax, -0x498(%rbp)
jmp 0xa2c8
movq -0x498(%rbp), %rdi
movq -0x228(%rbp), %rsi
callq 0x5620
movq %rax, -0x4a0(%rbp)
jmp 0xa2e4
movq -0x4a0(%rbp), %rdi
leaq 0x5fa6b(%rip), %rsi     # 0x69d5d
callq 0x5370
jmp 0xa2f9
movb $0x0, -0x1(%rbp)
movl $0x1, -0x3a4(%rbp)
jmp 0xa441
movq -0x228(%rbp), %rax
movq %rax, -0x4b0(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x56ff0
movq %rax, -0x4a8(%rbp)
jmp 0xa32f
movq -0x4b0(%rbp), %rax
movq -0x4a8(%rbp), %rcx
cmpq %rcx, %rax
je 0xa433
movq -0x10(%rbp), %rdi
leaq 0x5fa0f(%rip), %rsi     # 0x69d60
callq 0x5370
movq %rax, -0x4b8(%rbp)
jmp 0xa35f
callq 0x56bd0
movq %rax, -0x4c0(%rbp)
jmp 0xa36d
movq -0x4c0(%rbp), %rsi
movq -0x4b8(%rbp), %rdi
callq 0x5370
movq %rax, -0x4c8(%rbp)
jmp 0xa389
movq -0x4c8(%rbp), %rdi
leaq 0x5f9ef(%rip), %rsi     # 0x69d86
callq 0x5370
movq %rax, -0x4d0(%rbp)
jmp 0xa3a5
leaq -0x218(%rbp), %rdi
callq 0x56ff0
movq %rax, -0x4d8(%rbp)
jmp 0xa3ba
movq -0x4d8(%rbp), %rsi
movq -0x4d0(%rbp), %rdi
callq 0x50a0
movq %rax, -0x4e0(%rbp)
jmp 0xa3d6
movq -0x4e0(%rbp), %rdi
leaq 0x5f9c0(%rip), %rsi     # 0x69da4
callq 0x5370
movq %rax, -0x4e8(%rbp)
jmp 0xa3f2
movq -0x4e8(%rbp), %rdi
movq -0x228(%rbp), %rsi
callq 0x5620
movq %rax, -0x4f0(%rbp)
jmp 0xa40e
movq -0x4f0(%rbp), %rdi
leaq 0x5f9a9(%rip), %rsi     # 0x69dc5
callq 0x5370
jmp 0xa423
movb $0x0, -0x1(%rbp)
movl $0x1, -0x3a4(%rbp)
jmp 0xa441
movb $0x1, -0x1(%rbp)
movl $0x1, -0x3a4(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x50b0
leaq -0x58(%rbp), %rdi
callq 0x39630
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x4f0, %rsp            # imm = 0x4F0
popq %rbp
retq
leaq -0x1d0(%rbp), %rdi
callq 0x50b0
leaq -0x58(%rbp), %rdi
callq 0x39630
movq -0x200(%rbp), %rdi
callq 0x55e0
nopw %cs:(%rax,%rax)
nop