// File: ef-gy[P]libefgy/include/ef.gy/factory.h
// Function: efgy::geometry::functor::models<float, efgy::geometry::cube, 7ul, 7ul, efgy::math::format::cartesian>::output efgy::geometry::with<float, efgy::geometry::functor::models, 7ul, efgy::math::format::cartesian>(efgy::geometry::functor::models<float, efgy::geometry::cube, 7ul, 7ul, efgy::math::format::cartesian>::argument, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned long const&, unsigned long const&, efgy::math::format::cartesian const&)
static inline typename func<Q, cube, d, d, format>::output with(
    typename func<Q, cube, d, d, format>::argument arg, const std::string &type,
    const std::size_t &dims, const std::size_t &rdims,
    const format &tag = format()) {
  with<Q, func, d, plane, format>(arg, type, dims, rdims, tag);
  with<Q, func, d, cube, format>(arg, type, dims, rdims, tag);
  parametricFactory<formula::sphere>::with<Q, func, d, format>(arg, type, dims,
                                                               rdims, tag);
  parametricFactory<formula::torus>::with<Q, func, d, format>(arg, type, dims,
                                                              rdims, tag);
  parametricFactory<formula::cliffordTorus>::with<Q, func, d, format>(
      arg, type, dims, rdims, tag);
  parametricFactory<formula::moebiusStrip>::with<Q, func, d, format>(
      arg, type, dims, rdims, tag);
  parametricFactory<formula::kleinBagel>::with<Q, func, d, format>(
      arg, type, dims, rdims, tag);
  parametricFactory<formula::kleinBottle>::with<Q, func, d, format>(
      arg, type, dims, rdims, tag);
  parametricFactory<formula::dinisSurface>::with<Q, func, d, format>(
      arg, type, dims, rdims, tag);
  with<Q, func, d, sierpinski::gasket, format>(arg, type, dims, rdims, tag);
  with<Q, func, d, sierpinski::carpet, format>(arg, type, dims, rdims, tag);
  with<Q, func, d, randomAffineIFS, format>(arg, type, dims, rdims, tag);
  with<Q, func, d, flame::random, format>(arg, type, dims, rdims, tag);

  return func<Q, cube, d, d, format>::pass(arg);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x6400
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x6490
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x37a70
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x37ab0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x37af0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x37b30
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x37b70
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x37bb0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x37bf0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x6520
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x65b0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x6640
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
callq 0x66d0
movq -0x8(%rbp), %rdi
callq 0x37c30
addq $0x30, %rsp
popq %rbp
retq