// File: Kingsford-Group[P]ghost2/src/gzReader.hpp
// Function: loadSigs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
spectramap loadSigs(string file)
{

  if(FILE *check = fopen(file.c_str(),"r")) {fclose(check);}
  else {std::cout << "file: " << file << " not found\n"; exit(0);}

  io::filtering_istream in;
  in.push(io::gzip_decompressor());
  in.push(io::file_descriptor_source(file));

  int numVerts = readInt(in);
  int numHops = readInt(in);

  spectramap map;

  for(int i=0; i < numVerts; i++)
  {
    vector<LevelInfo> levels;
    string vname = readString(in);
    for(int j=0; j < numHops; j++)
    {
      int l = readInt(in);
      int numnames = readInt(in);
      vector<string> vnames;
      vector<double> spectrum;
     
      for(int k=0; k < numnames; k++)
        vnames.push_back(readString(in));

      int spectrumSize = readInt(in);

      for(int k=0; k < spectrumSize; k++)
        spectrum.push_back(readDouble(in));

      double density = readDouble(in);
      LevelInfo m(vnames,spectrum,density,
                  ipsenMikhailovVector(&spectrum[0], spectrum.size(), .005));
      levels.push_back(m);
    }
    map[vname] = levels;
  }
  return map;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3e0, %rsp            # imm = 0x3E0
movq %rsi, -0x390(%rbp)
movq %rdi, %rax
movq -0x390(%rbp), %rdi
movq %rax, -0x388(%rbp)
movq %rax, %rcx
movq %rcx, -0x380(%rbp)
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
callq 0x102f0
movq %rax, %rdi
leaq 0xa78a5(%rip), %rsi     # 0xbf259
callq 0x10840
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x179cf
movq -0x18(%rbp), %rdi
callq 0x106d0
jmp 0x17a07
movq 0x1195c2(%rip), %rdi    # 0x130f98
leaq 0xa4d80(%rip), %rsi     # 0xbc75d
callq 0x106c0
movq -0x390(%rbp), %rsi
movq %rax, %rdi
callq 0x10600
movq %rax, %rdi
leaq 0xa4c19(%rip), %rsi     # 0xbc614
callq 0x106c0
xorl %edi, %edi
callq 0x10890
leaq -0x150(%rbp), %rdi
callq 0x26890
leaq -0x1f8(%rbp), %rdi
movl $0xf, %esi
movl $0x1000, %edx           # imm = 0x1000
callq 0x26970
jmp 0x17a2b
xorl %eax, %eax
movl %eax, %r8d
leaq -0x150(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x26920
jmp 0x17a4f
leaq -0x1f8(%rbp), %rdi
callq 0x26a80
movq -0x390(%rbp), %rsi
leaq -0x218(%rbp), %rdi
movl $0x8, %edx
callq 0x10de0
jmp 0x17a75
xorl %eax, %eax
movl %eax, %r8d
leaq -0x150(%rbp), %rdi
leaq -0x218(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x26ac0
jmp 0x17a99
leaq -0x218(%rbp), %rdi
callq 0x26b10
leaq -0x140(%rbp), %rdi
callq 0x17310
movl %eax, -0x394(%rbp)
jmp 0x17ab9
movl -0x394(%rbp), %eax
movl %eax, -0x21c(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x17310
movl %eax, -0x398(%rbp)
jmp 0x17ad9
movq -0x388(%rbp), %rdi
movl -0x398(%rbp), %eax
movl %eax, -0x220(%rbp)
movb $0x0, -0x221(%rbp)
callq 0x26b30
jmp 0x17afa
movl $0x0, -0x228(%rbp)
movl -0x228(%rbp), %eax
cmpl -0x21c(%rbp), %eax
jge 0x17fb9
leaq -0x240(%rbp), %rdi
callq 0x26bc0
leaq -0x140(%rbp), %rsi
leaq -0x260(%rbp), %rdi
callq 0x17400
jmp 0x17b37
movl $0x0, -0x264(%rbp)
movl -0x264(%rbp), %eax
cmpl -0x220(%rbp), %eax
jge 0x17f36
leaq -0x140(%rbp), %rdi
callq 0x17310
movl %eax, -0x39c(%rbp)
jmp 0x17b67
movl -0x39c(%rbp), %eax
movl %eax, -0x268(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x17310
movl %eax, -0x3a0(%rbp)
jmp 0x17b87
movl -0x3a0(%rbp), %eax
movl %eax, -0x26c(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x235d0
leaq -0x2a0(%rbp), %rdi
callq 0x251f0
movl $0x0, -0x2a4(%rbp)
movl -0x2a4(%rbp), %eax
cmpl -0x26c(%rbp), %eax
jge 0x17cd3
leaq -0x140(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x17400
jmp 0x17bdc
leaq -0x288(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x26be0
jmp 0x17bf1
leaq -0x2c8(%rbp), %rdi
callq 0x10460
movl -0x2a4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2a4(%rbp)
jmp 0x17bb5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x17ff1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x26a80
jmp 0x17ff1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x26b10
jmp 0x17ff1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x17f9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x17f93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x17f1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x10460
jmp 0x17f1c
leaq -0x140(%rbp), %rdi
callq 0x17310
movl %eax, -0x3a4(%rbp)
jmp 0x17ce7
movl -0x3a4(%rbp), %eax
movl %eax, -0x2cc(%rbp)
movl $0x0, -0x2d0(%rbp)
movl -0x2d0(%rbp), %eax
cmpl -0x2cc(%rbp), %eax
jge 0x17d59
leaq -0x140(%rbp), %rdi
callq 0x17380
movsd %xmm0, -0x3b0(%rbp)
jmp 0x17d21
movsd -0x3b0(%rbp), %xmm0
movsd %xmm0, -0x2d8(%rbp)
leaq -0x2a0(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x26c10
jmp 0x17d46
jmp 0x17d48
movl -0x2d0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2d0(%rbp)
jmp 0x17cfd
leaq -0x140(%rbp), %rdi
callq 0x17380
movsd %xmm0, -0x3b8(%rbp)
jmp 0x17d6f
movsd -0x3b8(%rbp), %xmm0
movsd %xmm0, -0x2e0(%rbp)
leaq -0x348(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x26c40
jmp 0x17d94
leaq -0x360(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x26d30
jmp 0x17da9
movsd -0x2e0(%rbp), %xmm0
movsd %xmm0, -0x3d0(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x2a0(%rbp), %rdi
movq %rdi, -0x3c8(%rbp)
callq 0x25500
movq -0x3c8(%rbp), %rdi
movq %rax, -0x3c0(%rbp)
callq 0x254e0
movq -0x3c0(%rbp), %rsi
movl %eax, %edx
leaq -0x378(%rbp), %rdi
movsd 0xa42bd(%rip), %xmm0    # 0xbc0b8
callq 0x17700
jmp 0x17e02
movsd -0x3d0(%rbp), %xmm0
leaq -0x330(%rbp), %rdi
leaq -0x348(%rbp), %rsi
leaq -0x360(%rbp), %rdx
leaq -0x378(%rbp), %rcx
callq 0x26e20
jmp 0x17e2d
leaq -0x378(%rbp), %rdi
callq 0x25480
leaq -0x360(%rbp), %rdi
callq 0x25480
leaq -0x348(%rbp), %rdi
callq 0x236d0
leaq -0x240(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x26ed0
jmp 0x17e66
leaq -0x330(%rbp), %rdi
callq 0x26f40
leaq -0x2a0(%rbp), %rdi
callq 0x25480
leaq -0x288(%rbp), %rdi
callq 0x236d0
movl -0x264(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x264(%rbp)
jmp 0x17b41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x17ef0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
jmp 0x17ee4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x25480
leaq -0x360(%rbp), %rdi
callq 0x25480
leaq -0x348(%rbp), %rdi
callq 0x236d0
jmp 0x17f1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x200(%rbp)
movl %eax, -0x204(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x26f40
leaq -0x2a0(%rbp), %rdi
callq 0x25480
leaq -0x288(%rbp), %rdi
callq 0x236d0
jmp 0x17f93
movq -0x388(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x26f80
movq %rax, -0x3d8(%rbp)
jmp 0x17f52
movq -0x3d8(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x26fd0
jmp 0x17f67
leaq -0x260(%rbp), %rdi
callq 0x10460
leaq -0x240(%rbp), %rdi
callq 0x27220
movl -0x228(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x228(%rbp)
jmp 0x17b04
leaq -0x260(%rbp), %rdi
callq 0x10460
leaq -0x240(%rbp), %rdi
callq 0x27220
movq -0x388(%rbp), %rdi
callq 0x27280
jmp 0x17ff1
movb $0x1, -0x221(%rbp)
testb $0x1, -0x221(%rbp)
jne 0x17fd5
movq -0x388(%rbp), %rdi
callq 0x27280
leaq -0x150(%rbp), %rdi
callq 0x272a0
movq -0x380(%rbp), %rax
addq $0x3e0, %rsp            # imm = 0x3E0
popq %rbp
retq
leaq -0x150(%rbp), %rdi
callq 0x272a0
movq -0x200(%rbp), %rdi
callq 0x10cc0
nopl (%rax)