// File: jstaursky[P]hutch/src/Sleigh/slghsymbol.cc
// Function: SubtableSymbol::buildPattern(std::ostream&)
TokenPattern *SubtableSymbol::buildPattern(ostream &s)

{
  if (pattern != (TokenPattern *)0) return pattern; // Already built

  errors = false;
  beingbuilt = true;
  pattern = new TokenPattern();
  if (construct.empty()) {
    s << "Error: There are no constructors in table: "+getName() << endl;
    errors = true;
    return pattern;
  }
  try {
    construct.front()->buildPattern(s);
  } catch(SleighError &err) {
    s << "Error: " << err.explain << ": for ";
    construct.front()->printInfo(s);
    s << endl;
    errors = true;
  }
  *pattern = *construct.front()->getPattern();
  for(int4 i=1;i<construct.size();++i) {
    try {
      construct[i]->buildPattern(s);
    } catch(SleighError &err) {
      s << "Error: " << err.explain << ": for ";
      construct[i]->printInfo(s);
      s << endl;
      errors = true;
    }
    *pattern = construct[i]->getPattern()->commonSubPattern(*pattern);
  }
  beingbuilt = false;
  return pattern;
}

// Assembly:
subq $0xe8, %rsp
movq %rdi, 0xd8(%rsp)
movq %rsi, 0xd0(%rsp)
movq 0xd8(%rsp), %rax
movq %rax, 0x58(%rsp)
cmpq $0x0, 0x30(%rax)
je 0x148d41
movq 0x58(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0xe0(%rsp)
jmp 0x149183
movq 0x58(%rsp), %rax
movb $0x0, 0x39(%rax)
movb $0x1, 0x38(%rax)
movl $0x28, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x50(%rsp)
callq 0xdc820
jmp 0x148d6a
movq 0x58(%rsp), %rdi
movq 0x50(%rsp), %rax
movq %rax, 0x30(%rdi)
addq $0x40, %rdi
callq 0xd78c0
testb $0x1, %al
jne 0x148d8a
jmp 0x148e5b
movq 0x58(%rsp), %rdi
movq 0xd0(%rsp), %rax
movq %rax, 0x38(%rsp)
callq 0xd1f90
movq %rax, %rdx
leaq 0x40744(%rip), %rsi     # 0x1894ef
leaq 0xa0(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xd7370
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0xd7350
movq %rax, 0x48(%rsp)
jmp 0x148dd3
movq 0x48(%rsp), %rdi
movq 0x7ece1(%rip), %rsi     # 0x1c7ac0
callq 0xd8a20
jmp 0x148de6
leaq 0xa0(%rsp), %rdi
callq 0xd4550
movq 0x58(%rsp), %rax
movb $0x1, 0x39(%rax)
movq 0x30(%rax), %rax
movq %rax, 0xe0(%rsp)
jmp 0x149183
movq 0x50(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x28, %esi
callq 0xd8620
jmp 0x149193
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0xa0(%rsp), %rdi
callq 0xd4550
jmp 0x149193
movq 0x58(%rsp), %rdi
addq $0x40, %rdi
callq 0xe2a10
movq (%rax), %rdi
movq 0xd0(%rsp), %rsi
callq 0xdd3b0
jmp 0x148e7b
jmp 0x148f48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl 0xc4(%rsp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x149193
movq 0xc8(%rsp), %rdi
callq 0xd1d20
movq %rax, 0x98(%rsp)
movq 0xd0(%rsp), %rdi
leaq 0x4064f(%rip), %rsi     # 0x18951b
callq 0xd8300
movq %rax, 0x30(%rsp)
jmp 0x148ed8
movq 0x30(%rsp), %rdi
movq 0x98(%rsp), %rsi
callq 0xd7350
movq %rax, 0x28(%rsp)
jmp 0x148ef1
movq 0x28(%rsp), %rdi
leaq 0x40626(%rip), %rsi     # 0x189523
callq 0xd8300
jmp 0x148f04
movq 0x58(%rsp), %rdi
addq $0x40, %rdi
callq 0xe2a10
movq (%rax), %rdi
movq 0xd0(%rsp), %rsi
callq 0xe1b60
jmp 0x148f24
movq 0xd0(%rsp), %rdi
movq 0x7eb8d(%rip), %rsi     # 0x1c7ac0
callq 0xd8a20
jmp 0x148f3a
movq 0x58(%rsp), %rax
movb $0x1, 0x39(%rax)
callq 0xdf2c0
movq 0x58(%rsp), %rdi
addq $0x40, %rdi
callq 0xe2a10
movq (%rax), %rdi
callq 0xd9d60
movq %rax, %rsi
movq 0x58(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0xdd160
movl $0x1, 0x94(%rsp)
movq 0x58(%rsp), %rdi
movslq 0x94(%rsp), %rax
movq %rax, 0x20(%rsp)
addq $0x40, %rdi
callq 0xd2520
movq %rax, %rcx
movq 0x20(%rsp), %rax
cmpq %rcx, %rax
jae 0x14916e
movq 0x58(%rsp), %rdi
addq $0x40, %rdi
movslq 0x94(%rsp), %rsi
callq 0xd2750
movq (%rax), %rdi
movq 0xd0(%rsp), %rsi
callq 0xdd3b0
jmp 0x148fce
jmp 0x1490c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
callq 0xdf2c0
jmp 0x148fee
jmp 0x149193
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl 0xc4(%rsp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x149193
movq 0xc8(%rsp), %rdi
callq 0xd1d20
movq %rax, 0x88(%rsp)
movq 0xd0(%rsp), %rdi
leaq 0x404dc(%rip), %rsi     # 0x18951b
callq 0xd8300
movq %rax, 0x18(%rsp)
jmp 0x14904b
movq 0x18(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0xd7350
movq %rax, 0x10(%rsp)
jmp 0x149064
movq 0x10(%rsp), %rdi
leaq 0x404b3(%rip), %rsi     # 0x189523
callq 0xd8300
jmp 0x149077
movq 0x58(%rsp), %rdi
addq $0x40, %rdi
movslq 0x94(%rsp), %rsi
callq 0xd2750
movq (%rax), %rdi
movq 0xd0(%rsp), %rsi
callq 0xe1b60
jmp 0x14909f
movq 0xd0(%rsp), %rdi
movq 0x7ea12(%rip), %rsi     # 0x1c7ac0
callq 0xd8a20
jmp 0x1490b5
movq 0x58(%rsp), %rax
movb $0x1, 0x39(%rax)
callq 0xdf2c0
movq 0x58(%rsp), %rdi
addq $0x40, %rdi
movslq 0x94(%rsp), %rsi
callq 0xd2750
movq (%rax), %rdi
callq 0xd9d60
movq %rax, %rsi
movq 0x58(%rsp), %rax
movq 0x30(%rax), %rdx
leaq 0x60(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xde1a0
movq 0x58(%rsp), %rax
movq 0x8(%rsp), %rsi
movq 0x30(%rax), %rdi
callq 0xdd160
jmp 0x149111
leaq 0x60(%rsp), %rdi
callq 0xd2580
movl 0x94(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x94(%rsp)
jmp 0x148f7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
callq 0xdf2c0
jmp 0x14914c
jmp 0x149193
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0x60(%rsp), %rdi
callq 0xd2580
jmp 0x149193
movq 0x58(%rsp), %rax
movb $0x0, 0x38(%rax)
movq 0x30(%rax), %rax
movq %rax, 0xe0(%rsp)
movq 0xe0(%rsp), %rax
addq $0xe8, %rsp
retq
movq 0xc8(%rsp), %rdi
callq 0xe0be0
movq %rax, %rdi
callq 0xe7140
nopl (%rax,%rax)