// File: jstaursky[P]hutch/src/Sleigh/slgh_compile.cc
// Function: main
int main(int argc,char **argv)

{
  int4 retval = 0;

  signal(SIGSEGV, &segvHandler); // Exit on SEGV errors

#ifdef YYDEBUG
  yydebug = 0;
#endif

  if (argc < 2) {
    cerr << "USAGE: sleigh [-x] [-dNAME=VALUE] inputfile [outputfile]" << endl;
    cerr << "   -a              scan for all slaspec files recursively where inputfile is a directory" << endl;
    cerr << "   -x              turns on parser debugging" << endl;
    cerr << "   -u              print warnings for unnecessary pcode instructions" << endl;
    cerr << "   -l              report pattern conflicts" << endl;
    cerr << "   -n              print warnings for all NOP constructors" << endl;
    cerr << "   -t              print warnings for dead temporaries" << endl;
    cerr << "   -e              enforce use of 'local' keyword for temporaries" << endl;
    cerr << "   -c              print warnings for all constructors with colliding operands" << endl;
    cerr << "   -DNAME=VALUE    defines a preprocessor macro NAME with value VALUE" << endl;
    exit(2);
  }

  const string SLAEXT(".sla");	// Default sla extension
  const string SLASPECEXT(".slaspec");
  map<string,string> defines;
  bool enableUnnecessaryPcodeWarning = false;
  bool disableLenientConflict = false;
  bool enableAllCollisionWarning = false;
  bool enableAllNopWarning = false;
  bool enableDeadTempWarning = false;
  bool enforceLocalKeyWord = false;
  
  bool compileAll = false;
  
  int4 i;
  for(i=1;i<argc;++i) {
    if (argv[i][0] != '-') break;
    if (argv[i][1] == 'a')
      compileAll = true;
    else if (argv[i][1] == 'D') {
      string preproc(argv[i]+2);
      string::size_type pos = preproc.find('=');
      if (pos == string::npos) {
	cerr << "Bad sleigh option: "<< argv[i] << endl;
	exit(1);
      }
      string name = preproc.substr(0,pos);
      string value = preproc.substr(pos+1);
      defines[name] = value;
    }
    else if (argv[i][1] == 'u')
      enableUnnecessaryPcodeWarning = true;
    else if (argv[i][1] == 'l')
      disableLenientConflict = true;
    else if (argv[i][1] == 'c')
      enableAllCollisionWarning = true;
    else if (argv[i][1] == 'n')
      enableAllNopWarning = true;
    else if (argv[1][1] == 't')
      enableDeadTempWarning = true;
    else if (argv[1][1] == 'e')
      enforceLocalKeyWord = true;
#ifdef YYDEBUG
    else if (argv[i][1] == 'x')
      yydebug = 1;		// Debug option
#endif
    else {
      cerr << "Unknown option: " << argv[i] << endl;
      exit(1);
    }
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa80, %rsp            # imm = 0xA80
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movl $0xb, %edi
leaq 0x1004(%rip), %rsi      # 0x69370
callq 0x11580
cmpl $0x2, -0x8(%rbp)
jge 0x684d9
movq 0xc9c66(%rip), %rdi     # 0x131fe8
leaq 0x71672(%rip), %rsi     # 0xd99fb
callq 0x11420
movq %rax, %rdi
movq 0xc9c08(%rip), %rsi     # 0x131fa0
callq 0x114a0
movq 0xc9c44(%rip), %rdi     # 0x131fe8
leaq 0x71689(%rip), %rsi     # 0xd9a34
callq 0x11420
movq %rax, %rdi
movq 0xc9be6(%rip), %rsi     # 0x131fa0
callq 0x114a0
movq 0xc9c22(%rip), %rdi     # 0x131fe8
leaq 0x716c0(%rip), %rsi     # 0xd9a8d
callq 0x11420
movq %rax, %rdi
movq 0xc9bc4(%rip), %rsi     # 0x131fa0
callq 0x114a0
movq 0xc9c00(%rip), %rdi     # 0x131fe8
leaq 0x716cb(%rip), %rsi     # 0xd9aba
callq 0x11420
movq %rax, %rdi
movq 0xc9ba2(%rip), %rsi     # 0x131fa0
callq 0x114a0
movq 0xc9bde(%rip), %rdi     # 0x131fe8
leaq 0x716ee(%rip), %rsi     # 0xd9aff
callq 0x11420
movq %rax, %rdi
movq 0xc9b80(%rip), %rsi     # 0x131fa0
callq 0x114a0
movq 0xc9bbc(%rip), %rdi     # 0x131fe8
leaq 0x716f8(%rip), %rsi     # 0xd9b2b
callq 0x11420
movq %rax, %rdi
movq 0xc9b5e(%rip), %rsi     # 0x131fa0
callq 0x114a0
movq 0xc9b9a(%rip), %rdi     # 0x131fe8
leaq 0x71711(%rip), %rsi     # 0xd9b66
callq 0x11420
movq %rax, %rdi
movq 0xc9b3c(%rip), %rsi     # 0x131fa0
callq 0x114a0
movq 0xc9b78(%rip), %rdi     # 0x131fe8
leaq 0x71726(%rip), %rsi     # 0xd9b9d
callq 0x11420
movq %rax, %rdi
movq 0xc9b1a(%rip), %rsi     # 0x131fa0
callq 0x114a0
movq 0xc9b56(%rip), %rdi     # 0x131fe8
leaq 0x71746(%rip), %rsi     # 0xd9bdf
callq 0x11420
movq %rax, %rdi
movq 0xc9af8(%rip), %rsi     # 0x131fa0
callq 0x114a0
movq 0xc9b34(%rip), %rdi     # 0x131fe8
leaq 0x71773(%rip), %rsi     # 0xd9c2e
callq 0x11420
movq %rax, %rdi
movq 0xc9ad6(%rip), %rsi     # 0x131fa0
callq 0x114a0
movl $0x2, %edi
callq 0x115b0
leaq -0x39(%rbp), %rdi
movq %rdi, -0x950(%rbp)
callq 0x118c0
movq -0x950(%rbp), %rdx
leaq 0x7177d(%rip), %rsi     # 0xd9c74
leaq -0x38(%rbp), %rdi
callq 0x14430
jmp 0x68502
leaq -0x39(%rbp), %rdi
callq 0x114d0
leaq -0x71(%rbp), %rdi
movq %rdi, -0x958(%rbp)
callq 0x118c0
movq -0x958(%rbp), %rdx
leaq 0x71750(%rip), %rsi     # 0xd9c79
leaq -0x70(%rbp), %rdi
callq 0x14430
jmp 0x68534
leaq -0x71(%rbp), %rdi
callq 0x114d0
leaq -0xa8(%rbp), %rdi
callq 0x6b210
movb $0x0, -0xa9(%rbp)
movb $0x0, -0xaa(%rbp)
movb $0x0, -0xab(%rbp)
movb $0x0, -0xac(%rbp)
movb $0x0, -0xad(%rbp)
movb $0x0, -0xae(%rbp)
movb $0x0, -0xaf(%rbp)
movl $0x1, -0xb4(%rbp)
movl -0xb4(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x6896d
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
je 0x685e3
jmp 0x6896d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x39(%rbp), %rdi
callq 0x114d0
jmp 0x69361
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x71(%rbp), %rdi
callq 0x114d0
jmp 0x69358
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x61, %eax
jne 0x68607
movb $0x1, -0xaf(%rbp)
jmp 0x68957
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x44, %eax
jne 0x68812
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq (%rax,%rcx,8), %rax
addq $0x2, %rax
movq %rax, -0x968(%rbp)
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x960(%rbp)
callq 0x118c0
movq -0x968(%rbp), %rsi
movq -0x960(%rbp), %rdx
leaq -0xd8(%rbp), %rdi
callq 0x14430
jmp 0x6866c
leaq -0xd9(%rbp), %rdi
callq 0x114d0
leaq -0xd8(%rbp), %rdi
movl $0x3d, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x11660
movq %rax, -0xe8(%rbp)
cmpq $-0x1, -0xe8(%rbp)
jne 0x6872f
movq 0xc993f(%rip), %rdi     # 0x131fe8
leaq 0x715d2(%rip), %rsi     # 0xd9c82
callq 0x11420
movq %rax, -0x970(%rbp)
jmp 0x686be
movq -0x970(%rbp), %rdi
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x11420
movq %rax, -0x978(%rbp)
jmp 0x686e2
movq -0x978(%rbp), %rdi
movq 0xc98b0(%rip), %rsi     # 0x131fa0
callq 0x114a0
jmp 0x686f7
movl $0x1, %edi
callq 0x115b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xd9(%rbp), %rdi
callq 0x114d0
jmp 0x69343
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x68801
movq -0xe8(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x108(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x11480
jmp 0x6874f
movq -0xe8(%rbp), %rdx
incq %rdx
leaq -0x128(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
movq $-0x1, %rcx
callq 0x11480
jmp 0x68775
leaq -0xa8(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x6baf0
movq %rax, -0x980(%rbp)
jmp 0x68791
movq -0x980(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x11050
jmp 0x687a6
leaq -0x128(%rbp), %rdi
callq 0x11300
leaq -0x108(%rbp), %rdi
callq 0x11300
leaq -0xd8(%rbp), %rdi
callq 0x11300
jmp 0x68955
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x687f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x11300
leaq -0x108(%rbp), %rdi
callq 0x11300
leaq -0xd8(%rbp), %rdi
callq 0x11300
jmp 0x69343
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x75, %eax
jne 0x68836
movb $0x1, -0xa9(%rbp)
jmp 0x68953
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x6c, %eax
jne 0x6885a
movb $0x1, -0xaa(%rbp)
jmp 0x68951
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x63, %eax
jne 0x6887e
movb $0x1, -0xab(%rbp)
jmp 0x6894f
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %eax
cmpl $0x6e, %eax
jne 0x688a2
movb $0x1, -0xac(%rbp)
jmp 0x6894d
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x74, %eax
jne 0x688bf
movb $0x1, -0xad(%rbp)
jmp 0x6894b
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x65, %eax
jne 0x688d9
movb $0x1, -0xae(%rbp)
jmp 0x68949
movq 0xc9708(%rip), %rdi     # 0x131fe8
leaq 0x713af(%rip), %rsi     # 0xd9c96
callq 0x11420
movq %rax, -0x988(%rbp)
jmp 0x688f5
movq -0x988(%rbp), %rdi
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x11420
movq %rax, -0x990(%rbp)
jmp 0x68919
movq -0x990(%rbp), %rdi
movq 0xc9679(%rip), %rsi     # 0x131fa0
callq 0x114a0
jmp 0x6892e
movl $0x1, %edi
callq 0x115b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x69343
jmp 0x6894b
jmp 0x6894d
jmp 0x6894f
jmp 0x68951
jmp 0x68953
jmp 0x68955
jmp 0x68957
jmp 0x68959
movl -0xb4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb4(%rbp)
jmp 0x68584
testb $0x1, -0xaf(%rbp)
je 0x68e3b
movl -0xb4(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x689c5
movq 0xc9657(%rip), %rdi     # 0x131fe8
leaq 0x7130f(%rip), %rsi     # 0xd9ca7
callq 0x11420
movq %rax, -0x998(%rbp)
jmp 0x689a6
movq -0x998(%rbp), %rdi
movq 0xc95ec(%rip), %rsi     # 0x131fa0
callq 0x114a0
jmp 0x689bb
movl $0x1, %edi
callq 0x115b0
leaq -0x70(%rbp), %rdi
callq 0x11770
movq %rax, -0x130(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x1ba90
leaq -0x169(%rbp), %rdi
movq %rdi, -0x9a0(%rbp)
callq 0x118c0
movq -0x9a0(%rbp), %rdx
leaq 0x6ba6a(%rip), %rsi     # 0xd446c
leaq -0x168(%rbp), %rdi
callq 0x14430
jmp 0x68a10
leaq -0x169(%rbp), %rdi
callq 0x114d0
movl -0xb4(%rbp), %eax
cmpl -0x8(%rbp), %eax
je 0x68a74
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
leaq -0x168(%rbp), %rdi
callq 0x116e0
jmp 0x68a44
jmp 0x68a74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x169(%rbp), %rdi
callq 0x114d0
jmp 0x68e2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x68e1e
leaq -0x148(%rbp), %rdi
leaq -0x168(%rbp), %rsi
leaq -0x70(%rbp), %rdx
callq 0x69390
jmp 0x68a8d
movq 0xc952c(%rip), %rdi     # 0x131fc0
leaq 0x71220(%rip), %rsi     # 0xd9cbb
callq 0x11420
movq %rax, -0x9a8(%rbp)
jmp 0x68aa9
leaq -0x148(%rbp), %rdi
callq 0x15090
movq -0x9a8(%rbp), %rdi
movq %rax, %rsi
callq 0x11110
movq %rax, -0x9b0(%rbp)
jmp 0x68acd
movq -0x9b0(%rbp), %rdi
leaq 0x711eb(%rip), %rsi     # 0xd9cc6
callq 0x11420
movq %rax, -0x9b8(%rbp)
jmp 0x68ae9
movq -0x9b8(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x113e0
movq %rax, -0x9c0(%rbp)
jmp 0x68b05
movq -0x9c0(%rbp), %rdi
leaq 0x78a3f(%rip), %rsi     # 0xe1552
callq 0x11420
jmp 0x68b1a
movl $0x0, -0x170(%rbp)
movslq -0x170(%rbp), %rax
movq %rax, -0x9c8(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x15090
movq %rax, %rcx
movq -0x9c8(%rbp), %rax
cmpq %rcx, %rax
jae 0x68de7
movslq -0x170(%rbp), %rsi
leaq -0x148(%rbp), %rdi
callq 0x1bb40
movq %rax, %rsi
leaq -0x190(%rbp), %rdi
callq 0x11200
jmp 0x68b75
movq 0xc9444(%rip), %rdi     # 0x131fc0
leaq 0x71156(%rip), %rsi     # 0xd9cd9
callq 0x11420
movq %rax, -0x9d0(%rbp)
jmp 0x68b91
movq -0x9d0(%rbp), %rdi
movl -0x170(%rbp), %esi
incl %esi
callq 0x11880
movq %rax, -0x9d8(%rbp)
jmp 0x68bae
movq -0x9d8(%rbp), %rdi
leaq 0x71129(%rip), %rsi     # 0xd9ce5
callq 0x11420
movq %rax, -0x9e0(%rbp)
jmp 0x68bca
leaq -0x148(%rbp), %rdi
callq 0x15090
movq -0x9e0(%rbp), %rdi
movq %rax, %rsi
callq 0x11110
movq %rax, -0x9e8(%rbp)
jmp 0x68bee
movq -0x9e8(%rbp), %rdi
leaq 0x710ee(%rip), %rsi     # 0xd9cea
callq 0x11420
movq %rax, -0x9f0(%rbp)
jmp 0x68c0a
movq -0x9f0(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x113e0
movq %rax, -0x9f8(%rbp)
jmp 0x68c26
movq -0x9f8(%rbp), %rdi
leaq 0x7891e(%rip), %rsi     # 0xe1552
callq 0x11420
jmp 0x68c3b
leaq -0x1b0(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x11200
jmp 0x68c50
leaq -0x190(%rbp), %rdi
callq 0x11770
movq %rax, %rsi
movq -0x130(%rbp), %rdx
subq %rdx, %rsi
leaq -0x1b0(%rbp), %rdi
leaq -0x38(%rbp), %rcx
callq 0x111b0
jmp 0x68c7b
leaq -0x510(%rbp), %rdi
callq 0x61030
jmp 0x68c89
movzbl -0xac(%rbp), %r9d
movzbl -0xab(%rbp), %r8d
movzbl -0xaa(%rbp), %ecx
movzbl -0xa9(%rbp), %edx
movzbl -0xad(%rbp), %esi
movzbl -0xae(%rbp), %edi
andl $0x1, %edi
movq %rsp, %rax
movl %edi, 0x8(%rax)
andl $0x1, %esi
movl %esi, (%rax)
andl $0x1, %edx
andl $0x1, %ecx
andl $0x1, %r8d
andl $0x1, %r9d
leaq -0x510(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x69490
jmp 0x68ce6
leaq -0x190(%rbp), %rdi
callq 0x111f0
movq %rax, -0xa08(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x111f0
movq -0xa08(%rbp), %rdi
movq %rax, %rsi
leaq -0x510(%rbp), %rdx
callq 0x695f0
movl %eax, -0x9fc(%rbp)
jmp 0x68d23
movl -0x9fc(%rbp), %eax
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
je 0x68d7d
movl -0x14(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0x514(%rbp)
jmp 0x68d87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x68dd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x68dcd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x510(%rbp), %rdi
callq 0x6cc60
jmp 0x68dcd
movl $0x0, -0x514(%rbp)
leaq -0x510(%rbp), %rdi
callq 0x6cc60
leaq -0x1b0(%rbp), %rdi
callq 0x11300
leaq -0x190(%rbp), %rdi
callq 0x11300
movl -0x514(%rbp), %eax
testl %eax, %eax
jne 0x68df1
jmp 0x68db7
jmp 0x68db9
movl -0x170(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x170(%rbp)
jmp 0x68b24
leaq -0x1b0(%rbp), %rdi
callq 0x11300
leaq -0x190(%rbp), %rdi
callq 0x11300
jmp 0x68e1e
movl $0x0, -0x514(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x11300
leaq -0x148(%rbp), %rdi
callq 0x1bc40
movl -0x514(%rbp), %eax
testl %eax, %eax
jne 0x69319
jmp 0x68e19
jmp 0x69309
leaq -0x168(%rbp), %rdi
callq 0x11300
leaq -0x148(%rbp), %rdi
callq 0x1bc40
jmp 0x69343
movl -0xb4(%rbp), %eax
cmpl -0x8(%rbp), %eax
jne 0x68e81
movq 0xc919b(%rip), %rdi     # 0x131fe8
leaq 0x70e99(%rip), %rsi     # 0xd9ced
callq 0x11420
movq %rax, -0xa10(%rbp)
jmp 0x68e62
movq -0xa10(%rbp), %rdi
movq 0xc9130(%rip), %rsi     # 0x131fa0
callq 0x114a0
jmp 0x68e77
movl $0x1, %edi
callq 0x115b0
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xa20(%rbp)
leaq -0x539(%rbp), %rdi
movq %rdi, -0xa18(%rbp)
callq 0x118c0
movq -0xa20(%rbp), %rsi
movq -0xa18(%rbp), %rdx
leaq -0x538(%rbp), %rdi
callq 0x14430
jmp 0x68ec6
leaq -0x539(%rbp), %rdi
callq 0x114d0
xorl %eax, %eax
movl %eax, %edx
leaq -0x538(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x119b0
movq %rax, -0x548(%rbp)
movb $0x0, -0x549(%rbp)
leaq -0x571(%rbp), %rdi
movq %rdi, -0xa28(%rbp)
callq 0x118c0
movq -0xa28(%rbp), %rdx
leaq 0x7806b(%rip), %rsi     # 0xe0f80
leaq -0x570(%rbp), %rdi
callq 0x14430
jmp 0x68f23
leaq -0x571(%rbp), %rdi
callq 0x114d0
cmpq $-0x1, -0x548(%rbp)
jne 0x68fb7
leaq -0x570(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0x11050
jmp 0x68f4e
leaq -0x538(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x11950
jmp 0x68f60
movb $0x1, -0x549(%rbp)
jmp 0x68ff6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x539(%rbp), %rdi
callq 0x114d0
jmp 0x69343
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x571(%rbp), %rdi
callq 0x114d0
jmp 0x692fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x692ef
movq -0x548(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x598(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0x11480
jmp 0x68fd7
leaq -0x570(%rbp), %rdi
leaq -0x598(%rbp), %rsi
callq 0x115c0
leaq -0x598(%rbp), %rdi
callq 0x11300
movl -0xb4(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0x2, %ecx
cmpl %ecx, %eax
jge 0x69041
movq 0xc8fdb(%rip), %rdi     # 0x131fe8
leaq 0x70c93(%rip), %rsi     # 0xd9ca7
callq 0x11420
movq %rax, -0xa30(%rbp)
jmp 0x69022
movq -0xa30(%rbp), %rdi
movq 0xc8f70(%rip), %rsi     # 0x131fa0
callq 0x114a0
jmp 0x69037
movl $0x1, %edi
callq 0x115b0
leaq -0x8f8(%rbp), %rdi
callq 0x61030
jmp 0x6904f
movzbl -0xac(%rbp), %r9d
movzbl -0xab(%rbp), %r8d
movzbl -0xaa(%rbp), %ecx
movzbl -0xa9(%rbp), %edx
movzbl -0xad(%rbp), %esi
movzbl -0xae(%rbp), %edi
andl $0x1, %edi
movq %rsp, %rax
movl %edi, 0x8(%rax)
andl $0x1, %esi
movl %esi, (%rax)
andl $0x1, %edx
andl $0x1, %ecx
andl $0x1, %r8d
andl $0x1, %r9d
leaq -0x8f8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x69490
jmp 0x690ac
movl -0xb4(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x691ed
movq -0x10(%rbp), %rax
movslq -0xb4(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rax
movq %rax, -0xa40(%rbp)
leaq -0x919(%rbp), %rdi
movq %rdi, -0xa38(%rbp)
callq 0x118c0
movq -0xa40(%rbp), %rsi
movq -0xa38(%rbp), %rdx
leaq -0x918(%rbp), %rdi
callq 0x14430
jmp 0x69106
leaq -0x919(%rbp), %rdi
callq 0x114d0
leaq -0x918(%rbp), %rdi
leaq -0x38(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x119b0
movq %rax, -0x928(%rbp)
cmpq $-0x1, -0x928(%rbp)
jne 0x69196
leaq -0x918(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x11950
jmp 0x69149
jmp 0x69196
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x692e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x919(%rbp), %rdi
callq 0x114d0
jmp 0x692e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x918(%rbp), %rdi
callq 0x11300
jmp 0x692e3
leaq -0x538(%rbp), %rdi
callq 0x111f0
movq %rax, -0xa50(%rbp)
leaq -0x918(%rbp), %rdi
callq 0x111f0
movq -0xa50(%rbp), %rdi
movq %rax, %rsi
leaq -0x8f8(%rbp), %rdx
callq 0x695f0
movl %eax, -0xa44(%rbp)
jmp 0x691d3
movl -0xa44(%rbp), %eax
movl %eax, -0x14(%rbp)
leaq -0x918(%rbp), %rdi
callq 0x11300
jmp 0x692bd
testb $0x1, -0x549(%rbp)
je 0x6928f
leaq -0x948(%rbp), %rdi
leaq -0x570(%rbp), %rsi
callq 0x11200
jmp 0x6920f
leaq -0x948(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x11950
jmp 0x69221
leaq -0x538(%rbp), %rdi
callq 0x111f0
movq %rax, -0xa60(%rbp)
leaq -0x948(%rbp), %rdi
callq 0x111f0
movq -0xa60(%rbp), %rdi
movq %rax, %rsi
leaq -0x8f8(%rbp), %rdx
callq 0x695f0
movl %eax, -0xa54(%rbp)
jmp 0x6925e
movl -0xa54(%rbp), %eax
movl %eax, -0x14(%rbp)
leaq -0x948(%rbp), %rdi
callq 0x11300
jmp 0x692bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x948(%rbp), %rdi
callq 0x11300
jmp 0x692e3
leaq -0x538(%rbp), %rdi
callq 0x111f0
movq %rax, %rdi
leaq -0x8f8(%rbp), %rsi
callq 0x69a10
movl %eax, -0xa64(%rbp)
jmp 0x692b2
movl -0xa64(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x692bd
leaq -0x8f8(%rbp), %rdi
callq 0x6cc60
leaq -0x570(%rbp), %rdi
callq 0x11300
leaq -0x538(%rbp), %rdi
callq 0x11300
jmp 0x69309
leaq -0x8f8(%rbp), %rdi
callq 0x6cc60
leaq -0x570(%rbp), %rdi
callq 0x11300
leaq -0x538(%rbp), %rdi
callq 0x11300
jmp 0x69343
movl -0x14(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0x514(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x6b490
leaq -0x70(%rbp), %rdi
callq 0x11300
leaq -0x38(%rbp), %rdi
callq 0x11300
movl -0x4(%rbp), %eax
addq $0xa80, %rsp            # imm = 0xA80
popq %rbp
retq
leaq -0xa8(%rbp), %rdi
callq 0x6b490
leaq -0x70(%rbp), %rdi
callq 0x11300
leaq -0x38(%rbp), %rdi
callq 0x11300
movq -0x48(%rbp), %rdi
callq 0x118b0
nopw (%rax,%rax)