// File: jstaursky[P]hutch/src/Sleigh/slghsymbol.cc
// Function: SymbolTable::restoreSymbolHeader(Element const*)
void SymbolTable::restoreSymbolHeader(const Element *el)

{				// Put the shell of a symbol in the symbol table
				// in order to allow recursion
  SleighSymbol *sym;
  if (el->getName() == "userop_head")
    sym = new UserOpSymbol();
  else if (el->getName() == "epsilon_sym_head")
    sym = new EpsilonSymbol();
  else if (el->getName() == "value_sym_head")
    sym = new ValueSymbol();
  else if (el->getName() == "valuemap_sym_head")
    sym = new ValueMapSymbol();
  else if (el->getName() == "name_sym_head")
    sym = new NameSymbol();
  else if (el->getName() == "varnode_sym_head")
    sym = new VarnodeSymbol();
  else if (el->getName() == "context_sym_head")
    sym = new ContextSymbol();
  else if (el->getName() == "varlist_sym_head")
    sym = new VarnodeListSymbol();
  else if (el->getName() == "operand_sym_head")
    sym = new OperandSymbol();
  else if (el->getName() == "start_sym_head")
    sym = new StartSymbol();
  else if (el->getName() == "end_sym_head")
    sym = new EndSymbol();
  else if (el->getName() == "subtable_sym_head")
    sym = new SubtableSymbol();
  else if (el->getName() == "flowdest_sym_head")
    sym = new FlowDestSymbol();
  else if (el->getName() == "flowref_sym_head")
    sym = new FlowRefSymbol();
  else
    throw SleighError("Bad symbol xml");
  sym->restoreXmlHeader(el);	// Restore basic elements of symbol
  symbollist[sym->id] = sym;	// Put the basic symbol in the table
  table[sym->scopeid]->addSymbol(sym); // to allow recursion
}

