// File: jstaursky[P]hutch/src/Sleigh/slghpattern.cc
// Function: PatternBlock::restoreXml(Element const*)
void PatternBlock::restoreXml(const Element *el)

{
  {
    istringstream s(el->getAttributeValue("offset"));
    s.unsetf(ios::dec | ios::hex | ios::oct);
    s >> offset;
  }
  {
    istringstream s(el->getAttributeValue("nonzero"));
    s.unsetf(ios::dec | ios::hex | ios::oct);
    s >> nonzerosize;
  }
  const List &list(el->getChildren());
  List::const_iterator iter;
  iter = list.begin();
  uintm mask,val;
  while(iter != list.end()) {
    Element *subel = *iter;
    {
      istringstream s(subel->getAttributeValue("mask"));
      s.unsetf(ios::dec | ios::hex | ios::oct);
      s >> mask;
    }
    {
      istringstream s(subel->getAttributeValue("val"));
      s.unsetf(ios::dec | ios::hex | ios::oct);
      s >> val;
    }
    maskvec.push_back(mask);
    valvec.push_back(val);
    ++iter;
  }
  normalize();
}

// Assembly:
subq $0x7b8, %rsp            # imm = 0x7B8
movq %rdi, 0x7b0(%rsp)
movq %rsi, 0x7a8(%rsp)
movq 0x7b0(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0x7a8(%rsp), %rax
movq %rax, 0xb8(%rsp)
leaq 0x607(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0xe0c80
movq 0xc0(%rsp), %rdx
leaq 0x50e7f(%rip), %rsi     # 0x187d1a
leaq 0x608(%rsp), %rdi
callq 0xe00a0
jmp 0x136eaa
movq 0xb8(%rsp), %rdi
leaq 0x608(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0xa8(%rsp)
jmp 0x136ec9
movq 0xa8(%rsp), %rsi
leaq 0x628(%rsp), %rdi
movl $0x8, %edx
callq 0xdfcc0
jmp 0x136ee5
leaq 0x608(%rsp), %rdi
callq 0xd4550
leaq 0x607(%rsp), %rdi
callq 0xd8ec0
movq 0x628(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x628(%rsp,%rax), %rax
movq %rax, 0x98(%rsp)
movl $0x2, %edi
movl $0x8, %esi
callq 0xe0e70
movl %eax, 0xa4(%rsp)
jmp 0x136f33
movl 0xa4(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0x94(%rsp)
jmp 0x136f4d
movl 0x94(%rsp), %esi
movq 0x98(%rsp), %rdi
callq 0xda6e0
jmp 0x136f63
movq 0xb0(%rsp), %rsi
leaq 0x628(%rsp), %rdi
callq 0xd4480
jmp 0x136f7a
leaq 0x628(%rsp), %rdi
callq 0xd25a0
movq 0x7a8(%rsp), %rax
movq %rax, 0x80(%rsp)
leaq 0x44f(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0xe0c80
movq 0x88(%rsp), %rdx
leaq 0x51e81(%rip), %rsi     # 0x188e3c
leaq 0x450(%rsp), %rdi
callq 0xe00a0
jmp 0x136fca
movq 0x80(%rsp), %rdi
leaq 0x450(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0x78(%rsp)
jmp 0x136fe6
movq 0x78(%rsp), %rsi
leaq 0x470(%rsp), %rdi
movl $0x8, %edx
callq 0xdfcc0
jmp 0x136fff
leaq 0x450(%rsp), %rdi
callq 0xd4550
leaq 0x44f(%rsp), %rdi
callq 0xd8ec0
movq 0x470(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x470(%rsp,%rax), %rax
movq %rax, 0x68(%rsp)
movl $0x2, %edi
movl $0x8, %esi
callq 0xe0e70
movl %eax, 0x74(%rsp)
jmp 0x137047
movl 0x74(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0x64(%rsp)
jmp 0x13705b
movl 0x64(%rsp), %esi
movq 0x68(%rsp), %rdi
callq 0xda6e0
jmp 0x13706b
movq 0xb0(%rsp), %rsi
addq $0x4, %rsi
leaq 0x470(%rsp), %rdi
callq 0xd4480
jmp 0x137086
leaq 0x470(%rsp), %rdi
callq 0xd25a0
movq 0x7a8(%rsp), %rdi
callq 0xde930
movq %rax, 0x440(%rsp)
leaq 0x438(%rsp), %rdi
callq 0xd03e0
movq 0x440(%rsp), %rdi
callq 0xd4960
movq %rax, 0x430(%rsp)
movq 0x430(%rsp), %rax
movq %rax, 0x438(%rsp)
movq 0x440(%rsp), %rdi
callq 0xd7a70
movq %rax, 0x420(%rsp)
leaq 0x438(%rsp), %rdi
leaq 0x420(%rsp), %rsi
callq 0xd72b0
testb $0x1, %al
jne 0x13710d
jmp 0x137514
leaq 0x438(%rsp), %rdi
callq 0xddc90
movq (%rax), %rax
movq %rax, 0x418(%rsp)
movq 0x418(%rsp), %rax
movq %rax, 0x50(%rsp)
leaq 0x277(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0xe0c80
movq 0x58(%rsp), %rdx
leaq 0x514c3(%rip), %rsi     # 0x188613
leaq 0x278(%rsp), %rdi
callq 0xe00a0
jmp 0x13715f
movq 0x50(%rsp), %rdi
leaq 0x278(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0x48(%rsp)
jmp 0x137178
movq 0x48(%rsp), %rsi
leaq 0x298(%rsp), %rdi
movl $0x8, %edx
callq 0xdfcc0
jmp 0x137191
leaq 0x278(%rsp), %rdi
callq 0xd4550
leaq 0x277(%rsp), %rdi
callq 0xd8ec0
movq 0x298(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x298(%rsp,%rax), %rax
movq %rax, 0x38(%rsp)
movl $0x2, %edi
movl $0x8, %esi
callq 0xe0e70
movl %eax, 0x44(%rsp)
jmp 0x1371d9
movl 0x44(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0x34(%rsp)
jmp 0x1371ed
movl 0x34(%rsp), %esi
movq 0x38(%rsp), %rdi
callq 0xda6e0
jmp 0x1371fd
leaq 0x298(%rsp), %rdi
leaq 0x42c(%rsp), %rsi
callq 0xceae0
jmp 0x137214
leaq 0x298(%rsp), %rdi
callq 0xd25a0
movq 0x418(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0xcf(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0xe0c80
movq 0x28(%rsp), %rdx
leaq 0x4ff95(%rip), %rsi     # 0x1871e1
leaq 0xd0(%rsp), %rdi
callq 0xe00a0
jmp 0x13725b
movq 0x20(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xdb6f0
movq %rax, 0x18(%rsp)
jmp 0x137274
movq 0x18(%rsp), %rsi
leaq 0xf0(%rsp), %rdi
movl $0x8, %edx
callq 0xdfcc0
jmp 0x13728d
leaq 0xd0(%rsp), %rdi
callq 0xd4550
leaq 0xcf(%rsp), %rdi
callq 0xd8ec0
movq 0xf0(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0xf0(%rsp,%rax), %rax
movq %rax, 0x8(%rsp)
movl $0x2, %edi
movl $0x8, %esi
callq 0xe0e70
movl %eax, 0x14(%rsp)
jmp 0x1372d5
movl 0x14(%rsp), %edi
movl $0x40, %esi
callq 0xe0e70
movl %eax, 0x4(%rsp)
jmp 0x1372e9
movl 0x4(%rsp), %esi
movq 0x8(%rsp), %rdi
callq 0xda6e0
jmp 0x1372f9
leaq 0xf0(%rsp), %rdi
leaq 0x428(%rsp), %rsi
callq 0xceae0
jmp 0x137310
leaq 0xf0(%rsp), %rdi
callq 0xd25a0
movq 0xb0(%rsp), %rdi
addq $0x8, %rdi
leaq 0x42c(%rsp), %rsi
callq 0xd2df0
movq 0xb0(%rsp), %rdi
addq $0x20, %rdi
leaq 0x428(%rsp), %rsi
callq 0xd2df0
leaq 0x438(%rsp), %rdi
callq 0xd0700
jmp 0x1370da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5f8(%rsp)
movl %eax, 0x5f4(%rsp)
jmp 0x137398
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5f8(%rsp)
movl %eax, 0x5f4(%rsp)
leaq 0x608(%rsp), %rdi
callq 0xd4550
leaq 0x607(%rsp), %rdi
callq 0xd8ec0
jmp 0x137529
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5f8(%rsp)
movl %eax, 0x5f4(%rsp)
leaq 0x628(%rsp), %rdi
callq 0xd25a0
jmp 0x137529
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5f8(%rsp)
movl %eax, 0x5f4(%rsp)
jmp 0x137407
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5f8(%rsp)
movl %eax, 0x5f4(%rsp)
leaq 0x450(%rsp), %rdi
callq 0xd4550
leaq 0x44f(%rsp), %rdi
callq 0xd8ec0
jmp 0x137529
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5f8(%rsp)
movl %eax, 0x5f4(%rsp)
leaq 0x470(%rsp), %rdi
callq 0xd25a0
jmp 0x137529
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5f8(%rsp)
movl %eax, 0x5f4(%rsp)
jmp 0x137476
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5f8(%rsp)
movl %eax, 0x5f4(%rsp)
leaq 0x278(%rsp), %rdi
callq 0xd4550
leaq 0x277(%rsp), %rdi
callq 0xd8ec0
jmp 0x137529
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5f8(%rsp)
movl %eax, 0x5f4(%rsp)
leaq 0x298(%rsp), %rdi
callq 0xd25a0
jmp 0x137529
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5f8(%rsp)
movl %eax, 0x5f4(%rsp)
jmp 0x1374e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5f8(%rsp)
movl %eax, 0x5f4(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0xd4550
leaq 0xcf(%rsp), %rdi
callq 0xd8ec0
jmp 0x137529
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5f8(%rsp)
movl %eax, 0x5f4(%rsp)
leaq 0xf0(%rsp), %rdi
callq 0xd25a0
jmp 0x137529
movq 0xb0(%rsp), %rdi
callq 0xda700
addq $0x7b8, %rsp            # imm = 0x7B8
retq
movq 0x5f8(%rsp), %rdi
callq 0xe0be0
nopw %cs:(%rax,%rax)