// File: /workspace/github_cpp_makefile_star2_O3/tomfunkhouser[P]gaps/pkgs/R3Surfels/R3SurfelScene.cpp
// Function: gaps::R3SurfelScene::~R3SurfelScene()
R3SurfelScene::
~R3SurfelScene(void)
{
  // Delete everything
  while (NFeatures() > 0) delete Feature(NFeatures()-1);
  while (NLabelAssignments() > 0) delete LabelAssignment(NLabelAssignments()-1);
  while (NObjectRelationships() > 0) delete ObjectRelationship(NObjectRelationships()-1);
  while (NLabelRelationships() > 0) delete LabelRelationship(NLabelRelationships()-1);
  while (NObjectProperties() > 0) delete ObjectProperty(NObjectProperties()-1);
  while (NLabelProperties() > 0) delete LabelProperty(NLabelProperties()-1);
  while (NLabels() > 0) delete Label(NLabels()-1);
  while (NObjects() > 0) delete Object(NObjects()-1);
  while (NScans() > 0) delete Scan(NScans()-1);
  while (NImages() > 0) delete Image(NImages()-1);
  
  // Delete tree
  if (tree) delete tree;
  
  // Delete filename
  if (filename) free(filename);

  // Delete rwaccess
  if (rwaccess) free(rwaccess);

  // Delete name
  if (name) free(name);

  // Delete comments
  for (int i = 0; i < comments.NEntries(); i++) free(comments[i]);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0x11554f(%rip), %rax    # 0x12ddb0
movq %rax, (%rdi)
movl 0xac(%rdi), %eax
testl %eax, %eax
jle 0x1888f
movq 0xa0(%rbx), %rcx
movl %eax, %edx
movq -0x8(%rcx,%rdx,8), %rdi
testq %rdi, %rdi
je 0x1886a
movq (%rdi), %rax
callq *0x8(%rax)
movl 0xac(%rbx), %eax
jmp 0x1886a
movl 0x7c(%rbx), %eax
testl %eax, %eax
jle 0x188ae
movq 0x70(%rbx), %rcx
movl %eax, %edx
movq -0x8(%rcx,%rdx,8), %rdi
testq %rdi, %rdi
je 0x18892
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x1888f
movl 0x5c(%rbx), %eax
testl %eax, %eax
jle 0x188cd
movq 0x50(%rbx), %rcx
movl %eax, %edx
movq -0x8(%rcx,%rdx,8), %rdi
testq %rdi, %rdi
je 0x188b1
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x188ae
movl 0x6c(%rbx), %eax
testl %eax, %eax
jle 0x188ec
movq 0x60(%rbx), %rcx
movl %eax, %edx
movq -0x8(%rcx,%rdx,8), %rdi
testq %rdi, %rdi
je 0x188d0
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x188cd
movl 0x3c(%rbx), %eax
testl %eax, %eax
jle 0x1890b
movq 0x30(%rbx), %rcx
movl %eax, %edx
movq -0x8(%rcx,%rdx,8), %rdi
testq %rdi, %rdi
je 0x188ef
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x188ec
movl 0x4c(%rbx), %eax
testl %eax, %eax
jle 0x1892a
movq 0x40(%rbx), %rcx
movl %eax, %edx
movq -0x8(%rcx,%rdx,8), %rdi
testq %rdi, %rdi
je 0x1890e
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x1890b
movl 0x2c(%rbx), %eax
testl %eax, %eax
jle 0x18949
movq 0x20(%rbx), %rcx
movl %eax, %edx
movq -0x8(%rcx,%rdx,8), %rdi
testq %rdi, %rdi
je 0x1892d
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x1892a
movl 0x1c(%rbx), %eax
testl %eax, %eax
jle 0x18968
movq 0x10(%rbx), %rcx
movl %eax, %edx
movq -0x8(%rcx,%rdx,8), %rdi
testq %rdi, %rdi
je 0x1894c
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x18949
movl 0x8c(%rbx), %eax
testl %eax, %eax
jle 0x1898d
movq 0x80(%rbx), %rcx
movl %eax, %edx
movq -0x8(%rcx,%rdx,8), %rdi
testq %rdi, %rdi
je 0x1896e
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x18968
movl 0x9c(%rbx), %eax
testl %eax, %eax
jle 0x189b2
movq 0x90(%rbx), %rcx
movl %eax, %edx
movq -0x8(%rcx,%rdx,8), %rdi
testq %rdi, %rdi
je 0x18993
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x1898d
movq 0x8(%rbx), %rdi
testq %rdi, %rdi
je 0x189c1
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x1c0(%rbx), %rdi
testq %rdi, %rdi
je 0x189d2
callq 0x135e0
movq 0x1c8(%rbx), %rdi
testq %rdi, %rdi
je 0x189e3
callq 0x135e0
movq 0x1d0(%rbx), %rdi
testq %rdi, %rdi
je 0x189f4
callq 0x135e0
leaq 0x1d8(%rbx), %r14
cmpl $0x0, 0x1e4(%rbx)
jle 0x18a26
xorl %r15d, %r15d
movq 0x1d8(%rbx), %rax
movq (%rax,%r15,8), %rdi
callq 0x135e0
incq %r15
movslq 0x1e4(%rbx), %rax
cmpq %rax, %r15
jl 0x18a07
movq %r14, %rdi
callq 0xa9d12
leaq 0xb0(%rbx), %rdi
callq 0x700a8
leaq 0xa0(%rbx), %rdi
callq 0xa9d12
leaq 0x90(%rbx), %rdi
callq 0xa9d12
leaq 0x80(%rbx), %rdi
callq 0xa9d12
leaq 0x70(%rbx), %rdi
callq 0xa9d12
leaq 0x60(%rbx), %rdi
callq 0xa9d12
leaq 0x50(%rbx), %rdi
callq 0xa9d12
leaq 0x40(%rbx), %rdi
callq 0xa9d12
leaq 0x30(%rbx), %rdi
callq 0xa9d12
leaq 0x20(%rbx), %rdi
callq 0xa9d12
addq $0x10, %rbx
movq %rbx, %rdi
popq %rbx
popq %r14
popq %r15
jmp 0xa9d12
nop