// File: eryxcc[P]lois/src/pseudo.cpp
// Function: lois::branchset(std::shared_ptr<lois::Context>, std::shared_ptr<lois::Context>)
lsetof<lvector<term>> branchset(contextptr anccontext, contextptr nowcontext) {

  lsetof<lvector<term>> X;
  
  lvector<term> v;
  contextptr e = nowcontext;
  while(e != anccontext) {
    if(!e) throw env_exception();
    for(auto w: e->var) v.push_back(term(w));
    e = e->parent;
    }
  
  X.insert(v, anccontext);

  return X;
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdx, -0xf8(%rbp)
movq %rsi, -0xf0(%rbp)
movq %rdi, -0xe8(%rbp)
movq %rdi, %rax
movq %rax, -0xe0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movb $0x0, -0x19(%rbp)
callq 0x23d30
leaq -0x38(%rbp), %rdi
callq 0x23320
jmp 0x71aca
movq -0xf8(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x173b0
movq -0xf0(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x1af60
testb $0x1, %al
jne 0x71af3
jmp 0x71c88
leaq -0x58(%rbp), %rdi
callq 0x1afa0
testb $0x1, %al
jne 0x71b61
movl $0x8, %edi
callq 0x8160
movq %rax, %rdi
movq %rdi, -0x100(%rbp)
movq $0x0, (%rdi)
callq 0x1afc0
movq -0x100(%rbp), %rdi
leaq 0x3199a(%rip), %rsi     # 0xa34c8
leaq -0x56b35(%rip), %rdx    # 0x1b000
callq 0x84b0
jmp 0x71da8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x71d93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x71d63
leaq -0x58(%rbp), %rdi
callq 0x1b020
addq $0x20, %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rdi
callq 0x1b040
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rdi
callq 0x1b070
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x1b0a0
testb $0x1, %al
jne 0x71ba2
jmp 0x71c6e
leaq -0x68(%rbp), %rdi
callq 0x1b0e0
movq %rax, %rsi
leaq -0x80(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq 0x1b100
movq -0x110(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x20220
movq -0x108(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0x445f0
jmp 0x71bed
leaq -0x38(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x23340
jmp 0x71bff
leaq -0x90(%rbp), %rdi
callq 0x11360
leaq -0xa0(%rbp), %rdi
callq 0x14cf0
leaq -0x80(%rbp), %rdi
callq 0x10f20
leaq -0x68(%rbp), %rdi
callq 0x1b390
jmp 0x71b8c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x71c54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x11360
leaq -0xa0(%rbp), %rdi
callq 0x14cf0
leaq -0x80(%rbp), %rdi
callq 0x10f20
jmp 0x71d63
leaq -0x58(%rbp), %rdi
callq 0x1b020
movq %rax, %rsi
leaq -0x58(%rbp), %rdi
callq 0x1ade0
jmp 0x71ada
leaq -0xb8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1ee60
jmp 0x71c9a
movq -0xf0(%rbp), %rsi
leaq -0xc8(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x173b0
leaq 0x33b35(%rip), %rsi     # 0xa57f0
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x118(%rbp)
callq 0x173b0
movq -0xe8(%rbp), %rdi
movq -0x120(%rbp), %rdx
movq -0x118(%rbp), %rcx
leaq -0xb8(%rbp), %rsi
callq 0x24340
jmp 0x71cf1
leaq -0xd8(%rbp), %rdi
callq 0x14b20
leaq -0xc8(%rbp), %rdi
callq 0x14b20
leaq -0xb8(%rbp), %rdi
callq 0x1f360
movb $0x1, -0x19(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x14b20
leaq -0x38(%rbp), %rdi
callq 0x1f360
testb $0x1, -0x19(%rbp)
jne 0x71d83
jmp 0x71d77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x14b20
leaq -0xc8(%rbp), %rdi
callq 0x14b20
leaq -0xb8(%rbp), %rdi
callq 0x1f360
leaq -0x58(%rbp), %rdi
callq 0x14b20
leaq -0x38(%rbp), %rdi
callq 0x1f360
jmp 0x71d93
movq -0xe8(%rbp), %rdi
callq 0x19560
movq -0xe0(%rbp), %rax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
movq -0xe8(%rbp), %rdi
callq 0x19560
movq -0x40(%rbp), %rdi
callq 0x84d0