// File: eryxcc[P]lois/tests/../include/lois.h
// Function: lois::lsetof<lois::lpair<lois::term, lois::term>>::insert(lois::lpair<lois::term, lois::term>, std::shared_ptr<lois::Context>, std::shared_ptr<lois::Context>)
void lsetof<T>::insert(T a, contextptr ain, contextptr nowenv) {

  if(debuglois) std::cout << ido << "insert " << a << ieol << "  ENV " << emptycontext << ieol << "  AIN "<< ain << std::endl;
  autoindenter i1;
  
  varlist selvar;
  rbool selphi = ftrue;
  
  varlist to_quantify;
  
  contextptr ainlocal = nowenv;  

  contextptr nowenv2 = nowenv;  

  while(ainlocal != ain) {
    nowenv2 = ainlocal;
    if(!ainlocal) throw env_exception();
    rbool aphi = ainlocal->phi;
    selphi = selphi && aphi;
    for(auto w: ainlocal->var) 
      if(isused(w, selphi) || isused(w, a)) {
        term w1 = valueKnown(selphi, w, false);
        if(debuglois) std::cout << ido << "checking variable: " << w << std::endl;
        
        if(w1.p) {
          if(debuglois) std::cout << ido << "value known to be " << w1 << std::endl;
          if(debuglois) std::cout << "sub selphi\n";
          selphi = substitute(selphi, w, w1);
          if(debuglois) std::cout << "selphi = " << selphi << std::endl;
          if(debuglois) std::cout << "sub a::\n";
          if(debuglois) std::cout << "a = " << a << std::endl;
          in_substitution = true;
          a = substitute(a, w, w1);
          in_substitution = false;
          if(debuglois) std::cout << "a = " << a << std::endl;
          }
        else if(isused(w, a)) {
          if(debuglois) std::cout << ido << "value of " << w << " not known, added to selvar" << std::endl;
          selvar.push_back(w);
          }
        else {
          if(debuglois) std::cout << ido << "value of " << w << " not known, added to to_quantify" << std::endl;
          to_quantify.push_back(w);
          }
        }
    ainlocal = ainlocal->parent;
    }
  
  nowenv = nowenv2;
  if(to_quantify.size()) {
    if(debuglois) std::cout << ido << "phi (1) = " << selphi << std::endl;
    if(debuglois) for(vptr v: to_quantify) std::cout << ido << "quantifier to add: " << v << std::endl;
    selphi = makequantifier(false, selphi, to_quantify);
    if(debuglois) std::cout << ido << "phi (2) = " << selphi << std::endl;
    }
#ifdef AGGSYM
  aggressive_simplify(selvar, selphi, a, ain);
#endif

  if(debuglois) {
    for(vptr v: selvar) 
    std::cout << ido << "| selvar = " << v << std::endl;
    std::cout << ido << "| selphi = " << selphi << std::endl;
    std::cout << ido << "| a      = " << a << std::endl;
    }

  elts.emplace_back(std::make_shared<SimpleSetOf<T>>(selvar, selphi, a));
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x6c0, %rsp            # imm = 0x6C0
movq %rsi, -0x440(%rbp)
movq %rdx, -0x438(%rbp)
movq %rcx, -0x430(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x428(%rbp)
leaq 0x7149e(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x34951
leaq 0x70b66(%rip), %rax     # 0xa52e8
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rsi
movq 0x70844(%rip), %rdi     # 0xa4fd8
callq 0x6afb0
movq %rax, %rdi
leaq 0x3da0e(%rip), %rsi     # 0x721b1
callq 0x82b0
movq -0x440(%rbp), %rsi
movq %rax, -0x458(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0x450(%rbp)
callq 0x35d60
movq -0x458(%rbp), %rdi
movq -0x450(%rbp), %rsi
callq 0x35da0
movq %rax, -0x448(%rbp)
jmp 0x347e2
movq -0x448(%rbp), %rdi
leaq 0x70b00(%rip), %rax     # 0xa52f0
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rsi
callq 0x6afb0
movq %rax, -0x460(%rbp)
jmp 0x34809
movq -0x460(%rbp), %rdi
leaq 0x3d9a2(%rip), %rsi     # 0x721b9
callq 0x82b0
movq %rax, -0x468(%rbp)
jmp 0x34825
leaq 0x70fb4(%rip), %rsi     # 0xa57e0
leaq -0x70(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0x173b0
movq -0x468(%rbp), %rdi
movq -0x478(%rbp), %rsi
callq 0x1ae80
movq %rax, -0x470(%rbp)
jmp 0x34858
movq -0x470(%rbp), %rdi
leaq 0x70a8a(%rip), %rax     # 0xa52f0
movq (%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rsi
callq 0x6afb0
movq %rax, -0x480(%rbp)
jmp 0x3487f
movq -0x480(%rbp), %rdi
leaq 0x3d933(%rip), %rsi     # 0x721c0
callq 0x82b0
movq %rax, -0x488(%rbp)
jmp 0x3489b
movq -0x438(%rbp), %rsi
leaq -0x88(%rbp), %rdi
movq %rdi, -0x498(%rbp)
callq 0x173b0
movq -0x488(%rbp), %rdi
movq -0x498(%rbp), %rsi
callq 0x1ae80
movq %rax, -0x490(%rbp)
jmp 0x348d1
movq -0x490(%rbp), %rdi
movq 0x706d1(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x348e6
leaq -0x88(%rbp), %rdi
callq 0x14b20
leaq -0x70(%rbp), %rdi
callq 0x14b20
leaq -0x48(%rbp), %rdi
callq 0x12ac0
jmp 0x34951
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x34943
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x3493a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x14b20
leaq -0x70(%rbp), %rdi
callq 0x14b20
leaq -0x48(%rbp), %rdi
callq 0x12ac0
jmp 0x35d56
leaq -0x89(%rbp), %rdi
callq 0x1af20
leaq -0xa8(%rbp), %rdi
callq 0x1af40
leaq -0xb8(%rbp), %rdi
leaq 0x70eb9(%rip), %rsi     # 0xa5830
callq 0x11030
leaq -0xd0(%rbp), %rdi
callq 0x1af40
movq -0x430(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
callq 0x173b0
movq -0x430(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
callq 0x173b0
movq -0x438(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
callq 0x1af60
testb $0x1, %al
jne 0x349ca
jmp 0x3558c
leaq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x1ade0
leaq -0xe0(%rbp), %rdi
callq 0x1afa0
testb $0x1, %al
jne 0x34a3d
movl $0x8, %edi
callq 0x8160
movq %rax, %rdi
movq %rdi, -0x4a0(%rbp)
movq $0x0, (%rdi)
callq 0x1afc0
movq -0x4a0(%rbp), %rdi
leaq 0x6eaad(%rip), %rsi     # 0xa34c8
leaq -0x19a22(%rip), %rdx    # 0x1b000
callq 0x84b0
jmp 0x35d5f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x35d0e
leaq -0xe0(%rbp), %rdi
callq 0x1b020
movq %rax, %rsi
addq $0x10, %rsi
leaq -0x100(%rbp), %rdi
movq %rdi, -0x4b8(%rbp)
callq 0x11030
leaq -0x120(%rbp), %rdi
movq %rdi, -0x4b0(%rbp)
leaq -0xb8(%rbp), %rsi
callq 0x11030
movq -0x4b8(%rbp), %rsi
leaq -0x130(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0x11030
movq -0x4b0(%rbp), %rsi
movq -0x4a8(%rbp), %rdx
leaq -0x110(%rbp), %rdi
callq 0x42150
jmp 0x34ab3
leaq -0xb8(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x11290
leaq -0x110(%rbp), %rdi
callq 0x11060
leaq -0x130(%rbp), %rdi
callq 0x11060
leaq -0x120(%rbp), %rdi
callq 0x11060
leaq -0xe0(%rbp), %rdi
callq 0x1b020
addq $0x20, %rax
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rdi
callq 0x1b040
movq %rax, -0x140(%rbp)
movq -0x138(%rbp), %rdi
callq 0x1b070
movq %rax, -0x148(%rbp)
leaq -0x140(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x1b0a0
testb $0x1, %al
jne 0x34b43
jmp 0x3554f
leaq -0x140(%rbp), %rdi
callq 0x1b0e0
movq %rax, %rsi
leaq -0x158(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x1b100
movq -0x4d8(%rbp), %rsi
leaq -0x168(%rbp), %rdi
movq %rdi, -0x4d0(%rbp)
callq 0x1b100
leaq -0x178(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
leaq -0xb8(%rbp), %rsi
callq 0x11030
movq -0x4d0(%rbp), %rdi
movq -0x4c8(%rbp), %rsi
movb $0x0, -0x189(%rbp)
movb $0x0, -0x1b1(%rbp)
callq 0x400f0
movb %al, -0x4b9(%rbp)
jmp 0x34bc2
movb -0x4b9(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x4d9(%rbp)
jne 0x34c42
jmp 0x34bd7
leaq -0x188(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
leaq -0x158(%rbp), %rsi
callq 0x1b100
movq -0x440(%rbp), %rsi
movb $0x1, -0x189(%rbp)
leaq -0x1b0(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x35d60
movq -0x4f0(%rbp), %rdi
movq -0x4e8(%rbp), %rsi
movb $0x1, -0x1b1(%rbp)
callq 0x35e10
movb %al, -0x4da(%rbp)
jmp 0x34c34
movb -0x4da(%rbp), %al
movb %al, -0x4d9(%rbp)
jmp 0x34c42
movb -0x4d9(%rbp), %al
movb %al, -0x4f1(%rbp)
testb $0x1, -0x1b1(%rbp)
jne 0x34c59
jmp 0x34c65
leaq -0x1b0(%rbp), %rdi
callq 0x12ac0
testb $0x1, -0x189(%rbp)
jne 0x34c70
jmp 0x34c7c
leaq -0x188(%rbp), %rdi
callq 0x10f20
leaq -0x178(%rbp), %rdi
callq 0x11060
leaq -0x168(%rbp), %rdi
callq 0x10f20
movb -0x4f1(%rbp), %al
testb $0x1, %al
jne 0x34ca3
jmp 0x35524
leaq -0x1d8(%rbp), %rdi
movq %rdi, -0x500(%rbp)
leaq -0x158(%rbp), %rsi
callq 0x1b100
movq -0x500(%rbp), %rdx
leaq -0x1c8(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
xorl %ecx, %ecx
callq 0x44890
jmp 0x34cdb
leaq -0x1d8(%rbp), %rdi
callq 0x10f20
leaq 0x70f22(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x34e77
leaq 0x705ea(%rip), %rax     # 0xa52e8
movq (%rax), %rax
movq %rax, -0x1e0(%rbp)
movq -0x1e0(%rbp), %rsi
movq 0x702c2(%rip), %rdi     # 0xa4fd8
callq 0x6afb0
movq %rax, -0x508(%rbp)
jmp 0x34d24
movq -0x508(%rbp), %rdi
leaq 0x3d495(%rip), %rsi     # 0x721c7
callq 0x82b0
movq %rax, -0x510(%rbp)
jmp 0x34d40
leaq -0x1f0(%rbp), %rdi
movq %rdi, -0x520(%rbp)
leaq -0x158(%rbp), %rsi
callq 0x1b100
movq -0x510(%rbp), %rdi
movq -0x520(%rbp), %rsi
callq 0x410b0
movq %rax, -0x518(%rbp)
jmp 0x34d76
movq -0x518(%rbp), %rdi
movq 0x7022c(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x34d8b
leaq -0x1f0(%rbp), %rdi
callq 0x10f20
jmp 0x34e77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x11060
leaq -0x120(%rbp), %rdi
callq 0x11060
jmp 0x3557b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x34e0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
testb $0x1, -0x1b1(%rbp)
jne 0x34dea
jmp 0x34df6
leaq -0x1b0(%rbp), %rdi
callq 0x12ac0
testb $0x1, -0x189(%rbp)
jne 0x34e01
jmp 0x34e0d
leaq -0x188(%rbp), %rdi
callq 0x10f20
jmp 0x34e0f
leaq -0x178(%rbp), %rdi
callq 0x11060
leaq -0x168(%rbp), %rdi
callq 0x10f20
jmp 0x35541
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x10f20
jmp 0x35541
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x35516
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x10f20
jmp 0x35516
leaq -0x1c8(%rbp), %rdi
callq 0x14bb0
testb $0x1, %al
jne 0x34e8c
jmp 0x35263
leaq 0x70d7d(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x34f14
leaq 0x70449(%rip), %rax     # 0xa52e8
movq (%rax), %rax
movq %rax, -0x1f8(%rbp)
movq -0x1f8(%rbp), %rsi
movq 0x70121(%rip), %rdi     # 0xa4fd8
callq 0x6afb0
movq %rax, -0x528(%rbp)
jmp 0x34ec5
movq -0x528(%rbp), %rdi
leaq 0x3d308(%rip), %rsi     # 0x721db
callq 0x82b0
movq %rax, -0x530(%rbp)
jmp 0x34ee1
movq -0x530(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x11140
movq %rax, -0x538(%rbp)
jmp 0x34efd
movq -0x538(%rbp), %rdi
movq 0x700a5(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x34f12
jmp 0x34f14
leaq 0x70cf5(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x34f37
movq 0x700b1(%rip), %rdi     # 0xa4fd8
leaq 0x3d2c0(%rip), %rsi     # 0x721ee
callq 0x82b0
jmp 0x34f35
jmp 0x34f37
leaq -0x218(%rbp), %rdi
movq %rdi, -0x540(%rbp)
leaq -0x158(%rbp), %rsi
callq 0x1b100
movq -0x540(%rbp), %rdx
leaq -0x208(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
leaq -0x1c8(%rbp), %rcx
callq 0x1b150
jmp 0x34f74
leaq -0xb8(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x11290
leaq -0x208(%rbp), %rdi
callq 0x11060
leaq -0x218(%rbp), %rdi
callq 0x10f20
leaq 0x70c6a(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x3505e
movq 0x70022(%rip), %rdi     # 0xa4fd8
leaq 0x3d2ca(%rip), %rsi     # 0x72287
callq 0x82b0
movq %rax, -0x548(%rbp)
jmp 0x34fcb
leaq -0x228(%rbp), %rdi
movq %rdi, -0x558(%rbp)
leaq -0xb8(%rbp), %rsi
callq 0x11030
movq -0x548(%rbp), %rdi
movq -0x558(%rbp), %rsi
callq 0x40060
movq %rax, -0x550(%rbp)
jmp 0x35001
movq -0x550(%rbp), %rdi
movq 0x6ffa1(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x35016
leaq -0x228(%rbp), %rdi
callq 0x11060
jmp 0x3505e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x10f20
jmp 0x35516
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x11060
jmp 0x35516
leaq 0x70bab(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x35081
movq 0x6ff67(%rip), %rdi     # 0xa4fd8
leaq 0x3d182(%rip), %rsi     # 0x721fa
callq 0x82b0
jmp 0x3507f
jmp 0x35081
leaq 0x70b88(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x35123
movq 0x6ff40(%rip), %rdi     # 0xa4fd8
leaq 0x3d164(%rip), %rsi     # 0x72203
callq 0x82b0
movq %rax, -0x560(%rbp)
jmp 0x350ad
movq -0x440(%rbp), %rsi
leaq -0x248(%rbp), %rdi
movq %rdi, -0x570(%rbp)
callq 0x35d60
movq -0x560(%rbp), %rdi
movq -0x570(%rbp), %rsi
callq 0x35da0
movq %rax, -0x568(%rbp)
jmp 0x350e3
movq -0x568(%rbp), %rdi
movq 0x6febf(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x350f8
leaq -0x248(%rbp), %rdi
callq 0x12ac0
jmp 0x35123
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x12ac0
jmp 0x35516
leaq 0x70b2e(%rip), %rax     # 0xa5c58
movb $0x1, (%rax)
leaq -0x278(%rbp), %rdi
movq %rdi, -0x578(%rbp)
leaq -0x158(%rbp), %rsi
callq 0x1b100
movq -0x440(%rbp), %rsi
movq -0x578(%rbp), %rdx
leaq -0x268(%rbp), %rdi
leaq -0x1c8(%rbp), %rcx
callq 0x35f10
jmp 0x3516a
movq -0x440(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x36010
leaq -0x268(%rbp), %rdi
callq 0x12ac0
leaq -0x278(%rbp), %rdi
callq 0x10f20
leaq 0x70abc(%rip), %rax     # 0xa5c58
movb $0x0, (%rax)
leaq 0x70a6a(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x3525e
movq 0x6fe22(%rip), %rdi     # 0xa4fd8
leaq 0x3d046(%rip), %rsi     # 0x72203
callq 0x82b0
movq %rax, -0x580(%rbp)
jmp 0x351cb
movq -0x440(%rbp), %rsi
leaq -0x298(%rbp), %rdi
movq %rdi, -0x590(%rbp)
callq 0x35d60
movq -0x580(%rbp), %rdi
movq -0x590(%rbp), %rsi
callq 0x35da0
movq %rax, -0x588(%rbp)
jmp 0x35201
movq -0x588(%rbp), %rdi
movq 0x6fda1(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x35216
leaq -0x298(%rbp), %rdi
callq 0x12ac0
jmp 0x3525e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x10f20
jmp 0x35516
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x12ac0
jmp 0x35516
jmp 0x35508
leaq -0x2a8(%rbp), %rdi
movq %rdi, -0x5a8(%rbp)
leaq -0x158(%rbp), %rsi
callq 0x1b100
movq -0x440(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
movq %rdi, -0x5a0(%rbp)
callq 0x35d60
movq -0x5a8(%rbp), %rdi
movq -0x5a0(%rbp), %rsi
callq 0x35e10
movb %al, -0x591(%rbp)
jmp 0x352b2
leaq -0x2c8(%rbp), %rdi
callq 0x12ac0
leaq -0x2a8(%rbp), %rdi
callq 0x10f20
movb -0x591(%rbp), %al
testb $0x1, %al
jne 0x352d9
jmp 0x35407
leaq 0x70930(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x353ed
leaq 0x6fff8(%rip), %rax     # 0xa52e8
movq (%rax), %rax
movq %rax, -0x2d0(%rbp)
movq -0x2d0(%rbp), %rsi
movq 0x6fcd0(%rip), %rdi     # 0xa4fd8
callq 0x6afb0
movq %rax, -0x5b0(%rbp)
jmp 0x35316
movq -0x5b0(%rbp), %rdi
leaq 0x3cee4(%rip), %rsi     # 0x72208
callq 0x82b0
movq %rax, -0x5b8(%rbp)
jmp 0x35332
leaq -0x2e0(%rbp), %rdi
movq %rdi, -0x5c8(%rbp)
leaq -0x158(%rbp), %rsi
callq 0x1b100
movq -0x5b8(%rbp), %rdi
movq -0x5c8(%rbp), %rsi
callq 0x410b0
movq %rax, -0x5c0(%rbp)
jmp 0x35368
movq -0x5c0(%rbp), %rdi
leaq 0x3ce9c(%rip), %rsi     # 0x72212
callq 0x82b0
movq %rax, -0x5d0(%rbp)
jmp 0x35384
movq -0x5d0(%rbp), %rdi
movq 0x6fc1e(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x35399
leaq -0x2e0(%rbp), %rdi
callq 0x10f20
jmp 0x353ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x12ac0
leaq -0x2a8(%rbp), %rdi
callq 0x10f20
jmp 0x35516
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x10f20
jmp 0x35516
leaq -0xa8(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x1b320
jmp 0x35402
jmp 0x35506
leaq 0x70802(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x354ef
leaq 0x6feca(%rip), %rax     # 0xa52e8
movq (%rax), %rax
movq %rax, -0x2e8(%rbp)
movq -0x2e8(%rbp), %rsi
movq 0x6fba2(%rip), %rdi     # 0xa4fd8
callq 0x6afb0
movq %rax, -0x5d8(%rbp)
jmp 0x35444
movq -0x5d8(%rbp), %rdi
leaq 0x3cdb6(%rip), %rsi     # 0x72208
callq 0x82b0
movq %rax, -0x5e0(%rbp)
jmp 0x35460
leaq -0x2f8(%rbp), %rdi
movq %rdi, -0x5f0(%rbp)
leaq -0x158(%rbp), %rsi
callq 0x1b100
movq -0x5e0(%rbp), %rdi
movq -0x5f0(%rbp), %rsi
callq 0x410b0
movq %rax, -0x5e8(%rbp)
jmp 0x35496
movq -0x5e8(%rbp), %rdi
leaq 0x3cd8a(%rip), %rsi     # 0x7222e
callq 0x82b0
movq %rax, -0x5f8(%rbp)
jmp 0x354b2
movq -0x5f8(%rbp), %rdi
movq 0x6faf0(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x354c7
leaq -0x2f8(%rbp), %rdi
callq 0x10f20
jmp 0x354ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x10f20
jmp 0x35516
leaq -0xd0(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x1b320
jmp 0x35504
jmp 0x35506
jmp 0x35508
leaq -0x1c8(%rbp), %rdi
callq 0x11360
jmp 0x35524
leaq -0x1c8(%rbp), %rdi
callq 0x11360
jmp 0x35541
leaq -0x158(%rbp), %rdi
callq 0x10f20
leaq -0x140(%rbp), %rdi
callq 0x1b390
jmp 0x34b27
leaq -0x158(%rbp), %rdi
callq 0x10f20
jmp 0x3557b
leaq -0xe0(%rbp), %rdi
callq 0x1b020
movq %rax, %rsi
leaq -0xe0(%rbp), %rdi
callq 0x1ade0
leaq -0x100(%rbp), %rdi
callq 0x11060
jmp 0x349ae
leaq -0x100(%rbp), %rdi
callq 0x11060
jmp 0x35d0e
movq -0x430(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x1ade0
leaq -0xd0(%rbp), %rdi
callq 0x1b3b0
cmpq $0x0, %rax
je 0x35941
leaq 0x70654(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x35684
leaq 0x6fd1c(%rip), %rax     # 0xa52e8
movq (%rax), %rax
movq %rax, -0x300(%rbp)
movq -0x300(%rbp), %rsi
movq 0x6f9f4(%rip), %rdi     # 0xa4fd8
callq 0x6afb0
movq %rax, -0x600(%rbp)
jmp 0x355f2
movq -0x600(%rbp), %rdi
leaq 0x3cc4f(%rip), %rsi     # 0x7224f
callq 0x82b0
movq %rax, -0x608(%rbp)
jmp 0x3560e
leaq -0x310(%rbp), %rdi
movq %rdi, -0x618(%rbp)
leaq -0xb8(%rbp), %rsi
callq 0x11030
movq -0x608(%rbp), %rdi
movq -0x618(%rbp), %rsi
callq 0x40060
movq %rax, -0x610(%rbp)
jmp 0x35644
movq -0x610(%rbp), %rdi
movq 0x6f95e(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x35659
leaq -0x310(%rbp), %rdi
callq 0x11060
jmp 0x35684
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x11060
jmp 0x35d0e
leaq 0x70585(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x357f5
leaq -0xd0(%rbp), %rax
movq %rax, -0x318(%rbp)
movq -0x318(%rbp), %rdi
callq 0x1b040
movq %rax, -0x320(%rbp)
movq -0x318(%rbp), %rdi
callq 0x1b070
movq %rax, -0x328(%rbp)
leaq -0x320(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x1b0a0
testb $0x1, %al
jne 0x356e4
jmp 0x357f3
leaq -0x320(%rbp), %rdi
callq 0x1b0e0
movq %rax, %rsi
leaq -0x338(%rbp), %rdi
callq 0x1b100
leaq 0x6fbe2(%rip), %rax     # 0xa52e8
movq (%rax), %rax
movq %rax, -0x340(%rbp)
movq -0x340(%rbp), %rsi
movq 0x6f8ba(%rip), %rdi     # 0xa4fd8
callq 0x6afb0
movq %rax, -0x620(%rbp)
jmp 0x3572c
movq -0x620(%rbp), %rdi
leaq 0x3cb20(%rip), %rsi     # 0x7225a
callq 0x82b0
movq %rax, -0x628(%rbp)
jmp 0x35748
leaq -0x350(%rbp), %rdi
movq %rdi, -0x638(%rbp)
leaq -0x338(%rbp), %rsi
callq 0x1b100
movq -0x628(%rbp), %rdi
movq -0x638(%rbp), %rsi
callq 0x410b0
movq %rax, -0x630(%rbp)
jmp 0x3577e
movq -0x630(%rbp), %rdi
movq 0x6f824(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x35793
leaq -0x350(%rbp), %rdi
callq 0x10f20
leaq -0x338(%rbp), %rdi
callq 0x10f20
leaq -0x320(%rbp), %rdi
callq 0x1b390
jmp 0x356c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x357e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x10f20
leaq -0x338(%rbp), %rdi
callq 0x10f20
jmp 0x35d0e
jmp 0x357f5
leaq -0x378(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x1b3d0
jmp 0x3580a
leaq -0x360(%rbp), %rdi
xorl %esi, %esi
leaq -0xb8(%rbp), %rdx
leaq -0x378(%rbp), %rcx
callq 0x44780
jmp 0x35828
leaq -0xb8(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x11290
leaq -0x360(%rbp), %rdi
callq 0x11060
leaq -0x378(%rbp), %rdi
callq 0x1b4c0
leaq 0x703b6(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x3593f
leaq 0x6fa7e(%rip), %rax     # 0xa52e8
movq (%rax), %rax
movq %rax, -0x380(%rbp)
movq -0x380(%rbp), %rsi
movq 0x6f756(%rip), %rdi     # 0xa4fd8
callq 0x6afb0
movq %rax, -0x640(%rbp)
jmp 0x35890
movq -0x640(%rbp), %rdi
leaq 0x3c9d0(%rip), %rsi     # 0x7226e
callq 0x82b0
movq %rax, -0x648(%rbp)
jmp 0x358ac
leaq -0x390(%rbp), %rdi
movq %rdi, -0x658(%rbp)
leaq -0xb8(%rbp), %rsi
callq 0x11030
movq -0x648(%rbp), %rdi
movq -0x658(%rbp), %rsi
callq 0x40060
movq %rax, -0x650(%rbp)
jmp 0x358e2
movq -0x650(%rbp), %rdi
movq 0x6f6c0(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x358f7
leaq -0x390(%rbp), %rdi
callq 0x11060
jmp 0x3593f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x1b4c0
jmp 0x35d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x390(%rbp), %rdi
callq 0x11060
jmp 0x35d0e
jmp 0x35941
movq -0x438(%rbp), %rcx
movq -0x440(%rbp), %rdx
leaq -0xa8(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x36050
jmp 0x35964
leaq 0x702a5(%rip), %rax     # 0xa5c10
testb $0x1, (%rax)
je 0x35c4f
leaq -0xa8(%rbp), %rax
movq %rax, -0x398(%rbp)
movq -0x398(%rbp), %rdi
callq 0x1b040
movq %rax, -0x3a0(%rbp)
movq -0x398(%rbp), %rdi
callq 0x1b070
movq %rax, -0x3a8(%rbp)
leaq -0x3a0(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x1b0a0
testb $0x1, %al
jne 0x359c4
jmp 0x35ad3
leaq -0x3a0(%rbp), %rdi
callq 0x1b0e0
movq %rax, %rsi
leaq -0x3b8(%rbp), %rdi
callq 0x1b100
leaq 0x6f902(%rip), %rax     # 0xa52e8
movq (%rax), %rax
movq %rax, -0x3c0(%rbp)
movq -0x3c0(%rbp), %rsi
movq 0x6f5da(%rip), %rdi     # 0xa4fd8
callq 0x6afb0
movq %rax, -0x660(%rbp)
jmp 0x35a0c
movq -0x660(%rbp), %rdi
leaq 0x3c85f(%rip), %rsi     # 0x72279
callq 0x82b0
movq %rax, -0x668(%rbp)
jmp 0x35a28
leaq -0x3d0(%rbp), %rdi
movq %rdi, -0x678(%rbp)
leaq -0x3b8(%rbp), %rsi
callq 0x1b100
movq -0x668(%rbp), %rdi
movq -0x678(%rbp), %rsi
callq 0x410b0
movq %rax, -0x670(%rbp)
jmp 0x35a5e
movq -0x670(%rbp), %rdi
movq 0x6f544(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x35a73
leaq -0x3d0(%rbp), %rdi
callq 0x10f20
leaq -0x3b8(%rbp), %rdi
callq 0x10f20
leaq -0x3a0(%rbp), %rdi
callq 0x1b390
jmp 0x359a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x35ac2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x10f20
leaq -0x3b8(%rbp), %rdi
callq 0x10f20
jmp 0x35d0e
leaq 0x6f80e(%rip), %rax     # 0xa52e8
movq (%rax), %rax
movq %rax, -0x3d8(%rbp)
movq -0x3d8(%rbp), %rsi
movq 0x6f4e6(%rip), %rdi     # 0xa4fd8
callq 0x6afb0
movq %rax, -0x680(%rbp)
jmp 0x35b00
movq -0x680(%rbp), %rdi
leaq 0x3c777(%rip), %rsi     # 0x72285
callq 0x82b0
movq %rax, -0x688(%rbp)
jmp 0x35b1c
leaq -0x3e8(%rbp), %rdi
movq %rdi, -0x698(%rbp)
leaq -0xb8(%rbp), %rsi
callq 0x11030
movq -0x688(%rbp), %rdi
movq -0x698(%rbp), %rsi
callq 0x40060
movq %rax, -0x690(%rbp)
jmp 0x35b52
movq -0x690(%rbp), %rdi
movq 0x6f450(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x35b67
leaq -0x3e8(%rbp), %rdi
callq 0x11060
leaq 0x6f76e(%rip), %rax     # 0xa52e8
movq (%rax), %rax
movq %rax, -0x3f0(%rbp)
movq -0x3f0(%rbp), %rsi
movq 0x6f446(%rip), %rdi     # 0xa4fd8
callq 0x6afb0
movq %rax, -0x6a0(%rbp)
jmp 0x35ba0
movq -0x6a0(%rbp), %rdi
leaq 0x3c6e3(%rip), %rsi     # 0x72291
callq 0x82b0
movq %rax, -0x6a8(%rbp)
jmp 0x35bbc
movq -0x440(%rbp), %rsi
leaq -0x410(%rbp), %rdi
movq %rdi, -0x6b8(%rbp)
callq 0x35d60
movq -0x6a8(%rbp), %rdi
movq -0x6b8(%rbp), %rsi
callq 0x35da0
movq %rax, -0x6b0(%rbp)
jmp 0x35bf2
movq -0x6b0(%rbp), %rdi
movq 0x6f3b0(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x35c07
leaq -0x410(%rbp), %rdi
callq 0x12ac0
jmp 0x35c4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0x11060
jmp 0x35d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x410(%rbp), %rdi
callq 0x12ac0
jmp 0x35d0e
movq -0x440(%rbp), %rcx
movq -0x428(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x6c0(%rbp)
leaq -0x420(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0xb8(%rbp), %rdx
callq 0x361b0
jmp 0x35c84
movq -0x6c0(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x36130
jmp 0x35c99
leaq -0x420(%rbp), %rdi
callq 0x2a9c0
leaq -0xf0(%rbp), %rdi
callq 0x14b20
leaq -0xe0(%rbp), %rdi
callq 0x14b20
leaq -0xd0(%rbp), %rdi
callq 0x1b4c0
leaq -0xb8(%rbp), %rdi
callq 0x11060
leaq -0xa8(%rbp), %rdi
callq 0x1b4c0
leaq -0x89(%rbp), %rdi
callq 0x1b720
addq $0x6c0, %rsp            # imm = 0x6C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x2a9c0
leaq -0xf0(%rbp), %rdi
callq 0x14b20
leaq -0xe0(%rbp), %rdi
callq 0x14b20
leaq -0xd0(%rbp), %rdi
callq 0x1b4c0
leaq -0xb8(%rbp), %rdi
callq 0x11060
leaq -0xa8(%rbp), %rdi
callq 0x1b4c0
leaq -0x89(%rbp), %rdi
callq 0x1b720
movq -0x50(%rbp), %rdi
callq 0x84d0
nop