// File: jstaursky[P]hutch/src/Sleigh/slghsymbol.cc
// Function: OperandSymbol::restoreXml(Element const*, SleighBase*)
void OperandSymbol::restoreXml(const Element *el,SleighBase *trans)

{
  defexp = (PatternExpression *)0;
  triple = (TripleSymbol *)0;
  flags = 0;
  {
    istringstream s(el->getAttributeValue("index"));
    s.unsetf(ios::dec | ios::hex | ios::oct);
    s >> hand;
  }
  {
    istringstream s(el->getAttributeValue("off"));
    s.unsetf(ios::dec | ios::hex | ios::oct);
    s >> reloffset;
  }
  {
    istringstream s(el->getAttributeValue("base"));
    s.unsetf(ios::dec | ios::hex | ios::oct);
    s >> offsetbase;
  }
  {
    istringstream s(el->getAttributeValue("minlen"));
    s.unsetf(ios::dec | ios::hex | ios::oct);
    s >> minimumlength;
  }
  for(int4 i=0;i<el->getNumAttributes();++i) {
    if (el->getAttributeName(i) == "subsym") {
      uintm id;
      istringstream s(el->getAttributeValue(i));
      s.unsetf(ios::dec | ios::hex | ios::oct);
      s >> id;
      triple = (TripleSymbol *)trans->findSymbol(id);
    }
    else if (el->getAttributeName(i) == "code") {
      if (xml_readbool(el->getAttributeValue(i)))
	flags |= code_address;
    }
  }
  const List &list(el->getChildren());
  List::const_iterator iter;
  iter = list.begin();
  localexp = (OperandValue *)PatternExpression::restoreExpression(*iter,trans);
  localexp->layClaim();
  ++iter;
  if (iter != list.end()) {
    defexp = PatternExpression::restoreExpression(*iter,trans);
    defexp->layClaim();
  }
}

