// File: jstaursky[P]hutch/src/Sleigh/slghpattern.cc
// Function: OrPattern::doAnd(Pattern const*, int) const
Pattern *OrPattern::doAnd(const Pattern *b,int4 sa) const

{
  const OrPattern *b2 = dynamic_cast<const OrPattern *>(b);
  vector<DisjointPattern *> newlist;
  vector<DisjointPattern *>::const_iterator iter,iter2;
  DisjointPattern *tmp;
  OrPattern *tmpor;

  if (b2 == (const OrPattern *)0) {
    for(iter=orlist.begin();iter!=orlist.end();++iter) {
      tmp = (DisjointPattern *)(*iter)->doAnd(b,sa);
      newlist.push_back(tmp);
    }
  }
  else {
    for(iter=orlist.begin();iter!=orlist.end();++iter)
      for(iter2=b2->orlist.begin();iter2!=b2->orlist.end();++iter2) {
	tmp = (DisjointPattern *)(*iter)->doAnd(*iter2,sa);
	newlist.push_back(tmp);
      }
  }
  tmpor = new OrPattern(newlist);
  return tmpor;
}

// Assembly:
subq $0xd8, %rsp
movq %rdi, 0xd0(%rsp)
movq %rsi, 0xc8(%rsp)
movl %edx, 0xc4(%rsp)
movq 0xd0(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0x38(%rsp)
cmpq $0x0, %rax
je 0x1393b1
movq 0x38(%rsp), %rdi
movq 0x8e90e(%rip), %rsi     # 0x1c7ca8
movq 0x8e9a7(%rip), %rdx     # 0x1c7d48
xorl %eax, %eax
movl %eax, %ecx
callq 0xd99a0
movq %rax, 0x28(%rsp)
jmp 0x1393ba
xorl %eax, %eax
movq %rax, 0x28(%rsp)
jmp 0x1393ba
movq 0x28(%rsp), %rax
movq %rax, 0xb8(%rsp)
leaq 0xa0(%rsp), %rdi
callq 0xd3170
leaq 0x98(%rsp), %rdi
callq 0xe0480
leaq 0x90(%rsp), %rdi
callq 0xe0480
cmpq $0x0, 0xb8(%rsp)
jne 0x1394c7
movq 0x30(%rsp), %rdi
addq $0x8, %rdi
callq 0xe0c70
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x30(%rsp), %rdi
addq $0x8, %rdi
callq 0xd1e10
movq %rax, 0x70(%rsp)
leaq 0x98(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xe2bc0
testb $0x1, %al
jne 0x139448
jmp 0x1394c2
leaq 0x98(%rsp), %rdi
callq 0xd1260
movq (%rax), %rdi
movq 0xc8(%rsp), %rsi
movl 0xc4(%rsp), %edx
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
movq %rax, 0x20(%rsp)
jmp 0x139477
movq 0x20(%rsp), %rax
movq %rax, 0x88(%rsp)
leaq 0xa0(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0xdf880
jmp 0x13949b
jmp 0x13949d
leaq 0x98(%rsp), %rdi
callq 0xe2a00
jmp 0x13941d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x68(%rsp)
movl %eax, 0x64(%rsp)
jmp 0x139669
jmp 0x1395f5
movq 0x30(%rsp), %rdi
addq $0x8, %rdi
callq 0xe0c70
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x30(%rsp), %rdi
addq $0x8, %rdi
callq 0xd1e10
movq %rax, 0x50(%rsp)
leaq 0x98(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xe2bc0
testb $0x1, %al
jne 0x139515
jmp 0x1395f3
movq 0xb8(%rsp), %rdi
addq $0x8, %rdi
callq 0xe0c70
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0xb8(%rsp), %rdi
addq $0x8, %rdi
callq 0xd1e10
movq %rax, 0x40(%rsp)
leaq 0x90(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0xe2bc0
testb $0x1, %al
jne 0x139566
jmp 0x1395df
leaq 0x98(%rsp), %rdi
callq 0xd1260
movq (%rax), %rax
movq %rax, 0x10(%rsp)
leaq 0x90(%rsp), %rdi
callq 0xd1260
movq 0x10(%rsp), %rdi
movq (%rax), %rsi
movl 0xc4(%rsp), %edx
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
movq %rax, 0x18(%rsp)
jmp 0x1395a7
movq 0x18(%rsp), %rax
movq %rax, 0x88(%rsp)
leaq 0xa0(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0xdf880
jmp 0x1395cb
jmp 0x1395cd
leaq 0x90(%rsp), %rdi
callq 0xe2a00
jmp 0x139538
jmp 0x1395e1
leaq 0x98(%rsp), %rdi
callq 0xe2a00
jmp 0x1394e7
jmp 0x1395f5
movl $0x20, %edi
callq 0xd8380
movq %rax, 0x8(%rsp)
jmp 0x139606
movq 0x8(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0xe0f50
jmp 0x13961a
movq 0x8(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x80(%rsp), %rax
movq %rax, (%rsp)
leaq 0xa0(%rsp), %rdi
callq 0xddf80
movq (%rsp), %rax
addq $0xd8, %rsp
retq
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x68(%rsp)
movl %eax, 0x64(%rsp)
movl $0x20, %esi
callq 0xd8620
leaq 0xa0(%rsp), %rdi
callq 0xddf80
movq 0x68(%rsp), %rdi
callq 0xe0be0