// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x388, %rsp            # imm = 0x388
movq %rsi, %r14
movq %rdi, %rbx
movq (%rsi), %rsi
leaq -0x3b0(%rbp), %rdi
movl $0x8, %edx
callq 0x2310
leaq -0x338(%rbp), %rdi
callq 0x2050
testb %al, %al
je 0x52ed
movq 0x12baf(%rip), %r15     # 0x16fd8
leaq 0xcc3b(%rip), %rsi      # 0x1106b
movl $0x18, %edx
movq %r15, %rdi
callq 0x2230
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x21f0
movsbl %al, %esi
movq 0x12b7d(%rip), %rdi     # 0x16fd8
callq 0x2030
movq %rax, %rdi
callq 0x2180
movq 0x12b69(%rip), %rdi     # 0x16fd8
leaq 0xd23b(%rip), %rsi      # 0x116b1
movl $0xd, %edx
callq 0x2230
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq 0x12b4a(%rip), %rdi     # 0x16fd8
callq 0x2230
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21f0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
movq 0x12b14(%rip), %r14     # 0x16fd8
leaq 0xd1f4(%rip), %rsi      # 0x116bf
movl $0xc, %edx
movq %r14, %rdi
callq 0x2230
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x21f0
movsbl %al, %esi
movq 0x12ae2(%rip), %rdi     # 0x16fd8
callq 0x2030
movq %rax, %rdi
callq 0x2180
movq 0x12ace(%rip), %r14     # 0x16fd8
leaq 0xcb5a(%rip), %rsi      # 0x1106b
movl $0x18, %edx
movq %r14, %rdi
callq 0x2230
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x21f0
movsbl %al, %esi
movq 0x12a9c(%rip), %rdi     # 0x16fd8
callq 0x2030
movq %rax, %rdi
callq 0x2180
leaq -0xd0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
movq %rax, -0x88(%rbp)
movq %rax, -0x60(%rbp)
movq %rax, -0x58(%rbp)
movq %rax, -0x50(%rbp)
movq %rax, -0x48(%rbp)
movq %rax, -0x40(%rbp)
movq %rax, -0x110(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x120(%rbp)
movl $0x10, %edi
callq 0x2210
movq %rax, -0x120(%rbp)
movq %rax, %rcx
addq $0x10, %rcx
movq %rcx, -0x110(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq %rcx, -0x118(%rbp)
movaps %xmm0, -0x100(%rbp)
movq $0x0, -0xf0(%rbp)
movl $0x18, %edi
callq 0x2210
movq %rax, -0x100(%rbp)
movq %rax, %rcx
addq $0x18, %rcx
movq %rcx, -0xf0(%rbp)
xorl %edx, %edx
movq %rdx, 0x10(%rax)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq %rcx, -0xf8(%rbp)
movq %rdx, -0xb0(%rbp)
movaps %xmm0, -0xc0(%rbp)
movl $0x20, %edi
callq 0x2210
movq %rax, -0xc0(%rbp)
movq %rax, %rcx
addq $0x20, %rcx
movq %rcx, -0xb0(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movups %xmm0, (%rax)
movq %rcx, -0xb8(%rbp)
movaps %xmm0, -0xa0(%rbp)
movq $0x0, -0x90(%rbp)
movl $0x20, %edi
callq 0x2210
movq %rax, -0xa0(%rbp)
movq %rax, %rcx
addq $0x20, %rcx
movq %rcx, -0x90(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movups %xmm0, (%rax)
movq %rcx, -0x98(%rbp)
movaps %xmm0, -0x80(%rbp)
movq $0x0, -0x70(%rbp)
movl $0x40, %edi
callq 0x2210
movq %rax, -0x80(%rbp)
movq %rax, %rcx
addq $0x40, %rcx
movq %rcx, -0x70(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, 0x30(%rax)
movups %xmm0, 0x20(%rax)
movups %xmm0, 0x10(%rax)
movups %xmm0, (%rax)
movq %rcx, -0x78(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x3b0(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x390(%rbp,%rax)
movq %rbx, -0x30(%rbp)
jne 0x5074
leaq (%rax,%rbp), %rdi
addq $-0x3b0, %rdi           # imm = 0xFC50
leaq 0x8(%rbx), %rax
movq %rax, -0x130(%rbp)
leaq 0x38(%rbx), %rax
movq %rax, -0x158(%rbp)
leaq 0x50(%rbx), %rax
movq %rax, -0x150(%rbp)
leaq 0x80(%rbx), %rax
movq %rax, -0x148(%rbp)
leaq 0x68(%rbx), %rax
movq %rax, -0x140(%rbp)
leaq 0x98(%rbx), %rax
movq %rax, -0x138(%rbp)
movl $0x64, %eax
movq %rax, -0x128(%rbp)
xorl %ebx, %ebx
leaq -0x3b0(%rbp), %r12
leaq -0x38(%rbp), %r14
leaq -0x190(%rbp), %r15
movl $0xa, %esi
callq 0x21f0
movsbl %al, %edx
movq %r12, %rdi
leaq -0xe0(%rbp), %rsi
callq 0x2320
movl $0x8, %ecx
leaq -0xe0(%rbp), %r13
movq %r13, %rdi
leaq 0xcf4e(%rip), %rsi      # 0x116cc
xorl %edx, %edx
callq 0x22e0
cmpq $-0x1, %rax
setne %al
cmpq $0x0, -0x128(%rbp)
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x4911
movq %r12, %rdi
leaq -0x88(%rbp), %rsi
callq 0x2120
movl $0x12, %edx
movq 0x1281b(%rip), %rdi     # 0x16fd8
leaq 0xcf11(%rip), %rsi      # 0x116d5
callq 0x2230
movq -0x88(%rbp), %rsi
movq 0x12801(%rip), %rdi     # 0x16fd8
callq 0x2170
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xd4e7(%rip), %rsi      # 0x11cd5
callq 0x2230
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x21f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
cmpq $0x0, -0x88(%rbp)
je 0x48d6
movl $0x1, %r13d
movq %r12, %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x2160
movq %rax, %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x2160
movq %rax, %rdi
leaq -0x198(%rbp), %rsi
callq 0x2160
movq %rax, %rdi
movq %r14, %rsi
callq 0x2120
movq -0x38(%rbp), %rcx
movq %r15, %rdi
leaq -0x1a8(%rbp), %rsi
movq %r13, %rdx
callq 0x28d4
movq -0x30(%rbp), %rcx
movq 0x10(%rcx), %rsi
cmpq 0x18(%rcx), %rsi
je 0x48b2
movq -0x170(%rbp), %rax
movq %rax, 0x20(%rsi)
movups -0x190(%rbp), %xmm0
movups -0x180(%rbp), %xmm1
movups %xmm1, 0x10(%rsi)
movups %xmm0, (%rsi)
addq $0x28, 0x10(%rcx)
jmp 0x48c1
movq -0x130(%rbp), %rdi
movq %r15, %rdx
callq 0xb8b2
incq %r13
movq -0x88(%rbp), %rax
cmpq %rax, %r13
jbe 0x482f
jmp 0x48d8
xorl %eax, %eax
movq -0x30(%rbp), %rdx
movq 0x10(%rdx), %rcx
subq 0x8(%rdx), %rcx
sarq $0x3, %rcx
movabsq $-0x3333333333333333, %rdx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rdx, %rcx
cmpq %rax, %rcx
jne 0x52ce
movq $0x0, -0x128(%rbp)
leaq -0xe0(%rbp), %r13
movl $0x5, %ecx
movq %r13, %rdi
leaq 0xce4c(%rip), %rsi      # 0x1176c
xorl %edx, %edx
callq 0x22e0
cmpq $-0x1, %rax
je 0x4a52
movq %r12, %rdi
leaq -0x60(%rbp), %rsi
callq 0x2120
movl $0xf, %edx
movq 0x1268f(%rip), %rdi     # 0x16fd8
leaq 0xce22(%rip), %rsi      # 0x11772
callq 0x2230
movq -0x60(%rbp), %rsi
movq 0x12678(%rip), %rdi     # 0x16fd8
callq 0x2170
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xd35e(%rip), %rsi      # 0x11cd5
callq 0x2230
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x21f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
cmpq $0x0, -0x60(%rbp)
je 0x4a26
movl $0x1, %r13d
movq -0x120(%rbp), %rsi
movq %r12, %rdi
callq 0x2120
movq -0x120(%rbp), %rsi
addq $0x8, %rsi
movq %rax, %rdi
callq 0x2120
movq %rax, %rdi
movq %r14, %rsi
callq 0x2120
leaq (%rbx,%r13), %rdx
movq -0x38(%rbp), %rcx
movq %r15, %rdi
leaq -0x120(%rbp), %rsi
xorl %r8d, %r8d
callq 0x2ff2
movq -0x158(%rbp), %rdi
movq %r15, %rsi
callq 0xacc8
movq -0x190(%rbp), %rdi
testq %rdi, %rdi
je 0x4a18
callq 0x21e0
incq %r13
movq -0x60(%rbp), %rax
cmpq %rax, %r13
jbe 0x49b1
jmp 0x4a28
xorl %eax, %eax
movq -0x30(%rbp), %rdx
movq 0x40(%rdx), %rcx
subq 0x38(%rdx), %rcx
sarq $0x3, %rcx
movabsq $0x6db6db6db6db6db7, %rdx # imm = 0x6DB6DB6DB6DB6DB7
imulq %rdx, %rcx
cmpq %rax, %rcx
jne 0x5233
addq %rax, %rbx
leaq -0xe0(%rbp), %rdi
movl $0x9, %ecx
leaq 0xcd59(%rip), %rsi      # 0x117be
xorl %edx, %edx
callq 0x22e0
cmpq $-0x1, %rax
je 0x4bb2
movq %r12, %rdi
leaq -0x58(%rbp), %rsi
callq 0x2120
movl $0x13, %edx
movq 0x1254a(%rip), %rdi     # 0x16fd8
leaq 0xcd33(%rip), %rsi      # 0x117c8
callq 0x2230
movq -0x58(%rbp), %rsi
movq 0x12533(%rip), %rdi     # 0x16fd8
callq 0x2170
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xd219(%rip), %rsi      # 0x11cd5
callq 0x2230
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x21f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
cmpq $0x0, -0x58(%rbp)
je 0x4b86
movl $0x1, %r13d
movq -0x100(%rbp), %rsi
movq %r12, %rdi
callq 0x2120
movq -0x100(%rbp), %rsi
addq $0x8, %rsi
movq %rax, %rdi
callq 0x2120
movq -0x100(%rbp), %rsi
addq $0x10, %rsi
movq %rax, %rdi
callq 0x2120
movq %rax, %rdi
movq %r14, %rsi
callq 0x2120
leaq (%rbx,%r13), %rdx
movq -0x38(%rbp), %rcx
movq %r15, %rdi
leaq -0x100(%rbp), %rsi
xorl %r8d, %r8d
callq 0x307a
movq -0x150(%rbp), %rdi
movq %r15, %rsi
callq 0xad2a
movq -0x190(%rbp), %rdi
testq %rdi, %rdi
je 0x4b74
callq 0x21e0
incq %r13
movq -0x58(%rbp), %rax
cmpq %rax, %r13
jbe 0x4afa
jmp 0x4b88
xorl %eax, %eax
movq -0x30(%rbp), %rdx
movq 0x58(%rdx), %rcx
subq 0x50(%rdx), %rcx
sarq $0x3, %rcx
movabsq $0x6db6db6db6db6db7, %rdx # imm = 0x6DB6DB6DB6DB6DB7
imulq %rdx, %rcx
cmpq %rax, %rcx
jne 0x5252
addq %rax, %rbx
leaq -0xe0(%rbp), %rdi
movl $0xa, %ecx
leaq 0xcc5b(%rip), %rsi      # 0x11820
xorl %edx, %edx
callq 0x22e0
cmpq $-0x1, %rax
je 0x4d28
movq %r12, %rdi
leaq -0x50(%rbp), %rsi
callq 0x2120
movl $0x14, %edx
movq 0x123ea(%rip), %rdi     # 0x16fd8
leaq 0xcc36(%rip), %rsi      # 0x1182b
callq 0x2230
movq -0x50(%rbp), %rsi
movq 0x123d3(%rip), %rdi     # 0x16fd8
callq 0x2170
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xd0b9(%rip), %rsi      # 0x11cd5
callq 0x2230
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x21f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
cmpq $0x0, -0x50(%rbp)
je 0x4cf6
xorl %r13d, %r13d
movq -0xc0(%rbp), %rsi
movq %r12, %rdi
callq 0x2120
movq -0xc0(%rbp), %rsi
addq $0x8, %rsi
movq %rax, %rdi
callq 0x2120
movq -0xc0(%rbp), %rsi
addq $0x10, %rsi
movq %rax, %rdi
callq 0x2120
movq -0xc0(%rbp), %rsi
addq $0x18, %rsi
movq %rax, %rdi
callq 0x2120
movq %rax, %rdi
movq %r14, %rsi
callq 0x2120
leaq (%rbx,%r13), %rdx
movq -0x38(%rbp), %rcx
movq %r15, %rdi
leaq -0xc0(%rbp), %rsi
xorl %r8d, %r8d
callq 0x318a
movq -0x148(%rbp), %rdi
movq %r15, %rsi
callq 0xad8c
movq -0x190(%rbp), %rdi
testq %rdi, %rdi
je 0x4ce4
callq 0x21e0
incq %r13
movq -0x50(%rbp), %rax
cmpq %rax, %r13
jb 0x4c57
jmp 0x4cf8
xorl %eax, %eax
movq -0x30(%rbp), %rdx
movq 0x88(%rdx), %rcx
subq 0x80(%rdx), %rcx
sarq $0x3, %rcx
movabsq $0x6db6db6db6db6db7, %rdx # imm = 0x6DB6DB6DB6DB6DB7
imulq %rdx, %rcx
cmpq %rax, %rcx
jne 0x5271
addq %rax, %rbx
leaq -0xe0(%rbp), %rdi
movl $0xe, %ecx
leaq 0xcb47(%rip), %rsi      # 0x11882
xorl %edx, %edx
callq 0x22e0
cmpq $-0x1, %rax
je 0x4e9b
movq %r12, %rdi
leaq -0x48(%rbp), %rsi
callq 0x2120
movl $0x18, %edx
movq 0x12274(%rip), %rdi     # 0x16fd8
leaq 0xcb26(%rip), %rsi      # 0x11891
callq 0x2230
movq -0x48(%rbp), %rsi
movq 0x1225d(%rip), %rdi     # 0x16fd8
callq 0x2170
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xcf43(%rip), %rsi      # 0x11cd5
callq 0x2230
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x21f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
cmpq $0x0, -0x48(%rbp)
je 0x4e6f
movl $0x1, %r13d
movq -0xa0(%rbp), %rsi
movq %r12, %rdi
callq 0x2120
movq -0xa0(%rbp), %rsi
addq $0x8, %rsi
movq %rax, %rdi
callq 0x2120
movq -0xa0(%rbp), %rsi
addq $0x10, %rsi
movq %rax, %rdi
callq 0x2120
movq -0xa0(%rbp), %rsi
addq $0x18, %rsi
movq %rax, %rdi
callq 0x2120
movq %rax, %rdi
movq %r14, %rsi
callq 0x2120
leaq (%rbx,%r13), %rdx
movq -0x38(%rbp), %rcx
movq %r15, %rdi
leaq -0xa0(%rbp), %rsi
xorl %r8d, %r8d
callq 0x3102
movq -0x140(%rbp), %rdi
movq %r15, %rsi
callq 0xadee
movq -0x190(%rbp), %rdi
testq %rdi, %rdi
je 0x4e5d
callq 0x21e0
incq %r13
movq -0x48(%rbp), %rax
cmpq %rax, %r13
jbe 0x4dd0
jmp 0x4e71
xorl %eax, %eax
movq -0x30(%rbp), %rdx
movq 0x70(%rdx), %rcx
subq 0x68(%rdx), %rcx
sarq $0x3, %rcx
movabsq $0x6db6db6db6db6db7, %rdx # imm = 0x6DB6DB6DB6DB6DB7
imulq %rdx, %rcx
cmpq %rax, %rcx
jne 0x5290
addq %rax, %rbx
leaq -0xe0(%rbp), %rdi
movl $0x9, %ecx
leaq 0xca3d(%rip), %rsi      # 0x118eb
xorl %edx, %edx
callq 0x22e0
cmpq $-0x1, %rax
je 0x5052
movq %r12, %rdi
leaq -0x40(%rbp), %rsi
callq 0x2120
movl $0x13, %edx
movq 0x12101(%rip), %rdi     # 0x16fd8
leaq 0xca17(%rip), %rsi      # 0x118f5
callq 0x2230
movq -0x40(%rbp), %rsi
movq 0x120ea(%rip), %rdi     # 0x16fd8
callq 0x2170
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xcdd0(%rip), %rsi      # 0x11cd5
callq 0x2230
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x21f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
cmpq $0x0, -0x40(%rbp)
je 0x5020
xorl %r13d, %r13d
movq -0x80(%rbp), %rsi
movq %r12, %rdi
callq 0x2120
movq -0x80(%rbp), %rsi
addq $0x8, %rsi
movq %rax, %rdi
callq 0x2120
movq -0x80(%rbp), %rsi
addq $0x10, %rsi
movq %rax, %rdi
callq 0x2120
movq -0x80(%rbp), %rsi
addq $0x18, %rsi
movq %rax, %rdi
callq 0x2120
movq -0x80(%rbp), %rsi
addq $0x20, %rsi
movq %rax, %rdi
callq 0x2120
movq -0x80(%rbp), %rsi
addq $0x28, %rsi
movq %rax, %rdi
callq 0x2120
movq -0x80(%rbp), %rsi
addq $0x30, %rsi
movq %rax, %rdi
callq 0x2120
movq -0x80(%rbp), %rsi
addq $0x38, %rsi
movq %rax, %rdi
callq 0x2120
movq -0x80(%rbp), %rsi
addq $0x40, %rsi
movq %rax, %rdi
callq 0x2120
movq %rax, %rdi
movq %r14, %rsi
callq 0x2120
leaq (%rbx,%r13), %rdx
movq -0x38(%rbp), %rcx
movq %r15, %rdi
leaq -0x80(%rbp), %rsi
xorl %r8d, %r8d
callq 0x3212
movq -0x138(%rbp), %rdi
movq %r15, %rsi
callq 0xae50
movq -0x190(%rbp), %rdi
testq %rdi, %rdi
je 0x500e
callq 0x21e0
incq %r13
movq -0x40(%rbp), %rax
cmpq %rax, %r13
jb 0x4f40
jmp 0x5022
xorl %eax, %eax
movq -0x30(%rbp), %rdx
movq 0xa0(%rdx), %rcx
subq 0x98(%rdx), %rcx
sarq $0x3, %rcx
movabsq $0x6db6db6db6db6db7, %rdx # imm = 0x6DB6DB6DB6DB6DB7
imulq %rdx, %rcx
cmpq %rax, %rcx
jne 0x52af
addq %rax, %rbx
movq -0x3b0(%rbp), %rax
movq -0x18(%rax), %rax
leaq (%rax,%rbp), %rdi
addq $-0x3b0, %rdi           # imm = 0xFC50
testb $0x2, 0x20(%rdi)
je 0x474c
jmp 0x5076
xorl %ebx, %ebx
movq -0x58(%rbp), %rax
addq -0x60(%rbp), %rax
addq -0x48(%rbp), %rax
addq -0x40(%rbp), %rax
addq -0x50(%rbp), %rax
cmpq %rax, %rbx
jne 0x5325
movq -0x30(%rbp), %rax
movq %rbx, 0xe0(%rax)
movq %rax, %rbx
leaq -0x3b0(%rbp), %rdi
callq 0x2040
movabsq $0x6db6db6db6db6db7, %rdi # imm = 0x6DB6DB6DB6DB6DB7
movq 0x88(%rbx), %rax
movq 0xa0(%rbx), %rcx
subq 0x80(%rbx), %rax
sarq $0x3, %rax
imulq %rdi, %rax
subq 0x98(%rbx), %rcx
sarq $0x3, %rcx
imulq %rdi, %rcx
movq 0xb8(%rbx), %rdx
subq 0xb0(%rbx), %rdx
addq %rax, %rcx
sarq $0x3, %rdx
imulq %rdi, %rdx
addq %rcx, %rdx
movq 0xd0(%rbx), %rsi
subq 0xc8(%rbx), %rsi
sarq $0x3, %rsi
movabsq $-0x6db6db6db6db6db7, %rax # imm = 0x9249249249249249
imulq %rax, %rsi
movl $0x3, %ecx
cmpq %rsi, %rdx
jne 0x5162
movq 0x58(%rbx), %rdx
movq 0x70(%rbx), %rsi
subq 0x50(%rbx), %rdx
sarq $0x3, %rdx
imulq %rdi, %rdx
subq 0x68(%rbx), %rsi
sarq $0x3, %rsi
imulq %rax, %rsi
movl $0x2, %ecx
cmpq %rsi, %rdx
jne 0x5162
movq 0x40(%rbx), %rax
movl $0x1, %ecx
cmpq 0x38(%rbx), %rax
je 0x5165
movq %rcx, (%rbx)
movq 0x11e6c(%rip), %rbx     # 0x16fd8
leaq 0xbef8(%rip), %rsi      # 0x1106b
movl $0x18, %edx
movq %rbx, %rdi
callq 0x2230
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x21f0
movsbl %al, %esi
movq 0x11e3a(%rip), %rdi     # 0x16fd8
callq 0x2030
movq %rax, %rdi
callq 0x2180
movq -0x80(%rbp), %rdi
testq %rdi, %rdi
je 0x51b9
callq 0x21e0
movq -0xa0(%rbp), %rdi
testq %rdi, %rdi
je 0x51ca
callq 0x21e0
movq -0xc0(%rbp), %rdi
testq %rdi, %rdi
je 0x51db
callq 0x21e0
movq -0x100(%rbp), %rdi
testq %rdi, %rdi
je 0x51ec
callq 0x21e0
movq -0x120(%rbp), %rdi
testq %rdi, %rdi
je 0x51fd
callq 0x21e0
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x5215
callq 0x21e0
leaq -0x3b0(%rbp), %rdi
callq 0x2060
addq $0x388, %rsp            # imm = 0x388
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xc548(%rip), %rdi      # 0x11782
leaq 0xc4e3(%rip), %rsi      # 0x11724
leaq 0xc4e9(%rip), %rcx      # 0x11731
movl $0x11c, %edx            # imm = 0x11C
callq 0x2150
leaq 0xc583(%rip), %rdi      # 0x117dc
leaq 0xc4c4(%rip), %rsi      # 0x11724
leaq 0xc4ca(%rip), %rcx      # 0x11731
movl $0x128, %edx            # imm = 0x128
callq 0x2150
leaq 0xc5c8(%rip), %rdi      # 0x11840
leaq 0xc4a5(%rip), %rsi      # 0x11724
leaq 0xc4ab(%rip), %rcx      # 0x11731
movl $0x134, %edx            # imm = 0x134
callq 0x2150
leaq 0xc613(%rip), %rdi      # 0x118aa
leaq 0xc486(%rip), %rsi      # 0x11724
leaq 0xc48c(%rip), %rcx      # 0x11731
movl $0x140, %edx            # imm = 0x140
callq 0x2150
leaq 0xc653(%rip), %rdi      # 0x11909
leaq 0xc467(%rip), %rsi      # 0x11724
leaq 0xc46d(%rip), %rcx      # 0x11731
movl $0x14d, %edx            # imm = 0x14D
callq 0x2150
leaq 0xc413(%rip), %rdi      # 0x116e8
leaq 0xc448(%rip), %rsi      # 0x11724
leaq 0xc44e(%rip), %rcx      # 0x11731
movl $0x10f, %edx            # imm = 0x10F
callq 0x2150
movq 0x11ce4(%rip), %rdi     # 0x16fd8
leaq 0xc3a1(%rip), %rsi      # 0x1169c
movl $0x14, %edx
callq 0x2230
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq 0x11cc5(%rip), %rdi     # 0x16fd8
callq 0x2230
movq %rax, %rdi
callq 0x20f0
callq 0x2140
leaq 0xc61c(%rip), %rdi      # 0x11948
leaq 0xc3f1(%rip), %rsi      # 0x11724
leaq 0xc3f7(%rip), %rcx      # 0x11731
movl $0x151, %edx            # imm = 0x151
callq 0x2150
movq %rax, %rbx
jmp 0x53b7
movq %rax, %rbx
jmp 0x53c8
movq %rax, %rbx
jmp 0x53d9
movq %rax, %rbx
jmp 0x53ea
movq %rax, %rbx
jmp 0x53fb
jmp 0x53a6
movq %rax, %rbx
jmp 0x5413
jmp 0x53a6
jmp 0x5382
jmp 0x5382
jmp 0x53a6
jmp 0x5382
jmp 0x53a6
jmp 0x5382
jmp 0x53a6
jmp 0x53a6
movq %rax, %rbx
movq -0x190(%rbp), %rdi
testq %rdi, %rdi
je 0x53a9
callq 0x21e0
jmp 0x53a9
jmp 0x53a6
jmp 0x53a6
jmp 0x53a6
jmp 0x53a6
jmp 0x53a6
jmp 0x53a6
jmp 0x53a6
movq %rax, %rbx
movq -0x80(%rbp), %rdi
testq %rdi, %rdi
je 0x53b7
callq 0x21e0
movq -0xa0(%rbp), %rdi
testq %rdi, %rdi
je 0x53c8
callq 0x21e0
movq -0xc0(%rbp), %rdi
testq %rdi, %rdi
je 0x53d9
callq 0x21e0
movq -0x100(%rbp), %rdi
testq %rdi, %rdi
je 0x53ea
callq 0x21e0
movq -0x120(%rbp), %rdi
testq %rdi, %rdi
je 0x53fb
callq 0x21e0
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x5413
callq 0x21e0
leaq -0x3b0(%rbp), %rdi
callq 0x2060
movq %rbx, %rdi
callq 0x22f0
nop