// File: jstaursky[P]hutch/src/Sleigh/slghpatexpress.cc
// Function: TokenPattern::resolveTokens(TokenPattern const&, TokenPattern const&)
int4 TokenPattern::resolveTokens(const TokenPattern &tok1,const TokenPattern &tok2)

{				// Use the token lists to decide how the two patterns
				// should be aligned relative to each other
				// return how much -tok2- needs to be shifted
				// and set the resulting tokenlist and ellipses
  bool reversedirection = false;
  leftellipsis = false;
  rightellipsis = false;
  int4 ressa = 0;
  int4 minsize = tok1.toklist.size() < tok2.toklist.size() ? tok1.toklist.size() : tok2.toklist.size();
  if (minsize == 0) {
				// Check if pattern doesn't care about tokens
    if ((tok1.toklist.size()==0)&&(tok1.leftellipsis==false)&&(tok1.rightellipsis==false)) {
      toklist = tok2.toklist;
      leftellipsis = tok2.leftellipsis;
      rightellipsis = tok2.rightellipsis;
      return 0;
    }
    else if ((tok2.toklist.size()==0)&&(tok2.leftellipsis==false)&&(tok2.rightellipsis==false)) {
      toklist = tok1.toklist;
      leftellipsis = tok1.leftellipsis;
      rightellipsis = tok1.rightellipsis;
      return 0;
    }
				// If one of the ellipses is true then the pattern
				// still cares about tokens even though none are
				// specified
  }
  
  if (tok1.leftellipsis) {
    reversedirection = true;
    if (tok2.rightellipsis)
      throw SleighError("Right/left ellipsis");
    else if (tok2.leftellipsis)
      leftellipsis = true;
    else if (tok1.toklist.size() != minsize)
      throw SleighError("Mismatched pattern sizes");
    else if (tok1.toklist.size()==tok2.toklist.size())
      throw SleighError("Pattern size cannot vary (missing ... ?)");
  }
  else if (tok1.rightellipsis) {
    if (tok2.leftellipsis)
      throw SleighError("Left/right ellipsis");
    else if (tok2.rightellipsis)
      rightellipsis = true;
    else if (tok1.toklist.size() != minsize)
      throw SleighError("Mismatched pattern sizes");
    else if (tok1.toklist.size()==tok2.toklist.size())
      throw SleighError("Pattern size cannot vary (missing ... ?)");
  }
  else {
    if (tok2.leftellipsis) {
      reversedirection = true;
      if (tok2.toklist.size() != minsize)
	throw SleighError("Mismatched pattern sizes");
      else if (tok1.toklist.size()==tok2.toklist.size())
	throw SleighError("Pattern size cannot vary (missing ... ?)");
    }
    else if (tok2.rightellipsis) {
      if (tok2.toklist.size() != minsize)
	throw SleighError("Mismatched pattern sizes");
      else if (tok1.toklist.size()==tok2.toklist.size())
	throw SleighError("Pattern size cannot vary (missing ... ?)");
    }
    else {
      if (tok2.toklist.size() != tok1.toklist.size())
	throw SleighError("Mismatched pattern sizes");
    }
  }
  if (reversedirection) {
    for(int4 i=0;i<minsize;++i)
      if (tok1.toklist[tok1.toklist.size()-1-i] != tok2.toklist[tok2.toklist.size()-1-i])
	throw SleighError("Mismatched tokens when combining patterns");
    if (tok1.toklist.size() <= tok2.toklist.size())
      for(int4 i=minsize;i<tok2.toklist.size();++i)
	ressa += tok2.toklist[tok2.toklist.size()-1-i]->getSize();
    else
      for(int4 i=minsize;i<tok1.toklist.size();++i)
	ressa += tok1.toklist[tok1.toklist.size()-1-i]->getSize();
    if (tok1.toklist.size() < tok2.toklist.size())
      ressa = -ressa;
  }
  else {
    for(int4 i=0;i<minsize;++i)
      if (tok1.toklist[i] != tok2.toklist[i])
	throw SleighError("Mismatched tokens when combining patterns");
  }
				// Save the results into -this-
  if (tok1.toklist.size() <= tok2.toklist.size())
    toklist = tok2.toklist;
  else
    toklist = tok1.toklist;
  return ressa;
}

