// File: jstaursky[P]hutch/src/Sleigh/slghpatexpress.cc
// Function: PatternExpression::restoreExpression(Element const*, Translate*)
PatternExpression *PatternExpression::restoreExpression(const Element *el,Translate *trans)

{
  PatternExpression *res;
  const string &nm(el->getName());

  if (nm == "tokenfield")
    res = new TokenField();
  else if (nm == "contextfield")
    res = new ContextField();
  else if (nm == "intb")
    res = new ConstantValue();
  else if (nm == "operand_exp")
    res = new OperandValue();
  else if (nm == "start_exp")
    res = new StartInstructionValue();
  else if (nm == "end_exp")
    res = new EndInstructionValue();
  else if (nm == "plus_exp")
    res = new PlusExpression();
  else if (nm == "sub_exp")
    res = new SubExpression();
  else if (nm == "mult_exp")
    res = new MultExpression();
  else if (nm == "lshift_exp")
    res = new LeftShiftExpression();
  else if (nm == "rshift_exp")
    res = new RightShiftExpression();
  else if (nm == "and_exp")
    res = new AndExpression();
  else if (nm == "or_exp")
    res = new OrExpression();
  else if (nm == "xor_exp")
    res = new XorExpression();
  else if (nm == "div_exp")
    res = new DivExpression();
  else if (nm == "minus_exp")
    res = new MinusExpression();
  else if (nm == "not_exp")
    res = new NotExpression();
  else
    return (PatternExpression *)0;

  res->restoreXml(el,trans);
  return res;
}

