// File: alan0201tw[P]RayTracer/include/tiny_obj_loader.h
// Function: tinyobj::LoadMtl(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, int>>>*, std::vector<tinyobj::material_t, std::allocator<tinyobj::material_t>>*, std::istream*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*)
void LoadMtl(std::map<std::string, int> *material_map,
             std::vector<material_t> *materials, std::istream *inStream,
             std::string *warning, std::string *err) {
  (void)err;

  // Create a default material anyway.
  material_t material;
  InitMaterial(&material);

  // Issue 43. `d` wins against `Tr` since `Tr` is not in the MTL specification.
  bool has_d = false;
  bool has_tr = false;

  std::stringstream warn_ss;

  size_t line_no = 0;
  std::string linebuf;
  while (inStream->peek() != -1) {
    safeGetline(*inStream, linebuf);
    line_no++;

    // Trim trailing whitespace.
    if (linebuf.size() > 0) {
      linebuf = linebuf.substr(0, linebuf.find_last_not_of(" \t") + 1);
    }

    // Trim newline '\r\n' or '\n'
    if (linebuf.size() > 0) {
      if (linebuf[linebuf.size() - 1] == '\n')
        linebuf.erase(linebuf.size() - 1);
    }
    if (linebuf.size() > 0) {
      if (linebuf[linebuf.size() - 1] == '\r')
        linebuf.erase(linebuf.size() - 1);
    }

    // Skip if empty line.
    if (linebuf.empty()) {
      continue;
    }

    // Skip leading space.
    const char *token = linebuf.c_str();
    token += strspn(token, " \t");

    assert(token);
    if (token[0] == '\0') continue;  // empty line

    if (token[0] == '#') continue;  // comment line

    // new mtl
    if ((0 == strncmp(token, "newmtl", 6)) && IS_SPACE((token[6]))) {
      // flush previous material.
      if (!material.name.empty()) {
        material_map->insert(std::pair<std::string, int>(
            material.name, static_cast<int>(materials->size())));
        materials->push_back(material);
      }

      // initial temporary material
      InitMaterial(&material);

      has_d = false;
      has_tr = false;

      // set new mtl name
      token += 7;
      {
        std::stringstream sstr;
        sstr << token;
        material.name = sstr.str();
      }
      continue;
    }

    // ambient
    if (token[0] == 'K' && token[1] == 'a' && IS_SPACE((token[2]))) {
      token += 2;
      real_t r, g, b;
      parseReal3(&r, &g, &b, &token);
      material.ambient[0] = r;
      material.ambient[1] = g;
      material.ambient[2] = b;
      continue;
    }

    // diffuse
    if (token[0] == 'K' && token[1] == 'd' && IS_SPACE((token[2]))) {
      token += 2;
      real_t r, g, b;
      parseReal3(&r, &g, &b, &token);
      material.diffuse[0] = r;
      material.diffuse[1] = g;
      material.diffuse[2] = b;
      continue;
    }

    // specular
    if (token[0] == 'K' && token[1] == 's' && IS_SPACE((token[2]))) {
      token += 2;
      real_t r, g, b;
      parseReal3(&r, &g, &b, &token);
      material.specular[0] = r;
      material.specular[1] = g;
      material.specular[2] = b;
      continue;
    }

    // transmittance
    if ((token[0] == 'K' && token[1] == 't' && IS_SPACE((token[2]))) ||
        (token[0] == 'T' && token[1] == 'f' && IS_SPACE((token[2])))) {
      token += 2;
      real_t r, g, b;
      parseReal3(&r, &g, &b, &token);
      material.transmittance[0] = r;
      material.transmittance[1] = g;
      material.transmittance[2] = b;
      continue;
    }

    // ior(index of refraction)
    if (token[0] == 'N' && token[1] == 'i' && IS_SPACE((token[2]))) {
      token += 2;
      material.ior = parseReal(&token);
      continue;
    }

    // emission
    if (token[0] == 'K' && token[1] == 'e' && IS_SPACE(token[2])) {
      token += 2;
      real_t r, g, b;
      parseReal3(&r, &g, &b, &token);
      material.emission[0] = r;
      material.emission[1] = g;
      material.emission[2] = b;
      continue;
    }

    // shininess
    if (token[0] == 'N' && token[1] == 's' && IS_SPACE(token[2])) {
      token += 2;
      material.shininess = parseReal(&token);
      continue;
    }

    // illum model
    if (0 == strncmp(token, "illum", 5) && IS_SPACE(token[5])) {
      token += 6;
      material.illum = parseInt(&token);
      continue;
    }

    // dissolve
    if ((token[0] == 'd' && IS_SPACE(token[1]))) {
      token += 1;
      material.dissolve = parseReal(&token);

      if (has_tr) {
        warn_ss << "Both `d` and `Tr` parameters defined for \""
                << material.name
                << "\". Use the value of `d` for dissolve (line " << line_no
                << " in .mtl.)" << std::endl;
      }
      has_d = true;
      continue;
    }
    if (token[0] == 'T' && token[1] == 'r' && IS_SPACE(token[2])) {
      token += 2;
      if (has_d) {
        // `d` wins. Ignore `Tr` value.
        warn_ss << "Both `d` and `Tr` parameters defined for \""
                << material.name
                << "\". Use the value of `d` for dissolve (line " << line_no
                << " in .mtl.)" << std::endl;
      } else {
        // We invert value of Tr(assume Tr is in range [0, 1])
        // NOTE: Interpretation of Tr is application(exporter) dependent. For
        // some application(e.g. 3ds max obj exporter), Tr = d(Issue 43)
        material.dissolve = static_cast<real_t>(1.0) - parseReal(&token);
      }
      has_tr = true;
      continue;
    }

    // PBR: roughness
    if (token[0] == 'P' && token[1] == 'r' && IS_SPACE(token[2])) {
      token += 2;
      material.roughness = parseReal(&token);
      continue;
    }

    // PBR: metallic
    if (token[0] == 'P' && token[1] == 'm' && IS_SPACE(token[2])) {
      token += 2;
      material.metallic = parseReal(&token);
      continue;
    }

    // PBR: sheen
    if (token[0] == 'P' && token[1] == 's' && IS_SPACE(token[2])) {
      token += 2;
      material.sheen = parseReal(&token);
      continue;
    }

    // PBR: clearcoat thickness
    if (token[0] == 'P' && token[1] == 'c' && IS_SPACE(token[2])) {
      token += 2;
      material.clearcoat_thickness = parseReal(&token);
      continue;
    }

    // PBR: clearcoat roughness
    if ((0 == strncmp(token, "Pcr", 3)) && IS_SPACE(token[3])) {
      token += 4;
      material.clearcoat_roughness = parseReal(&token);
      continue;
    }

    // PBR: anisotropy
    if ((0 == strncmp(token, "aniso", 5)) && IS_SPACE(token[5])) {
      token += 6;
      material.anisotropy = parseReal(&token);
      continue;
    }

    // PBR: anisotropy rotation
    if ((0 == strncmp(token, "anisor", 6)) && IS_SPACE(token[6])) {
      token += 7;
      material.anisotropy_rotation = parseReal(&token);
      continue;
    }

    // ambient texture
    if ((0 == strncmp(token, "map_Ka", 6)) && IS_SPACE(token[6])) {
      token += 7;
      ParseTextureNameAndOption(&(material.ambient_texname),
                                &(material.ambient_texopt), token);
      continue;
    }

    // diffuse texture
    if ((0 == strncmp(token, "map_Kd", 6)) && IS_SPACE(token[6])) {
      token += 7;
      ParseTextureNameAndOption(&(material.diffuse_texname),
                                &(material.diffuse_texopt), token);
      continue;
    }

    // specular texture
    if ((0 == strncmp(token, "map_Ks", 6)) && IS_SPACE(token[6])) {
      token += 7;
      ParseTextureNameAndOption(&(material.specular_texname),
                                &(material.specular_texopt), token);
      continue;
    }

    // specular highlight texture
    if ((0 == strncmp(token, "map_Ns", 6)) && IS_SPACE(token[6])) {
      token += 7;
      ParseTextureNameAndOption(&(material.specular_highlight_texname),
                                &(material.specular_highlight_texopt), token);
      continue;
    }

    // bump texture
    if ((0 == strncmp(token, "map_bump", 8)) && IS_SPACE(token[8])) {
      token += 9;
      ParseTextureNameAndOption(&(material.bump_texname),
                                &(material.bump_texopt), token);
      continue;
    }

    // bump texture
    if ((0 == strncmp(token, "map_Bump", 8)) && IS_SPACE(token[8])) {
      token += 9;
      ParseTextureNameAndOption(&(material.bump_texname),
                                &(material.bump_texopt), token);
      continue;
    }

    // bump texture
    if ((0 == strncmp(token, "bump", 4)) && IS_SPACE(token[4])) {
      token += 5;
      ParseTextureNameAndOption(&(material.bump_texname),
                                &(material.bump_texopt), token);
      continue;
    }

    // alpha texture
    if ((0 == strncmp(token, "map_d", 5)) && IS_SPACE(token[5])) {
      token += 6;
      material.alpha_texname = token;
      ParseTextureNameAndOption(&(material.alpha_texname),
                                &(material.alpha_texopt), token);
      continue;
    }

    // displacement texture
    if ((0 == strncmp(token, "disp", 4)) && IS_SPACE(token[4])) {
      token += 5;
      ParseTextureNameAndOption(&(material.displacement_texname),
                                &(material.displacement_texopt), token);
      continue;
    }

    // reflection map
    if ((0 == strncmp(token, "refl", 4)) && IS_SPACE(token[4])) {
      token += 5;
      ParseTextureNameAndOption(&(material.reflection_texname),
                                &(material.reflection_texopt), token);
      continue;
    }

    // PBR: roughness texture
    if ((0 == strncmp(token, "map_Pr", 6)) && IS_SPACE(token[6])) {
      token += 7;
      ParseTextureNameAndOption(&(material.roughness_texname),
                                &(material.roughness_texopt), token);
      continue;
    }

    // PBR: metallic texture
    if ((0 == strncmp(token, "map_Pm", 6)) && IS_SPACE(token[6])) {
      token += 7;
      ParseTextureNameAndOption(&(material.metallic_texname),
                                &(material.metallic_texopt), token);
      continue;
    }

    // PBR: sheen texture
    if ((0 == strncmp(token, "map_Ps", 6)) && IS_SPACE(token[6])) {
      token += 7;
      ParseTextureNameAndOption(&(material.sheen_texname),
                                &(material.sheen_texopt), token);
      continue;
    }

    // PBR: emissive texture
    if ((0 == strncmp(token, "map_Ke", 6)) && IS_SPACE(token[6])) {
      token += 7;
      ParseTextureNameAndOption(&(material.emissive_texname),
                                &(material.emissive_texopt), token);
      continue;
    }

    // PBR: normal map texture
    if ((0 == strncmp(token, "norm", 4)) && IS_SPACE(token[4])) {
      token += 5;
      ParseTextureNameAndOption(&(material.normal_texname),
                                &(material.normal_texopt), token);
      continue;
    }

    // unknown parameter
    const char *_space = strchr(token, ' ');
    if (!_space) {
      _space = strchr(token, '\t');
    }
    if (_space) {
      std::ptrdiff_t len = _space - token;
      std::string key(token, static_cast<size_t>(len));
      std::string value = _space + 1;
      material.unknown_parameter.insert(
          std::pair<std::string, std::string>(key, value));
    }
  }
  // flush last material.
  material_map->insert(std::pair<std::string, int>(
      material.name, static_cast<int>(materials->size())));
  materials->push_back(material);

  if (warning) {
    (*warning) = warn_ss.str();
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xdd0, %rsp            # imm = 0xDD0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
leaq -0x770(%rbp), %rdi
movq %rdi, -0xc98(%rbp)
callq 0x2b0d0
movq -0xc98(%rbp), %rdi
callq 0x1dbe0
jmp 0x1c1c0
movb $0x0, -0x77d(%rbp)
movb $0x0, -0x77e(%rbp)
leaq -0x908(%rbp), %rdi
callq 0x7360
jmp 0x1c1dc
movq $0x0, -0x910(%rbp)
leaq -0x930(%rbp), %rdi
callq 0x7690
movq -0x18(%rbp), %rdi
callq 0x7170
movl %eax, -0xc9c(%rbp)
jmp 0x1c204
movl -0xc9c(%rbp), %eax
cmpl $-0x1, %eax
je 0x1da92
movq -0x18(%rbp), %rdi
leaq -0x930(%rbp), %rsi
callq 0x1df40
jmp 0x1c225
movq -0x910(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x910(%rbp)
leaq -0x930(%rbp), %rdi
callq 0x7350
cmpq $0x0, %rax
jbe 0x1c2dc
leaq 0x6234c(%rip), %rsi     # 0x7e5a0
leaq -0x930(%rbp), %rdi
movq %rdi, -0xca8(%rbp)
movq $-0x1, %rdx
callq 0x7890
movq -0xca8(%rbp), %rsi
movq %rax, %rcx
incq %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x950(%rbp), %rdi
callq 0x7520
jmp 0x1c28d
leaq -0x930(%rbp), %rdi
leaq -0x950(%rbp), %rsi
callq 0x75f0
leaq -0x950(%rbp), %rdi
callq 0x72e0
jmp 0x1c2dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x778(%rbp)
movl %eax, -0x77c(%rbp)
jmp 0x1dbc1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x778(%rbp)
movl %eax, -0x77c(%rbp)
jmp 0x1dba9
leaq -0x930(%rbp), %rdi
callq 0x7350
cmpq $0x0, %rax
jbe 0x1c35d
leaq -0x930(%rbp), %rdi
movq %rdi, -0xcb8(%rbp)
callq 0x7350
movq -0xcb8(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x7930
movq %rax, -0xcb0(%rbp)
jmp 0x1c31c
movq -0xcb0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0xa, %eax
jne 0x1c35b
leaq -0x930(%rbp), %rdi
movq %rdi, -0xcc0(%rbp)
callq 0x7350
movq -0xcc0(%rbp), %rdi
movq %rax, %rsi
decq %rsi
movq $-0x1, %rdx
callq 0x70c0
jmp 0x1c359
jmp 0x1c35b
jmp 0x1c35d
leaq -0x930(%rbp), %rdi
callq 0x7350
cmpq $0x0, %rax
jbe 0x1c3de
leaq -0x930(%rbp), %rdi
movq %rdi, -0xcd0(%rbp)
callq 0x7350
movq -0xcd0(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x7930
movq %rax, -0xcc8(%rbp)
jmp 0x1c39d
movq -0xcc8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0xd, %eax
jne 0x1c3dc
leaq -0x930(%rbp), %rdi
movq %rdi, -0xcd8(%rbp)
callq 0x7350
movq -0xcd8(%rbp), %rdi
movq %rax, %rsi
decq %rsi
movq $-0x1, %rdx
callq 0x70c0
jmp 0x1c3da
jmp 0x1c3dc
jmp 0x1c3de
leaq -0x930(%rbp), %rdi
callq 0x77e0
testb $0x1, %al
jne 0x1c3f0
jmp 0x1c3f5
jmp 0x1c1f3
leaq -0x930(%rbp), %rdi
callq 0x71c0
movq %rax, -0x958(%rbp)
movq -0x958(%rbp), %rdi
leaq 0x6218a(%rip), %rsi     # 0x7e5a0
callq 0x71d0
addq -0x958(%rbp), %rax
movq %rax, -0x958(%rbp)
cmpq $0x0, -0x958(%rbp)
je 0x1c435
jmp 0x1c454
leaq 0x621b1(%rip), %rdi     # 0x7e5ed
leaq 0x621b0(%rip), %rsi     # 0x7e5f3
movl $0x694, %edx            # imm = 0x694
leaq 0x621be(%rip), %rcx     # 0x7e60d
callq 0x7310
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x1c468
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0x1c47c
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x62200(%rip), %rsi     # 0x7e68a
movl $0x6, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1c646
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x20, %eax
je 0x1c4c4
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x9, %eax
jne 0x1c646
leaq -0x770(%rbp), %rdi
callq 0x77e0
testb $0x1, %al
jne 0x1c58d
movq -0x8(%rbp), %rax
movq %rax, -0xce0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2b2e0
movl %eax, -0x984(%rbp)
leaq -0x980(%rbp), %rdi
leaq -0x770(%rbp), %rsi
leaq -0x984(%rbp), %rdx
callq 0x2b310
jmp 0x1c50e
movq -0xce0(%rbp), %rdi
leaq -0x980(%rbp), %rsi
callq 0x2b2a0
movb %dl, -0xce9(%rbp)
movq %rax, -0xce8(%rbp)
jmp 0x1c530
movb -0xce9(%rbp), %al
movq -0xce8(%rbp), %rcx
movq %rcx, -0x998(%rbp)
movb %al, -0x990(%rbp)
leaq -0x980(%rbp), %rdi
callq 0x2b350
movq -0x10(%rbp), %rdi
leaq -0x770(%rbp), %rsi
callq 0x2b370
jmp 0x1c568
jmp 0x1c58d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x778(%rbp)
movl %eax, -0x77c(%rbp)
leaq -0x980(%rbp), %rdi
callq 0x2b350
jmp 0x1dba9
leaq -0x770(%rbp), %rdi
callq 0x1dbe0
jmp 0x1c59b
movb $0x0, -0x77d(%rbp)
movb $0x0, -0x77e(%rbp)
movq -0x958(%rbp), %rax
addq $0x7, %rax
movq %rax, -0x958(%rbp)
leaq -0xb20(%rbp), %rdi
callq 0x7360
jmp 0x1c5c9
leaq -0xb10(%rbp), %rdi
movq -0x958(%rbp), %rsi
callq 0x74e0
jmp 0x1c5de
leaq -0xb40(%rbp), %rdi
leaq -0xb20(%rbp), %rsi
callq 0x74d0
jmp 0x1c5f3
leaq -0x770(%rbp), %rdi
leaq -0xb40(%rbp), %rsi
callq 0x75f0
leaq -0xb40(%rbp), %rdi
callq 0x72e0
leaq -0xb20(%rbp), %rdi
callq 0x73b0
jmp 0x1c1f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x778(%rbp)
movl %eax, -0x77c(%rbp)
leaq -0xb20(%rbp), %rdi
callq 0x73b0
jmp 0x1dba9
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x4b, %eax
jne 0x1c700
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x61, %eax
jne 0x1c700
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1c68d
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
jne 0x1c700
movq -0x958(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x958(%rbp)
leaq -0xb44(%rbp), %rdi
leaq -0xb48(%rbp), %rsi
leaq -0xb4c(%rbp), %rdx
leaq -0x958(%rbp), %rcx
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x1bdf0
jmp 0x1c6cb
movss -0xb44(%rbp), %xmm0
movss %xmm0, -0x750(%rbp)
movss -0xb48(%rbp), %xmm0
movss %xmm0, -0x74c(%rbp)
movss -0xb4c(%rbp), %xmm0
movss %xmm0, -0x748(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x4b, %eax
jne 0x1c7ba
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x64, %eax
jne 0x1c7ba
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1c747
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
jne 0x1c7ba
movq -0x958(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x958(%rbp)
leaq -0xb50(%rbp), %rdi
leaq -0xb54(%rbp), %rsi
leaq -0xb58(%rbp), %rdx
leaq -0x958(%rbp), %rcx
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x1bdf0
jmp 0x1c785
movss -0xb50(%rbp), %xmm0
movss %xmm0, -0x744(%rbp)
movss -0xb54(%rbp), %xmm0
movss %xmm0, -0x740(%rbp)
movss -0xb58(%rbp), %xmm0
movss %xmm0, -0x73c(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x4b, %eax
jne 0x1c874
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x73, %eax
jne 0x1c874
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1c801
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
jne 0x1c874
movq -0x958(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x958(%rbp)
leaq -0xb5c(%rbp), %rdi
leaq -0xb60(%rbp), %rsi
leaq -0xb64(%rbp), %rdx
leaq -0x958(%rbp), %rcx
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x1bdf0
jmp 0x1c83f
movss -0xb5c(%rbp), %xmm0
movss %xmm0, -0x738(%rbp)
movss -0xb60(%rbp), %xmm0
movss %xmm0, -0x734(%rbp)
movss -0xb64(%rbp), %xmm0
movss %xmm0, -0x730(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x4b, %eax
jne 0x1c8b3
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x74, %eax
jne 0x1c8b3
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1c8fa
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
je 0x1c8fa
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x54, %eax
jne 0x1c96d
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x66, %eax
jne 0x1c96d
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1c8fa
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
jne 0x1c96d
movq -0x958(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x958(%rbp)
leaq -0xb68(%rbp), %rdi
leaq -0xb6c(%rbp), %rsi
leaq -0xb70(%rbp), %rdx
leaq -0x958(%rbp), %rcx
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x1bdf0
jmp 0x1c938
movss -0xb68(%rbp), %xmm0
movss %xmm0, -0x72c(%rbp)
movss -0xb6c(%rbp), %xmm0
movss %xmm0, -0x728(%rbp)
movss -0xb70(%rbp), %xmm0
movss %xmm0, -0x724(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x4e, %eax
jne 0x1c9ec
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x69, %eax
jne 0x1c9ec
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1c9ac
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
jne 0x1c9ec
movq -0x958(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x958(%rbp)
leaq -0x958(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1bd50
movss %xmm0, -0xcf0(%rbp)
jmp 0x1c9d7
movss -0xcf0(%rbp), %xmm0
movss %xmm0, -0x710(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x4b, %eax
jne 0x1caa6
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x65, %eax
jne 0x1caa6
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1ca33
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
jne 0x1caa6
movq -0x958(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x958(%rbp)
leaq -0xb74(%rbp), %rdi
leaq -0xb78(%rbp), %rsi
leaq -0xb7c(%rbp), %rdx
leaq -0x958(%rbp), %rcx
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0x1bdf0
jmp 0x1ca71
movss -0xb74(%rbp), %xmm0
movss %xmm0, -0x720(%rbp)
movss -0xb78(%rbp), %xmm0
movss %xmm0, -0x71c(%rbp)
movss -0xb7c(%rbp), %xmm0
movss %xmm0, -0x718(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x4e, %eax
jne 0x1cb25
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x73, %eax
jne 0x1cb25
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1cae5
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
jne 0x1cb25
movq -0x958(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x958(%rbp)
leaq -0x958(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1bd50
movss %xmm0, -0xcf4(%rbp)
jmp 0x1cb10
movss -0xcf4(%rbp), %xmm0
movss %xmm0, -0x714(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x61b5e(%rip), %rsi     # 0x7e691
movl $0x5, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1cb9c
movq -0x958(%rbp), %rax
movsbl 0x5(%rax), %eax
cmpl $0x20, %eax
je 0x1cb65
movq -0x958(%rbp), %rax
movsbl 0x5(%rax), %eax
cmpl $0x9, %eax
jne 0x1cb9c
movq -0x958(%rbp), %rax
addq $0x6, %rax
movq %rax, -0x958(%rbp)
leaq -0x958(%rbp), %rdi
callq 0x1e040
movl %eax, -0xcf8(%rbp)
jmp 0x1cb8b
movl -0xcf8(%rbp), %eax
movl %eax, -0x708(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x64, %eax
jne 0x1ccc9
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x20, %eax
je 0x1cbd3
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x9, %eax
jne 0x1ccc9
movq -0x958(%rbp), %rax
incq %rax
movq %rax, -0x958(%rbp)
leaq -0x958(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1bd50
movss %xmm0, -0xcfc(%rbp)
jmp 0x1cbfd
movss -0xcfc(%rbp), %xmm0
movss %xmm0, -0x70c(%rbp)
testb $0x1, -0x77e(%rbp)
je 0x1ccbd
leaq -0x8f8(%rbp), %rdi
leaq 0x61a6f(%rip), %rsi     # 0x7e697
callq 0x74e0
movq %rax, -0xd08(%rbp)
jmp 0x1cc36
movq -0xd08(%rbp), %rdi
leaq -0x770(%rbp), %rsi
callq 0x7450
movq %rax, -0xd10(%rbp)
jmp 0x1cc52
movq -0xd10(%rbp), %rdi
leaq 0x61a62(%rip), %rsi     # 0x7e6c2
callq 0x74e0
movq %rax, -0xd18(%rbp)
jmp 0x1cc6e
movq -0xd18(%rbp), %rdi
movq -0x910(%rbp), %rsi
callq 0x70d0
movq %rax, -0xd20(%rbp)
jmp 0x1cc8a
movq -0xd20(%rbp), %rdi
leaq 0x61a56(%rip), %rsi     # 0x7e6ee
callq 0x74e0
movq %rax, -0xd28(%rbp)
jmp 0x1cca6
movq -0xd28(%rbp), %rdi
movq 0x932bc(%rip), %rsi     # 0xaff70
callq 0x7540
jmp 0x1ccbb
jmp 0x1ccbd
movb $0x1, -0x77d(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x54, %eax
jne 0x1ce17
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x72, %eax
jne 0x1ce17
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1cd14
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
jne 0x1ce17
movq -0x958(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x958(%rbp)
testb $0x1, -0x77d(%rbp)
je 0x1cdd6
leaq -0x8f8(%rbp), %rdi
leaq 0x61956(%rip), %rsi     # 0x7e697
callq 0x74e0
movq %rax, -0xd30(%rbp)
jmp 0x1cd4f
movq -0xd30(%rbp), %rdi
leaq -0x770(%rbp), %rsi
callq 0x7450
movq %rax, -0xd38(%rbp)
jmp 0x1cd6b
movq -0xd38(%rbp), %rdi
leaq 0x61949(%rip), %rsi     # 0x7e6c2
callq 0x74e0
movq %rax, -0xd40(%rbp)
jmp 0x1cd87
movq -0xd40(%rbp), %rdi
movq -0x910(%rbp), %rsi
callq 0x70d0
movq %rax, -0xd48(%rbp)
jmp 0x1cda3
movq -0xd48(%rbp), %rdi
leaq 0x6193d(%rip), %rsi     # 0x7e6ee
callq 0x74e0
movq %rax, -0xd50(%rbp)
jmp 0x1cdbf
movq -0xd50(%rbp), %rdi
movq 0x931a3(%rip), %rsi     # 0xaff70
callq 0x7540
jmp 0x1cdd4
jmp 0x1ce0b
leaq -0x958(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1bd50
movss %xmm0, -0xd54(%rbp)
jmp 0x1cdef
movss -0xd54(%rbp), %xmm1
movss 0x613fd(%rip), %xmm0    # 0x7e1fc
subss %xmm1, %xmm0
movss %xmm0, -0x70c(%rbp)
movb $0x1, -0x77e(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x50, %eax
jne 0x1ce96
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x72, %eax
jne 0x1ce96
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1ce56
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
jne 0x1ce96
movq -0x958(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x958(%rbp)
leaq -0x958(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1bd50
movss %xmm0, -0xd58(%rbp)
jmp 0x1ce81
movss -0xd58(%rbp), %xmm0
movss %xmm0, -0x300(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x50, %eax
jne 0x1cf15
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x6d, %eax
jne 0x1cf15
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1ced5
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
jne 0x1cf15
movq -0x958(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x958(%rbp)
leaq -0x958(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1bd50
movss %xmm0, -0xd5c(%rbp)
jmp 0x1cf00
movss -0xd5c(%rbp), %xmm0
movss %xmm0, -0x2fc(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x50, %eax
jne 0x1cf94
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x73, %eax
jne 0x1cf94
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1cf54
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
jne 0x1cf94
movq -0x958(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x958(%rbp)
leaq -0x958(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1bd50
movss %xmm0, -0xd60(%rbp)
jmp 0x1cf7f
movss -0xd60(%rbp), %xmm0
movss %xmm0, -0x2f8(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x50, %eax
jne 0x1d013
movq -0x958(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x63, %eax
jne 0x1d013
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x20, %eax
je 0x1cfd3
movq -0x958(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x9, %eax
jne 0x1d013
movq -0x958(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x958(%rbp)
leaq -0x958(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1bd50
movss %xmm0, -0xd64(%rbp)
jmp 0x1cffe
movss -0xd64(%rbp), %xmm0
movss %xmm0, -0x2f4(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x616d8(%rip), %rsi     # 0x7e6f9
movl $0x3, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d093
movq -0x958(%rbp), %rax
movsbl 0x3(%rax), %eax
cmpl $0x20, %eax
je 0x1d053
movq -0x958(%rbp), %rax
movsbl 0x3(%rax), %eax
cmpl $0x9, %eax
jne 0x1d093
movq -0x958(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x958(%rbp)
leaq -0x958(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1bd50
movss %xmm0, -0xd68(%rbp)
jmp 0x1d07e
movss -0xd68(%rbp), %xmm0
movss %xmm0, -0x2f0(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x6165c(%rip), %rsi     # 0x7e6fd
movl $0x5, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d113
movq -0x958(%rbp), %rax
movsbl 0x5(%rax), %eax
cmpl $0x20, %eax
je 0x1d0d3
movq -0x958(%rbp), %rax
movsbl 0x5(%rax), %eax
cmpl $0x9, %eax
jne 0x1d113
movq -0x958(%rbp), %rax
addq $0x6, %rax
movq %rax, -0x958(%rbp)
leaq -0x958(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1bd50
movss %xmm0, -0xd6c(%rbp)
jmp 0x1d0fe
movss -0xd6c(%rbp), %xmm0
movss %xmm0, -0x2ec(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x615e2(%rip), %rsi     # 0x7e703
movl $0x6, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d193
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x20, %eax
je 0x1d153
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x9, %eax
jne 0x1d193
movq -0x958(%rbp), %rax
addq $0x7, %rax
movq %rax, -0x958(%rbp)
leaq -0x958(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1bd50
movss %xmm0, -0xd70(%rbp)
jmp 0x1d17e
movss -0xd70(%rbp), %xmm0
movss %xmm0, -0x2e8(%rbp)
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x61569(%rip), %rsi     # 0x7e70a
movl $0x6, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d206
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x20, %eax
je 0x1d1d3
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x9, %eax
jne 0x1d206
movq -0x958(%rbp), %rax
addq $0x7, %rax
movq %rax, -0x958(%rbp)
leaq -0x700(%rbp), %rdi
leaq -0x600(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d201
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x614fd(%rip), %rsi     # 0x7e711
movl $0x6, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d279
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x20, %eax
je 0x1d246
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x9, %eax
jne 0x1d279
movq -0x958(%rbp), %rax
addq $0x7, %rax
movq %rax, -0x958(%rbp)
leaq -0x6e0(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d274
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x61491(%rip), %rsi     # 0x7e718
movl $0x6, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d2ec
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x20, %eax
je 0x1d2b9
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x9, %eax
jne 0x1d2ec
movq -0x958(%rbp), %rax
addq $0x7, %rax
movq %rax, -0x958(%rbp)
leaq -0x6c0(%rbp), %rdi
leaq -0x540(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d2e7
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x61425(%rip), %rsi     # 0x7e71f
movl $0x6, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d35f
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x20, %eax
je 0x1d32c
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x9, %eax
jne 0x1d35f
movq -0x958(%rbp), %rax
addq $0x7, %rax
movq %rax, -0x958(%rbp)
leaq -0x6a0(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d35a
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x613b9(%rip), %rsi     # 0x7e726
movl $0x8, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d3d2
movq -0x958(%rbp), %rax
movsbl 0x8(%rax), %eax
cmpl $0x20, %eax
je 0x1d39f
movq -0x958(%rbp), %rax
movsbl 0x8(%rax), %eax
cmpl $0x9, %eax
jne 0x1d3d2
movq -0x958(%rbp), %rax
addq $0x9, %rax
movq %rax, -0x958(%rbp)
leaq -0x680(%rbp), %rdi
leaq -0x480(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d3cd
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x6134f(%rip), %rsi     # 0x7e72f
movl $0x8, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d445
movq -0x958(%rbp), %rax
movsbl 0x8(%rax), %eax
cmpl $0x20, %eax
je 0x1d412
movq -0x958(%rbp), %rax
movsbl 0x8(%rax), %eax
cmpl $0x9, %eax
jne 0x1d445
movq -0x958(%rbp), %rax
addq $0x9, %rax
movq %rax, -0x958(%rbp)
leaq -0x680(%rbp), %rdi
leaq -0x480(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d440
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x612d7(%rip), %rsi     # 0x7e72a
movl $0x4, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d4b8
movq -0x958(%rbp), %rax
movsbl 0x4(%rax), %eax
cmpl $0x20, %eax
je 0x1d485
movq -0x958(%rbp), %rax
movsbl 0x4(%rax), %eax
cmpl $0x9, %eax
jne 0x1d4b8
movq -0x958(%rbp), %rax
addq $0x5, %rax
movq %rax, -0x958(%rbp)
leaq -0x680(%rbp), %rdi
leaq -0x480(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d4b3
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x61272(%rip), %rsi     # 0x7e738
movl $0x5, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d540
movq -0x958(%rbp), %rax
movsbl 0x5(%rax), %eax
cmpl $0x20, %eax
je 0x1d4f8
movq -0x958(%rbp), %rax
movsbl 0x5(%rax), %eax
cmpl $0x9, %eax
jne 0x1d540
movq -0x958(%rbp), %rax
addq $0x6, %rax
movq %rax, -0x958(%rbp)
movq -0x958(%rbp), %rsi
leaq -0x640(%rbp), %rdi
callq 0x7670
jmp 0x1d51f
leaq -0x640(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d53b
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x611f0(%rip), %rsi     # 0x7e73e
movl $0x4, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d5b3
movq -0x958(%rbp), %rax
movsbl 0x4(%rax), %eax
cmpl $0x20, %eax
je 0x1d580
movq -0x958(%rbp), %rax
movsbl 0x4(%rax), %eax
cmpl $0x9, %eax
jne 0x1d5b3
movq -0x958(%rbp), %rax
addq $0x5, %rax
movq %rax, -0x958(%rbp)
leaq -0x660(%rbp), %rdi
leaq -0x420(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d5ae
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x61182(%rip), %rsi     # 0x7e743
movl $0x4, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d626
movq -0x958(%rbp), %rax
movsbl 0x4(%rax), %eax
cmpl $0x20, %eax
je 0x1d5f3
movq -0x958(%rbp), %rax
movsbl 0x4(%rax), %eax
cmpl $0x9, %eax
jne 0x1d626
movq -0x958(%rbp), %rax
addq $0x5, %rax
movq %rax, -0x958(%rbp)
leaq -0x620(%rbp), %rdi
leaq -0x360(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d621
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x61114(%rip), %rsi     # 0x7e748
movl $0x6, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d699
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x20, %eax
je 0x1d666
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x9, %eax
jne 0x1d699
movq -0x958(%rbp), %rax
addq $0x7, %rax
movq %rax, -0x958(%rbp)
leaq -0x2e0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d694
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x610a8(%rip), %rsi     # 0x7e74f
movl $0x6, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d70c
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x20, %eax
je 0x1d6d9
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x9, %eax
jne 0x1d70c
movq -0x958(%rbp), %rax
addq $0x7, %rax
movq %rax, -0x958(%rbp)
leaq -0x2c0(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d707
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x6103c(%rip), %rsi     # 0x7e756
movl $0x6, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d77f
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x20, %eax
je 0x1d74c
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x9, %eax
jne 0x1d77f
movq -0x958(%rbp), %rax
addq $0x7, %rax
movq %rax, -0x958(%rbp)
leaq -0x2a0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d77a
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x60fd0(%rip), %rsi     # 0x7e75d
movl $0x6, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d7f2
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x20, %eax
je 0x1d7bf
movq -0x958(%rbp), %rax
movsbl 0x6(%rax), %eax
cmpl $0x9, %eax
jne 0x1d7f2
movq -0x958(%rbp), %rax
addq $0x7, %rax
movq %rax, -0x958(%rbp)
leaq -0x280(%rbp), %rdi
leaq -0x120(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d7ed
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
leaq 0x60f64(%rip), %rsi     # 0x7e764
movl $0x4, %edx
callq 0x7240
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1d865
movq -0x958(%rbp), %rax
movsbl 0x4(%rax), %eax
cmpl $0x20, %eax
je 0x1d832
movq -0x958(%rbp), %rax
movsbl 0x4(%rax), %eax
cmpl $0x9, %eax
jne 0x1d865
movq -0x958(%rbp), %rax
addq $0x5, %rax
movq %rax, -0x958(%rbp)
leaq -0x260(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
movq -0x958(%rbp), %rdx
callq 0x1b540
jmp 0x1d860
jmp 0x1c1f3
movq -0x958(%rbp), %rdi
movl $0x20, %esi
callq 0x7150
movq %rax, -0xb88(%rbp)
cmpq $0x0, -0xb88(%rbp)
jne 0x1d89f
movq -0x958(%rbp), %rdi
movl $0x9, %esi
callq 0x7150
movq %rax, -0xb88(%rbp)
cmpq $0x0, -0xb88(%rbp)
je 0x1da8d
movq -0xb88(%rbp), %rax
movq -0x958(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0xb90(%rbp)
movq -0x958(%rbp), %rax
movq %rax, -0xd88(%rbp)
movq -0xb90(%rbp), %rax
movq %rax, -0xd80(%rbp)
leaq -0xbb1(%rbp), %rdi
movq %rdi, -0xd78(%rbp)
callq 0x7870
movq -0xd88(%rbp), %rsi
movq -0xd80(%rbp), %rdx
movq -0xd78(%rbp), %rcx
leaq -0xbb0(%rbp), %rdi
callq 0x75b0
jmp 0x1d917
leaq -0xbb1(%rbp), %rdi
callq 0x7560
movq -0xb88(%rbp), %rax
incq %rax
movq %rax, -0xd98(%rbp)
leaq -0xbd9(%rbp), %rdi
movq %rdi, -0xd90(%rbp)
callq 0x7870
movq -0xd98(%rbp), %rsi
movq -0xd90(%rbp), %rdx
leaq -0xbd8(%rbp), %rdi
callq 0x2b020
jmp 0x1d963
leaq -0xbd9(%rbp), %rdi
callq 0x7560
leaq -0x58(%rbp), %rax
movq %rax, -0xda0(%rbp)
leaq -0xc20(%rbp), %rdi
leaq -0xbb0(%rbp), %rsi
leaq -0xbd8(%rbp), %rdx
callq 0x2b420
jmp 0x1d996
movq -0xda0(%rbp), %rdi
leaq -0xc20(%rbp), %rsi
callq 0x2b3e0
movb %dl, -0xda9(%rbp)
movq %rax, -0xda8(%rbp)
jmp 0x1d9b8
movb -0xda9(%rbp), %al
movq -0xda8(%rbp), %rcx
movq %rcx, -0xc30(%rbp)
movb %al, -0xc28(%rbp)
leaq -0xc20(%rbp), %rdi
callq 0x2b480
leaq -0xbd8(%rbp), %rdi
callq 0x72e0
leaq -0xbb0(%rbp), %rdi
callq 0x72e0
jmp 0x1da8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x778(%rbp)
movl %eax, -0x77c(%rbp)
leaq -0xbb1(%rbp), %rdi
callq 0x7560
jmp 0x1dba9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x778(%rbp)
movl %eax, -0x77c(%rbp)
leaq -0xbd9(%rbp), %rdi
callq 0x7560
jmp 0x1da7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x778(%rbp)
movl %eax, -0x77c(%rbp)
jmp 0x1da70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x778(%rbp)
movl %eax, -0x77c(%rbp)
leaq -0xc20(%rbp), %rdi
callq 0x2b480
leaq -0xbd8(%rbp), %rdi
callq 0x72e0
leaq -0xbb0(%rbp), %rdi
callq 0x72e0
jmp 0x1dba9
jmp 0x1c1f3
movq -0x8(%rbp), %rax
movq %rax, -0xdb8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2b2e0
movl %eax, -0xc5c(%rbp)
leaq -0xc58(%rbp), %rdi
leaq -0x770(%rbp), %rsi
leaq -0xc5c(%rbp), %rdx
callq 0x2b310
jmp 0x1dac8
movq -0xdb8(%rbp), %rdi
leaq -0xc58(%rbp), %rsi
callq 0x2b2a0
movb %dl, -0xdc1(%rbp)
movq %rax, -0xdc0(%rbp)
jmp 0x1daea
movb -0xdc1(%rbp), %al
movq -0xdc0(%rbp), %rcx
movq %rcx, -0xc70(%rbp)
movb %al, -0xc68(%rbp)
leaq -0xc58(%rbp), %rdi
callq 0x2b350
movq -0x10(%rbp), %rdi
leaq -0x770(%rbp), %rsi
callq 0x2b370
jmp 0x1db22
cmpq $0x0, -0x20(%rbp)
je 0x1db7c
leaq -0xc90(%rbp), %rdi
leaq -0x908(%rbp), %rsi
callq 0x74d0
jmp 0x1db3e
movq -0x20(%rbp), %rdi
leaq -0xc90(%rbp), %rsi
callq 0x75f0
leaq -0xc90(%rbp), %rdi
callq 0x72e0
jmp 0x1db7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x778(%rbp)
movl %eax, -0x77c(%rbp)
leaq -0xc58(%rbp), %rdi
callq 0x2b350
jmp 0x1dba9
leaq -0x930(%rbp), %rdi
callq 0x72e0
leaq -0x908(%rbp), %rdi
callq 0x73b0
leaq -0x770(%rbp), %rdi
callq 0x2b4b0
addq $0xdd0, %rsp            # imm = 0xDD0
popq %rbp
retq
leaq -0x930(%rbp), %rdi
callq 0x72e0
leaq -0x908(%rbp), %rdi
callq 0x73b0
leaq -0x770(%rbp), %rdi
callq 0x2b4b0
movq -0x778(%rbp), %rdi
callq 0x7860
nopl (%rax)