// Assembly:
subq $0x3b8, %rsp            # imm = 0x3B8
movq %rdi, 0x3a8(%rsp)
movq %rsi, 0x3a0(%rsp)
movq %rdx, 0x398(%rsp)
movq 0x3a8(%rsp), %rax
movq %rax, 0x158(%rsp)
movb $0x0, 0x397(%rsp)
movb $0x0, 0x20(%rax)
movb $0x0, 0x21(%rax)
movl $0x0, 0x390(%rsp)
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, 0x160(%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, %rcx
movq 0x160(%rsp), %rax
cmpq %rcx, %rax
jae 0x1256ef
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, 0x150(%rsp)
jmp 0x125708
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, 0x150(%rsp)
movq 0x150(%rsp), %rax
movl %eax, 0x38c(%rsp)
cmpl $0x0, 0x38c(%rsp)
jne 0x125861
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
cmpq $0x0, %rax
jne 0x1257c1
movq 0x3a0(%rsp), %rax
movb 0x20(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1257c1
movq 0x3a0(%rsp), %rax
movb 0x21(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1257c1
movq 0x158(%rsp), %rdi
movq 0x398(%rsp), %rsi
addq $0x8, %rsi
addq $0x8, %rdi
callq 0xdb420
movq 0x158(%rsp), %rax
movq 0x398(%rsp), %rcx
movb 0x20(%rcx), %cl
andb $0x1, %cl
movb %cl, 0x20(%rax)
movq 0x398(%rsp), %rcx
movb 0x21(%rcx), %cl
andb $0x1, %cl
movb %cl, 0x21(%rax)
movl $0x0, 0x3b4(%rsp)
jmp 0x126a93
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
cmpq $0x0, %rax
jne 0x12585d
movq 0x398(%rsp), %rax
movb 0x20(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x12585d
movq 0x398(%rsp), %rax
movb 0x21(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x12585d
movq 0x158(%rsp), %rdi
movq 0x3a0(%rsp), %rsi
addq $0x8, %rsi
addq $0x8, %rdi
callq 0xdb420
movq 0x158(%rsp), %rax
movq 0x3a0(%rsp), %rcx
movb 0x20(%rcx), %cl
andb $0x1, %cl
movb %cl, 0x20(%rax)
movq 0x3a0(%rsp), %rcx
movb 0x21(%rcx), %cl
andb $0x1, %cl
movb %cl, 0x21(%rax)
movl $0x0, 0x3b4(%rsp)
jmp 0x126a93
jmp 0x12585f
jmp 0x125861
movq 0x3a0(%rsp), %rax
testb $0x1, 0x20(%rax)
je 0x125be1
movb $0x1, 0x397(%rsp)
movq 0x398(%rsp), %rax
testb $0x1, 0x21(%rax)
je 0x12597b
movb $0x1, 0x353(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0x140(%rsp)
leaq 0x367(%rsp), %rdi
movq %rdi, 0x148(%rsp)
callq 0xe0c80
movq 0x148(%rsp), %rdx
leaq 0x62d92(%rip), %rsi     # 0x18865d
leaq 0x368(%rsp), %rdi
callq 0xe00a0
jmp 0x1258da
movq 0x140(%rsp), %rdi
leaq 0x368(%rsp), %rsi
callq 0xd06e0
jmp 0x1258f1
movq 0x140(%rsp), %rdi
movb $0x0, 0x353(%rsp)
movq 0xa2560(%rip), %rsi     # 0x1c7e68
movq 0xa2111(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x125950
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x368(%rsp), %rdi
callq 0xd4550
leaq 0x367(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x353(%rsp)
jne 0x125969
jmp 0x125976
movq 0x140(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
movq 0x398(%rsp), %rax
testb $0x1, 0x20(%rax)
je 0x12599a
movq 0x158(%rsp), %rax
movb $0x1, 0x20(%rax)
jmp 0x125bda
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movslq 0x38c(%rsp), %rcx
cmpq %rcx, %rax
je 0x125aaa
movb $0x1, 0x32e(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0x130(%rsp)
leaq 0x32f(%rsp), %rdi
movq %rdi, 0x138(%rsp)
callq 0xe0c80
movq 0x138(%rsp), %rdx
leaq 0x62c77(%rip), %rsi     # 0x188671
leaq 0x330(%rsp), %rdi
callq 0xe00a0
jmp 0x125a09
movq 0x130(%rsp), %rdi
leaq 0x330(%rsp), %rsi
callq 0xd06e0
jmp 0x125a20
movq 0x130(%rsp), %rdi
movb $0x0, 0x32e(%rsp)
movq 0xa2431(%rip), %rsi     # 0x1c7e68
movq 0xa1fe2(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x125a7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x330(%rsp), %rdi
callq 0xd4550
leaq 0x32f(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x32e(%rsp)
jne 0x125a98
jmp 0x125aa5
movq 0x130(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, 0x128(%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, %rcx
movq 0x128(%rsp), %rax
cmpq %rcx, %rax
jne 0x125bd6
movb $0x1, 0x306(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0x118(%rsp)
leaq 0x307(%rsp), %rdi
movq %rdi, 0x120(%rsp)
callq 0xe0c80
movq 0x120(%rsp), %rdx
leaq 0x62b64(%rip), %rsi     # 0x18868a
leaq 0x308(%rsp), %rdi
callq 0xe00a0
jmp 0x125b35
movq 0x118(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0xd06e0
jmp 0x125b4c
movq 0x118(%rsp), %rdi
movb $0x0, 0x306(%rsp)
movq 0xa2305(%rip), %rsi     # 0x1c7e68
movq 0xa1eb6(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x125bab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x308(%rsp), %rdi
callq 0xd4550
leaq 0x307(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x306(%rsp)
jne 0x125bc4
jmp 0x125bd1
movq 0x118(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
jmp 0x125bd8
jmp 0x125bda
jmp 0x125bdc
jmp 0x126533
movq 0x3a0(%rsp), %rax
testb $0x1, 0x21(%rax)
je 0x125f59
movq 0x398(%rsp), %rax
testb $0x1, 0x20(%rax)
je 0x125cf3
movb $0x1, 0x2de(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0x108(%rsp)
leaq 0x2df(%rsp), %rdi
movq %rdi, 0x110(%rsp)
callq 0xe0c80
movq 0x110(%rsp), %rdx
leaq 0x62a70(%rip), %rsi     # 0x1886b3
leaq 0x2e0(%rsp), %rdi
callq 0xe00a0
jmp 0x125c52
movq 0x108(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0xd06e0
jmp 0x125c69
movq 0x108(%rsp), %rdi
movb $0x0, 0x2de(%rsp)
movq 0xa21e8(%rip), %rsi     # 0x1c7e68
movq 0xa1d99(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x125cc8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x2e0(%rsp), %rdi
callq 0xd4550
leaq 0x2df(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x2de(%rsp)
jne 0x125ce1
jmp 0x125cee
movq 0x108(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
movq 0x398(%rsp), %rax
testb $0x1, 0x21(%rax)
je 0x125d12
movq 0x158(%rsp), %rax
movb $0x1, 0x21(%rax)
jmp 0x125f52
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movslq 0x38c(%rsp), %rcx
cmpq %rcx, %rax
je 0x125e22
movb $0x1, 0x2b6(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0xf8(%rsp)
leaq 0x2b7(%rsp), %rdi
movq %rdi, 0x100(%rsp)
callq 0xe0c80
movq 0x100(%rsp), %rdx
leaq 0x628ff(%rip), %rsi     # 0x188671
leaq 0x2b8(%rsp), %rdi
callq 0xe00a0
jmp 0x125d81
movq 0xf8(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0xd06e0
jmp 0x125d98
movq 0xf8(%rsp), %rdi
movb $0x0, 0x2b6(%rsp)
movq 0xa20b9(%rip), %rsi     # 0x1c7e68
movq 0xa1c6a(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x125df7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x2b8(%rsp), %rdi
callq 0xd4550
leaq 0x2b7(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x2b6(%rsp)
jne 0x125e10
jmp 0x125e1d
movq 0xf8(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, 0xf0(%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, %rcx
movq 0xf0(%rsp), %rax
cmpq %rcx, %rax
jne 0x125f4e
movb $0x1, 0x28e(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0xe0(%rsp)
leaq 0x28f(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0xe0c80
movq 0xe8(%rsp), %rdx
leaq 0x627ec(%rip), %rsi     # 0x18868a
leaq 0x290(%rsp), %rdi
callq 0xe00a0
jmp 0x125ead
movq 0xe0(%rsp), %rdi
leaq 0x290(%rsp), %rsi
callq 0xd06e0
jmp 0x125ec4
movq 0xe0(%rsp), %rdi
movb $0x0, 0x28e(%rsp)
movq 0xa1f8d(%rip), %rsi     # 0x1c7e68
movq 0xa1b3e(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x125f23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x290(%rsp), %rdi
callq 0xd4550
leaq 0x28f(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x28e(%rsp)
jne 0x125f3c
jmp 0x125f49
movq 0xe0(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
jmp 0x125f50
jmp 0x125f52
jmp 0x125f54
jmp 0x126531
movq 0x398(%rsp), %rax
testb $0x1, 0x20(%rax)
je 0x1261b6
movb $0x1, 0x397(%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movslq 0x38c(%rsp), %rcx
cmpq %rcx, %rax
je 0x126083
movb $0x1, 0x266(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0xd0(%rsp)
leaq 0x267(%rsp), %rdi
movq %rdi, 0xd8(%rsp)
callq 0xe0c80
movq 0xd8(%rsp), %rdx
leaq 0x6269e(%rip), %rsi     # 0x188671
leaq 0x268(%rsp), %rdi
callq 0xe00a0
jmp 0x125fe2
movq 0xd0(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0xd06e0
jmp 0x125ff9
movq 0xd0(%rsp), %rdi
movb $0x0, 0x266(%rsp)
movq 0xa1e58(%rip), %rsi     # 0x1c7e68
movq 0xa1a09(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x126058
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x268(%rsp), %rdi
callq 0xd4550
leaq 0x267(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x266(%rsp)
jne 0x126071
jmp 0x12607e
movq 0xd0(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, 0xc8(%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, %rcx
movq 0xc8(%rsp), %rax
cmpq %rcx, %rax
jne 0x1261af
movb $0x1, 0x23e(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0xb8(%rsp)
leaq 0x23f(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0xe0c80
movq 0xc0(%rsp), %rdx
leaq 0x6258b(%rip), %rsi     # 0x18868a
leaq 0x240(%rsp), %rdi
callq 0xe00a0
jmp 0x12610e
movq 0xb8(%rsp), %rdi
leaq 0x240(%rsp), %rsi
callq 0xd06e0
jmp 0x126125
movq 0xb8(%rsp), %rdi
movb $0x0, 0x23e(%rsp)
movq 0xa1d2c(%rip), %rsi     # 0x1c7e68
movq 0xa18dd(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x126184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x240(%rsp), %rdi
callq 0xd4550
leaq 0x23f(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x23e(%rsp)
jne 0x12619d
jmp 0x1261aa
movq 0xb8(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
jmp 0x1261b1
jmp 0x12652f
movq 0x398(%rsp), %rax
testb $0x1, 0x21(%rax)
je 0x12640b
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movslq 0x38c(%rsp), %rcx
cmpq %rcx, %rax
je 0x1262d8
movb $0x1, 0x216(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0xa8(%rsp)
leaq 0x217(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0xe0c80
movq 0xb0(%rsp), %rdx
leaq 0x62449(%rip), %rsi     # 0x188671
leaq 0x218(%rsp), %rdi
callq 0xe00a0
jmp 0x126237
movq 0xa8(%rsp), %rdi
leaq 0x218(%rsp), %rsi
callq 0xd06e0
jmp 0x12624e
movq 0xa8(%rsp), %rdi
movb $0x0, 0x216(%rsp)
movq 0xa1c03(%rip), %rsi     # 0x1c7e68
movq 0xa17b4(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x1262ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x218(%rsp), %rdi
callq 0xd4550
leaq 0x217(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x216(%rsp)
jne 0x1262c6
jmp 0x1262d3
movq 0xa8(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, 0xa0(%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
cmpq %rcx, %rax
jne 0x126404
movb $0x1, 0x1ee(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0x90(%rsp)
leaq 0x1ef(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0xe0c80
movq 0x98(%rsp), %rdx
leaq 0x62336(%rip), %rsi     # 0x18868a
leaq 0x1f0(%rsp), %rdi
callq 0xe00a0
jmp 0x126363
movq 0x90(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
callq 0xd06e0
jmp 0x12637a
movq 0x90(%rsp), %rdi
movb $0x0, 0x1ee(%rsp)
movq 0xa1ad7(%rip), %rsi     # 0x1c7e68
movq 0xa1688(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x1263d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x1f0(%rsp), %rdi
callq 0xd4550
leaq 0x1ef(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x1ee(%rsp)
jne 0x1263f2
jmp 0x1263ff
movq 0x90(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
jmp 0x126406
jmp 0x12652d
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, 0x88(%rsp)
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, %rcx
movq 0x88(%rsp), %rax
cmpq %rcx, %rax
je 0x12652b
movb $0x1, 0x1c6(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0x78(%rsp)
leaq 0x1c7(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0xe0c80
movq 0x80(%rsp), %rdx
leaq 0x621ed(%rip), %rsi     # 0x188671
leaq 0x1c8(%rsp), %rdi
callq 0xe00a0
jmp 0x126493
movq 0x78(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0xd06e0
jmp 0x1264a7
movq 0x78(%rsp), %rdi
movb $0x0, 0x1c6(%rsp)
movq 0xa19ad(%rip), %rsi     # 0x1c7e68
movq 0xa155e(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x126503
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x1c8(%rsp), %rdi
callq 0xd4550
leaq 0x1c7(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x1c6(%rsp)
jne 0x12651c
jmp 0x126526
movq 0x78(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
jmp 0x12652d
jmp 0x12652f
jmp 0x126531
jmp 0x126533
testb $0x1, 0x397(%rsp)
je 0x1268b7
movl $0x0, 0x1c0(%rsp)
movl 0x1c0(%rsp), %eax
cmpl 0x38c(%rsp), %eax
jge 0x1266e9
movq 0x3a0(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x60(%rsp)
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq 0x60(%rsp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
movslq 0x1c0(%rsp), %rax
subq %rax, %rsi
callq 0xdc980
movq (%rax), %rax
movq %rax, 0x70(%rsp)
movq 0x398(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x68(%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq 0x68(%rsp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
movslq 0x1c0(%rsp), %rax
subq %rax, %rsi
callq 0xdc980
movq %rax, %rcx
movq 0x70(%rsp), %rax
cmpq (%rcx), %rax
je 0x1266d1
movb $0x1, 0x19e(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0x50(%rsp)
leaq 0x19f(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0xe0c80
movq 0x58(%rsp), %rdx
leaq 0x6209d(%rip), %rsi     # 0x1886c7
leaq 0x1a0(%rsp), %rdi
callq 0xe00a0
jmp 0x126639
movq 0x50(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0xd06e0
jmp 0x12664d
movq 0x50(%rsp), %rdi
movb $0x0, 0x19e(%rsp)
movq 0xa1807(%rip), %rsi     # 0x1c7e68
movq 0xa13b8(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x1266a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0xd4550
leaq 0x19f(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x19e(%rsp)
jne 0x1266c2
jmp 0x1266cc
movq 0x50(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
jmp 0x1266d3
movl 0x1c0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1c0(%rsp)
jmp 0x12654c
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, 0x48(%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, %rcx
movq 0x48(%rsp), %rax
cmpq %rcx, %rax
ja 0x1267c9
movl 0x38c(%rsp), %eax
movl %eax, 0x198(%rsp)
movslq 0x198(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, %rcx
movq 0x40(%rsp), %rax
cmpq %rcx, %rax
jae 0x1267c4
movq 0x398(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x38(%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq 0x38(%rsp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
movslq 0x198(%rsp), %rax
subq %rax, %rsi
callq 0xdc980
movq (%rax), %rdi
callq 0xd9c90
addl 0x390(%rsp), %eax
movl %eax, 0x390(%rsp)
movl 0x198(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x198(%rsp)
jmp 0x12672f
jmp 0x12686e
movl 0x38c(%rsp), %eax
movl %eax, 0x194(%rsp)
movslq 0x194(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, %rcx
movq 0x30(%rsp), %rax
cmpq %rcx, %rax
jae 0x12686c
movq 0x3a0(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x28(%rsp)
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq 0x28(%rsp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
movslq 0x194(%rsp), %rax
subq %rax, %rsi
callq 0xdc980
movq (%rax), %rdi
callq 0xd9c90
addl 0x390(%rsp), %eax
movl %eax, 0x390(%rsp)
movl 0x194(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x194(%rsp)
jmp 0x1267d7
jmp 0x12686e
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, 0x20(%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, %rcx
movq 0x20(%rsp), %rax
cmpq %rcx, %rax
jae 0x1268b2
xorl %eax, %eax
subl 0x390(%rsp), %eax
movl %eax, 0x390(%rsp)
jmp 0x126a17
movl $0x0, 0x190(%rsp)
movl 0x190(%rsp), %eax
cmpl 0x38c(%rsp), %eax
jge 0x126a15
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
movslq 0x190(%rsp), %rsi
callq 0xdc980
movq (%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
movslq 0x190(%rsp), %rsi
callq 0xdc980
movq %rax, %rcx
movq 0x18(%rsp), %rax
cmpq (%rcx), %rax
je 0x1269fd
movb $0x1, 0x16e(%rsp)
movl $0x20, %edi
callq 0xd2b40
movq %rax, 0x8(%rsp)
leaq 0x16f(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xe0c80
movq 0x10(%rsp), %rdx
leaq 0x61d71(%rip), %rsi     # 0x1886c7
leaq 0x170(%rsp), %rdi
callq 0xe00a0
jmp 0x126965
movq 0x8(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0xd06e0
jmp 0x126979
movq 0x8(%rsp), %rdi
movb $0x0, 0x16e(%rsp)
movq 0xa14db(%rip), %rsi     # 0x1c7e68
movq 0xa108c(%rip), %rdx     # 0x1c7a20
callq 0xe01f0
jmp 0x126aaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
jmp 0x1269d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x358(%rsp)
movl %eax, 0x354(%rsp)
leaq 0x170(%rsp), %rdi
callq 0xd4550
leaq 0x16f(%rsp), %rdi
callq 0xd8ec0
testb $0x1, 0x16e(%rsp)
jne 0x1269ee
jmp 0x1269f8
movq 0x8(%rsp), %rdi
callq 0xd5400
jmp 0x126aa2
jmp 0x1269ff
movl 0x190(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x190(%rsp)
jmp 0x1268c2
jmp 0x126a17
movq 0x3a0(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, (%rsp)
movq 0x398(%rsp), %rdi
addq $0x8, %rdi
callq 0xd41b0
movq %rax, %rcx
movq (%rsp), %rax
cmpq %rcx, %rax
ja 0x126a68
movq 0x158(%rsp), %rdi
movq 0x398(%rsp), %rsi
addq $0x8, %rsi
addq $0x8, %rdi
callq 0xdb420
jmp 0x126a85
movq 0x158(%rsp), %rdi
movq 0x3a0(%rsp), %rsi
addq $0x8, %rsi
addq $0x8, %rdi
callq 0xdb420
movl 0x390(%rsp), %eax
movl %eax, 0x3b4(%rsp)
movl 0x3b4(%rsp), %eax
addq $0x3b8, %rsp            # imm = 0x3B8
retq
movq 0x358(%rsp), %rdi
callq 0xe0be0
nop