// File: /workspace/github_cpp_makefile_star2_O3/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 0x27260
cmpl %eax, %ebp
jne 0x28178
movl $0x38, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x272d4
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x55838
cmpl %eax, %ebp
jne 0x281ac
movl $0x80, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x558a2
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x550c4
cmpl %eax, %ebp
jne 0x281e0
movl $0xe8, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x55152
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x54b1c
cmpl %eax, %ebp
jne 0x28214
movl $0xa0, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x54b90
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x54628
cmpl %eax, %ebp
jne 0x28248
movl $0xb8, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x546a8
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x26e04
cmpl %eax, %ebp
jne 0x2827c
movl $0x28, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x26e6e
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x533cc
cmpl %eax, %ebp
jne 0x282b0
movl $0x88, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x53884
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x51864
cmpl %eax, %ebp
jne 0x282e4
movl $0x70, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x51916
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x51368
cmpl %eax, %ebp
jne 0x28318
movl $0x48, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x514cc
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x50ec8
cmpl %eax, %ebp
jne 0x2834c
movl $0xb0, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x50f44
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
movl %eax, %ebp
callq 0x503a0
cmpl %eax, %ebp
jne 0x2837d
movl $0x78, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x5040a
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
cmpl 0xbdb51(%rip), %eax     # 0xe5ee0
jne 0x283ab
movl $0x60, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4edde
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
cmpl 0xbdb23(%rip), %eax     # 0xe5ee0
jne 0x283d9
movl $0x68, %edi
callq 0xe440
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4e002
jmp 0x283f8
movq (%rbx), %rax
movq %rbx, %rdi
callq *0xb8(%rax)
leaq 0x7a910(%rip), %rdi     # 0xa2cfc
xorl %r14d, %r14d
movl %eax, %esi
xorl %eax, %eax
callq 0x718f6
movq %r14, %rax
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
movl $0x68, %esi
jmp 0x28480
movq %rax, %rbx
movl $0x60, %esi
jmp 0x28480
movq %rax, %rbx
movl $0x78, %esi
jmp 0x28480
movq %rax, %rbx
movl $0xb0, %esi
jmp 0x28480
movq %rax, %rbx
movl $0x48, %esi
jmp 0x28480
movq %rax, %rbx
movl $0x70, %esi
jmp 0x28480
movq %rax, %rbx
movl $0x88, %esi
jmp 0x28480
movq %rax, %rbx
movl $0x28, %esi
jmp 0x28480
movq %rax, %rbx
movl $0xb8, %esi
jmp 0x28480
movq %rax, %rbx
movl $0xa0, %esi
jmp 0x28480
movq %rax, %rbx
movl $0xe8, %esi
jmp 0x28480
movq %rax, %rbx
movl $0x80, %esi
jmp 0x28480
movq %rax, %rbx
movl $0x38, %esi
movq %r14, %rdi
callq 0xe450
movq %rbx, %rdi
callq 0xe7e0