// File: npaster[P]gmsh_tools/gmshMesh.cpp
// Function: gmsh::Gmesh::readGmesh_MEDITformat(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void
Gmesh::readGmesh_MEDITformat(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 << "MEDIT Format" << std::endl;
   std::cout << "------------------------" << std::endl;

   std::string file_line;
   size_t      nb_nodes(0), nb_edges(0), nb_triangles(0), nb_tetras(0), nb_quad(0), nb_hexa(0);
   std::array<double, 3> coor;
   std::vector<size_t>   edg(2), tri(3), tet(4), quad(4), hexa(8);
   size_t                ref(0), loop_nodes(100), offset_elements(0);

   while (!mesh_file.eof()) {
      getline(mesh_file, file_line);
      if ((file_line.find("Vertices") != std::string::npos) && (loop_nodes)) {
         mesh_file >> nb_nodes;
         std::cout << "Reading vertices (" << nb_nodes << ")" << std::endl;
         for (size_t i = 1; i <= nb_nodes; i++) {
            mesh_file >> coor[0] >> coor[1] >> coor[2] >> ref;
            Node node(coor, i, ref);
            _nodes.push_back(node);
         }
         assert((_nodes.size() == nb_nodes) && "Problem 1 in mesh reading.");
         loop_nodes = 0;
      }
      if (file_line.find("Edges") != std::string::npos) {
         mesh_file >> nb_edges;
         std::cout << "Reading edges (" << nb_edges << ")" << std::endl;
         for (size_t i = 1; i <= nb_edges; i++) {
            mesh_file >> edg[0] >> edg[1] >> ref;
            Edge edge(edg, offset_elements + i, ref, 0);
            _edges.push_back(edge);
         }

         offset_elements += nb_edges;
         assert((_edges.size() == nb_edges) && "Problem 2 in mesh reading.");
      }
      if (file_line.find("Triangles") != std::string::npos) {
         mesh_file >> nb_triangles;
         std::cout << "Reading triangles (" << nb_triangles << ")" << std::endl;
         for (size_t i = 1; i <= nb_triangles; i++) {
            mesh_file >> tri[0] >> tri[1] >> tri[2] >> ref;
            Triangle triangle(tri, offset_elements + i, ref, 0);
            _triangles.push_back(triangle);
         }

         offset_elements += nb_triangles;
         assert((_triangles.size() == nb_triangles) && "Problem 3 in mesh reading.");
      }
      if (file_line.find("Tetrahedra") != std::string::npos) {
         mesh_file >> nb_tetras;
         std::cout << "Reading tetrahedra (" << nb_tetras << ")" << std::endl;
         for (size_t i = 0; i < nb_tetras; i++) {
            mesh_file >> tet[0] >> tet[1] >> tet[2] >> tet[3] >> ref;
            Tetrahedron tetrahedron(tet, offset_elements + i, ref, 0);
            _tetrahedra.push_back(tetrahedron);
         }

         offset_elements += nb_tetras;
         assert((_tetrahedra.size() == nb_tetras) && "Problem 4 in mesh reading.");
      }
      if (file_line.find("Quadrilaterals") != std::string::npos) {
         mesh_file >> nb_quad;
         std::cout << "Reading quadrilaterals (" << nb_quad << ")" << std::endl;
         for (size_t i = 1; i <= nb_quad; i++) {
            mesh_file >> quad[0] >> quad[1] >> quad[2] >> quad[3] >> ref;
            Quadrangle quadrangle(quad, offset_elements + i, ref, 0);
            _quadrangles.push_back(quadrangle);
         }

         offset_elements += nb_quad;
         assert((_quadrangles.size() == nb_quad) && "Problem 3 in mesh reading.");
      }
      if (file_line.find("Hexahedra") != std::string::npos) {
         mesh_file >> nb_hexa;
         std::cout << "Reading hexahedra (" << nb_hexa << ")" << std::endl;
         for (size_t i = 0; i < nb_hexa; i++) {
            mesh_file >> hexa[0] >> hexa[1] >> hexa[2] >> hexa[3] >> hexa[4] >> hexa[5] >>
              hexa[6] >> hexa[7] >> hexa[8] >> ref;
            Hexahedron hexahedron(hexa, offset_elements + i, ref, 0);
            _hexahedra.push_back(hexahedron);
         }

         offset_elements += nb_hexa;
         assert((_hexahedra.size() == nb_hexa) && "Problem 4 in mesh reading.");
      }
   }

   assert(offset_elements == (nb_edges + nb_triangles + nb_quad + nb_hexa + nb_tetras));
   _number_of_elements = offset_elements;

   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 $0x700, %rsp            # imm = 0x700
movq %rsi, -0x4e0(%rbp)
movq %rdi, %rax
movq -0x4e0(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x4d0(%rbp)
callq 0x2200
movq %rax, %rsi
leaq -0x218(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
movl $0x8, %edx
callq 0x2300
movq -0x4c8(%rbp), %rdi
callq 0x2290
movb %al, -0x4b9(%rbp)
jmp 0x5fea
movb -0x4b9(%rbp), %al
testb $0x1, %al
jne 0x605f
jmp 0x5ff6
movq 0x2afdb(%rip), %rdi     # 0x30fd8
leaq 0x1b7de(%rip), %rsi     # 0x217e2
callq 0x21b0
movq %rax, -0x4e8(%rbp)
jmp 0x6012
movq -0x4d8(%rbp), %rsi
movq -0x4e8(%rbp), %rdi
callq 0x2190
movq %rax, -0x4f0(%rbp)
jmp 0x602e
movq -0x4f0(%rbp), %rdi
movq 0x2af8c(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x6043
callq 0x2110
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x7503
movq 0x2af72(%rip), %rdi     # 0x30fd8
leaq 0x1affe(%rip), %rsi     # 0x2106b
callq 0x21b0
movq %rax, -0x4f8(%rbp)
jmp 0x607b
movq -0x4f8(%rbp), %rdi
movq 0x2af3f(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x6090
movq 0x2af41(%rip), %rdi     # 0x30fd8
leaq 0x1b759(%rip), %rsi     # 0x217f7
callq 0x21b0
movq %rax, -0x500(%rbp)
jmp 0x60ac
movq -0x4d8(%rbp), %rsi
movq -0x500(%rbp), %rdi
callq 0x2190
movq %rax, -0x508(%rbp)
jmp 0x60c8
movq -0x508(%rbp), %rdi
movq 0x2aef2(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x60dd
movq 0x2aef4(%rip), %rdi     # 0x30fd8
leaq 0x1b71a(%rip), %rsi     # 0x21805
callq 0x21b0
movq %rax, -0x510(%rbp)
jmp 0x60f9
movq -0x510(%rbp), %rdi
movq 0x2aec1(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x610e
movq 0x2aec3(%rip), %rdi     # 0x30fd8
leaq 0x1af4f(%rip), %rsi     # 0x2106b
callq 0x21b0
movq %rax, -0x518(%rbp)
jmp 0x612a
movq -0x518(%rbp), %rdi
movq 0x2ae90(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x613f
leaq -0x248(%rbp), %rdi
callq 0x2220
movq $0x0, -0x250(%rbp)
movq $0x0, -0x258(%rbp)
movq $0x0, -0x260(%rbp)
movq $0x0, -0x268(%rbp)
movq $0x0, -0x270(%rbp)
movq $0x0, -0x278(%rbp)
leaq -0x2a9(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x3720
movq -0x520(%rbp), %rdx
leaq -0x2a8(%rbp), %rdi
movl $0x2, %esi
callq 0xeef0
jmp 0x61ba
leaq -0x2a9(%rbp), %rdi
callq 0x3820
leaq -0x2c9(%rbp), %rdi
movq %rdi, -0x528(%rbp)
callq 0x3720
movq -0x528(%rbp), %rdx
leaq -0x2c8(%rbp), %rdi
movl $0x3, %esi
callq 0xeef0
jmp 0x61f3
leaq -0x2c9(%rbp), %rdi
callq 0x3820
leaq -0x2e9(%rbp), %rdi
movq %rdi, -0x530(%rbp)
callq 0x3720
movq -0x530(%rbp), %rdx
leaq -0x2e8(%rbp), %rdi
movl $0x4, %esi
callq 0xeef0
jmp 0x622c
leaq -0x2e9(%rbp), %rdi
callq 0x3820
leaq -0x309(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x3720
movq -0x538(%rbp), %rdx
leaq -0x308(%rbp), %rdi
movl $0x4, %esi
callq 0xeef0
jmp 0x6265
leaq -0x309(%rbp), %rdi
callq 0x3820
leaq -0x329(%rbp), %rdi
movq %rdi, -0x540(%rbp)
callq 0x3720
movq -0x540(%rbp), %rdx
leaq -0x328(%rbp), %rdi
movl $0x8, %esi
callq 0xeef0
jmp 0x629e
leaq -0x329(%rbp), %rdi
callq 0x3820
movq $0x0, -0x338(%rbp)
movq $0x64, -0x340(%rbp)
movq $0x0, -0x348(%rbp)
movq -0x218(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x218(%rbp,%rax), %rdi
callq 0x2310
movb %al, -0x541(%rbp)
jmp 0x62eb
movb -0x541(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x62fc
jmp 0x72aa
leaq -0x218(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x2040
jmp 0x6311
leaq -0x248(%rbp), %rdi
leaq 0x1b4f3(%rip), %rsi     # 0x21812
xorl %eax, %eax
movl %eax, %edx
callq 0x2340
cmpq $-0x1, %rax
je 0x65ed
cmpq $0x0, -0x340(%rbp)
je 0x65ed
leaq -0x218(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x2230
jmp 0x6355
movq 0x2ac7c(%rip), %rdi     # 0x30fd8
leaq 0x1b4b8(%rip), %rsi     # 0x2181b
callq 0x21b0
movq %rax, -0x550(%rbp)
jmp 0x6371
movq -0x550(%rbp), %rdi
movq -0x250(%rbp), %rsi
callq 0x2060
movq %rax, -0x558(%rbp)
jmp 0x638d
movq -0x558(%rbp), %rdi
leaq 0x1baec(%rip), %rsi     # 0x21e87
callq 0x21b0
movq %rax, -0x560(%rbp)
jmp 0x63a9
movq -0x560(%rbp), %rdi
movq 0x2ac11(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x63be
movq $0x1, -0x350(%rbp)
movq -0x350(%rbp), %rax
cmpq -0x250(%rbp), %rax
ja 0x6587
xorl %eax, %eax
movl %eax, %esi
leaq -0x290(%rbp), %rdi
callq 0xef60
movq %rax, %rsi
leaq -0x218(%rbp), %rdi
callq 0x2160
movq %rax, -0x568(%rbp)
jmp 0x6405
leaq -0x290(%rbp), %rdi
movl $0x1, %esi
callq 0xef60
movq -0x568(%rbp), %rdi
movq %rax, %rsi
callq 0x2160
movq %rax, -0x570(%rbp)
jmp 0x642e
leaq -0x290(%rbp), %rdi
movl $0x2, %esi
callq 0xef60
movq -0x570(%rbp), %rdi
movq %rax, %rsi
callq 0x2160
movq %rax, -0x578(%rbp)
jmp 0x6457
movq -0x578(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x2230
jmp 0x646c
movq -0x350(%rbp), %rdx
movq -0x338(%rbp), %rcx
leaq -0x378(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x2590
jmp 0x648f
movq -0x4d0(%rbp), %rdi
addq $0x8, %rdi
leaq -0x378(%rbp), %rsi
callq 0xef90
jmp 0x64a8
jmp 0x64aa
movq -0x350(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x350(%rbp)
jmp 0x63c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x2a9(%rbp), %rdi
callq 0x3820
jmp 0x74f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x2c9(%rbp), %rdi
callq 0x3820
jmp 0x74eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x2e9(%rbp), %rdi
callq 0x3820
jmp 0x74df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x309(%rbp), %rdi
callq 0x3820
jmp 0x74d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x329(%rbp), %rdi
callq 0x3820
jmp 0x74c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x74bb
movq -0x4d0(%rbp), %rdi
addq $0x8, %rdi
callq 0xeb00
movq %rax, %rcx
xorl %eax, %eax
cmpq -0x250(%rbp), %rcx
movb %al, -0x579(%rbp)
jne 0x65b5
movb $0x1, %al
movb %al, -0x579(%rbp)
jmp 0x65b5
movb -0x579(%rbp), %al
testb $0x1, %al
jne 0x65c1
jmp 0x65c3
jmp 0x65e2
leaq 0x1b27f(%rip), %rdi     # 0x21849
leaq 0x1b2b4(%rip), %rsi     # 0x21885
movl $0x10f, %edx            # imm = 0x10F
leaq 0x1b2b5(%rip), %rcx     # 0x21892
callq 0x2130
movq $0x0, -0x340(%rbp)
leaq -0x248(%rbp), %rdi
leaq 0x1b2d2(%rip), %rsi     # 0x218cd
xorl %eax, %eax
movl %eax, %edx
callq 0x2340
cmpq $-0x1, %rax
je 0x6814
leaq -0x218(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x2230
jmp 0x6623
movq 0x2a9ae(%rip), %rdi     # 0x30fd8
leaq 0x1b2a2(%rip), %rsi     # 0x218d3
callq 0x21b0
movq %rax, -0x588(%rbp)
jmp 0x663f
movq -0x588(%rbp), %rdi
movq -0x258(%rbp), %rsi
callq 0x2060
movq %rax, -0x590(%rbp)
jmp 0x665b
movq -0x590(%rbp), %rdi
leaq 0x1b81e(%rip), %rsi     # 0x21e87
callq 0x21b0
movq %rax, -0x598(%rbp)
jmp 0x6677
movq -0x598(%rbp), %rdi
movq 0x2a943(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x668c
movq $0x1, -0x380(%rbp)
movq -0x380(%rbp), %rax
cmpq -0x258(%rbp), %rax
ja 0x67a2
xorl %eax, %eax
movl %eax, %esi
leaq -0x2a8(%rbp), %rdi
callq 0x36c0
movq %rax, %rsi
leaq -0x218(%rbp), %rdi
callq 0x2230
movq %rax, -0x5a0(%rbp)
jmp 0x66d3
leaq -0x2a8(%rbp), %rdi
movl $0x1, %esi
callq 0x36c0
movq -0x5a0(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x5a8(%rbp)
jmp 0x66fc
movq -0x5a8(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x2230
jmp 0x6711
movq -0x348(%rbp), %rdx
movq -0x380(%rbp), %rax
addq %rax, %rdx
movq -0x338(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r8d
leaq -0x3b8(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0x2e80
jmp 0x6743
movq -0x4d0(%rbp), %rdi
addq $0x38, %rdi
leaq -0x3b8(%rbp), %rsi
callq 0xf000
jmp 0x675c
leaq -0x3b8(%rbp), %rdi
callq 0xf070
movq -0x380(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x380(%rbp)
jmp 0x6697
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x3b8(%rbp), %rdi
callq 0xf070
jmp 0x74bb
movq -0x4d0(%rbp), %rdi
movq -0x258(%rbp), %rax
addq -0x348(%rbp), %rax
movq %rax, -0x348(%rbp)
addq $0x38, %rdi
callq 0xe110
movq %rax, %rcx
xorl %eax, %eax
cmpq -0x258(%rbp), %rcx
movb %al, -0x5a9(%rbp)
jne 0x67e5
movb $0x1, %al
movb %al, -0x5a9(%rbp)
jmp 0x67e5
movb -0x5a9(%rbp), %al
testb $0x1, %al
jne 0x67f1
jmp 0x67f3
jmp 0x6812
leaq 0x1b104(%rip), %rdi     # 0x218fe
leaq 0x1b084(%rip), %rsi     # 0x21885
movl $0x11c, %edx            # imm = 0x11C
leaq 0x1b085(%rip), %rcx     # 0x21892
callq 0x2130
jmp 0x6814
leaq -0x248(%rbp), %rdi
leaq 0x1b118(%rip), %rsi     # 0x2193a
xorl %eax, %eax
movl %eax, %edx
callq 0x2340
cmpq $-0x1, %rax
je 0x6a64
leaq -0x218(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x2230
jmp 0x684a
movq 0x2a787(%rip), %rdi     # 0x30fd8
leaq 0x1b0ec(%rip), %rsi     # 0x21944
callq 0x21b0
movq %rax, -0x5b8(%rbp)
jmp 0x6866
movq -0x5b8(%rbp), %rdi
movq -0x260(%rbp), %rsi
callq 0x2060
movq %rax, -0x5c0(%rbp)
jmp 0x6882
movq -0x5c0(%rbp), %rdi
leaq 0x1b5f7(%rip), %rsi     # 0x21e87
callq 0x21b0
movq %rax, -0x5c8(%rbp)
jmp 0x689e
movq -0x5c8(%rbp), %rdi
movq 0x2a71c(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x68b3
movq $0x1, -0x3c0(%rbp)
movq -0x3c0(%rbp), %rax
cmpq -0x260(%rbp), %rax
ja 0x69f2
xorl %eax, %eax
movl %eax, %esi
leaq -0x2c8(%rbp), %rdi
callq 0x36c0
movq %rax, %rsi
leaq -0x218(%rbp), %rdi
callq 0x2230
movq %rax, -0x5d0(%rbp)
jmp 0x68fa
leaq -0x2c8(%rbp), %rdi
movl $0x1, %esi
callq 0x36c0
movq -0x5d0(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x5d8(%rbp)
jmp 0x6923
leaq -0x2c8(%rbp), %rdi
movl $0x2, %esi
callq 0x36c0
movq -0x5d8(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x5e0(%rbp)
jmp 0x694c
movq -0x5e0(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x2230
jmp 0x6961
movq -0x348(%rbp), %rdx
movq -0x3c0(%rbp), %rax
addq %rax, %rdx
movq -0x338(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r8d
leaq -0x3f8(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x2f30
jmp 0x6993
movq -0x4d0(%rbp), %rdi
addq $0x50, %rdi
leaq -0x3f8(%rbp), %rsi
callq 0xf090
jmp 0x69ac
leaq -0x3f8(%rbp), %rdi
callq 0xf100
movq -0x3c0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x3c0(%rbp)
jmp 0x68be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0xf100
jmp 0x74bb
movq -0x4d0(%rbp), %rdi
movq -0x260(%rbp), %rax
addq -0x348(%rbp), %rax
movq %rax, -0x348(%rbp)
addq $0x50, %rdi
callq 0xe3e0
movq %rax, %rcx
xorl %eax, %eax
cmpq -0x260(%rbp), %rcx
movb %al, -0x5e1(%rbp)
jne 0x6a35
movb $0x1, %al
movb %al, -0x5e1(%rbp)
jmp 0x6a35
movb -0x5e1(%rbp), %al
testb $0x1, %al
jne 0x6a41
jmp 0x6a43
jmp 0x6a62
leaq 0x1af29(%rip), %rdi     # 0x21973
leaq 0x1ae34(%rip), %rsi     # 0x21885
movl $0x128, %edx            # imm = 0x128
leaq 0x1ae35(%rip), %rcx     # 0x21892
callq 0x2130
jmp 0x6a64
leaq -0x248(%rbp), %rdi
leaq 0x1af45(%rip), %rsi     # 0x219b7
xorl %eax, %eax
movl %eax, %edx
callq 0x2340
cmpq $-0x1, %rax
je 0x6ce0
leaq -0x218(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x2230
jmp 0x6a9a
movq 0x2a537(%rip), %rdi     # 0x30fd8
leaq 0x1af1a(%rip), %rsi     # 0x219c2
callq 0x21b0
movq %rax, -0x5f0(%rbp)
jmp 0x6ab6
movq -0x5f0(%rbp), %rdi
movq -0x268(%rbp), %rsi
callq 0x2060
movq %rax, -0x5f8(%rbp)
jmp 0x6ad2
movq -0x5f8(%rbp), %rdi
leaq 0x1b3a7(%rip), %rsi     # 0x21e87
callq 0x21b0
movq %rax, -0x600(%rbp)
jmp 0x6aee
movq -0x600(%rbp), %rdi
movq 0x2a4cc(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x6b03
movq $0x0, -0x400(%rbp)
movq -0x400(%rbp), %rax
cmpq -0x268(%rbp), %rax
jae 0x6c6b
xorl %eax, %eax
movl %eax, %esi
leaq -0x2e8(%rbp), %rdi
callq 0x36c0
movq %rax, %rsi
leaq -0x218(%rbp), %rdi
callq 0x2230
movq %rax, -0x608(%rbp)
jmp 0x6b4a
leaq -0x2e8(%rbp), %rdi
movl $0x1, %esi
callq 0x36c0
movq -0x608(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x610(%rbp)
jmp 0x6b73
leaq -0x2e8(%rbp), %rdi
movl $0x2, %esi
callq 0x36c0
movq -0x610(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x618(%rbp)
jmp 0x6b9c
leaq -0x2e8(%rbp), %rdi
movl $0x3, %esi
callq 0x36c0
movq -0x618(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x620(%rbp)
jmp 0x6bc5
movq -0x620(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x2230
jmp 0x6bda
movq -0x348(%rbp), %rdx
movq -0x400(%rbp), %rax
addq %rax, %rdx
movq -0x338(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r8d
leaq -0x438(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x3090
jmp 0x6c0c
movq -0x4d0(%rbp), %rdi
subq $-0x80, %rdi
leaq -0x438(%rbp), %rsi
callq 0xf120
jmp 0x6c25
leaq -0x438(%rbp), %rdi
callq 0xf190
movq -0x400(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x400(%rbp)
jmp 0x6b0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x438(%rbp), %rdi
callq 0xf190
jmp 0x74bb
movq -0x4d0(%rbp), %rdi
movq -0x268(%rbp), %rax
addq -0x348(%rbp), %rax
movq %rax, -0x348(%rbp)
addq $0x80, %rdi
callq 0xe6e0
movq %rax, %rcx
xorl %eax, %eax
cmpq -0x268(%rbp), %rcx
movb %al, -0x621(%rbp)
jne 0x6cb1
movb $0x1, %al
movb %al, -0x621(%rbp)
jmp 0x6cb1
movb -0x621(%rbp), %al
testb $0x1, %al
jne 0x6cbd
jmp 0x6cbf
jmp 0x6cde
leaq 0x1ad2c(%rip), %rdi     # 0x219f2
leaq 0x1abb8(%rip), %rsi     # 0x21885
movl $0x134, %edx            # imm = 0x134
leaq 0x1abb9(%rip), %rcx     # 0x21892
callq 0x2130
jmp 0x6ce0
leaq -0x248(%rbp), %rdi
leaq 0x1ad46(%rip), %rsi     # 0x21a34
xorl %eax, %eax
movl %eax, %edx
callq 0x2340
cmpq $-0x1, %rax
je 0x6f59
leaq -0x218(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x2230
jmp 0x6d16
movq 0x2a2bb(%rip), %rdi     # 0x30fd8
leaq 0x1ad1f(%rip), %rsi     # 0x21a43
callq 0x21b0
movq %rax, -0x630(%rbp)
jmp 0x6d32
movq -0x630(%rbp), %rdi
movq -0x270(%rbp), %rsi
callq 0x2060
movq %rax, -0x638(%rbp)
jmp 0x6d4e
movq -0x638(%rbp), %rdi
leaq 0x1b12b(%rip), %rsi     # 0x21e87
callq 0x21b0
movq %rax, -0x640(%rbp)
jmp 0x6d6a
movq -0x640(%rbp), %rdi
movq 0x2a250(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x6d7f
movq $0x1, -0x440(%rbp)
movq -0x440(%rbp), %rax
cmpq -0x270(%rbp), %rax
ja 0x6ee7
xorl %eax, %eax
movl %eax, %esi
leaq -0x308(%rbp), %rdi
callq 0x36c0
movq %rax, %rsi
leaq -0x218(%rbp), %rdi
callq 0x2230
movq %rax, -0x648(%rbp)
jmp 0x6dc6
leaq -0x308(%rbp), %rdi
movl $0x1, %esi
callq 0x36c0
movq -0x648(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x650(%rbp)
jmp 0x6def
leaq -0x308(%rbp), %rdi
movl $0x2, %esi
callq 0x36c0
movq -0x650(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x658(%rbp)
jmp 0x6e18
leaq -0x308(%rbp), %rdi
movl $0x3, %esi
callq 0x36c0
movq -0x658(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x660(%rbp)
jmp 0x6e41
movq -0x660(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x2230
jmp 0x6e56
movq -0x348(%rbp), %rdx
movq -0x440(%rbp), %rax
addq %rax, %rdx
movq -0x338(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r8d
leaq -0x478(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x2fe0
jmp 0x6e88
movq -0x4d0(%rbp), %rdi
addq $0x68, %rdi
leaq -0x478(%rbp), %rsi
callq 0xf1b0
jmp 0x6ea1
leaq -0x478(%rbp), %rdi
callq 0xf220
movq -0x440(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x440(%rbp)
jmp 0x6d8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x478(%rbp), %rdi
callq 0xf220
jmp 0x74bb
movq -0x4d0(%rbp), %rdi
movq -0x270(%rbp), %rax
addq -0x348(%rbp), %rax
movq %rax, -0x348(%rbp)
addq $0x68, %rdi
callq 0xe410
movq %rax, %rcx
xorl %eax, %eax
cmpq -0x270(%rbp), %rcx
movb %al, -0x661(%rbp)
jne 0x6f2a
movb $0x1, %al
movb %al, -0x661(%rbp)
jmp 0x6f2a
movb -0x661(%rbp), %al
testb $0x1, %al
jne 0x6f36
jmp 0x6f38
jmp 0x6f57
leaq 0x1ab1d(%rip), %rdi     # 0x21a5c
leaq 0x1a93f(%rip), %rsi     # 0x21885
movl $0x140, %edx            # imm = 0x140
leaq 0x1a940(%rip), %rcx     # 0x21892
callq 0x2130
jmp 0x6f59
leaq -0x248(%rbp), %rdi
leaq 0x1ab36(%rip), %rsi     # 0x21a9d
xorl %eax, %eax
movl %eax, %edx
callq 0x2340
cmpq $-0x1, %rax
je 0x72a5
leaq -0x218(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x2230
jmp 0x6f8f
movq 0x2a042(%rip), %rdi     # 0x30fd8
leaq 0x1ab0a(%rip), %rsi     # 0x21aa7
callq 0x21b0
movq %rax, -0x670(%rbp)
jmp 0x6fab
movq -0x670(%rbp), %rdi
movq -0x278(%rbp), %rsi
callq 0x2060
movq %rax, -0x678(%rbp)
jmp 0x6fc7
movq -0x678(%rbp), %rdi
leaq 0x1aeb2(%rip), %rsi     # 0x21e87
callq 0x21b0
movq %rax, -0x680(%rbp)
jmp 0x6fe3
movq -0x680(%rbp), %rdi
movq 0x29fd7(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x6ff8
movq $0x0, -0x480(%rbp)
movq -0x480(%rbp), %rax
cmpq -0x278(%rbp), %rax
jae 0x7230
xorl %eax, %eax
movl %eax, %esi
leaq -0x328(%rbp), %rdi
callq 0x36c0
movq %rax, %rsi
leaq -0x218(%rbp), %rdi
callq 0x2230
movq %rax, -0x688(%rbp)
jmp 0x703f
leaq -0x328(%rbp), %rdi
movl $0x1, %esi
callq 0x36c0
movq -0x688(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x690(%rbp)
jmp 0x7068
leaq -0x328(%rbp), %rdi
movl $0x2, %esi
callq 0x36c0
movq -0x690(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x698(%rbp)
jmp 0x7091
leaq -0x328(%rbp), %rdi
movl $0x3, %esi
callq 0x36c0
movq -0x698(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x6a0(%rbp)
jmp 0x70ba
leaq -0x328(%rbp), %rdi
movl $0x4, %esi
callq 0x36c0
movq -0x6a0(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x6a8(%rbp)
jmp 0x70e3
leaq -0x328(%rbp), %rdi
movl $0x5, %esi
callq 0x36c0
movq -0x6a8(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x6b0(%rbp)
jmp 0x710c
leaq -0x328(%rbp), %rdi
movl $0x6, %esi
callq 0x36c0
movq -0x6b0(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x6b8(%rbp)
jmp 0x7135
leaq -0x328(%rbp), %rdi
movl $0x7, %esi
callq 0x36c0
movq -0x6b8(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x6c0(%rbp)
jmp 0x715e
leaq -0x328(%rbp), %rdi
movl $0x8, %esi
callq 0x36c0
movq -0x6c0(%rbp), %rdi
movq %rax, %rsi
callq 0x2230
movq %rax, -0x6c8(%rbp)
jmp 0x7187
movq -0x6c8(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x2230
jmp 0x719c
movq -0x348(%rbp), %rdx
movq -0x480(%rbp), %rax
addq %rax, %rdx
movq -0x338(%rbp), %rcx
xorl %eax, %eax
movl %eax, %r8d
leaq -0x4b8(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x3140
jmp 0x71ce
movq -0x4d0(%rbp), %rdi
addq $0x98, %rdi
leaq -0x4b8(%rbp), %rsi
callq 0xf240
jmp 0x71ea
leaq -0x4b8(%rbp), %rdi
callq 0xf2b0
movq -0x480(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x480(%rbp)
jmp 0x7003
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x4b8(%rbp), %rdi
callq 0xf2b0
jmp 0x74bb
movq -0x4d0(%rbp), %rdi
movq -0x278(%rbp), %rax
addq -0x348(%rbp), %rax
movq %rax, -0x348(%rbp)
addq $0x98, %rdi
callq 0xe710
movq %rax, %rcx
xorl %eax, %eax
cmpq -0x278(%rbp), %rcx
movb %al, -0x6c9(%rbp)
jne 0x7276
movb $0x1, %al
movb %al, -0x6c9(%rbp)
jmp 0x7276
movb -0x6c9(%rbp), %al
testb $0x1, %al
jne 0x7282
jmp 0x7284
jmp 0x72a3
leaq 0x1a830(%rip), %rdi     # 0x21abb
leaq 0x1a5f3(%rip), %rsi     # 0x21885
movl $0x14d, %edx            # imm = 0x14D
leaq 0x1a5f4(%rip), %rcx     # 0x21892
callq 0x2130
jmp 0x72a5
jmp 0x62cb
movq -0x348(%rbp), %rax
movq -0x258(%rbp), %rcx
addq -0x260(%rbp), %rcx
addq -0x270(%rbp), %rcx
addq -0x278(%rbp), %rcx
addq -0x268(%rbp), %rcx
cmpq %rcx, %rax
jne 0x72db
jmp 0x72fa
leaq 0x1a818(%rip), %rdi     # 0x21afa
leaq 0x1a59c(%rip), %rsi     # 0x21885
movl $0x151, %edx            # imm = 0x151
leaq 0x1a59d(%rip), %rcx     # 0x21892
callq 0x2130
movq -0x4d0(%rbp), %rax
movq -0x348(%rbp), %rcx
movq %rcx, 0xe0(%rax)
leaq -0x218(%rbp), %rdi
callq 0x2050
jmp 0x731d
movq -0x4d0(%rbp), %rdi
addq $0x80, %rdi
callq 0xe6e0
movq -0x4d0(%rbp), %rdi
movq %rax, -0x6e8(%rbp)
addq $0x98, %rdi
callq 0xe710
movq -0x4d0(%rbp), %rdi
movq %rax, %rcx
movq -0x6e8(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x6e0(%rbp)
addq $0xb0, %rdi
callq 0xe9e0
movq -0x4d0(%rbp), %rdi
movq %rax, %rcx
movq -0x6e0(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x6d8(%rbp)
addq $0xc8, %rdi
callq 0xea10
movq %rax, %rcx
movq -0x6d8(%rbp), %rax
addq %rcx, %rax
cmpq $0x0, %rax
jbe 0x73bb
movq -0x4d0(%rbp), %rax
movq $0x3, (%rax)
jmp 0x742d
movq -0x4d0(%rbp), %rdi
addq $0x50, %rdi
callq 0xe3e0
movq -0x4d0(%rbp), %rdi
movq %rax, -0x6f0(%rbp)
addq $0x68, %rdi
callq 0xe410
movq %rax, %rcx
movq -0x6f0(%rbp), %rax
addq %rcx, %rax
cmpq $0x0, %rax
jbe 0x7405
movq -0x4d0(%rbp), %rax
movq $0x2, (%rax)
jmp 0x742b
movq -0x4d0(%rbp), %rdi
addq $0x38, %rdi
callq 0xe110
cmpq $0x0, %rax
jbe 0x7429
movq -0x4d0(%rbp), %rax
movq $0x1, (%rax)
jmp 0x742b
jmp 0x742d
movq 0x29ba4(%rip), %rdi     # 0x30fd8
leaq 0x19c30(%rip), %rsi     # 0x2106b
callq 0x21b0
movq %rax, -0x6f8(%rbp)
jmp 0x7449
movq -0x6f8(%rbp), %rdi
movq 0x29b71(%rip), %rsi     # 0x30fc8
callq 0x21e0
jmp 0x745e
leaq -0x328(%rbp), %rdi
callq 0x37c0
leaq -0x308(%rbp), %rdi
callq 0x37c0
leaq -0x2e8(%rbp), %rdi
callq 0x37c0
leaq -0x2c8(%rbp), %rdi
callq 0x37c0
leaq -0x2a8(%rbp), %rdi
callq 0x37c0
leaq -0x248(%rbp), %rdi
callq 0x2120
leaq -0x218(%rbp), %rdi
callq 0x2070
addq $0x700, %rsp            # imm = 0x700
popq %rbp
retq
leaq -0x328(%rbp), %rdi
callq 0x37c0
leaq -0x308(%rbp), %rdi
callq 0x37c0
leaq -0x2e8(%rbp), %rdi
callq 0x37c0
leaq -0x2c8(%rbp), %rdi
callq 0x37c0
leaq -0x2a8(%rbp), %rdi
callq 0x37c0
leaq -0x248(%rbp), %rdi
callq 0x2120
leaq -0x218(%rbp), %rdi
callq 0x2070
movq -0x220(%rbp), %rdi
callq 0x22e0
nopl (%rax,%rax)