// File: jstaursky[P]hutch/src/Sleigh/slghsymbol.cc
// Function: DecisionNode::restoreXml(Element const*, DecisionNode*, SubtableSymbol*)
void DecisionNode::restoreXml(const Element *el,DecisionNode *par,SubtableSymbol *sub)

{
  parent = par;
  {
    istringstream s(el->getAttributeValue("number"));
    s.unsetf(ios::dec | ios::hex | ios::oct);
    s >> num;
  }
  contextdecision = xml_readbool(el->getAttributeValue("context"));
  {
    istringstream s(el->getAttributeValue("start"));
    s.unsetf(ios::dec | ios::hex | ios::oct);
    s >> startbit;
  }
  {
    istringstream s(el->getAttributeValue("size"));
    s.unsetf(ios::dec | ios::hex | ios::oct);
    s >> bitsize;
  }
  const List &childlist(el->getChildren());
  List::const_iterator iter;
  iter = childlist.begin();
  while(iter != childlist.end()) {
    if ((*iter)->getName() == "pair") {
      Constructor *ct;
      DisjointPattern *pat;
      uintm id;
      istringstream s((*iter)->getAttributeValue("id"));
      s.unsetf(ios::dec | ios::hex | ios::oct);
      s >> id;
      ct = sub->getConstructor(id);
      pat = DisjointPattern::restoreDisjoint((*iter)->getChildren().front());
      //This increments num      addConstructorPair(pat,ct);
      list.push_back(pair<DisjointPattern *,Constructor *>(pat,ct));
      //delete pat;		// addConstructorPair makes its own copy
    }
    else if ((*iter)->getName() == "decision") {
      DecisionNode *subnode = new DecisionNode();
      subnode->restoreXml(*iter,this,sub);
      children.push_back(subnode);
    }
    ++iter;
  }
}

