// File: /workspace/github_cpp_makefile_star2_O2/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 0x24acc
cmpl %eax, %ebp
jne 0x258ac
pushq $0x38
popq %rdi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x24b3e
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x4e44c
cmpl %eax, %ebp
jne 0x258e0
movl $0x80, %edi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4e4b4
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x4dde0
cmpl %eax, %ebp
jne 0x25914
movl $0xe8, %edi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4de6c
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x4d88c
cmpl %eax, %ebp
jne 0x25948
movl $0xa0, %edi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4d8fe
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x4d41c
cmpl %eax, %ebp
jne 0x2597c
movl $0xb8, %edi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4d49a
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x24660
cmpl %eax, %ebp
jne 0x259ae
pushq $0x28
popq %rdi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x246c8
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x4c3f4
cmpl %eax, %ebp
jne 0x259e2
movl $0x88, %edi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4c7ea
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x4ab24
cmpl %eax, %ebp
jne 0x25a14
pushq $0x70
popq %rdi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4abd4
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x4a66c
cmpl %eax, %ebp
jne 0x25a46
pushq $0x48
popq %rdi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4a7d0
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x4a268
cmpl %eax, %ebp
jne 0x25a7a
movl $0xb0, %edi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4a2e2
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x497ac
cmpl %eax, %ebp
jne 0x25aa9
pushq $0x78
popq %rdi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x49814
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
cmpl 0xb5435(%rip), %eax     # 0xdaef0
jne 0x25ad5
pushq $0x60
popq %rdi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x484ca
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
cmpl 0xb5409(%rip), %eax     # 0xdaef0
jne 0x25b01
pushq $0x68
popq %rdi
callq 0xe450
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4781a
jmp 0x25b20
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
leaq 0x6e198(%rip), %rdi     # 0x93cac
xorl %r14d, %r14d
movl %eax, %esi
xorl %eax, %eax
callq 0x680f0
movq %r14, %rax
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
pushq $0x68
jmp 0x25b93
movq %rax, %rbx
pushq $0x60
jmp 0x25b93
movq %rax, %rbx
pushq $0x78
jmp 0x25b93
movq %rax, %rbx
movl $0xb0, %esi
jmp 0x25b94
movq %rax, %rbx
pushq $0x48
jmp 0x25b93
movq %rax, %rbx
pushq $0x70
jmp 0x25b93
movq %rax, %rbx
movl $0x88, %esi
jmp 0x25b94
movq %rax, %rbx
pushq $0x28
jmp 0x25b93
movq %rax, %rbx
movl $0xb8, %esi
jmp 0x25b94
movq %rax, %rbx
movl $0xa0, %esi
jmp 0x25b94
movq %rax, %rbx
movl $0xe8, %esi
jmp 0x25b94
movq %rax, %rbx
movl $0x80, %esi
jmp 0x25b94
movq %rax, %rbx
pushq $0x38
popq %rsi
movq %r14, %rdi
callq 0xe460
movq %rbx, %rdi
callq 0xe810