// File: /workspace/github_cpp_makefile_star2_O1/tomfunkhouser[P]gaps/pkgs/R3Shapes/R3Shape.cpp
// Function: gaps::R3Shape::Copy() const
R3Shape *R3Shape::
Copy(void) const
{
  // Return copy of appropriate type
  if (ClassID() == R3Box::CLASS_ID()) return new R3Box(*((R3Box *) this));
  else if (ClassID() == R3OrientedBox::CLASS_ID()) return new R3OrientedBox(*((R3OrientedBox *) this));
  else if (ClassID() == R3Cylinder::CLASS_ID()) return new R3Cylinder(*((R3Cylinder *) this));
  else if (ClassID() == R3Cone::CLASS_ID()) return new R3Cone(*((R3Cone *) this));
  else if (ClassID() == R3Ellipsoid::CLASS_ID()) return new R3Ellipsoid(*((R3Ellipsoid *) this));
  else if (ClassID() == R3Sphere::CLASS_ID()) return new R3Sphere(*((R3Sphere *) this));
  else if (ClassID() == R3Triangle::CLASS_ID()) return new R3Triangle(*((R3Triangle *) this));
  else if (ClassID() == R3TriangleArray::CLASS_ID()) return new R3TriangleArray(*((R3TriangleArray *) this));
  else if (ClassID() == R3Circle::CLASS_ID()) return new R3Circle(*((R3Circle *) this));
  else if (ClassID() == R3Ellipse::CLASS_ID()) return new R3Ellipse(*((R3Ellipse *) this));
  else if (ClassID() == R3Rectangle::CLASS_ID()) return new R3Rectangle(*((R3Rectangle *) this));
  else if (ClassID() == R3Polyline::CLASS_ID()) return new R3Polyline(*((R3Polyline *) this));
  else if (ClassID() == R3CatmullRomSpline::CLASS_ID()) return new R3CatmullRomSpline(*((R3CatmullRomSpline *) this));

  // Should never get here
  RNAbort("Unrecognized shape class id: %d\n", ClassID());
  return NULL;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rax
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x2747c
cmpl %eax, %ebp
jne 0x283cc
movl $0x38, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x274f0
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x564e8
cmpl %eax, %ebp
jne 0x28400
movl $0x80, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x56552
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x55d5c
cmpl %eax, %ebp
jne 0x28434
movl $0xe8, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x55dea
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x5579c
cmpl %eax, %ebp
jne 0x28468
movl $0xa0, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x55810
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x552a8
cmpl %eax, %ebp
jne 0x2849c
movl $0xb8, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x55328
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x27020
cmpl %eax, %ebp
jne 0x284d0
movl $0x28, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x2708a
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x5403c
cmpl %eax, %ebp
jne 0x28504
movl $0x88, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x544f4
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x524a4
cmpl %eax, %ebp
jne 0x28538
movl $0x70, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x52556
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x51fa8
cmpl %eax, %ebp
jne 0x2856c
movl $0x48, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x5210c
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x51b08
cmpl %eax, %ebp
jne 0x285a0
movl $0xb0, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x51b84
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x50fd4
cmpl %eax, %ebp
jne 0x285d1
movl $0x78, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x5103e
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
cmpl 0xbd8fd(%rip), %eax     # 0xe5ee0
jne 0x285ff
movl $0x60, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4f996
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
cmpl 0xbd8cf(%rip), %eax     # 0xe5ee0
jne 0x2862d
movl $0x68, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4ebae
jmp 0x2864c
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
leaq 0x7a6c4(%rip), %rdi     # 0xa2d04
xorl %r14d, %r14d
movl %eax, %esi
xorl %eax, %eax
callq 0x72942
movq %r14, %rax
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
movl $0x68, %esi
jmp 0x286d4
movq %rax, %rbx
movl $0x60, %esi
jmp 0x286d4
movq %rax, %rbx
movl $0x78, %esi
jmp 0x286d4
movq %rax, %rbx
movl $0xb0, %esi
jmp 0x286d4
movq %rax, %rbx
movl $0x48, %esi
jmp 0x286d4
movq %rax, %rbx
movl $0x70, %esi
jmp 0x286d4
movq %rax, %rbx
movl $0x88, %esi
jmp 0x286d4
movq %rax, %rbx
movl $0x28, %esi
jmp 0x286d4
movq %rax, %rbx
movl $0xb8, %esi
jmp 0x286d4
movq %rax, %rbx
movl $0xa0, %esi
jmp 0x286d4
movq %rax, %rbx
movl $0xe8, %esi
jmp 0x286d4
movq %rax, %rbx
movl $0x80, %esi
jmp 0x286d4
movq %rax, %rbx
movl $0x38, %esi
movq %r14, %rdi
callq 0xe450
movq %rbx, %rdi
callq 0xe7e0