// File: /workspace/github_cpp_makefile_star2_O2/npaster[P]gmsh_tools/gmshMesh.cpp
// Function: gmsh::Gmesh::convertInDiscontinuousMesh3()
void
Gmesh::convertInDiscontinuousMesh3()
{
   const size_t numberofNewNodes =
     4 * _tetrahedra.size() + 5 * _pyramids.size() + 6 * _prisms.size() + 8 * _hexahedra.size();
   std::vector<Node> oldNodes(_nodes);

   _nodes.clear();
   _nodes.reserve(numberofNewNodes);
   size_t indexCurrentNode = 1;

   if (_edges.size() > 0) {
      _number_of_elements -= _edges.size();
      _edges.clear();
   }

   if (_triangles.size() > 0) {
      _number_of_elements -= _triangles.size();
      _triangles.clear();
   }

   if (_quadrangles.size() > 0) {
      _number_of_elements -= _quadrangles.size();
      _quadrangles.clear();
   }

   for (size_t i = 0; i < _hexahedra.size(); i++) {
      std::vector<size_t> indexnodes = _hexahedra[i].getNodes();
      for (size_t j = 0; j < 8; j++) {
         Node tmpNode(oldNodes[indexnodes[j] - 1]);
         tmpNode.changeIndex(indexCurrentNode);
         _hexahedra[i].changeNode(j, indexCurrentNode);
         _nodes.push_back(tmpNode);
         indexCurrentNode += 1;
      }
   }

   for (size_t i = 0; i < _tetrahedra.size(); i++) {
      std::vector<size_t> indexnodes = _tetrahedra[i].getNodes();
      for (size_t j = 0; j < 4; j++) {
         Node tmpNode(oldNodes[indexnodes[j] - 1]);
         tmpNode.changeIndex(indexCurrentNode);
         _tetrahedra[i].changeNode(j, indexCurrentNode);
         _nodes.push_back(tmpNode);
         indexCurrentNode += 1;
      }
   }

   for (size_t i = 0; i < _prisms.size(); i++) {
      std::vector<size_t> indexnodes = _prisms[i].getNodes();
      for (size_t j = 0; j < 6; j++) {
         Node tmpNode(oldNodes[indexnodes[j] - 1]);
         tmpNode.changeIndex(indexCurrentNode);
         _prisms[i].changeNode(j, indexCurrentNode);
         _nodes.push_back(tmpNode);
         indexCurrentNode += 1;
      }
   }

   for (size_t i = 0; i < _pyramids.size(); i++) {
      std::vector<size_t> indexnodes = _pyramids[i].getNodes();
      for (size_t j = 0; j < 5; j++) {
         Node tmpNode(oldNodes[indexnodes[j] - 1]);
         tmpNode.changeIndex(indexCurrentNode);
         _pyramids[i].changeNode(j, indexCurrentNode);
         _nodes.push_back(tmpNode);
         indexCurrentNode += 1;
      }
   }
   assert(indexCurrentNode - 1 == numberofNewNodes);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rdi, %r14
movq 0x88(%rdi), %rax
subq 0x80(%rdi), %rax
movq 0xa0(%rdi), %rcx
pushq $0x38
popq %r8
cqto
idivq %r8
movq %rax, %rsi
movq 0xd0(%rdi), %rax
subq 0xc8(%rdi), %rax
cqto
idivq %r8
leaq (%rax,%rax,4), %rax
leaq (%rax,%rsi,4), %rsi
movq 0xb8(%rdi), %rax
subq 0xb0(%rdi), %rax
cqto
idivq %r8
imulq $0x6, %rax, %rdi
addq %rsi, %rdi
subq 0x98(%r14), %rcx
movq %rcx, %rax
cqto
idivq %r8
leaq (%rdi,%rax,8), %r15
leaq 0x8(%r14), %rsi
leaq -0x98(%rbp), %rdi
movq %rsi, -0x38(%rbp)
callq 0x7d88
movq 0x8(%r14), %rax
cmpq %rax, 0x10(%r14)
je 0x78c3
movq %rax, 0x10(%r14)
movq -0x38(%rbp), %rdi
movq %r15, %rsi
callq 0x85a0
movq 0x40(%r14), %rax
pushq $-0x38
popq %rbx
subq 0x38(%r14), %rax
je 0x78f1
leaq 0x38(%r14), %rdi
cqto
idivq %rbx
addq %rax, 0xe0(%r14)
callq 0x86c0
movq 0x58(%r14), %rax
subq 0x50(%r14), %rax
je 0x7910
leaq 0x50(%r14), %rdi
cqto
idivq %rbx
addq %rax, 0xe0(%r14)
callq 0x86ce
movq %r15, -0xa0(%rbp)
movq 0x70(%r14), %rax
subq 0x68(%r14), %rax
je 0x7936
leaq 0x68(%r14), %rdi
cqto
idivq %rbx
addq %rax, 0xe0(%r14)
callq 0x86dc
pushq $0x1
popq %rbx
xorl %edi, %edi
movq %r14, %r13
movq 0x98(%r14), %rsi
movq 0xa0(%r14), %rax
subq %rsi, %rax
cqto
pushq $0x38
popq %rcx
idivq %rcx
cmpq %rax, %rdi
jae 0x79fa
movq %rdi, -0x30(%rbp)
imulq $0x38, %rdi, %r15
addq %r15, %rsi
leaq -0x50(%rbp), %rdi
callq 0x26e4
xorl %r14d, %r14d
leaq (%rbx,%r14), %r12
cmpq $0x8, %r14
je 0x79df
movq -0x50(%rbp), %rax
movq -0x98(%rbp), %rcx
imulq $0x28, (%rax,%r14,8), %rax
movups -0x28(%rcx,%rax), %xmm0
movups -0x18(%rcx,%rax), %xmm1
movaps %xmm0, -0x80(%rbp)
movaps %xmm1, -0x70(%rbp)
movq -0x8(%rcx,%rax), %rax
movq %rax, -0x60(%rbp)
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x2620
movq 0x98(%r13), %rdi
addq %r15, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x2706
movq -0x38(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x8354
incq %r14
jmp 0x7977
leaq -0x50(%rbp), %rdi
callq 0x2e88
movq -0x30(%rbp), %rdi
incq %rdi
movq %r12, %rbx
movq %r13, %r14
jmp 0x793e
xorl %edi, %edi
movq 0x80(%r14), %rsi
movq 0x88(%r14), %rax
subq %rsi, %rax
cqto
pushq $0x38
popq %rcx
idivq %rcx
cmpq %rax, %rdi
jae 0x7ab8
movq %rdi, -0x30(%rbp)
imulq $0x38, %rdi, %r15
addq %r15, %rsi
leaq -0x50(%rbp), %rdi
callq 0x26e4
xorl %r14d, %r14d
leaq (%rbx,%r14), %r12
cmpq $0x4, %r14
je 0x7a9d
movq -0x50(%rbp), %rax
movq -0x98(%rbp), %rcx
imulq $0x28, (%rax,%r14,8), %rax
movups -0x28(%rcx,%rax), %xmm0
movups -0x18(%rcx,%rax), %xmm1
movaps %xmm0, -0x80(%rbp)
movaps %xmm1, -0x70(%rbp)
movq -0x8(%rcx,%rax), %rax
movq %rax, -0x60(%rbp)
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x2620
movq 0x80(%r13), %rdi
addq %r15, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x2706
movq -0x38(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x8354
incq %r14
jmp 0x7a35
leaq -0x50(%rbp), %rdi
callq 0x2e88
movq -0x30(%rbp), %rdi
incq %rdi
movq %r12, %rbx
movq %r13, %r14
jmp 0x79fc
xorl %edi, %edi
movq 0xb0(%r14), %rsi
movq 0xb8(%r14), %rax
subq %rsi, %rax
cqto
pushq $0x38
popq %rcx
idivq %rcx
cmpq %rax, %rdi
jae 0x7b76
movq %rdi, -0x30(%rbp)
imulq $0x38, %rdi, %r15
addq %r15, %rsi
leaq -0x50(%rbp), %rdi
callq 0x26e4
xorl %r14d, %r14d
leaq (%rbx,%r14), %r12
cmpq $0x6, %r14
je 0x7b5b
movq -0x50(%rbp), %rax
movq -0x98(%rbp), %rcx
imulq $0x28, (%rax,%r14,8), %rax
movups -0x28(%rcx,%rax), %xmm0
movups -0x18(%rcx,%rax), %xmm1
movaps %xmm0, -0x80(%rbp)
movaps %xmm1, -0x70(%rbp)
movq -0x8(%rcx,%rax), %rax
movq %rax, -0x60(%rbp)
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x2620
movq 0xb0(%r13), %rdi
addq %r15, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x2706
movq -0x38(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x8354
incq %r14
jmp 0x7af3
leaq -0x50(%rbp), %rdi
callq 0x2e88
movq -0x30(%rbp), %rdi
incq %rdi
movq %r12, %rbx
movq %r13, %r14
jmp 0x7aba
xorl %edi, %edi
movq 0xc8(%r14), %rsi
movq 0xd0(%r14), %rax
subq %rsi, %rax
cqto
pushq $0x38
popq %rcx
idivq %rcx
cmpq %rax, %rdi
jae 0x7c34
movq %rdi, -0x30(%rbp)
imulq $0x38, %rdi, %r15
addq %r15, %rsi
leaq -0x50(%rbp), %rdi
callq 0x26e4
xorl %r14d, %r14d
leaq (%rbx,%r14), %r12
cmpq $0x5, %r14
je 0x7c19
movq -0x50(%rbp), %rax
movq -0x98(%rbp), %rcx
imulq $0x28, (%rax,%r14,8), %rax
movups -0x28(%rcx,%rax), %xmm0
movups -0x18(%rcx,%rax), %xmm1
movaps %xmm0, -0x80(%rbp)
movaps %xmm1, -0x70(%rbp)
movq -0x8(%rcx,%rax), %rax
movq %rax, -0x60(%rbp)
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x2620
movq 0xc8(%r13), %rdi
addq %r15, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x2706
movq -0x38(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x8354
incq %r14
jmp 0x7bb1
leaq -0x50(%rbp), %rdi
callq 0x2e88
movq -0x30(%rbp), %rdi
incq %rdi
movq %r12, %rbx
movq %r13, %r14
jmp 0x7b78
decq %rbx
cmpq -0xa0(%rbp), %rbx
jne 0x7c5b
leaq -0x98(%rbp), %rdi
callq 0x8722
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x5f5e(%rip), %rdi      # 0xdbc0
leaq 0x5abb(%rip), %rsi      # 0xd724
leaq 0x5fd9(%rip), %rcx      # 0xdc49
movl $0x393, %edx            # imm = 0x393
callq 0x2150
jmp 0x7c82
jmp 0x7c82
jmp 0x7c82
jmp 0x7c82
movq %rax, %rbx
jmp 0x7c99
jmp 0x7c8d
jmp 0x7c8d
jmp 0x7c8d
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x2e88
leaq -0x98(%rbp), %rdi
callq 0x8722
movq %rbx, %rdi
callq 0x22a0
nop