// File: Kingsford-Group[P]ghost2/src/GHOST.cpp
// Function: readAlignment(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bmap readAlignment(string file)
{
  bmap result;
  ifstream fin(file);
  char c = fin.get();
  int alen = 0;
  int blen = 0;
  char a[128];
  char b[128];
  bool fillinga = true;
  while(fin.good()){
    if(c == '\n'){
      b[blen] = '\0';
      result.insert(bmap::value_type(string(a), string(b)));
      alen = blen = 0;
      fillinga = true;
    }
    else if(c == '\r'){}
    else if (c == '\t'){
      a[alen] = '\0';
      fillinga = false;
    }
    else if(fillinga) a[alen++] = c;
    else b[blen++] = c;
    c = fin.get();
  }
  return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x430, %rsp            # imm = 0x430
movq %rsi, -0x408(%rbp)
movq %rdi, -0x3f8(%rbp)
movq %rdi, %rax
movq %rax, -0x400(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb $0x0, -0x11(%rbp)
leaq -0x12(%rbp), %rdi
movq %rdi, -0x3f0(%rbp)
callq 0x299f0
movq -0x3f8(%rbp), %rdi
movq -0x3f0(%rbp), %rsi
callq 0x29a10
jmp 0x20be4
leaq -0x12(%rbp), %rdi
callq 0x29ac0
movq -0x408(%rbp), %rsi
leaq -0x230(%rbp), %rdi
movl $0x8, %edx
callq 0x10bd0
jmp 0x20c07
leaq -0x230(%rbp), %rdi
callq 0x10870
movl %eax, -0x40c(%rbp)
jmp 0x20c1b
movl -0x40c(%rbp), %eax
movb %al, -0x231(%rbp)
movl $0x0, -0x238(%rbp)
movl $0x0, -0x23c(%rbp)
movb $0x1, -0x341(%rbp)
movq -0x230(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x230(%rbp,%rax), %rdi
callq 0x10c60
movb %al, -0x40d(%rbp)
jmp 0x20c62
movb -0x40d(%rbp), %al
testb $0x1, %al
jne 0x20c71
jmp 0x20edd
movsbl -0x231(%rbp), %eax
cmpl $0xa, %eax
jne 0x20e35
movslq -0x23c(%rbp), %rax
movb $0x0, -0x340(%rbp,%rax)
leaq -0x3a9(%rbp), %rdi
movq %rdi, -0x418(%rbp)
callq 0x10ce0
movq -0x418(%rbp), %rdx
leaq -0x3a8(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x23400
jmp 0x20cbf
leaq -0x3d1(%rbp), %rdi
movq %rdi, -0x420(%rbp)
callq 0x10ce0
movq -0x420(%rbp), %rdx
leaq -0x3d0(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x23400
jmp 0x20cee
leaq -0x388(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
leaq -0x3d0(%rbp), %rdx
callq 0x28f40
jmp 0x20d0a
movq -0x3f8(%rbp), %rsi
leaq -0x3e8(%rbp), %rdi
leaq -0x388(%rbp), %rdx
callq 0x28e90
jmp 0x20d26
leaq -0x388(%rbp), %rdi
callq 0x28f70
leaq -0x3d0(%rbp), %rdi
callq 0x10460
leaq -0x3d1(%rbp), %rdi
callq 0x10770
leaq -0x3a8(%rbp), %rdi
callq 0x10460
leaq -0x3a9(%rbp), %rdi
callq 0x10770
movl $0x0, -0x23c(%rbp)
movl $0x0, -0x238(%rbp)
movb $0x1, -0x341(%rbp)
jmp 0x20eb8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x12(%rbp), %rdi
callq 0x29ac0
jmp 0x20f2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x20f1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x20ef5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x20e24
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x20e0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x20e00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x28f70
leaq -0x3d0(%rbp), %rdi
callq 0x10460
leaq -0x3d1(%rbp), %rdi
callq 0x10770
leaq -0x3a8(%rbp), %rdi
callq 0x10460
leaq -0x3a9(%rbp), %rdi
callq 0x10770
jmp 0x20ef5
movsbl -0x231(%rbp), %eax
cmpl $0xd, %eax
jne 0x20e43
jmp 0x20eb6
movsbl -0x231(%rbp), %eax
cmpl $0x9, %eax
jne 0x20e67
movslq -0x238(%rbp), %rax
movb $0x0, -0x2c0(%rbp,%rax)
movb $0x0, -0x341(%rbp)
jmp 0x20eb4
testb $0x1, -0x341(%rbp)
je 0x20e92
movb -0x231(%rbp), %cl
movl -0x238(%rbp), %eax
movl %eax, %edx
addl $0x1, %edx
movl %edx, -0x238(%rbp)
cltq
movb %cl, -0x2c0(%rbp,%rax)
jmp 0x20eb2
movb -0x231(%rbp), %cl
movl -0x23c(%rbp), %eax
movl %eax, %edx
addl $0x1, %edx
movl %edx, -0x23c(%rbp)
cltq
movb %cl, -0x340(%rbp,%rax)
jmp 0x20eb4
jmp 0x20eb6
jmp 0x20eb8
leaq -0x230(%rbp), %rdi
callq 0x10870
movl %eax, -0x424(%rbp)
jmp 0x20ecc
movl -0x424(%rbp), %eax
movb %al, -0x231(%rbp)
jmp 0x20c42
movb $0x1, -0x11(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x101b0
testb $0x1, -0x11(%rbp)
jne 0x20f0f
jmp 0x20f03
leaq -0x230(%rbp), %rdi
callq 0x101b0
jmp 0x20f1f
movq -0x3f8(%rbp), %rdi
callq 0x29ca0
movq -0x400(%rbp), %rax
addq $0x430, %rsp            # imm = 0x430
popq %rbp
retq
movq -0x3f8(%rbp), %rdi
callq 0x29ca0
movq -0x20(%rbp), %rdi
callq 0x10cc0
nopw %cs:(%rax,%rax)