// File: eryxcc[P]lois/tests/../include/loisextra.h
// Function: lois::lelemof<int> lois::cardinality<lois::lvector<lois::term>>(lois::lsetof<lois::lvector<lois::term>> const&)
inline lelemof<int> cardinality(const lsetof<T>& X) {
  lelemof<int> answer;
  for(auto a: X) If(answer.isUndefined()) {
    auto butone = cardinality(X &~ newSet(a));
    for(int x: butone.singleton) answer.singleton += (x+1);
    }
  If(answer.isUndefined()) answer.singleton += 0;
  return answer;
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x360, %rsp            # imm = 0x360
movq %rdi, -0x318(%rbp)
movq %rdi, %rax
movq %rax, -0x310(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb $0x0, -0x11(%rbp)
callq 0x1ed10
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x1ed30
jmp 0x18ee4
movq -0x20(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0x1ed60
jmp 0x18ef6
jmp 0x18ef8
leaq -0x50(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x1ed90
movb %al, -0x319(%rbp)
jmp 0x18f10
movb -0x319(%rbp), %al
testb $0x1, %al
jne 0x18f73
jmp 0x18f1c
movl $0x2, -0x94(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x1f3c0
leaq -0x50(%rbp), %rdi
callq 0x1f3c0
jmp 0x193a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x19542
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x19396
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1938a
leaq -0x50(%rbp), %rdi
callq 0x1ee40
movq %rax, -0x328(%rbp)
jmp 0x18f85
movq -0x328(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x1ee60
jmp 0x18f9a
movq -0x318(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
callq 0x1ee90
jmp 0x18faf
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x330(%rbp)
leaq -0xe0(%rbp), %rsi
movq %rsi, -0x338(%rbp)
callq 0x10ff0
movq -0x338(%rbp), %rdi
callq 0x11060
movq -0x330(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rsi
leaq -0x110(%rbp), %rdi
callq 0x3ead0
jmp 0x18fff
movq -0xb8(%rbp), %rsi
leaq -0x140(%rbp), %rdi
callq 0x3eb60
jmp 0x19014
jmp 0x19016
leaq -0x110(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x11080
testb $0x1, %al
jne 0x19093
movl $0x4, -0x94(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x110e0
leaq -0x110(%rbp), %rdi
callq 0x110e0
leaq -0xd0(%rbp), %rdi
callq 0x11120
jmp 0x19362
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1937e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x19354
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x19348
leaq -0x110(%rbp), %rdi
callq 0x110b0
andb $0x1, %al
movb %al, -0x141(%rbp)
testb $0x1, -0x141(%rbp)
jne 0x190b5
jmp 0x19327
movq -0x10(%rbp), %rax
movq %rax, -0x340(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x1ee60
jmp 0x190d5
leaq -0x1e8(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x1f230
jmp 0x190ea
leaq -0x1c0(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x1f1c0
jmp 0x190ff
movq -0x340(%rbp), %rsi
leaq -0x198(%rbp), %rdi
leaq -0x1c0(%rbp), %rdx
callq 0x1eec0
jmp 0x1911b
leaq -0x170(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x18ea0
jmp 0x19130
leaq -0x198(%rbp), %rdi
callq 0x19560
leaq -0x1c0(%rbp), %rdi
callq 0x1f340
leaq -0x1e8(%rbp), %rdi
callq 0x19560
leaq -0x200(%rbp), %rdi
callq 0x1f360
leaq -0x170(%rbp), %rax
movq %rax, -0x208(%rbp)
movq -0x208(%rbp), %rsi
leaq -0x238(%rbp), %rdi
callq 0x136c0
jmp 0x19183
movq -0x208(%rbp), %rsi
leaq -0x268(%rbp), %rdi
callq 0x136f0
jmp 0x19198
jmp 0x1919a
leaq -0x238(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x13310
movb %al, -0x341(%rbp)
jmp 0x191b5
movb -0x341(%rbp), %al
testb $0x1, %al
jne 0x192a1
jmp 0x191c5
movl $0x6, -0x94(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x13420
leaq -0x238(%rbp), %rdi
callq 0x13420
jmp 0x1930b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1933c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x19257
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1924b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1923f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x19560
leaq -0x1c0(%rbp), %rdi
callq 0x1f340
leaq -0x1e8(%rbp), %rdi
callq 0x19560
leaq -0x200(%rbp), %rdi
callq 0x1f360
jmp 0x1933c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x19319
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x192fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x13420
jmp 0x192fd
leaq -0x238(%rbp), %rdi
callq 0x133c0
movq %rax, -0x350(%rbp)
jmp 0x192b6
movq -0x318(%rbp), %rdi
movq -0x350(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x26c(%rbp)
movl -0x26c(%rbp), %eax
incl %eax
movl %eax, -0x270(%rbp)
leaq -0x270(%rbp), %rsi
callq 0x13620
jmp 0x192e8
jmp 0x192ea
leaq -0x238(%rbp), %rdi
callq 0x133e0
jmp 0x192f8
jmp 0x1919a
leaq -0x238(%rbp), %rdi
callq 0x13420
jmp 0x19319
leaq -0x170(%rbp), %rdi
callq 0x124e0
jmp 0x19327
leaq -0x170(%rbp), %rdi
callq 0x124e0
jmp 0x1933c
jmp 0x19329
leaq -0x110(%rbp), %rdi
callq 0x3ea80
jmp 0x19337
jmp 0x19016
leaq -0x140(%rbp), %rdi
callq 0x110e0
leaq -0x110(%rbp), %rdi
callq 0x110e0
leaq -0xd0(%rbp), %rdi
callq 0x11120
jmp 0x1937e
leaq -0xb0(%rbp), %rdi
callq 0x1f360
leaq -0x50(%rbp), %rdi
callq 0x1f380
jmp 0x19379
jmp 0x18ef8
leaq -0xb0(%rbp), %rdi
callq 0x1f360
leaq -0x90(%rbp), %rdi
callq 0x1f3c0
leaq -0x50(%rbp), %rdi
callq 0x1f3c0
jmp 0x19542
movq -0x318(%rbp), %rsi
leaq -0x2a0(%rbp), %rdi
callq 0x1ee90
jmp 0x193b9
leaq -0x290(%rbp), %rdi
movq %rdi, -0x358(%rbp)
leaq -0x2a0(%rbp), %rsi
movq %rsi, -0x360(%rbp)
callq 0x10ff0
movq -0x360(%rbp), %rdi
callq 0x11060
movq -0x358(%rbp), %rax
movq %rax, -0x278(%rbp)
movq -0x278(%rbp), %rsi
leaq -0x2d0(%rbp), %rdi
callq 0x3ead0
jmp 0x19409
movq -0x278(%rbp), %rsi
leaq -0x300(%rbp), %rdi
callq 0x3eb60
jmp 0x1941e
jmp 0x19420
leaq -0x2d0(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x11080
testb $0x1, %al
jne 0x19489
movl $0x8, -0x94(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x110e0
leaq -0x2d0(%rbp), %rdi
callq 0x110e0
leaq -0x290(%rbp), %rdi
callq 0x11120
jmp 0x19512
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x19504
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x194f8
leaq -0x2d0(%rbp), %rdi
callq 0x110b0
andb $0x1, %al
movb %al, -0x301(%rbp)
testb $0x1, -0x301(%rbp)
jne 0x194a8
jmp 0x194e3
movq -0x318(%rbp), %rdi
movl $0x0, -0x308(%rbp)
leaq -0x308(%rbp), %rsi
callq 0x13620
jmp 0x194c7
jmp 0x194e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x110e0
jmp 0x194f8
jmp 0x194e5
leaq -0x2d0(%rbp), %rdi
callq 0x3ea80
jmp 0x194f3
jmp 0x19420
leaq -0x2d0(%rbp), %rdi
callq 0x110e0
leaq -0x290(%rbp), %rdi
callq 0x11120
jmp 0x19542
movb $0x1, -0x11(%rbp)
movl $0x1, -0x94(%rbp)
testb $0x1, -0x11(%rbp)
jne 0x19532
movq -0x318(%rbp), %rdi
callq 0x124e0
movq -0x310(%rbp), %rax
addq $0x360, %rsp            # imm = 0x360
popq %rbp
retq
movq -0x318(%rbp), %rdi
callq 0x124e0
movq -0x58(%rbp), %rdi
callq 0x84d0
nopw (%rax,%rax)