// File: eryxcc[P]lois/tests/autotest.cpp
// Function: testRemoval(lois::lsetof<lois::term>)
void testRemoval(lsetof<term> A) {
  lsetof<lpair<term,term>> X, Y;
  
  for(term a: A) for(term b: A) {
    X += make_lpair(a, b);
    If(a != b) Y += make_lpair(a, b);
    }
  
  for(term a: A) X -= make_lpair(a, a);
  
  testSat(ALWAYS, X == Y);
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3c0, %rsp            # imm = 0x3C0
movq %rdi, -0x348(%rbp)
movq %rdi, -0x8(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x128a0
leaq -0x58(%rbp), %rdi
callq 0x128a0
jmp 0xfe1a
movq -0x348(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
callq 0x116d0
jmp 0xfe37
movq -0x70(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
callq 0x11700
jmp 0xfe49
jmp 0xfe4b
leaq -0xa0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x11730
movb %al, -0x349(%rbp)
jmp 0xfe66
movb -0x349(%rbp), %al
testb $0x1, %al
jne 0xfedd
jmp 0xfe72
movl $0x2, -0xd4(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x11910
leaq -0xa0(%rbp), %rdi
callq 0x11910
jmp 0x103ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10601
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x105f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x1039d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10391
leaq -0xa0(%rbp), %rdi
callq 0x117e0
movq %rax, -0x358(%rbp)
jmp 0xfef2
movq -0x358(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0x11800
movq -0x348(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rsi
leaq -0x120(%rbp), %rdi
callq 0x116d0
jmp 0xff28
movq -0xf0(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x11700
jmp 0xff3d
jmp 0xff3f
leaq -0x120(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x11730
movb %al, -0x359(%rbp)
jmp 0xff5a
movb -0x359(%rbp), %al
testb $0x1, %al
jne 0xffc0
jmp 0xff66
movl $0x4, -0xd4(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x11910
leaq -0x120(%rbp), %rdi
callq 0x11910
jmp 0x10366
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10385
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10358
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x1034c
leaq -0x120(%rbp), %rdi
callq 0x117e0
movq %rax, -0x368(%rbp)
jmp 0xffd5
movq -0x368(%rbp), %rsi
leaq -0x160(%rbp), %rdi
movq %rdi, -0x380(%rbp)
callq 0x11800
leaq -0x190(%rbp), %rdi
movq %rdi, -0x378(%rbp)
leaq -0xe8(%rbp), %rsi
callq 0x11800
movq -0x380(%rbp), %rsi
leaq -0x1a0(%rbp), %rdi
movq %rdi, -0x370(%rbp)
callq 0x11800
movq -0x378(%rbp), %rsi
movq -0x370(%rbp), %rdx
leaq -0x180(%rbp), %rdi
callq 0x12960
jmp 0x1003f
leaq -0x30(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x12a00
jmp 0x10051
leaq -0x180(%rbp), %rdi
callq 0x12ac0
leaq -0x1a0(%rbp), %rdi
callq 0x11360
leaq -0x190(%rbp), %rdi
callq 0x11360
leaq -0x1d0(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
leaq -0x160(%rbp), %rdx
callq 0x433b0
jmp 0x10091
leaq -0x1c0(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x10ff0
jmp 0x100a6
leaq -0x1d0(%rbp), %rdi
callq 0x11060
leaq -0x1c0(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0x3ead0
jmp 0x100d5
movq -0x1a8(%rbp), %rsi
leaq -0x230(%rbp), %rdi
callq 0x3eb60
jmp 0x100ea
jmp 0x100ec
leaq -0x200(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x11080
movb %al, -0x381(%rbp)
jmp 0x10107
movb -0x381(%rbp), %al
testb $0x1, %al
jne 0x101ee
jmp 0x10117
movl $0x6, -0xd4(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x110e0
leaq -0x200(%rbp), %rdi
callq 0x110e0
leaq -0x1c0(%rbp), %rdi
callq 0x11120
jmp 0x10321
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10170
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x12ac0
leaq -0x1a0(%rbp), %rdi
callq 0x11360
leaq -0x190(%rbp), %rdi
callq 0x11360
jmp 0x10340
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10340
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x11060
jmp 0x10340
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10307
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x102fb
leaq -0x200(%rbp), %rdi
callq 0x110b0
movb %al, -0x382(%rbp)
jmp 0x10202
movb -0x382(%rbp), %al
andb $0x1, %al
movb %al, -0x231(%rbp)
testb $0x1, -0x231(%rbp)
jne 0x1021e
jmp 0x102e6
leaq -0x268(%rbp), %rdi
movq %rdi, -0x398(%rbp)
leaq -0xe8(%rbp), %rsi
callq 0x11800
leaq -0x278(%rbp), %rdi
movq %rdi, -0x390(%rbp)
leaq -0x160(%rbp), %rsi
callq 0x11800
movq -0x398(%rbp), %rsi
movq -0x390(%rbp), %rdx
leaq -0x258(%rbp), %rdi
callq 0x12960
jmp 0x1026e
leaq -0x58(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x12a00
jmp 0x10280
leaq -0x258(%rbp), %rdi
callq 0x12ac0
leaq -0x278(%rbp), %rdi
callq 0x11360
leaq -0x268(%rbp), %rdi
callq 0x11360
jmp 0x102e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x102cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x12ac0
leaq -0x278(%rbp), %rdi
callq 0x11360
leaq -0x268(%rbp), %rdi
callq 0x11360
jmp 0x102fb
jmp 0x102e8
leaq -0x200(%rbp), %rdi
callq 0x3ea80
jmp 0x102f6
jmp 0x100ec
leaq -0x230(%rbp), %rdi
callq 0x110e0
leaq -0x200(%rbp), %rdi
callq 0x110e0
leaq -0x1c0(%rbp), %rdi
callq 0x11120
jmp 0x10340
leaq -0x160(%rbp), %rdi
callq 0x11360
leaq -0x120(%rbp), %rdi
callq 0x118d0
jmp 0x1033b
jmp 0xff3f
leaq -0x160(%rbp), %rdi
callq 0x11360
leaq -0x150(%rbp), %rdi
callq 0x11910
leaq -0x120(%rbp), %rdi
callq 0x11910
jmp 0x10385
leaq -0xe8(%rbp), %rdi
callq 0x11360
leaq -0xa0(%rbp), %rdi
callq 0x118d0
jmp 0x10380
jmp 0xfe4b
leaq -0xe8(%rbp), %rdi
callq 0x11360
leaq -0xd0(%rbp), %rdi
callq 0x11910
leaq -0xa0(%rbp), %rdi
callq 0x11910
jmp 0x105f8
movq -0x348(%rbp), %rax
movq %rax, -0x280(%rbp)
movq -0x280(%rbp), %rsi
leaq -0x2b0(%rbp), %rdi
callq 0x116d0
jmp 0x103d1
movq -0x280(%rbp), %rsi
leaq -0x2e0(%rbp), %rdi
callq 0x11700
jmp 0x103e6
jmp 0x103e8
leaq -0x2b0(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x11730
movb %al, -0x399(%rbp)
jmp 0x10403
movb -0x399(%rbp), %al
testb $0x1, %al
jne 0x10458
jmp 0x1040f
movl $0x8, -0xd4(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x11910
leaq -0x2b0(%rbp), %rdi
callq 0x11910
jmp 0x10590
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10582
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10576
leaq -0x2b0(%rbp), %rdi
callq 0x117e0
movq %rax, -0x3a8(%rbp)
jmp 0x1046d
movq -0x3a8(%rbp), %rsi
leaq -0x2f0(%rbp), %rdi
movq %rdi, -0x3c0(%rbp)
callq 0x11800
movq -0x3c0(%rbp), %rsi
leaq -0x320(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
callq 0x11800
movq -0x3c0(%rbp), %rsi
leaq -0x330(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
callq 0x11800
movq -0x3b8(%rbp), %rsi
movq -0x3b0(%rbp), %rdx
leaq -0x310(%rbp), %rdi
callq 0x12960
jmp 0x104d7
leaq -0x30(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x13d90
jmp 0x104e9
leaq -0x310(%rbp), %rdi
callq 0x12ac0
leaq -0x330(%rbp), %rdi
callq 0x11360
leaq -0x320(%rbp), %rdi
callq 0x11360
leaq -0x2f0(%rbp), %rdi
callq 0x11360
leaq -0x2b0(%rbp), %rdi
callq 0x118d0
jmp 0x10527
jmp 0x103e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x10552
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x12ac0
leaq -0x330(%rbp), %rdi
callq 0x11360
leaq -0x320(%rbp), %rdi
callq 0x11360
leaq -0x2f0(%rbp), %rdi
callq 0x11360
leaq -0x2e0(%rbp), %rdi
callq 0x11910
leaq -0x2b0(%rbp), %rdi
callq 0x11910
jmp 0x105f8
leaq -0x340(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x58(%rbp), %rdx
callq 0x14250
jmp 0x105a6
movl $0x1, %edi
leaq -0x340(%rbp), %rsi
callq 0x9120
jmp 0x105b9
leaq -0x340(%rbp), %rdi
callq 0x11060
leaq -0x58(%rbp), %rdi
callq 0x13540
leaq -0x30(%rbp), %rdi
callq 0x13540
addq $0x3c0, %rsp            # imm = 0x3C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x11060
leaq -0x58(%rbp), %rdi
callq 0x13540
leaq -0x30(%rbp), %rdi
callq 0x13540
movq -0x60(%rbp), %rdi
callq 0x84d0
nopw %cs:(%rax,%rax)