// Assembly:
subq $0xc8, %rsp
movq %rdi, 0xb8(%rsp)
movq %rsi, 0xb0(%rsp)
movq 0xb8(%rsp), %rdi
callq 0xcea10
movq %rax, 0xa0(%rsp)
movq 0xa0(%rsp), %rdi
leaq 0x60510(%rip), %rsi     # 0x1887bb
callq 0xe30f0
testb $0x1, %al
jne 0x1282b6
jmp 0x128315
movl $0x30, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x88(%rsp)
callq 0xe0230
jmp 0x1282d5
movq 0x88(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a46
movq 0x88(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x30, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x6052e(%rip), %rsi     # 0x188852
callq 0xe30f0
testb $0x1, %al
jne 0x12832f
jmp 0x12838e
movl $0x28, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x80(%rsp)
callq 0xded50
jmp 0x12834e
movq 0x80(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a44
movq 0x80(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x28, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x603b4(%rip), %rsi     # 0x188751
callq 0xe30f0
testb $0x1, %al
jne 0x1283a8
jmp 0x1283fe
movl $0x18, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x78(%rsp)
callq 0xe1060
jmp 0x1283c4
movq 0x78(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a42
movq 0x78(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x18, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x604d2(%rip), %rsi     # 0x1888df
callq 0xe30f0
testb $0x1, %al
jne 0x128418
jmp 0x12846e
movl $0x18, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x70(%rsp)
callq 0xd57b0
jmp 0x128434
movq 0x70(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a40
movq 0x70(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x18, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x602d9(%rip), %rsi     # 0x188756
callq 0xe30f0
testb $0x1, %al
jne 0x128488
jmp 0x1284de
movl $0x10, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x68(%rsp)
callq 0xe0d80
jmp 0x1284a4
movq 0x68(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a3e
movq 0x68(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x10, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x60273(%rip), %rsi     # 0x188760
callq 0xe30f0
testb $0x1, %al
jne 0x1284f8
jmp 0x12854e
movl $0x10, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x60(%rsp)
callq 0xe0420
jmp 0x128514
movq 0x60(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a3c
movq 0x60(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x10, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x6020b(%rip), %rsi     # 0x188768
callq 0xe30f0
testb $0x1, %al
jne 0x128568
jmp 0x1285be
movl $0x20, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x58(%rsp)
callq 0xe2200
jmp 0x128584
movq 0x58(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a3a
movq 0x58(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x20, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x601a4(%rip), %rsi     # 0x188771
callq 0xe30f0
testb $0x1, %al
jne 0x1285d8
jmp 0x12862e
movl $0x20, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x50(%rsp)
callq 0xdea90
jmp 0x1285f4
movq 0x50(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a38
movq 0x50(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x20, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x6013c(%rip), %rsi     # 0x188779
callq 0xe30f0
testb $0x1, %al
jne 0x128648
jmp 0x12869e
movl $0x20, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x48(%rsp)
callq 0xd43d0
jmp 0x128664
movq 0x48(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a36
movq 0x48(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x20, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x600d5(%rip), %rsi     # 0x188782
callq 0xe30f0
testb $0x1, %al
jne 0x1286b8
jmp 0x12870e
movl $0x20, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x40(%rsp)
callq 0xdc500
jmp 0x1286d4
movq 0x40(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a34
movq 0x40(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x20, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x60070(%rip), %rsi     # 0x18878d
callq 0xe30f0
testb $0x1, %al
jne 0x128728
jmp 0x12877e
movl $0x20, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x38(%rsp)
callq 0xd71d0
jmp 0x128744
movq 0x38(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a32
movq 0x38(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x20, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x60156(%rip), %rsi     # 0x1888e3
callq 0xe30f0
testb $0x1, %al
jne 0x128798
jmp 0x1287ee
movl $0x20, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x30(%rsp)
callq 0xd8110
jmp 0x1287b4
movq 0x30(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a30
movq 0x30(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x20, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x5ff9c(%rip), %rsi     # 0x188799
callq 0xe30f0
testb $0x1, %al
jne 0x128808
jmp 0x12885e
movl $0x20, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x28(%rsp)
callq 0xd2900
jmp 0x128824
movq 0x28(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a2e
movq 0x28(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x20, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x5ff2b(%rip), %rsi     # 0x188798
callq 0xe30f0
testb $0x1, %al
jne 0x128878
jmp 0x1288ce
movl $0x20, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x20(%rsp)
callq 0xddb90
jmp 0x128894
movq 0x20(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a2c
movq 0x20(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x20, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x5fec3(%rip), %rsi     # 0x1887a0
callq 0xe30f0
testb $0x1, %al
jne 0x1288e8
jmp 0x12893e
movl $0x20, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x18(%rsp)
callq 0xde980
jmp 0x128904
movq 0x18(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a2a
movq 0x18(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x20, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x5fe5b(%rip), %rsi     # 0x1887a8
callq 0xe30f0
testb $0x1, %al
jne 0x128958
jmp 0x1289ae
movl $0x18, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x10(%rsp)
callq 0xda8e0
jmp 0x128974
movq 0x10(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a28
movq 0x10(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x18, %esi
callq 0xd8620
jmp 0x128a84
movq 0xa0(%rsp), %rdi
leaq 0x5fdf5(%rip), %rsi     # 0x1887b2
callq 0xe30f0
testb $0x1, %al
jne 0x1289c8
jmp 0x128a18
movl $0x18, %edi
callq 0xd8380
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x8(%rsp)
callq 0xddbb0
jmp 0x1289e4
movq 0x8(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x128a26
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
movl $0x18, %esi
callq 0xd8620
jmp 0x128a84
movq $0x0, 0xc0(%rsp)
jmp 0x128a74
jmp 0x128a28
jmp 0x128a2a
jmp 0x128a2c
jmp 0x128a2e
jmp 0x128a30
jmp 0x128a32
jmp 0x128a34
jmp 0x128a36
jmp 0x128a38
jmp 0x128a3a
jmp 0x128a3c
jmp 0x128a3e
jmp 0x128a40
jmp 0x128a42
jmp 0x128a44
jmp 0x128a46
movq 0xa8(%rsp), %rdi
movq 0xb8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq (%rdi), %rax
callq *0x40(%rax)
movq 0xa8(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0xc0(%rsp), %rax
addq $0xc8, %rsp
retq
movq 0x98(%rsp), %rdi
callq 0xe0be0
nopw %cs:(%rax,%rax)