// File: eryxcc[P]lois/src/solvers.cpp
// Function: lois::SolverSPASS::solve(lois::rbool)
virtual int solve(rbool phi) {
    std::ofstream ofs;

    featurelist fl;
    phi->listFeatures(fl);
    for(auto r: fl.relations) if(!r->worksWith(SPASS)) {
      ofs << "SPASS cannot use " << r->getName() << std::endl;
      return 1;
      }

    ofs.open("query.spass", std::ofstream::out);
    ofs << "begin_problem(LoisProblem)." << std::endl;
    ofs << std::endl;

    ofs << "list_of_descriptions." << std::endl;
    ofs << "name({*LOIS*})." << std::endl;
    ofs << "author({*LOIS*})." << std::endl;
    ofs << "status(unknown)." << std::endl;
    ofs << "description({*generated by LOIS*})." << std::endl;
    ofs << "end_of_list." << std::endl;
    ofs << std::endl;

    OutputLanguage sav = outlan;

    outlan = SPASS_SYMBOLS;
    ofs << "list_of_symbols." << std::endl;
    for(auto r: fl.relations) {
      RelOrder *o = dynamic_cast<RelOrder*> (r);
      if(o) ofs << "predicates[(" << spassescape(o->opgreater) << ", 2)]." << std::endl;
      }
    for(auto d: fl.domains) 
      ofs << "sorts[" << d->name << "]." << std::endl;
    ofs << "end_of_list." << std::endl;
    ofs << std::endl;

    outlan = SPASS_AXIOMS;
    ofs << "list_of_formulae(axioms)." << std::endl;
    for(auto r: fl.relations) {
      RelOrder *o = dynamic_cast<RelOrder*> (r);
      // to do: axiomatize min/max
      // to do: specify domains
      // (BUT: it does not work effectively with order even now)
#define G << spassescape(o->opgreater) <<
      ofs << "formula(forall([x,y,z],implies(and(" G "(x,y), " G "(y,z)), " G "(x,z))),1)." << std::endl;
      ofs << "formula(forall([x,y],not(and(" G "(x,y), equal(x,y)))),2)." << std::endl;
      ofs << "formula(forall([x,y],or(" G "(x,y), " G "(y,x), equal(x,y))),3)." << std::endl;
      ofs << "formula(forall([x],exists([y], " G "(y,x))),4)." << std::endl;
      ofs << "formula(forall([x],exists([y], " G "(x,y))),5)." << std::endl;
      ofs << "formula(forall([x,z], implies(" G "(x,z), exists([y], and(" G "(x,y), " G "(y,z))))), 6)." << std::endl;
#undef G
      }
    ofs << "end_of_list." << std::endl;
    ofs << std::endl;

    outlan = SPASS;
    ofs << "list_of_formulae(conjectures)." << std::endl;
    ofs << "formula(not(" << phi << "))." << std::endl;
    ofs << "end_of_list." << std::endl;
    ofs << std::endl;

    ofs << "end_problem." << std::endl;

    outlan = sav;
    ofs.close();
    if(system(cmd.c_str()))
      printf("system error\n");
    FILE *f = fopen("query.out", "rt");
    char buf[500];
    int ans = 1;
    while(fgets(buf, 500, f)) {
      if(strstr(buf, "Proof found")) ans=0;
      if(strstr(buf, "Completion found")) ans=2;
      }
    fclose(f);
    printf("SPASS answer: %d\n", ans);
    return ans;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa00, %rsp            # imm = 0xA00
movq %rsi, -0x7a8(%rbp)
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x7b0(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x84a0
leaq -0x278(%rbp), %rdi
movq %rdi, -0x7a0(%rbp)
callq 0x5b6c0
movq -0x7a8(%rbp), %rdi
callq 0x3ece0
movq -0x7a0(%rbp), %rsi
movq %rax, %rdi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
jmp 0x67615
leaq -0x278(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x290(%rbp)
movq -0x290(%rbp), %rdi
callq 0x5b6f0
movq %rax, -0x298(%rbp)
movq -0x290(%rbp), %rdi
callq 0x5b720
movq %rax, -0x2a0(%rbp)
leaq -0x298(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x5b750
testb $0x1, %al
jne 0x67669
jmp 0x67781
leaq -0x298(%rbp), %rdi
callq 0x5b780
movq (%rax), %rax
movq %rax, -0x2a8(%rbp)
movq -0x2a8(%rbp), %rdi
movq (%rdi), %rax
movq 0x30(%rax), %rax
movl $0x3, %esi
callq *%rax
movb %al, -0x7b1(%rbp)
jmp 0x6769c
movb -0x7b1(%rbp), %al
testb $0x1, %al
jne 0x6776e
jmp 0x676ac
leaq 0xc26c(%rip), %rsi      # 0x7391f
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x7c0(%rbp)
jmp 0x676c8
movq -0x2a8(%rbp), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq -0x2c8(%rbp), %rdi
callq *%rax
jmp 0x676e1
movq -0x7c0(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x8280
movq %rax, -0x7c8(%rbp)
jmp 0x676fd
movq -0x7c8(%rbp), %rdi
movq 0x3d8a5(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x67712
leaq -0x2c8(%rbp), %rdi
callq 0x8578
movl $0x1, -0x4(%rbp)
movl $0x1, -0x2cc(%rbp)
jmp 0x689f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x68a1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x8578
jmp 0x68a1a
jmp 0x67770
leaq -0x298(%rbp), %rdi
callq 0x5b7b0
jmp 0x6764d
leaq 0xc1a9(%rip), %rsi      # 0x73931
leaq -0x218(%rbp), %rdi
movl $0x10, %edx
callq 0x8060
jmp 0x6779b
leaq 0xc19b(%rip), %rsi      # 0x7393d
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x7d0(%rbp)
jmp 0x677b7
movq -0x7d0(%rbp), %rdi
movq 0x3d7eb(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x677cc
movq 0x3d7dd(%rip), %rsi     # 0xa4fb0
leaq -0x218(%rbp), %rdi
callq 0x8300
jmp 0x677e1
leaq 0xc171(%rip), %rsi      # 0x73959
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x7d8(%rbp)
jmp 0x677fd
movq -0x7d8(%rbp), %rdi
movq 0x3d7a5(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x67812
leaq 0xc156(%rip), %rsi      # 0x7396f
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x7e0(%rbp)
jmp 0x6782e
movq -0x7e0(%rbp), %rdi
movq 0x3d774(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x67843
leaq 0xc135(%rip), %rsi      # 0x7397f
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x7e8(%rbp)
jmp 0x6785f
movq -0x7e8(%rbp), %rdi
movq 0x3d743(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x67874
leaq 0xc116(%rip), %rsi      # 0x73991
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x7f0(%rbp)
jmp 0x67890
movq -0x7f0(%rbp), %rdi
movq 0x3d712(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x678a5
leaq 0xc0f6(%rip), %rsi      # 0x739a2
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x7f8(%rbp)
jmp 0x678c1
movq -0x7f8(%rbp), %rdi
movq 0x3d6e1(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x678d6
leaq 0xc0e9(%rip), %rsi      # 0x739c6
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x800(%rbp)
jmp 0x678f2
movq -0x800(%rbp), %rdi
movq 0x3d6b0(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x67907
movq 0x3d6a2(%rip), %rsi     # 0xa4fb0
leaq -0x218(%rbp), %rdi
callq 0x8300
jmp 0x6791c
leaq 0x3e041(%rip), %rax     # 0xa5964
movl (%rax), %ecx
movl %ecx, -0x2d0(%rbp)
movl $0x4, (%rax)
leaq 0xc09b(%rip), %rsi      # 0x739d3
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x808(%rbp)
jmp 0x6794d
movq -0x808(%rbp), %rdi
movq 0x3d655(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x67962
leaq -0x278(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x2d8(%rbp)
movq -0x2d8(%rbp), %rdi
callq 0x5b6f0
movq %rax, -0x2e0(%rbp)
movq -0x2d8(%rbp), %rdi
callq 0x5b720
movq %rax, -0x2e8(%rbp)
leaq -0x2e0(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x5b750
testb $0x1, %al
jne 0x679b6
jmp 0x67b3a
leaq -0x2e0(%rbp), %rdi
callq 0x5b780
movq (%rax), %rax
movq %rax, -0x2f0(%rbp)
movq -0x2f0(%rbp), %rax
movq %rax, -0x810(%rbp)
cmpq $0x0, %rax
je 0x67a07
movq -0x810(%rbp), %rdi
leaq 0x3ba3a(%rip), %rsi     # 0xa3428
leaq 0x3c65b(%rip), %rdx     # 0xa4050
xorl %eax, %eax
movl %eax, %ecx
callq 0x8350
movq %rax, -0x818(%rbp)
jmp 0x67a12
xorl %eax, %eax
movq %rax, -0x818(%rbp)
jmp 0x67a12
movq -0x818(%rbp), %rax
movq %rax, -0x2f8(%rbp)
cmpq $0x0, -0x2f8(%rbp)
je 0x67b27
leaq 0xbfaf(%rip), %rsi      # 0x739e4
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x820(%rbp)
jmp 0x67a4a
movq -0x2f8(%rbp), %rsi
addq $0x8, %rsi
leaq -0x328(%rbp), %rdi
movq %rdi, -0x828(%rbp)
callq 0x16b40
movq -0x828(%rbp), %rsi
leaq -0x318(%rbp), %rdi
callq 0x5b400
jmp 0x67a7d
movq -0x820(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x8280
movq %rax, -0x830(%rbp)
jmp 0x67a99
movq -0x830(%rbp), %rdi
leaq 0xbf4a(%rip), %rsi      # 0x739f1
callq 0x82b0
movq %rax, -0x838(%rbp)
jmp 0x67ab5
movq -0x838(%rbp), %rdi
movq 0x3d4ed(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x67aca
leaq -0x318(%rbp), %rdi
callq 0x8578
leaq -0x328(%rbp), %rdi
callq 0x114d0
jmp 0x67b27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x67b16
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x8578
leaq -0x328(%rbp), %rdi
callq 0x114d0
jmp 0x68a1a
jmp 0x67b29
leaq -0x2e0(%rbp), %rdi
callq 0x5b7b0
jmp 0x6799a
leaq -0x278(%rbp), %rax
movq %rax, -0x330(%rbp)
movq -0x330(%rbp), %rdi
callq 0x68a40
movq %rax, -0x338(%rbp)
movq -0x330(%rbp), %rdi
callq 0x68a70
movq %rax, -0x340(%rbp)
leaq -0x338(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x68aa0
testb $0x1, %al
jne 0x67b8a
jmp 0x67c1c
leaq -0x338(%rbp), %rdi
callq 0x68ad0
movq (%rax), %rax
movq %rax, -0x348(%rbp)
leaq 0xbe51(%rip), %rsi      # 0x739f8
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x840(%rbp)
jmp 0x67bbc
movq -0x840(%rbp), %rdi
movq -0x348(%rbp), %rsi
callq 0x8280
movq %rax, -0x848(%rbp)
jmp 0x67bd8
movq -0x848(%rbp), %rdi
leaq 0xbe0f(%rip), %rsi      # 0x739f5
callq 0x82b0
movq %rax, -0x850(%rbp)
jmp 0x67bf4
movq -0x850(%rbp), %rdi
movq 0x3d3ae(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x67c09
jmp 0x67c0b
leaq -0x338(%rbp), %rdi
callq 0x68b00
jmp 0x67b6e
leaq 0xbda3(%rip), %rsi      # 0x739c6
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x858(%rbp)
jmp 0x67c38
movq -0x858(%rbp), %rdi
movq 0x3d36a(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x67c4d
movq 0x3d35c(%rip), %rsi     # 0xa4fb0
leaq -0x218(%rbp), %rdi
callq 0x8300
jmp 0x67c62
leaq 0x3dcfb(%rip), %rax     # 0xa5964
movl $0x5, (%rax)
leaq 0xbd89(%rip), %rsi      # 0x739ff
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x860(%rbp)
jmp 0x67c8b
movq -0x860(%rbp), %rdi
movq 0x3d317(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x67ca0
leaq -0x278(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x350(%rbp)
movq -0x350(%rbp), %rdi
callq 0x5b6f0
movq %rax, -0x358(%rbp)
movq -0x350(%rbp), %rdi
callq 0x5b720
movq %rax, -0x360(%rbp)
leaq -0x358(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x5b750
testb $0x1, %al
jne 0x67cf4
jmp 0x6870e
leaq -0x358(%rbp), %rdi
callq 0x5b780
movq (%rax), %rax
movq %rax, -0x368(%rbp)
movq -0x368(%rbp), %rax
movq %rax, -0x868(%rbp)
cmpq $0x0, %rax
je 0x67d45
movq -0x868(%rbp), %rdi
leaq 0x3b6fc(%rip), %rsi     # 0xa3428
leaq 0x3c31d(%rip), %rdx     # 0xa4050
xorl %eax, %eax
movl %eax, %ecx
callq 0x8350
movq %rax, -0x870(%rbp)
jmp 0x67d50
xorl %eax, %eax
movq %rax, -0x870(%rbp)
jmp 0x67d50
movq -0x870(%rbp), %rax
movq %rax, -0x370(%rbp)
leaq 0xbcb4(%rip), %rsi      # 0x73a19
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x878(%rbp)
jmp 0x67d7a
movq -0x370(%rbp), %rsi
addq $0x8, %rsi
leaq -0x3a0(%rbp), %rdi
movq %rdi, -0x880(%rbp)
callq 0x16b40
movq -0x880(%rbp), %rsi
leaq -0x390(%rbp), %rdi
callq 0x5b400
jmp 0x67dad
movq -0x878(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x8280
movq %rax, -0x888(%rbp)
jmp 0x67dc9
movq -0x888(%rbp), %rdi
leaq 0xbc66(%rip), %rsi      # 0x73a3d
callq 0x82b0
movq %rax, -0x890(%rbp)
jmp 0x67de5
movq -0x370(%rbp), %rsi
addq $0x8, %rsi
leaq -0x3d0(%rbp), %rdi
movq %rdi, -0x898(%rbp)
callq 0x16b40
movq -0x898(%rbp), %rsi
leaq -0x3c0(%rbp), %rdi
callq 0x5b400
jmp 0x67e18
movq -0x890(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x8280
movq %rax, -0x8a0(%rbp)
jmp 0x67e34
movq -0x8a0(%rbp), %rdi
leaq 0xbc03(%rip), %rsi      # 0x73a45
callq 0x82b0
movq %rax, -0x8a8(%rbp)
jmp 0x67e50
movq -0x370(%rbp), %rsi
addq $0x8, %rsi
leaq -0x400(%rbp), %rdi
movq %rdi, -0x8b0(%rbp)
callq 0x16b40
movq -0x8b0(%rbp), %rsi
leaq -0x3f0(%rbp), %rdi
callq 0x5b400
jmp 0x67e83
movq -0x8a8(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
callq 0x8280
movq %rax, -0x8b8(%rbp)
jmp 0x67e9f
movq -0x8b8(%rbp), %rdi
leaq 0xbba1(%rip), %rsi      # 0x73a4e
callq 0x82b0
movq %rax, -0x8c0(%rbp)
jmp 0x67ebb
movq -0x8c0(%rbp), %rdi
movq 0x3d0e7(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x67ed0
leaq -0x3f0(%rbp), %rdi
callq 0x8578
leaq -0x400(%rbp), %rdi
callq 0x114d0
leaq -0x3c0(%rbp), %rdi
callq 0x8578
leaq -0x3d0(%rbp), %rdi
callq 0x114d0
leaq -0x390(%rbp), %rdi
callq 0x8578
leaq -0x3a0(%rbp), %rdi
callq 0x114d0
leaq 0xbb3b(%rip), %rsi      # 0x73a5a
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x8c8(%rbp)
jmp 0x67f34
movq -0x370(%rbp), %rsi
addq $0x8, %rsi
leaq -0x430(%rbp), %rdi
movq %rdi, -0x8d0(%rbp)
callq 0x16b40
movq -0x8d0(%rbp), %rsi
leaq -0x420(%rbp), %rdi
callq 0x5b400
jmp 0x67f67
movq -0x8c8(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x8280
movq %rax, -0x8d8(%rbp)
jmp 0x67f83
movq -0x8d8(%rbp), %rdi
leaq 0xbae7(%rip), %rsi      # 0x73a78
callq 0x82b0
movq %rax, -0x8e0(%rbp)
jmp 0x67f9f
movq -0x8e0(%rbp), %rdi
movq 0x3d003(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x67fb4
leaq -0x420(%rbp), %rdi
callq 0x8578
leaq -0x430(%rbp), %rdi
callq 0x114d0
leaq 0xbabe(%rip), %rsi      # 0x73a91
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x8e8(%rbp)
jmp 0x67fe8
movq -0x370(%rbp), %rsi
addq $0x8, %rsi
leaq -0x460(%rbp), %rdi
movq %rdi, -0x8f0(%rbp)
callq 0x16b40
movq -0x8f0(%rbp), %rsi
leaq -0x450(%rbp), %rdi
callq 0x5b400
jmp 0x6801b
movq -0x8e8(%rbp), %rdi
leaq -0x450(%rbp), %rsi
callq 0x8280
movq %rax, -0x8f8(%rbp)
jmp 0x68037
movq -0x8f8(%rbp), %rdi
leaq 0xb9f8(%rip), %rsi      # 0x73a3d
callq 0x82b0
movq %rax, -0x900(%rbp)
jmp 0x68053
movq -0x370(%rbp), %rsi
addq $0x8, %rsi
leaq -0x490(%rbp), %rdi
movq %rdi, -0x908(%rbp)
callq 0x16b40
movq -0x908(%rbp), %rsi
leaq -0x480(%rbp), %rdi
callq 0x5b400
jmp 0x68086
movq -0x900(%rbp), %rdi
leaq -0x480(%rbp), %rsi
callq 0x8280
movq %rax, -0x910(%rbp)
jmp 0x680a2
movq -0x910(%rbp), %rdi
leaq 0xb9fa(%rip), %rsi      # 0x73aaa
callq 0x82b0
movq %rax, -0x918(%rbp)
jmp 0x680be
movq -0x918(%rbp), %rdi
movq 0x3cee4(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x680d3
leaq -0x480(%rbp), %rdi
callq 0x8578
leaq -0x490(%rbp), %rdi
callq 0x114d0
leaq -0x450(%rbp), %rdi
callq 0x8578
leaq -0x460(%rbp), %rdi
callq 0x114d0
leaq 0xb9b8(%rip), %rsi      # 0x73ac2
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x920(%rbp)
jmp 0x6811f
movq -0x370(%rbp), %rsi
addq $0x8, %rsi
leaq -0x4c0(%rbp), %rdi
movq %rdi, -0x928(%rbp)
callq 0x16b40
movq -0x928(%rbp), %rsi
leaq -0x4b0(%rbp), %rdi
callq 0x5b400
jmp 0x68152
movq -0x920(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
callq 0x8280
movq %rax, -0x930(%rbp)
jmp 0x6816e
movq -0x930(%rbp), %rdi
leaq 0xb966(%rip), %rsi      # 0x73ae2
callq 0x82b0
movq %rax, -0x938(%rbp)
jmp 0x6818a
movq -0x938(%rbp), %rdi
movq 0x3ce18(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x6819f
leaq -0x4b0(%rbp), %rdi
callq 0x8578
leaq -0x4c0(%rbp), %rdi
callq 0x114d0
leaq 0xb904(%rip), %rsi      # 0x73ac2
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x940(%rbp)
jmp 0x681d3
movq -0x370(%rbp), %rsi
addq $0x8, %rsi
leaq -0x4f0(%rbp), %rdi
movq %rdi, -0x948(%rbp)
callq 0x16b40
movq -0x948(%rbp), %rsi
leaq -0x4e0(%rbp), %rdi
callq 0x5b400
jmp 0x68206
movq -0x940(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x8280
movq %rax, -0x950(%rbp)
jmp 0x68222
movq -0x950(%rbp), %rdi
leaq 0xb8be(%rip), %rsi      # 0x73aee
callq 0x82b0
movq %rax, -0x958(%rbp)
jmp 0x6823e
movq -0x958(%rbp), %rdi
movq 0x3cd64(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x68253
leaq -0x4e0(%rbp), %rdi
callq 0x8578
leaq -0x4f0(%rbp), %rdi
callq 0x114d0
leaq 0xb888(%rip), %rsi      # 0x73afa
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x960(%rbp)
jmp 0x68287
movq -0x370(%rbp), %rsi
addq $0x8, %rsi
leaq -0x520(%rbp), %rdi
movq %rdi, -0x968(%rbp)
callq 0x16b40
movq -0x968(%rbp), %rsi
leaq -0x510(%rbp), %rdi
callq 0x5b400
jmp 0x682ba
movq -0x960(%rbp), %rdi
leaq -0x510(%rbp), %rsi
callq 0x8280
movq %rax, -0x970(%rbp)
jmp 0x682d6
movq -0x970(%rbp), %rdi
leaq 0xb835(%rip), %rsi      # 0x73b19
callq 0x82b0
movq %rax, -0x978(%rbp)
jmp 0x682f2
movq -0x370(%rbp), %rsi
addq $0x8, %rsi
leaq -0x550(%rbp), %rdi
movq %rdi, -0x980(%rbp)
callq 0x16b40
movq -0x980(%rbp), %rsi
leaq -0x540(%rbp), %rdi
callq 0x5b400
jmp 0x68325
movq -0x978(%rbp), %rdi
leaq -0x540(%rbp), %rsi
callq 0x8280
movq %rax, -0x988(%rbp)
jmp 0x68341
movq -0x988(%rbp), %rdi
leaq 0xb6ee(%rip), %rsi      # 0x73a3d
callq 0x82b0
movq %rax, -0x990(%rbp)
jmp 0x6835d
movq -0x370(%rbp), %rsi
addq $0x8, %rsi
leaq -0x580(%rbp), %rdi
movq %rdi, -0x998(%rbp)
callq 0x16b40
movq -0x998(%rbp), %rsi
leaq -0x570(%rbp), %rdi
callq 0x5b400
jmp 0x68390
movq -0x990(%rbp), %rdi
leaq -0x570(%rbp), %rsi
callq 0x8280
movq %rax, -0x9a0(%rbp)
jmp 0x683ac
movq -0x9a0(%rbp), %rdi
leaq 0xb777(%rip), %rsi      # 0x73b31
callq 0x82b0
movq %rax, -0x9a8(%rbp)
jmp 0x683c8
movq -0x9a8(%rbp), %rdi
movq 0x3cbda(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x683dd
leaq -0x570(%rbp), %rdi
callq 0x8578
leaq -0x580(%rbp), %rdi
callq 0x114d0
leaq -0x540(%rbp), %rdi
callq 0x8578
leaq -0x550(%rbp), %rdi
callq 0x114d0
leaq -0x510(%rbp), %rdi
callq 0x8578
leaq -0x520(%rbp), %rdi
callq 0x114d0
leaq -0x358(%rbp), %rdi
callq 0x5b7b0
jmp 0x67cd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x684eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x684df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x684d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x684c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x684bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
leaq -0x3f0(%rbp), %rdi
callq 0x8578
leaq -0x400(%rbp), %rdi
callq 0x114d0
leaq -0x3c0(%rbp), %rdi
callq 0x8578
leaq -0x3d0(%rbp), %rdi
callq 0x114d0
leaq -0x390(%rbp), %rdi
callq 0x8578
leaq -0x3a0(%rbp), %rdi
callq 0x114d0
jmp 0x68a1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x6852e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x8578
leaq -0x430(%rbp), %rdi
callq 0x114d0
jmp 0x68a1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x685b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x685a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x68599
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x8578
leaq -0x490(%rbp), %rdi
callq 0x114d0
leaq -0x450(%rbp), %rdi
callq 0x8578
leaq -0x460(%rbp), %rdi
callq 0x114d0
jmp 0x68a1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x685f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0x8578
leaq -0x4c0(%rbp), %rdi
callq 0x114d0
jmp 0x68a1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x68637
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0x8578
leaq -0x4f0(%rbp), %rdi
callq 0x114d0
jmp 0x68a1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x686fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x686f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x686e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x686d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
jmp 0x686cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
leaq -0x570(%rbp), %rdi
callq 0x8578
leaq -0x580(%rbp), %rdi
callq 0x114d0
leaq -0x540(%rbp), %rdi
callq 0x8578
leaq -0x550(%rbp), %rdi
callq 0x114d0
leaq -0x510(%rbp), %rdi
callq 0x8578
leaq -0x520(%rbp), %rdi
callq 0x114d0
jmp 0x68a1a
leaq 0xb2b1(%rip), %rsi      # 0x739c6
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x9b0(%rbp)
jmp 0x6872a
movq -0x9b0(%rbp), %rdi
movq 0x3c878(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x6873f
movq 0x3c86a(%rip), %rsi     # 0xa4fb0
leaq -0x218(%rbp), %rdi
callq 0x8300
jmp 0x68754
leaq 0x3d209(%rip), %rax     # 0xa5964
movl $0x3, (%rax)
leaq 0xb3d8(%rip), %rsi      # 0x73b40
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x9b8(%rbp)
jmp 0x6877d
movq -0x9b8(%rbp), %rdi
movq 0x3c825(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x68792
leaq 0xb3c6(%rip), %rsi      # 0x73b5f
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x9c0(%rbp)
jmp 0x687ae
movq -0x7a8(%rbp), %rsi
leaq -0x590(%rbp), %rdi
movq %rdi, -0x9d0(%rbp)
callq 0x11030
movq -0x9c0(%rbp), %rdi
movq -0x9d0(%rbp), %rsi
callq 0x40060
movq %rax, -0x9c8(%rbp)
jmp 0x687e4
movq -0x9c8(%rbp), %rdi
leaq 0xb37a(%rip), %rsi      # 0x73b6c
callq 0x82b0
movq %rax, -0x9d8(%rbp)
jmp 0x68800
movq -0x9d8(%rbp), %rdi
movq 0x3c7a2(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x68815
leaq -0x590(%rbp), %rdi
callq 0x11060
leaq 0xb19e(%rip), %rsi      # 0x739c6
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x9e0(%rbp)
jmp 0x6883d
movq -0x9e0(%rbp), %rdi
movq 0x3c765(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x68852
movq 0x3c757(%rip), %rsi     # 0xa4fb0
leaq -0x218(%rbp), %rdi
callq 0x8300
jmp 0x68867
leaq 0xb302(%rip), %rsi      # 0x73b70
leaq -0x218(%rbp), %rdi
callq 0x82b0
movq %rax, -0x9e8(%rbp)
jmp 0x68883
movq -0x9e8(%rbp), %rdi
movq 0x3c71f(%rip), %rsi     # 0xa4fb0
callq 0x8300
jmp 0x68898
movl -0x2d0(%rbp), %ecx
leaq 0x3d0bf(%rip), %rax     # 0xa5964
movl %ecx, (%rax)
leaq -0x218(%rbp), %rdi
callq 0x8400
jmp 0x688b5
movq -0x7b0(%rbp), %rdi
addq $0x8, %rdi
callq 0x8130
movq %rax, %rdi
callq 0x8260
movl %eax, -0x9ec(%rbp)
jmp 0x688d5
movl -0x9ec(%rbp), %eax
cmpl $0x0, %eax
je 0x68915
leaq 0xaf7d(%rip), %rdi      # 0x73864
xorl %eax, %eax
callq 0x8050
jmp 0x688f0
jmp 0x68915
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x280(%rbp)
movl %eax, -0x284(%rbp)
leaq -0x590(%rbp), %rdi
callq 0x11060
jmp 0x68a1a
leaq 0xb2a4(%rip), %rdi      # 0x73bc0
leaq 0x99c2(%rip), %rsi      # 0x722e5
callq 0x8380
movq %rax, -0x9f8(%rbp)
jmp 0x68931
movq -0x9f8(%rbp), %rax
movq %rax, -0x598(%rbp)
movl $0x1, -0x794(%rbp)
movq -0x598(%rbp), %rdx
leaq -0x790(%rbp), %rdi
movl $0x1f4, %esi            # imm = 0x1F4
callq 0x8450
movq %rax, -0xa00(%rbp)
jmp 0x6896a
movq -0xa00(%rbp), %rax
cmpq $0x0, %rax
je 0x689bf
leaq -0x790(%rbp), %rdi
leaq 0xb1f8(%rip), %rsi      # 0x73b7d
callq 0x80a0
cmpq $0x0, %rax
je 0x6899a
movl $0x0, -0x794(%rbp)
leaq -0x790(%rbp), %rdi
leaq 0xb1e1(%rip), %rsi      # 0x73b89
callq 0x80a0
cmpq $0x0, %rax
je 0x689bd
movl $0x2, -0x794(%rbp)
jmp 0x68949
movq -0x598(%rbp), %rdi
callq 0x82c0
jmp 0x689cd
movl -0x794(%rbp), %esi
leaq 0xb1c0(%rip), %rdi      # 0x73b9a
xorl %eax, %eax
callq 0x8050
jmp 0x689e3
movl -0x794(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0x2cc(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x5b7e0
leaq -0x218(%rbp), %rdi
callq 0x8430
movl -0x4(%rbp), %eax
addq $0xa00, %rsp            # imm = 0xA00
popq %rbp
retq
leaq -0x278(%rbp), %rdi
callq 0x5b7e0
leaq -0x218(%rbp), %rdi
callq 0x8430
movq -0x280(%rbp), %rdi
callq 0x84d0
nop