// File: ncbi[P]amr/stx/stxtyper.cpp
// Function: (anonymous namespace)::Operon::getStxType[abi:cxx11](bool) const
string getStxType (bool verboseP) const
    { if (! al2)
        return al1->stxType;
      if (al1->stxClass != al2->stxClass)
      {
      //return al1->stxClass + fusion_infix + al2->stxClass;  // order alphabetically
        if (al1->stxSuperClass == al2->stxSuperClass)
          return al1->stxSuperClass;  
        return noString;
      }
      if (al1->stxClass != "2")
        return al1->stxType; 
      const string a (getA () -> refMap (319 + 1));
      const string b (getB () -> refMap ( 89 + 1));
      if (   (a [312] == 'F' || a [312] == 'S')
          && (a [318] == 'K' || a [318] == 'E')
          && b [34] == 'D'
         )
        return "2a";
      if (    a [312] == 'F'
          && (a [318] == 'K' || a [318] == 'E')
          && b [34] == 'N'
         )
        return "2c";
      if (   a [312] == 'S'
          && a [318] == 'E'
          && b [34] == 'N'
         )
        return "2d";
      if (verboseP)
        return string ("2 ") + a [312] + a [318] + b [34];
      return "2";
    }

// Assembly:
subq $0x128, %rsp            # imm = 0x128
movq %rdi, 0x38(%rsp)
movb %dl, %al
movq %rdi, %rcx
movq %rcx, 0x40(%rsp)
movq %rdi, 0x120(%rsp)
movq %rsi, 0x118(%rsp)
andb $0x1, %al
movb %al, 0x117(%rsp)
movq 0x118(%rsp), %rax
movq %rax, 0x48(%rsp)
cmpq $0x0, 0x8(%rax)
jne 0x2bd01
movq 0x38(%rsp), %rdi
movq 0x48(%rsp), %rax
movq (%rax), %rsi
addq $0xe0, %rsi
callq 0xc320
jmp 0x2c2bc
movq 0x48(%rsp), %rax
movq (%rax), %rdi
addq $0x100, %rdi            # imm = 0x100
movq 0x8(%rax), %rsi
addq $0x100, %rsi            # imm = 0x100
callq 0x37c60
testb $0x1, %al
jne 0x2bd26
jmp 0x2bd7f
movq 0x48(%rsp), %rax
movq (%rax), %rdi
addq $0x120, %rdi            # imm = 0x120
movq 0x8(%rax), %rsi
addq $0x120, %rsi            # imm = 0x120
callq 0x32e20
testb $0x1, %al
jne 0x2bd4b
jmp 0x2bd69
movq 0x38(%rsp), %rdi
movq 0x48(%rsp), %rax
movq (%rax), %rsi
addq $0x120, %rsi            # imm = 0x120
callq 0xc320
jmp 0x2c2bc
movq 0x38(%rsp), %rdi
leaq 0xd1f0b(%rip), %rsi     # 0xfdc80
callq 0xc320
jmp 0x2c2bc
movq 0x48(%rsp), %rax
movq (%rax), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x9963c(%rip), %rsi     # 0xc53d1
callq 0x37d20
testb $0x1, %al
jne 0x2bda0
jmp 0x2bdbe
movq 0x38(%rsp), %rdi
movq 0x48(%rsp), %rax
movq (%rax), %rsi
addq $0xe0, %rsi
callq 0xc320
jmp 0x2c2bc
movq 0x48(%rsp), %rdi
callq 0x2c5b0
movq %rax, %rsi
leaq 0xf0(%rsp), %rdi
movl $0x140, %edx            # imm = 0x140
callq 0x2c630
movq 0x48(%rsp), %rdi
callq 0x2c5f0
movq %rax, 0x30(%rsp)
jmp 0x2bdee
movq 0x30(%rsp), %rsi
leaq 0xd0(%rsp), %rdi
movl $0x5a, %edx
callq 0x2c630
jmp 0x2be07
leaq 0xf0(%rsp), %rdi
movl $0x138, %esi            # imm = 0x138
callq 0xc7b0
movsbl (%rax), %eax
cmpl $0x46, %eax
je 0x2be3f
leaq 0xf0(%rsp), %rdi
movl $0x138, %esi            # imm = 0x138
callq 0xc7b0
movsbl (%rax), %eax
cmpl $0x53, %eax
jne 0x2bf1b
leaq 0xf0(%rsp), %rdi
movl $0x13e, %esi            # imm = 0x13E
callq 0xc7b0
movsbl (%rax), %eax
cmpl $0x4b, %eax
je 0x2be77
leaq 0xf0(%rsp), %rdi
movl $0x13e, %esi            # imm = 0x13E
callq 0xc7b0
movsbl (%rax), %eax
cmpl $0x45, %eax
jne 0x2bf1b
leaq 0xd0(%rsp), %rdi
movl $0x22, %esi
callq 0xc7b0
movsbl (%rax), %eax
cmpl $0x44, %eax
jne 0x2bf1b
leaq 0xc3(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0xccc0
movq 0x38(%rsp), %rdi
movq 0x28(%rsp), %rdx
leaq 0x98b88(%rip), %rsi     # 0xc4a40
callq 0x2efd0
jmp 0x2bebf
leaq 0xc3(%rsp), %rdi
callq 0xc780
movl $0x1, 0xbc(%rsp)
jmp 0x2c284
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x2c2ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0xc3(%rsp), %rdi
callq 0xc780
jmp 0x2c2a0
leaq 0xf0(%rsp), %rdi
movl $0x138, %esi            # imm = 0x138
callq 0xc7b0
movsbl (%rax), %eax
cmpl $0x46, %eax
jne 0x2bff8
leaq 0xf0(%rsp), %rdi
movl $0x13e, %esi            # imm = 0x13E
callq 0xc7b0
movsbl (%rax), %eax
cmpl $0x4b, %eax
je 0x2bf71
leaq 0xf0(%rsp), %rdi
movl $0x13e, %esi            # imm = 0x13E
callq 0xc7b0
movsbl (%rax), %eax
cmpl $0x45, %eax
jne 0x2bff8
leaq 0xd0(%rsp), %rdi
movl $0x22, %esi
callq 0xc7b0
movsbl (%rax), %eax
cmpl $0x4e, %eax
jne 0x2bff8
leaq 0xbb(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xccc0
movq 0x38(%rsp), %rdi
movq 0x20(%rsp), %rdx
leaq 0x98a95(%rip), %rsi     # 0xc4a43
callq 0x2efd0
jmp 0x2bfb5
leaq 0xbb(%rsp), %rdi
callq 0xc780
movl $0x1, 0xbc(%rsp)
jmp 0x2c284
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0xbb(%rsp), %rdi
callq 0xc780
jmp 0x2c2a0
leaq 0xf0(%rsp), %rdi
movl $0x138, %esi            # imm = 0x138
callq 0xc7b0
movsbl (%rax), %eax
cmpl $0x53, %eax
jne 0x2c0bb
leaq 0xf0(%rsp), %rdi
movl $0x13e, %esi            # imm = 0x13E
callq 0xc7b0
movsbl (%rax), %eax
cmpl $0x45, %eax
jne 0x2c0bb
leaq 0xd0(%rsp), %rdi
movl $0x22, %esi
callq 0xc7b0
movsbl (%rax), %eax
cmpl $0x4e, %eax
jne 0x2c0bb
leaq 0xba(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xccc0
movq 0x38(%rsp), %rdi
movq 0x18(%rsp), %rdx
leaq 0x989d5(%rip), %rsi     # 0xc4a46
callq 0x2efd0
jmp 0x2c078
leaq 0xba(%rsp), %rdi
callq 0xc780
movl $0x1, 0xbc(%rsp)
jmp 0x2c284
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0xba(%rsp), %rdi
callq 0xc780
jmp 0x2c2a0
testb $0x1, 0x117(%rsp)
je 0x2c226
leaq 0x57(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xccc0
movq 0x10(%rsp), %rdx
leaq 0x992f4(%rip), %rsi     # 0xc53d8
leaq 0x58(%rsp), %rdi
callq 0x2efd0
jmp 0x2c0f0
leaq 0xf0(%rsp), %rdi
movl $0x138, %esi            # imm = 0x138
callq 0xc7b0
movsbl (%rax), %edx
leaq 0x78(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x37d50
jmp 0x2c116
leaq 0xf0(%rsp), %rdi
movl $0x13e, %esi            # imm = 0x13E
callq 0xc7b0
movsbl (%rax), %edx
leaq 0x98(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x37d50
jmp 0x2c13f
leaq 0xd0(%rsp), %rdi
movl $0x22, %esi
callq 0xc7b0
movq 0x38(%rsp), %rdi
movsbl (%rax), %edx
leaq 0x98(%rsp), %rsi
callq 0x37d50
jmp 0x2c168
leaq 0x98(%rsp), %rdi
callq 0xce58
leaq 0x78(%rsp), %rdi
callq 0xce58
leaq 0x58(%rsp), %rdi
callq 0xce58
leaq 0x57(%rsp), %rdi
callq 0xc780
movl $0x1, 0xbc(%rsp)
jmp 0x2c284
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x2c21a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x2c210
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x2c206
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0x98(%rsp), %rdi
callq 0xce58
leaq 0x78(%rsp), %rdi
callq 0xce58
leaq 0x58(%rsp), %rdi
callq 0xce58
leaq 0x57(%rsp), %rdi
callq 0xc780
jmp 0x2c2a0
leaq 0x56(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xccc0
movq 0x38(%rsp), %rdi
movq 0x8(%rsp), %rdx
leaq 0x9918b(%rip), %rsi     # 0xc53d1
callq 0x2efd0
jmp 0x2c24d
leaq 0x56(%rsp), %rdi
callq 0xc780
movl $0x1, 0xbc(%rsp)
jmp 0x2c284
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0x56(%rsp), %rdi
callq 0xc780
jmp 0x2c2a0
leaq 0xd0(%rsp), %rdi
callq 0xce58
leaq 0xf0(%rsp), %rdi
callq 0xce58
jmp 0x2c2bc
leaq 0xd0(%rsp), %rdi
callq 0xce58
leaq 0xf0(%rsp), %rdi
callq 0xce58
jmp 0x2c2c9
movq 0x40(%rsp), %rax
addq $0x128, %rsp            # imm = 0x128
retq
movq 0xc8(%rsp), %rdi
callq 0xccb0
nopw %cs:(%rax,%rax)