// File: npaster[P]gmsh_tools/gmshMesh.cpp
// Function: gmsh::Gmesh::readGmesh_MSHformat(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void
Gmesh::readGmesh_MSHformat(const std::string name_mesh)
{
   std::ifstream mesh_file(name_mesh.data());
   if (!mesh_file.is_open()) {
      std::cout << "Unable to open file " << name_mesh << std::endl;
      abort();
   }

   std::cout << "------------------------" << std::endl;
   std::cout << "Reading mesh " << name_mesh << std::endl;
   std::cout << "MSH Format" << std::endl;
   std::cout << "------------------------" << std::endl;

   std::string           file_line;
   size_t                nb_nodes(0), nb_elements(0);
   std::array<double, 3> coor;
   size_t                index(0), type_elem(0), nbinteger_tag(0), loop_nodes(100), loop_elem(100);

   while (!mesh_file.eof() && loop_elem) {
      getline(mesh_file, file_line);
      if ((file_line.find("$Nodes") != std::string::npos) && (loop_nodes)) {
         mesh_file >> nb_nodes;
         std::cout << "Reading nodes (" << nb_nodes << ")" << std::endl;
         for (size_t i = 0; i < nb_nodes; ++i) {
            mesh_file >> index >> coor[0] >> coor[1] >> coor[2];
            Node node(coor, index, 1);
            _nodes.push_back(node);
         }
         assert((_nodes.size() == nb_nodes) && "Problem 1 in mesh reading.");
         loop_nodes = 0;
      }
      if ((file_line.find("$Elements") != std::string::npos) && (loop_elem)) {
         mesh_file >> nb_elements;
         _number_of_elements = nb_elements;
         for (size_t i = 0; i < nb_elements; ++i) {
            std::cout << i << " / " << nb_elements - 1 << std::endl;
            mesh_file >> index >> type_elem >> nbinteger_tag;

            std::vector<size_t> integer_tag(nbinteger_tag);
            for (size_t jtag = 0; jtag < nbinteger_tag; jtag++) {
               mesh_file >> integer_tag[jtag];
            }

            std::vector<size_t> elem_nodes;
            size_t              ind_node = 0;
            if (type_elem == 1) {
               for (size_t inode = 0; inode < 2; inode++) {
                  mesh_file >> ind_node;
                  elem_nodes.push_back(ind_node);
               }
               Edge edge(elem_nodes, i + 1, integer_tag[0], integer_tag[1]);
               _edges.push_back(edge);
            } else if (type_elem == 2) {
               for (size_t inode = 0; inode < 3; inode++) {
                  mesh_file >> ind_node;
                  elem_nodes.push_back(ind_node);
               }
               Triangle tri(elem_nodes, i + 1, integer_tag[0], integer_tag[1]);
               _triangles.push_back(tri);
            } else if (type_elem == 3) {
               for (size_t inode = 0; inode < 4; inode++) {
                  mesh_file >> ind_node;
                  elem_nodes.push_back(ind_node);
               }
               Quadrangle quad(elem_nodes, i + 1, integer_tag[0], integer_tag[1]);
               _quadrangles.push_back(quad);
            } else if (type_elem == 4) {
               for (size_t inode = 0; inode < 4; inode++) {
                  mesh_file >> ind_node;
                  elem_nodes.push_back(ind_node);
               }
               Tetrahedron tetra(elem_nodes, i + 1, integer_tag[0], integer_tag[1]);
               _tetrahedra.push_back(tetra);
            } else if (type_elem == 5) {
               for (size_t inode = 0; inode < 8; inode++) {
                  mesh_file >> ind_node;
                  elem_nodes.push_back(ind_node);
               }
               Hexahedron hexa(elem_nodes, i + 1, integer_tag[0], integer_tag[1]);
               _hexahedra.push_back(hexa);
            } else if (type_elem == 6) {
               for (size_t inode = 0; inode < 6; inode++) {
                  mesh_file >> ind_node;
                  elem_nodes.push_back(ind_node);
               }
               Prism prism(elem_nodes, i + 1, integer_tag[0], integer_tag[1]);
               _prisms.push_back(prism);
            } else if (type_elem == 7) {
               for (size_t inode = 0; inode < 5; inode++) {
                  mesh_file >> ind_node;
                  elem_nodes.push_back(ind_node);
               }
               Pyramid pyra(elem_nodes, i + 1, integer_tag[0], integer_tag[1]);
               _pyramids.push_back(pyra);
            } else {
               std::cout << "Unsupported element" << std::endl;
            }
         }
         loop_elem = 0;
      }
   }

   mesh_file.close();

   if ((_tetrahedra.size() + _hexahedra.size() + _prisms.size() + _pyramids.size()) > 0) {
      _dim_topology = 3;
   } else if ((_triangles.size() + _quadrangles.size()) > 0) {
      _dim_topology = 2;
   } else if (_edges.size() > 0) {
      _dim_topology = 1;
   }

   std::cout << "------------------------" << std::endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x690, %rsp            # imm = 0x690
movq %rsi, -0x500(%rbp)
movq %rdi, %rax
movq -0x500(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x4f0(%rbp)
callq 0x2200
movq %rax, %rsi
leaq -0x218(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
movl $0x8, %edx
callq 0x2300
movq -0x4e8(%rbp), %rdi
callq 0x2290
movb %al, -0x4d9(%rbp)
jmp 0x758a
movb -0x4d9(%rbp), %al
testb $0x1, %al
jne 0x75ff
jmp 0x7596
movq 0x29a3b(%rip), %rdi     # 0x30fd8
leaq 0x1a23e(%rip), %rsi     # 0x217e2
callq 0x21b0
movq %rax, -0x508(%rbp)
jmp 0x75b2
movq -0x4f8(%rbp), %rsi
movq -0x508(%rbp), %rdi
callq 0x2190
movq %rax, -0x510(%rbp)
jmp 0x75ce
movq -0x510(%rbp), %rdi
movq 0x299ec(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x75e3
callq 0x2110
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x85cd
movq 0x299d2(%rip), %rdi     # 0x30fd8
leaq 0x19a5e(%rip), %rsi     # 0x2106b
callq 0x21b0
movq %rax, -0x518(%rbp)
jmp 0x761b
movq -0x518(%rbp), %rdi
movq 0x2999f(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x7630
movq 0x299a1(%rip), %rdi     # 0x30fd8
leaq 0x1a1b9(%rip), %rsi     # 0x217f7
callq 0x21b0
movq %rax, -0x520(%rbp)
jmp 0x764c
movq -0x4f8(%rbp), %rsi
movq -0x520(%rbp), %rdi
callq 0x2190
movq %rax, -0x528(%rbp)
jmp 0x7668
movq -0x528(%rbp), %rdi
movq 0x29952(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x767d
movq 0x29954(%rip), %rdi     # 0x30fd8
leaq 0x1a4bc(%rip), %rsi     # 0x21b47
callq 0x21b0
movq %rax, -0x530(%rbp)
jmp 0x7699
movq -0x530(%rbp), %rdi
movq 0x29921(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x76ae
movq 0x29923(%rip), %rdi     # 0x30fd8
leaq 0x199af(%rip), %rsi     # 0x2106b
callq 0x21b0
movq %rax, -0x538(%rbp)
jmp 0x76ca
movq -0x538(%rbp), %rdi
movq 0x298f0(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x76df
leaq -0x248(%rbp), %rdi
callq 0x2220
movq $0x0, -0x250(%rbp)
movq $0x0, -0x258(%rbp)
movq $0x0, -0x278(%rbp)
movq $0x0, -0x280(%rbp)
movq $0x0, -0x288(%rbp)
movq $0x64, -0x290(%rbp)
movq $0x64, -0x298(%rbp)
movq -0x218(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x218(%rbp,%rax), %rdi
callq 0x2310
movb %al, -0x539(%rbp)
jmp 0x7758
movb -0x539(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x53a(%rbp)
jne 0x777e
jmp 0x776d
cmpq $0x0, -0x298(%rbp)
setne %al
movb %al, -0x53a(%rbp)
movb -0x53a(%rbp), %al
testb $0x1, %al
jne 0x778d
jmp 0x8451
leaq -0x218(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x2040
jmp 0x77a2
leaq -0x248(%rbp), %rdi
leaq 0x1a3a2(%rip), %rsi     # 0x21b52
xorl %eax, %eax
movl %eax, %edx
callq 0x2340
cmpq $-0x1, %rax
je 0x79cd
cmpq $0x0, -0x290(%rbp)
je 0x79cd
leaq -0x218(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x2230
jmp 0x77e6
movq 0x297eb(%rip), %rdi     # 0x30fd8
leaq 0x1a365(%rip), %rsi     # 0x21b59
callq 0x21b0
movq %rax, -0x548(%rbp)
jmp 0x7802
movq -0x548(%rbp), %rdi
movq -0x250(%rbp), %rsi
callq 0x2060
movq %rax, -0x550(%rbp)
jmp 0x781e
movq -0x550(%rbp), %rdi
leaq 0x1a65b(%rip), %rsi     # 0x21e87
callq 0x21b0
movq %rax, -0x558(%rbp)
jmp 0x783a
movq -0x558(%rbp), %rdi
movq 0x29780(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x784f
movq $0x0, -0x2a0(%rbp)
movq -0x2a0(%rbp), %rax
cmpq -0x250(%rbp), %rax
jae 0x7967
leaq -0x218(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x2230
movq %rax, -0x560(%rbp)
jmp 0x788a
xorl %eax, %eax
movl %eax, %esi
leaq -0x270(%rbp), %rdi
callq 0xef60
movq -0x560(%rbp), %rdi
movq %rax, %rsi
callq 0x2160
movq %rax, -0x568(%rbp)
jmp 0x78b2
leaq -0x270(%rbp), %rdi
movl $0x1, %esi
callq 0xef60
movq -0x568(%rbp), %rdi
movq %rax, %rsi
callq 0x2160
movq %rax, -0x570(%rbp)
jmp 0x78db
leaq -0x270(%rbp), %rdi
movl $0x2, %esi
callq 0xef60
movq -0x570(%rbp), %rdi
movq %rax, %rsi
callq 0x2160
jmp 0x78fd
movq -0x278(%rbp), %rdx
leaq -0x2c8(%rbp), %rdi
leaq -0x270(%rbp), %rsi
movl $0x1, %ecx
callq 0x2590
jmp 0x791e
movq -0x4f0(%rbp), %rdi
addq $0x8, %rdi
leaq -0x2c8(%rbp), %rsi
callq 0xef90
jmp 0x7937
jmp 0x7939
movq -0x2a0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2a0(%rbp)
jmp 0x785a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x85c1
movq -0x4f0(%rbp), %rdi
addq $0x8, %rdi
callq 0xeb00
movq %rax, %rcx
xorl %eax, %eax
cmpq -0x250(%rbp), %rcx
movb %al, -0x571(%rbp)
jne 0x7995
movb $0x1, %al
movb %al, -0x571(%rbp)
jmp 0x7995
movb -0x571(%rbp), %al
testb $0x1, %al
jne 0x79a1
jmp 0x79a3
jmp 0x79c2
leaq 0x19e9f(%rip), %rdi     # 0x21849
leaq 0x19ed4(%rip), %rsi     # 0x21885
movl $0x17e, %edx            # imm = 0x17E
leaq 0x1a1ac(%rip), %rcx     # 0x21b69
callq 0x2130
movq $0x0, -0x290(%rbp)
leaq -0x248(%rbp), %rdi
leaq 0x1a1c7(%rip), %rsi     # 0x21ba2
xorl %eax, %eax
movl %eax, %edx
callq 0x2340
cmpq $-0x1, %rax
je 0x844c
cmpq $0x0, -0x298(%rbp)
je 0x844c
leaq -0x218(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x2230
jmp 0x7a11
movq -0x4f0(%rbp), %rax
movq -0x258(%rbp), %rcx
movq %rcx, 0xe0(%rax)
movq $0x0, -0x2d0(%rbp)
movq -0x2d0(%rbp), %rax
cmpq -0x258(%rbp), %rax
jae 0x8441
movq -0x2d0(%rbp), %rsi
movq 0x29585(%rip), %rdi     # 0x30fd8
callq 0x2060
movq %rax, -0x580(%rbp)
jmp 0x7a61
movq -0x580(%rbp), %rdi
leaq 0x1a13d(%rip), %rsi     # 0x21bac
callq 0x21b0
movq %rax, -0x588(%rbp)
jmp 0x7a7d
movq -0x588(%rbp), %rdi
movq -0x258(%rbp), %rsi
decq %rsi
callq 0x2060
movq %rax, -0x590(%rbp)
jmp 0x7a9c
movq -0x590(%rbp), %rdi
movq 0x2951e(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x7ab1
leaq -0x218(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x2230
movq %rax, -0x598(%rbp)
jmp 0x7acd
movq -0x598(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x2230
movq %rax, -0x5a0(%rbp)
jmp 0x7ae9
movq -0x5a0(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x2230
jmp 0x7afe
movq -0x288(%rbp), %rax
movq %rax, -0x5b0(%rbp)
leaq -0x2e9(%rbp), %rdi
movq %rdi, -0x5a8(%rbp)
callq 0x3720
movq -0x5b0(%rbp), %rsi
movq -0x5a8(%rbp), %rdx
leaq -0x2e8(%rbp), %rdi
callq 0xeef0
jmp 0x7b3b
leaq -0x2e9(%rbp), %rdi
callq 0x3820
movq $0x0, -0x2f8(%rbp)
movq -0x2f8(%rbp), %rax
cmpq -0x288(%rbp), %rax
jae 0x7bd6
movq -0x2f8(%rbp), %rsi
leaq -0x2e8(%rbp), %rdi
callq 0x36c0
movq %rax, %rsi
leaq -0x218(%rbp), %rdi
callq 0x2230
jmp 0x7b86
jmp 0x7b88
movq -0x2f8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2f8(%rbp)
jmp 0x7b52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x2e9(%rbp), %rdi
callq 0x3820
jmp 0x85c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x8430
leaq -0x310(%rbp), %rdi
callq 0x3360
movq $0x0, -0x318(%rbp)
cmpq $0x1, -0x280(%rbp)
jne 0x7d1d
movq $0x0, -0x320(%rbp)
cmpq $0x2, -0x320(%rbp)
jae 0x7c67
leaq -0x218(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x2230
jmp 0x7c25
leaq -0x310(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0xf2d0
jmp 0x7c3a
jmp 0x7c3c
movq -0x320(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x320(%rbp)
jmp 0x7c06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x8424
movq -0x2d0(%rbp), %rax
incq %rax
movq %rax, -0x5c0(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x2e8(%rbp), %rdi
movq %rdi, -0x5c8(%rbp)
callq 0x36c0
movq -0x5c8(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x5b8(%rbp)
movl $0x1, %esi
callq 0x36c0
movq -0x5c0(%rbp), %rdx
movq -0x5b8(%rbp), %rcx
movq (%rax), %r8
leaq -0x358(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x2e80
jmp 0x7cd0
movq -0x4f0(%rbp), %rdi
addq $0x38, %rdi
leaq -0x358(%rbp), %rsi
callq 0xf000
jmp 0x7ce9
leaq -0x358(%rbp), %rdi
callq 0xf070
jmp 0x83f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x358(%rbp), %rdi
callq 0xf070
jmp 0x8424
cmpq $0x2, -0x280(%rbp)
jne 0x7e36
movq $0x0, -0x360(%rbp)
cmpq $0x3, -0x360(%rbp)
jae 0x7d80
leaq -0x218(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x2230
jmp 0x7d55
leaq -0x310(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0xf2d0
jmp 0x7d6a
jmp 0x7d6c
movq -0x360(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x360(%rbp)
jmp 0x7d36
movq -0x2d0(%rbp), %rax
incq %rax
movq %rax, -0x5d8(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x2e8(%rbp), %rdi
movq %rdi, -0x5e0(%rbp)
callq 0x36c0
movq -0x5e0(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x5d0(%rbp)
movl $0x1, %esi
callq 0x36c0
movq -0x5d8(%rbp), %rdx
movq -0x5d0(%rbp), %rcx
movq (%rax), %r8
leaq -0x398(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x2f30
jmp 0x7de9
movq -0x4f0(%rbp), %rdi
addq $0x50, %rdi
leaq -0x398(%rbp), %rsi
callq 0xf090
jmp 0x7e02
leaq -0x398(%rbp), %rdi
callq 0xf100
jmp 0x83f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x398(%rbp), %rdi
callq 0xf100
jmp 0x8424
cmpq $0x3, -0x280(%rbp)
jne 0x7f4f
movq $0x0, -0x3a0(%rbp)
cmpq $0x4, -0x3a0(%rbp)
jae 0x7e99
leaq -0x218(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x2230
jmp 0x7e6e
leaq -0x310(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0xf2d0
jmp 0x7e83
jmp 0x7e85
movq -0x3a0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x3a0(%rbp)
jmp 0x7e4f
movq -0x2d0(%rbp), %rax
incq %rax
movq %rax, -0x5f0(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x2e8(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
callq 0x36c0
movq -0x5f8(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x5e8(%rbp)
movl $0x1, %esi
callq 0x36c0
movq -0x5f0(%rbp), %rdx
movq -0x5e8(%rbp), %rcx
movq (%rax), %r8
leaq -0x3d8(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x2fe0
jmp 0x7f02
movq -0x4f0(%rbp), %rdi
addq $0x68, %rdi
leaq -0x3d8(%rbp), %rsi
callq 0xf1b0
jmp 0x7f1b
leaq -0x3d8(%rbp), %rdi
callq 0xf220
jmp 0x83f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x3d8(%rbp), %rdi
callq 0xf220
jmp 0x8424
cmpq $0x4, -0x280(%rbp)
jne 0x8068
movq $0x0, -0x3e0(%rbp)
cmpq $0x4, -0x3e0(%rbp)
jae 0x7fb2
leaq -0x218(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x2230
jmp 0x7f87
leaq -0x310(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0xf2d0
jmp 0x7f9c
jmp 0x7f9e
movq -0x3e0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x3e0(%rbp)
jmp 0x7f68
movq -0x2d0(%rbp), %rax
incq %rax
movq %rax, -0x608(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x2e8(%rbp), %rdi
movq %rdi, -0x610(%rbp)
callq 0x36c0
movq -0x610(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x600(%rbp)
movl $0x1, %esi
callq 0x36c0
movq -0x608(%rbp), %rdx
movq -0x600(%rbp), %rcx
movq (%rax), %r8
leaq -0x418(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x3090
jmp 0x801b
movq -0x4f0(%rbp), %rdi
subq $-0x80, %rdi
leaq -0x418(%rbp), %rsi
callq 0xf120
jmp 0x8034
leaq -0x418(%rbp), %rdi
callq 0xf190
jmp 0x83ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x418(%rbp), %rdi
callq 0xf190
jmp 0x8424
cmpq $0x5, -0x280(%rbp)
jne 0x8184
movq $0x0, -0x420(%rbp)
cmpq $0x8, -0x420(%rbp)
jae 0x80cb
leaq -0x218(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x2230
jmp 0x80a0
leaq -0x310(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0xf2d0
jmp 0x80b5
jmp 0x80b7
movq -0x420(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x420(%rbp)
jmp 0x8081
movq -0x2d0(%rbp), %rax
incq %rax
movq %rax, -0x620(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x2e8(%rbp), %rdi
movq %rdi, -0x628(%rbp)
callq 0x36c0
movq -0x628(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x618(%rbp)
movl $0x1, %esi
callq 0x36c0
movq -0x620(%rbp), %rdx
movq -0x618(%rbp), %rcx
movq (%rax), %r8
leaq -0x458(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x3140
jmp 0x8134
movq -0x4f0(%rbp), %rdi
addq $0x98, %rdi
leaq -0x458(%rbp), %rsi
callq 0xf240
jmp 0x8150
leaq -0x458(%rbp), %rdi
callq 0xf2b0
jmp 0x83ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x458(%rbp), %rdi
callq 0xf2b0
jmp 0x8424
cmpq $0x6, -0x280(%rbp)
jne 0x82a0
movq $0x0, -0x460(%rbp)
cmpq $0x6, -0x460(%rbp)
jae 0x81e7
leaq -0x218(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x2230
jmp 0x81bc
leaq -0x310(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0xf2d0
jmp 0x81d1
jmp 0x81d3
movq -0x460(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x460(%rbp)
jmp 0x819d
movq -0x2d0(%rbp), %rax
incq %rax
movq %rax, -0x638(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x2e8(%rbp), %rdi
movq %rdi, -0x640(%rbp)
callq 0x36c0
movq -0x640(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x630(%rbp)
movl $0x1, %esi
callq 0x36c0
movq -0x638(%rbp), %rdx
movq -0x630(%rbp), %rcx
movq (%rax), %r8
leaq -0x498(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x31f0
jmp 0x8250
movq -0x4f0(%rbp), %rdi
addq $0xb0, %rdi
leaq -0x498(%rbp), %rsi
callq 0xf340
jmp 0x826c
leaq -0x498(%rbp), %rdi
callq 0xf3b0
jmp 0x83eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x498(%rbp), %rdi
callq 0xf3b0
jmp 0x8424
cmpq $0x7, -0x280(%rbp)
jne 0x83b6
movq $0x0, -0x4a0(%rbp)
cmpq $0x5, -0x4a0(%rbp)
jae 0x8303
leaq -0x218(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x2230
jmp 0x82d8
leaq -0x310(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0xf2d0
jmp 0x82ed
jmp 0x82ef
movq -0x4a0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x4a0(%rbp)
jmp 0x82b9
movq -0x2d0(%rbp), %rax
incq %rax
movq %rax, -0x650(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x2e8(%rbp), %rdi
movq %rdi, -0x658(%rbp)
callq 0x36c0
movq -0x658(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x648(%rbp)
movl $0x1, %esi
callq 0x36c0
movq -0x650(%rbp), %rdx
movq -0x648(%rbp), %rcx
movq (%rax), %r8
leaq -0x4d8(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x32a0
jmp 0x836c
movq -0x4f0(%rbp), %rdi
addq $0xc8, %rdi
leaq -0x4d8(%rbp), %rsi
callq 0xf3d0
jmp 0x8388
leaq -0x4d8(%rbp), %rdi
callq 0xf440
jmp 0x83e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x4d8(%rbp), %rdi
callq 0xf440
jmp 0x8424
movq 0x28c1b(%rip), %rdi     # 0x30fd8
leaq 0x197ec(%rip), %rsi     # 0x21bb0
callq 0x21b0
movq %rax, -0x660(%rbp)
jmp 0x83d2
movq -0x660(%rbp), %rdi
movq 0x28be8(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x83e7
jmp 0x83e9
jmp 0x83eb
jmp 0x83ed
jmp 0x83ef
jmp 0x83f1
jmp 0x83f3
jmp 0x83f5
leaq -0x310(%rbp), %rdi
callq 0x37c0
leaq -0x2e8(%rbp), %rdi
callq 0x37c0
movq -0x2d0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2d0(%rbp)
jmp 0x7a31
leaq -0x310(%rbp), %rdi
callq 0x37c0
leaq -0x2e8(%rbp), %rdi
callq 0x37c0
jmp 0x85c1
movq $0x0, -0x298(%rbp)
jmp 0x7738
leaq -0x218(%rbp), %rdi
callq 0x2050
jmp 0x845f
movq -0x4f0(%rbp), %rdi
addq $0x80, %rdi
callq 0xe6e0
movq -0x4f0(%rbp), %rdi
movq %rax, -0x678(%rbp)
addq $0x98, %rdi
callq 0xe710
movq -0x4f0(%rbp), %rdi
movq %rax, %rcx
movq -0x678(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x670(%rbp)
addq $0xb0, %rdi
callq 0xe9e0
movq -0x4f0(%rbp), %rdi
movq %rax, %rcx
movq -0x670(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x668(%rbp)
addq $0xc8, %rdi
callq 0xea10
movq %rax, %rcx
movq -0x668(%rbp), %rax
addq %rcx, %rax
cmpq $0x0, %rax
jbe 0x84fd
movq -0x4f0(%rbp), %rax
movq $0x3, (%rax)
jmp 0x856f
movq -0x4f0(%rbp), %rdi
addq $0x50, %rdi
callq 0xe3e0
movq -0x4f0(%rbp), %rdi
movq %rax, -0x680(%rbp)
addq $0x68, %rdi
callq 0xe410
movq %rax, %rcx
movq -0x680(%rbp), %rax
addq %rcx, %rax
cmpq $0x0, %rax
jbe 0x8547
movq -0x4f0(%rbp), %rax
movq $0x2, (%rax)
jmp 0x856d
movq -0x4f0(%rbp), %rdi
addq $0x38, %rdi
callq 0xe110
cmpq $0x0, %rax
jbe 0x856b
movq -0x4f0(%rbp), %rax
movq $0x1, (%rax)
jmp 0x856d
jmp 0x856f
movq 0x28a62(%rip), %rdi     # 0x30fd8
leaq 0x18aee(%rip), %rsi     # 0x2106b
callq 0x21b0
movq %rax, -0x688(%rbp)
jmp 0x858b
movq -0x688(%rbp), %rdi
movq 0x28a2f(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x85a0
leaq -0x248(%rbp), %rdi
callq 0x2120
leaq -0x218(%rbp), %rdi
callq 0x2070
addq $0x690, %rsp            # imm = 0x690
popq %rbp
retq
leaq -0x248(%rbp), %rdi
callq 0x2120
leaq -0x218(%rbp), %rdi
callq 0x2070
movq -0x220(%rbp), %rdi
callq 0x22e0
nopw %cs:(%rax,%rax)