// Assembly:
subq $0x868, %rsp            # imm = 0x868
movq %rdi, 0x860(%rsp)
movq %rsi, 0x858(%rsp)
movq %rdx, 0x850(%rsp)
movq %rcx, 0x848(%rsp)
movq 0x860(%rsp), %rax
movq %rax, 0x108(%rsp)
movq 0x850(%rsp), %rcx
movq %rcx, 0x40(%rax)
movq 0x858(%rsp), %rax
movq %rax, 0x110(%rsp)
leaq 0x6a7(%rsp), %rdi
movq %rdi, 0x118(%rsp)
callq 0xe0c80
movq 0x118(%rsp), %rdx
leaq 0x3f9af(%rip), %rsi     # 0x189616
leaq 0x6a8(%rsp), %rdi
callq 0xe00a0
jmp 0x149c76
movq 0x110(%rsp), %rdi
leaq 0x6a8(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0x100(%rsp)
jmp 0x149c95
movq 0x100(%rsp), %rsi
leaq 0x6c8(%rsp), %rdi
movl $0x8, %edx
callq 0xdfcc0
jmp 0x149cb1
leaq 0x6a8(%rsp), %rdi
callq 0xd4550
leaq 0x6a7(%rsp), %rdi
callq 0xd8ec0
movq 0x6c8(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x6c8(%rsp,%rax), %rax
movq %rax, 0xf0(%rsp)
movl $0x2, %edi
movl $0x8, %esi
callq 0xe0e70
movl %eax, 0xfc(%rsp)
jmp 0x149cff
movl 0xfc(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0xec(%rsp)
jmp 0x149d19
movl 0xec(%rsp), %esi
movq 0xf0(%rsp), %rdi
callq 0xda6e0
jmp 0x149d2f
movq 0x108(%rsp), %rsi
addq $0x30, %rsi
leaq 0x6c8(%rsp), %rdi
callq 0xd4480
jmp 0x149d4a
leaq 0x6c8(%rsp), %rdi
callq 0xd25a0
movq 0x858(%rsp), %rax
movq %rax, 0xd8(%rsp)
leaq 0x66f(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0xe0c80
movq 0xe0(%rsp), %rdx
leaq 0x3f892(%rip), %rsi     # 0x18961d
leaq 0x670(%rsp), %rdi
callq 0xe00a0
jmp 0x149d9a
movq 0xd8(%rsp), %rdi
leaq 0x670(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0xd0(%rsp)
jmp 0x149db9
movq 0xd0(%rsp), %rdi
callq 0xd9e90
movb %al, 0xcf(%rsp)
jmp 0x149dcf
movq 0x108(%rsp), %rax
movb 0xcf(%rsp), %cl
andb $0x1, %cl
movb %cl, 0x34(%rax)
leaq 0x670(%rsp), %rdi
callq 0xd4550
leaq 0x66f(%rsp), %rdi
callq 0xd8ec0
movq 0x858(%rsp), %rax
movq %rax, 0xb8(%rsp)
leaq 0x4c7(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0xe0c80
movq 0xc0(%rsp), %rdx
leaq 0x3ea0b(%rip), %rsi     # 0x18883d
leaq 0x4c8(%rsp), %rdi
callq 0xe00a0
jmp 0x149e41
movq 0xb8(%rsp), %rdi
leaq 0x4c8(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0xb0(%rsp)
jmp 0x149e60
movq 0xb0(%rsp), %rsi
leaq 0x4e8(%rsp), %rdi
movl $0x8, %edx
callq 0xdfcc0
jmp 0x149e7c
leaq 0x4c8(%rsp), %rdi
callq 0xd4550
leaq 0x4c7(%rsp), %rdi
callq 0xd8ec0
movq 0x4e8(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x4e8(%rsp,%rax), %rax
movq %rax, 0xa0(%rsp)
movl $0x2, %edi
movl $0x8, %esi
callq 0xe0e70
movl %eax, 0xac(%rsp)
jmp 0x149eca
movl 0xac(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0x9c(%rsp)
jmp 0x149ee4
movl 0x9c(%rsp), %esi
movq 0xa0(%rsp), %rdi
callq 0xda6e0
jmp 0x149efa
movq 0x108(%rsp), %rsi
addq $0x38, %rsi
leaq 0x4e8(%rsp), %rdi
callq 0xd4480
jmp 0x149f15
leaq 0x4e8(%rsp), %rdi
callq 0xd25a0
movq 0x858(%rsp), %rax
movq %rax, 0x88(%rsp)
leaq 0x31f(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0xe0c80
movq 0x90(%rsp), %rdx
leaq 0x43a57(%rip), %rsi     # 0x18d9ad
leaq 0x320(%rsp), %rdi
callq 0xe00a0
jmp 0x149f65
movq 0x88(%rsp), %rdi
leaq 0x320(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0x80(%rsp)
jmp 0x149f84
movq 0x80(%rsp), %rsi
leaq 0x340(%rsp), %rdi
movl $0x8, %edx
callq 0xdfcc0
jmp 0x149fa0
leaq 0x320(%rsp), %rdi
callq 0xd4550
leaq 0x31f(%rsp), %rdi
callq 0xd8ec0
movq 0x340(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x340(%rsp,%rax), %rax
movq %rax, 0x70(%rsp)
movl $0x2, %edi
movl $0x8, %esi
callq 0xe0e70
movl %eax, 0x7c(%rsp)
jmp 0x149fe8
movl 0x7c(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0x6c(%rsp)
jmp 0x149ffc
movl 0x6c(%rsp), %esi
movq 0x70(%rsp), %rdi
callq 0xda6e0
jmp 0x14a00c
movq 0x108(%rsp), %rsi
addq $0x3c, %rsi
leaq 0x340(%rsp), %rdi
callq 0xd4480
jmp 0x14a027
leaq 0x340(%rsp), %rdi
callq 0xd25a0
movq 0x858(%rsp), %rdi
callq 0xde930
movq %rax, 0x310(%rsp)
leaq 0x308(%rsp), %rdi
callq 0xd03e0
movq 0x310(%rsp), %rdi
callq 0xd4960
movq %rax, 0x300(%rsp)
movq 0x300(%rsp), %rax
movq %rax, 0x308(%rsp)
movq 0x310(%rsp), %rdi
callq 0xd7a70
movq %rax, 0x2f8(%rsp)
leaq 0x308(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
callq 0xd72b0
testb $0x1, %al
jne 0x14a0ae
jmp 0x14a574
leaq 0x308(%rsp), %rdi
callq 0xddc90
movq (%rax), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x3f558(%rip), %rsi     # 0x189625
callq 0xe30f0
testb $0x1, %al
jne 0x14a0db
jmp 0x14a493
leaq 0x308(%rsp), %rdi
callq 0xddc90
movq (%rax), %rax
movq %rax, 0x58(%rsp)
leaq 0x13f(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0xe0c80
movq 0x60(%rsp), %rdx
leaq 0x3dbfe(%rip), %rsi     # 0x187d0c
leaq 0x140(%rsp), %rdi
callq 0xe00a0
jmp 0x14a11d
movq 0x58(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0x50(%rsp)
jmp 0x14a136
movq 0x50(%rsp), %rsi
leaq 0x160(%rsp), %rdi
movl $0x8, %edx
callq 0xdfcc0
jmp 0x14a14f
leaq 0x140(%rsp), %rdi
callq 0xd4550
leaq 0x13f(%rsp), %rdi
callq 0xd8ec0
movq 0x160(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x160(%rsp,%rax), %rax
movq %rax, 0x40(%rsp)
movl $0x2, %edi
movl $0x8, %esi
callq 0xe0e70
movl %eax, 0x4c(%rsp)
jmp 0x14a197
movl 0x4c(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0x3c(%rsp)
jmp 0x14a1ab
movl 0x3c(%rsp), %esi
movq 0x40(%rsp), %rdi
callq 0xda6e0
jmp 0x14a1bb
leaq 0x160(%rsp), %rdi
leaq 0x2e4(%rsp), %rsi
callq 0xceae0
jmp 0x14a1d2
movq 0x848(%rsp), %rdi
movl 0x2e4(%rsp), %esi
callq 0xd3c10
movq %rax, 0x30(%rsp)
jmp 0x14a1ed
movq 0x30(%rsp), %rax
movq %rax, 0x2f0(%rsp)
leaq 0x308(%rsp), %rdi
callq 0xddc90
movq (%rax), %rdi
callq 0xde930
movq %rax, 0x28(%rsp)
jmp 0x14a216
movq 0x28(%rsp), %rdi
callq 0xd7fc0
movq (%rax), %rdi
callq 0xe2e30
movq %rax, 0x20(%rsp)
jmp 0x14a22f
movq 0x108(%rsp), %rax
movq 0x20(%rsp), %rcx
movq %rcx, 0x2e8(%rsp)
movq %rax, 0x18(%rsp)
leaq 0x128(%rsp), %rdi
leaq 0x2e8(%rsp), %rsi
leaq 0x2f0(%rsp), %rdx
callq 0xcf1c0
jmp 0x14a268
movq 0x18(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0xd8660
jmp 0x14a27c
leaq 0x160(%rsp), %rdi
callq 0xd25a0
jmp 0x14a562
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
jmp 0x14a2c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
leaq 0x6a8(%rsp), %rdi
callq 0xd4550
leaq 0x6a7(%rsp), %rdi
callq 0xd8ec0
jmp 0x14a57c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
leaq 0x6c8(%rsp), %rdi
callq 0xd25a0
jmp 0x14a57c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
jmp 0x14a334
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
leaq 0x670(%rsp), %rdi
callq 0xd4550
leaq 0x66f(%rsp), %rdi
callq 0xd8ec0
jmp 0x14a57c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
jmp 0x14a37d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
leaq 0x4c8(%rsp), %rdi
callq 0xd4550
leaq 0x4c7(%rsp), %rdi
callq 0xd8ec0
jmp 0x14a57c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
leaq 0x4e8(%rsp), %rdi
callq 0xd25a0
jmp 0x14a57c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
jmp 0x14a3ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
leaq 0x320(%rsp), %rdi
callq 0xd4550
leaq 0x31f(%rsp), %rdi
callq 0xd8ec0
jmp 0x14a57c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
leaq 0x340(%rsp), %rdi
callq 0xd25a0
jmp 0x14a57c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
jmp 0x14a45b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
leaq 0x140(%rsp), %rdi
callq 0xd4550
leaq 0x13f(%rsp), %rdi
callq 0xd8ec0
jmp 0x14a57c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
leaq 0x160(%rsp), %rdi
callq 0xd25a0
jmp 0x14a57c
leaq 0x308(%rsp), %rdi
callq 0xddc90
movq (%rax), %rdi
callq 0xcea10
movq %rax, %rdi
leaq 0x3f11c(%rip), %rsi     # 0x1895ce
callq 0xe30f0
testb $0x1, %al
jne 0x14a4c0
jmp 0x14a560
movl $0x48, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x10(%rsp)
callq 0xd8860
jmp 0x14a4dc
movq 0x10(%rsp), %rax
movq %rax, 0x120(%rsp)
movq 0x120(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x308(%rsp), %rdi
callq 0xddc90
movq 0x8(%rsp), %rdi
movq 0x108(%rsp), %rdx
movq (%rax), %rsi
movq 0x848(%rsp), %rcx
callq 0xdb070
movq 0x108(%rsp), %rdi
addq $0x18, %rdi
leaq 0x120(%rsp), %rsi
callq 0xcea70
jmp 0x14a560
movq 0x10(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x698(%rsp)
movl %eax, 0x694(%rsp)
movl $0x48, %esi
callq 0xd8620
jmp 0x14a57c
jmp 0x14a562
leaq 0x308(%rsp), %rdi
callq 0xd0700
jmp 0x14a07b
addq $0x868, %rsp            # imm = 0x868
retq
movq 0x698(%rsp), %rdi
callq 0xe0be0
nopl (%rax)