// Assembly:
subq $0xe8, %rsp
movq %rdi, 0xe0(%rsp)
movq %rsi, 0xd8(%rsp)
movq 0xe0(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a67e(%rip), %rsi     # 0x188fcc
callq 0xe30f0
testb $0x1, %al
jne 0x13e959
jmp 0x13e9b8
movl $0x38, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x88(%rsp)
callq 0xd1d50
jmp 0x13e978
movq 0x88(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0cf
movq 0x88(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x38, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a617(%rip), %rsi     # 0x188fe6
callq 0xe30f0
testb $0x1, %al
jne 0x13e9da
jmp 0x13ea39
movl $0x40, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x80(%rsp)
callq 0xd87b0
jmp 0x13e9f9
movq 0x80(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0cd
movq 0x80(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x40, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a5c5(%rip), %rsi     # 0x189015
callq 0xe30f0
testb $0x1, %al
jne 0x13ea5b
jmp 0x13eab1
movl $0x38, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x78(%rsp)
callq 0xdbea0
jmp 0x13ea77
movq 0x78(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0cb
movq 0x78(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x38, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a5b3(%rip), %rsi     # 0x18907b
callq 0xe30f0
testb $0x1, %al
jne 0x13ead3
jmp 0x13eb29
movl $0x58, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x70(%rsp)
callq 0xdeed0
jmp 0x13eaef
movq 0x70(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0c9
movq 0x70(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x58, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a5ab(%rip), %rsi     # 0x1890eb
callq 0xe30f0
testb $0x1, %al
jne 0x13eb4b
jmp 0x13eba1
movl $0x58, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x68(%rsp)
callq 0xdb630
jmp 0x13eb67
movq 0x68(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0c7
movq 0x68(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x58, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a57c(%rip), %rsi     # 0x189134
callq 0xe30f0
testb $0x1, %al
jne 0x13ebc3
jmp 0x13ec19
movl $0x58, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x60(%rsp)
callq 0xdf4f0
jmp 0x13ebdf
movq 0x60(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0c5
movq 0x60(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x58, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a554(%rip), %rsi     # 0x189184
callq 0xe30f0
testb $0x1, %al
jne 0x13ec3b
jmp 0x13ec91
movl $0x50, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x58(%rsp)
callq 0xd6310
jmp 0x13ec57
movq 0x58(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0c3
movq 0x58(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x50, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a58c(%rip), %rsi     # 0x189234
callq 0xe30f0
testb $0x1, %al
jne 0x13ecb3
jmp 0x13ed09
movl $0x58, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x50(%rsp)
callq 0xd5150
jmp 0x13eccf
movq 0x50(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0c1
movq 0x50(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x58, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a58c(%rip), %rsi     # 0x1892ac
callq 0xe30f0
testb $0x1, %al
jne 0x13ed2b
jmp 0x13ed81
movl $0x60, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x48(%rsp)
callq 0xdce90
jmp 0x13ed47
movq 0x48(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0bf
movq 0x48(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x60, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a543(%rip), %rsi     # 0x1892db
callq 0xe30f0
testb $0x1, %al
jne 0x13eda3
jmp 0x13edf9
movl $0x40, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x40(%rsp)
callq 0xdfd20
jmp 0x13edbf
movq 0x40(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0bd
movq 0x40(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x40, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a4e4(%rip), %rsi     # 0x1892f4
callq 0xe30f0
testb $0x1, %al
jne 0x13ee1b
jmp 0x13ee71
movl $0x40, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x38(%rsp)
callq 0xcf680
jmp 0x13ee37
movq 0x38(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0bb
movq 0x38(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x40, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a64f(%rip), %rsi     # 0x1894d7
callq 0xe30f0
testb $0x1, %al
jne 0x13ee93
jmp 0x13eee9
movl $0x60, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x30(%rsp)
callq 0xe2600
jmp 0x13eeaf
movq 0x30(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0b9
movq 0x30(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x60, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a410(%rip), %rsi     # 0x189310
callq 0xe30f0
testb $0x1, %al
jne 0x13ef0b
jmp 0x13ef61
movl $0x38, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x28(%rsp)
callq 0xe26f0
jmp 0x13ef27
movq 0x28(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0b7
movq 0x28(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x38, %esi
callq 0xd8620
jmp 0x13f149
movq 0xd8(%rsp), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x4a3b8(%rip), %rsi     # 0x189330
callq 0xe30f0
testb $0x1, %al
jne 0x13ef83
jmp 0x13efd9
movl $0x38, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x20(%rsp)
callq 0xd2ee0
jmp 0x13ef9f
movq 0x20(%rsp), %rax
movq %rax, 0xd0(%rsp)
jmp 0x13f0b5
movq 0x20(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
movl $0x38, %esi
callq 0xd8620
jmp 0x13f149
movb $0x1, 0x9e(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0x10(%rsp)
leaq 0x9f(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xe0c80
movq 0x18(%rsp), %rdx
leaq 0x49f9b(%rip), %rsi     # 0x188fa9
leaq 0xa0(%rsp), %rdi
callq 0xe00a0
jmp 0x13f01d
movq 0x10(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0xd06e0
jmp 0x13f031
movq 0x10(%rsp), %rdi
movb $0x0, 0x9e(%rsp)
movq 0x88e23(%rip), %rsi     # 0x1c7e68
movq 0x889d4(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x13f156
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x13f08d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0xa0(%rsp), %rdi
callq 0xd4550
leaq 0x9f(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x9e(%rsp)
jne 0x13f0a6
jmp 0x13f0b0
movq 0x10(%rsp), %rdi
callq 0xd5400
jmp 0x13f149
jmp 0x13f0b7
jmp 0x13f0b9
jmp 0x13f0bb
jmp 0x13f0bd
jmp 0x13f0bf
jmp 0x13f0c1
jmp 0x13f0c3
jmp 0x13f0c5
jmp 0x13f0c7
jmp 0x13f0c9
jmp 0x13f0cb
jmp 0x13f0cd
jmp 0x13f0cf
movq 0xd0(%rsp), %rdi
movq 0xd8(%rsp), %rsi
callq 0xd4cd0
movq 0x90(%rsp), %rdi
movq 0xd0(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0xd0(%rsp), %rax
movl 0x28(%rax), %eax
movl %eax, %esi
callq 0xd7fa0
movq 0x8(%rsp), %rcx
movq 0x90(%rsp), %rdi
movq %rcx, (%rax)
addq $0x18, %rdi
movq 0xd0(%rsp), %rax
movl 0x2c(%rax), %eax
movl %eax, %esi
callq 0xe19d0
movq (%rax), %rdi
movq 0xd0(%rsp), %rsi
callq 0xde8d0
addq $0xe8, %rsp
retq
movq 0xc8(%rsp), %rdi
callq 0xe0be0
nopw %cs:(%rax,%rax)