// Assembly:
subq $0x958, %rsp            # imm = 0x958
movq %rdi, 0x950(%rsp)
movq %rsi, 0x948(%rsp)
movq %rdx, 0x940(%rsp)
movq 0x950(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq $0x0, 0x50(%rax)
movq $0x0, 0x48(%rax)
movl $0x0, 0x58(%rax)
movq 0x948(%rsp), %rax
movq %rax, 0xd8(%rsp)
leaq 0x79f(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0xe0c80
movq 0xe0(%rsp), %rdx
leaq 0x43bcc(%rip), %rsi     # 0x1877a6
leaq 0x7a0(%rsp), %rdi
callq 0xe00a0
jmp 0x143be9
movq 0xd8(%rsp), %rdi
leaq 0x7a0(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0xc8(%rsp)
jmp 0x143c08
movq 0xc8(%rsp), %rsi
leaq 0x7c0(%rsp), %rdi
movl $0x8, %edx
callq 0xdfcc0
jmp 0x143c24
leaq 0x7a0(%rsp), %rdi
callq 0xd4550
leaq 0x79f(%rsp), %rdi
callq 0xd8ec0
movq 0x7c0(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x7c0(%rsp,%rax), %rax
movq %rax, 0xb8(%rsp)
movl $0x2, %edi
movl $0x8, %esi
callq 0xe0e70
movl %eax, 0xc4(%rsp)
jmp 0x143c72
movl 0xc4(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0xb4(%rsp)
jmp 0x143c8c
movl 0xb4(%rsp), %esi
movq 0xb8(%rsp), %rdi
callq 0xda6e0
jmp 0x143ca2
movq 0xd0(%rsp), %rsi
addq $0x3c, %rsi
leaq 0x7c0(%rsp), %rdi
callq 0xd4480
jmp 0x143cbd
leaq 0x7c0(%rsp), %rdi
callq 0xd25a0
movq 0x948(%rsp), %rax
movq %rax, 0xa0(%rsp)
leaq 0x5e7(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0xe0c80
movq 0xa8(%rsp), %rdx
leaq 0x455bf(%rip), %rsi     # 0x1892bd
leaq 0x5e8(%rsp), %rdi
callq 0xe00a0
jmp 0x143d0d
movq 0xa0(%rsp), %rdi
leaq 0x5e8(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0x98(%rsp)
jmp 0x143d2c
movq 0x98(%rsp), %rsi
leaq 0x608(%rsp), %rdi
movl $0x8, %edx
callq 0xdfcc0
jmp 0x143d48
leaq 0x5e8(%rsp), %rdi
callq 0xd4550
leaq 0x5e7(%rsp), %rdi
callq 0xd8ec0
movq 0x608(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x608(%rsp,%rax), %rax
movq %rax, 0x88(%rsp)
movl $0x2, %edi
movl $0x8, %esi
callq 0xe0e70
movl %eax, 0x94(%rsp)
jmp 0x143d96
movl 0x94(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0x84(%rsp)
jmp 0x143db0
movl 0x84(%rsp), %esi
movq 0x88(%rsp), %rdi
callq 0xda6e0
jmp 0x143dc6
movq 0xd0(%rsp), %rsi
addq $0x30, %rsi
leaq 0x608(%rsp), %rdi
callq 0xceae0
jmp 0x143de1
leaq 0x608(%rsp), %rdi
callq 0xd25a0
movq 0x948(%rsp), %rax
movq %rax, 0x70(%rsp)
leaq 0x43f(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0xe0c80
movq 0x78(%rsp), %rdx
leaq 0x43c8a(%rip), %rsi     # 0x187aa3
leaq 0x440(%rsp), %rdi
callq 0xe00a0
jmp 0x143e28
movq 0x70(%rsp), %rdi
leaq 0x440(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0x68(%rsp)
jmp 0x143e41
movq 0x68(%rsp), %rsi
leaq 0x460(%rsp), %rdi
movl $0x8, %edx
callq 0xdfcc0
jmp 0x143e5a
leaq 0x440(%rsp), %rdi
callq 0xd4550
leaq 0x43f(%rsp), %rdi
callq 0xd8ec0
movq 0x460(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x460(%rsp,%rax), %rax
movq %rax, 0x58(%rsp)
movl $0x2, %edi
movl $0x8, %esi
callq 0xe0e70
movl %eax, 0x64(%rsp)
jmp 0x143ea2
movl 0x64(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0x54(%rsp)
jmp 0x143eb6
movl 0x54(%rsp), %esi
movq 0x58(%rsp), %rdi
callq 0xda6e0
jmp 0x143ec6
movq 0xd0(%rsp), %rsi
addq $0x34, %rsi
leaq 0x460(%rsp), %rdi
callq 0xd4480
jmp 0x143ee1
leaq 0x460(%rsp), %rdi
callq 0xd25a0
movq 0x948(%rsp), %rax
movq %rax, 0x40(%rsp)
leaq 0x297(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xe0c80
movq 0x48(%rsp), %rdx
leaq 0x453a8(%rip), %rsi     # 0x1892c1
leaq 0x298(%rsp), %rdi
callq 0xe00a0
jmp 0x143f28
movq 0x40(%rsp), %rdi
leaq 0x298(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0x38(%rsp)
jmp 0x143f41
movq 0x38(%rsp), %rsi
leaq 0x2b8(%rsp), %rdi
movl $0x8, %edx
callq 0xdfcc0
jmp 0x143f5a
leaq 0x298(%rsp), %rdi
callq 0xd4550
leaq 0x297(%rsp), %rdi
callq 0xd8ec0
movq 0x2b8(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x2b8(%rsp,%rax), %rax
movq %rax, 0x28(%rsp)
movl $0x2, %edi
movl $0x8, %esi
callq 0xe0e70
movl %eax, 0x34(%rsp)
jmp 0x143fa2
movl 0x34(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0x24(%rsp)
jmp 0x143fb6
movl 0x24(%rsp), %esi
movq 0x28(%rsp), %rdi
callq 0xda6e0
jmp 0x143fc6
movq 0xd0(%rsp), %rsi
addq $0x38, %rsi
leaq 0x2b8(%rsp), %rdi
callq 0xd4480
jmp 0x143fe1
leaq 0x2b8(%rsp), %rdi
callq 0xd25a0
movl $0x0, 0x290(%rsp)
movl 0x290(%rsp), %eax
movl %eax, 0x20(%rsp)
movq 0x948(%rsp), %rdi
callq 0xd2b80
movl %eax, %ecx
movl 0x20(%rsp), %eax
cmpl %ecx, %eax
jge 0x144376
movq 0x948(%rsp), %rdi
movl 0x290(%rsp), %esi
callq 0xd5520
movq %rax, %rdi
leaq 0x4528b(%rip), %rsi     # 0x1892c8
callq 0xe30f0
testb $0x1, %al
jne 0x14404b
jmp 0x1442fe
movq 0x948(%rsp), %rdi
movl 0x290(%rsp), %esi
callq 0xd9670
movq %rax, %rsi
leaq 0x108(%rsp), %rdi
movl $0x8, %edx
movl %edx, 0xc(%rsp)
callq 0xdfcc0
movl 0xc(%rsp), %esi
movq 0x108(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x108(%rsp,%rax), %rax
movq %rax, 0x10(%rsp)
movl $0x2, %edi
callq 0xe0e70
movl %eax, 0x1c(%rsp)
jmp 0x1440a5
movl 0x1c(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0x8(%rsp)
jmp 0x1440b9
movl 0x8(%rsp), %esi
movq 0x10(%rsp), %rdi
callq 0xda6e0
jmp 0x1440c9
leaq 0x108(%rsp), %rdi
leaq 0x28c(%rsp), %rsi
callq 0xceae0
jmp 0x1440e0
movq 0x940(%rsp), %rdi
movl 0x28c(%rsp), %esi
callq 0xd45f0
movq %rax, (%rsp)
jmp 0x1440fa
movq 0xd0(%rsp), %rax
movq (%rsp), %rcx
movq %rcx, 0x48(%rax)
leaq 0x108(%rsp), %rdi
callq 0xd25a0
jmp 0x14435e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
jmp 0x144153
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
leaq 0x7a0(%rsp), %rdi
callq 0xd4550
leaq 0x79f(%rsp), %rdi
callq 0xd8ec0
jmp 0x14446c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
leaq 0x7c0(%rsp), %rdi
callq 0xd25a0
jmp 0x14446c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
jmp 0x1441c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
leaq 0x5e8(%rsp), %rdi
callq 0xd4550
leaq 0x5e7(%rsp), %rdi
callq 0xd8ec0
jmp 0x14446c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
leaq 0x608(%rsp), %rdi
callq 0xd25a0
jmp 0x14446c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
jmp 0x144231
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
leaq 0x440(%rsp), %rdi
callq 0xd4550
leaq 0x43f(%rsp), %rdi
callq 0xd8ec0
jmp 0x14446c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
leaq 0x460(%rsp), %rdi
callq 0xd25a0
jmp 0x14446c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
jmp 0x1442a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
leaq 0x298(%rsp), %rdi
callq 0xd4550
leaq 0x297(%rsp), %rdi
callq 0xd8ec0
jmp 0x14446c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
leaq 0x2b8(%rsp), %rdi
callq 0xd25a0
jmp 0x14446c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x790(%rsp)
movl %eax, 0x78c(%rsp)
leaq 0x108(%rsp), %rdi
callq 0xd25a0
jmp 0x14446c
movq 0x948(%rsp), %rdi
movl 0x290(%rsp), %esi
callq 0xd5520
movq %rax, %rdi
leaq 0x439e1(%rip), %rsi     # 0x187cfd
callq 0xe30f0
testb $0x1, %al
jne 0x144327
jmp 0x14435c
movq 0x948(%rsp), %rdi
movl 0x290(%rsp), %esi
callq 0xd9670
movq %rax, %rdi
callq 0xd9e90
testb $0x1, %al
jne 0x144349
jmp 0x14435a
movq 0xd0(%rsp), %rax
movl 0x58(%rax), %ecx
orl $0x1, %ecx
movl %ecx, 0x58(%rax)
jmp 0x14435c
jmp 0x14435e
jmp 0x144360
movl 0x290(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x290(%rsp)
jmp 0x143ff9
movq 0x948(%rsp), %rdi
callq 0xde930
movq %rax, 0x100(%rsp)
leaq 0xf8(%rsp), %rdi
callq 0xd03e0
movq 0x100(%rsp), %rdi
callq 0xd4960
movq %rax, 0xf0(%rsp)
movq 0xf0(%rsp), %rax
movq %rax, 0xf8(%rsp)
leaq 0xf8(%rsp), %rdi
callq 0xddc90
movq (%rax), %rdi
movq 0x940(%rsp), %rsi
callq 0xd8230
movq %rax, %rcx
movq 0xd0(%rsp), %rax
movq %rcx, 0x40(%rax)
movq 0x40(%rax), %rdi
callq 0xd99b0
leaq 0xf8(%rsp), %rdi
callq 0xd0700
movq 0x100(%rsp), %rdi
callq 0xd7a70
movq %rax, 0xe8(%rsp)
leaq 0xf8(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0xd72b0
testb $0x1, %al
jne 0x14442f
jmp 0x144464
leaq 0xf8(%rsp), %rdi
callq 0xddc90
movq (%rax), %rdi
movq 0x940(%rsp), %rsi
callq 0xd8230
movq %rax, %rcx
movq 0xd0(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x50(%rax), %rdi
callq 0xd99b0
addq $0x958, %rsp            # imm = 0x958
retq
movq 0x790(%rsp), %rdi
callq 0xe0be0
nopl (%rax)