// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/external/lpeg-0.10.2/lpeg.c
// Function: match
static const char *match (lua_State *L,
                          const char *o, const char *s, const char *e,
                          Instruction *op, Capture *capture, int ptop) {
  Stack stackbase[INITBACK];
  Stack *stacklimit = stackbase + INITBACK;
  Stack *stack = stackbase;  /* point to first empty slot in stack */
  int capsize = INITCAPSIZE;
  int captop = 0;  /* point to first empty slot in captures */
  const Instruction *p = op;
  stack->p = &giveup; stack->s = s; stack->caplevel = 0; stack++;
  lua_pushlightuserdata(L, stackbase);
  for (;;) {
#if defined(DEBUG)
      printf("s: |%s| stck: %d c: %d  ",
             s, stack - getstackbase(L, ptop), captop);
      printinst(op, p);
#endif
    switch ((Opcode)p->i.code) {
      case IEnd: {
        assert(stack == getstackbase(L, ptop) + 1);
        capture[captop].kind = Cclose;
        capture[captop].s = NULL;
        return s;
      }
      case IGiveup: {
        assert(stack == getstackbase(L, ptop));
        return NULL;
      }
      case IRet: {
        assert(stack > getstackbase(L, ptop) && (stack - 1)->s == NULL);
        p = (--stack)->p;
        continue;
      }
      case IAny: {
        int n = p->i.aux;
        if (n <= e - s) { p++; s += n; }
        else condfailed(p);
        continue;
      }
      case IChar: {
        if ((byte)*s == p->i.aux && s < e) { p++; s++; }
        else condfailed(p);
        continue;
      }
      case ISet: {
        int c = (byte)*s;
        if (testchar((p+1)->buff, c) && s < e)
          { p += CHARSETINSTSIZE; s++; }
        else condfailed(p);
        continue;
      }
      case IBack: {
        int n = p->i.aux;
        if (n > s - o) goto fail;
        s -= n; p++;
        continue;
      }
      case ISpan: {
        for (; s < e; s++) {
          int c = (byte)*s;
          if (!testchar((p+1)->buff, c)) break;
        }
        p += CHARSETINSTSIZE;
        continue;
      }
      case IFunc: {
        const char *r = (p+1)->f(s, e, o, (p+2)->buff);
        if (r != NULL) { s = r; p += funcinstsize(p); }
        else condfailed(p);
        continue;
      }
      case IJmp: {
        p += p->i.offset;
        continue;
      }
      case IChoice: {
        if (stack == stacklimit)
          stack = doublestack(L, &stacklimit, ptop);
        stack->p = dest(0, p);
        stack->s = s - p->i.aux;
        stack->caplevel = captop;
        stack++;
        p++;
        continue;
      }
      case ICall: {
        if (stack == stacklimit)
          stack = doublestack(L, &stacklimit, ptop);
        stack->s = NULL;
        stack->p = p + 1;  /* save return address */
        stack++;
        p += p->i.offset;
        continue;
      }
      case ICommit: {
        assert(stack > getstackbase(L, ptop) && (stack - 1)->s != NULL);
        stack--;
        p += p->i.offset;
        continue;
      }
      case IPartialCommit: {
        assert(stack > getstackbase(L, ptop) && (stack - 1)->s != NULL);
        (stack - 1)->s = s;
        (stack - 1)->caplevel = captop;
        p += p->i.offset;
        continue;
      }
      case IBackCommit: {
        assert(stack > getstackbase(L, ptop) && (stack - 1)->s != NULL);
        s = (--stack)->s;
        captop = stack->caplevel;
        p += p->i.offset;
        continue;
      }
      case IFailTwice:
        assert(stack > getstackbase(L, ptop));
        stack--;
        /* go through */
      case IFail:
      fail: { /* pattern failed: try to backtrack */
        do {  /* remove pending calls */
          assert(stack > getstackbase(L, ptop));
          s = (--stack)->s;
        } while (s == NULL);
        captop = stack->caplevel;
        p = stack->p;
        continue;
      }
      case ICloseRunTime: {
        int fr = lua_gettop(L) + 1;  /* stack index of first result */
        int ncap = runtimecap(L, capture + captop, capture, o, s, ptop);
        lua_Integer res = lua_tointeger(L, fr) - 1;  /* offset */
        int n = lua_gettop(L) - fr;  /* number of new captures */
        if (res == -1) {  /* may not be a number */
          if (!lua_toboolean(L, fr)) {  /* false value? */
            lua_settop(L, fr - 1);  /* remove results */
            goto fail;  /* and fail */
          }
          else if (lua_isboolean(L, fr))  /* true? */
            res = s - o;  /* keep current position */
        }
        if (res < s - o || res > e - o)
          luaL_error(L, "invalid position returned by match-time capture");
        s = o + res;  /* update current position */
        captop -= ncap;  /* remove nested captures */
        lua_remove(L, fr);  /* remove first result (offset) */
        if (n > 0) {  /* captures? */
          if ((captop += n + 1) >= capsize) {
            capture = doublecap(L, capture, captop, ptop);
            capsize = 2 * captop;
          }
          adddyncaptures(s, capture + captop - n - 1, n, fr);
        }
        p++;
        continue;
      }
      case ICloseCapture: {
        const char *s1 = s - getoff(p);
        assert(captop > 0);
        if (capture[captop - 1].siz == 0 &&
            s1 - capture[captop - 1].s < UCHAR_MAX) {
          capture[captop - 1].siz = s1 - capture[captop - 1].s + 1;
          p++;
          continue;
        }
        else {
          capture[captop].siz = 1;  /* mark entry as closed */
          goto capture;
        }
      }
      case IEmptyCapture: case IEmptyCaptureIdx:
        capture[captop].siz = 1;  /* mark entry as closed */
        goto capture;
      case IOpenCapture:
        capture[captop].siz = 0;  /* mark entry as open */
        goto capture;
      case IFullCapture:
        capture[captop].siz = getoff(p) + 1;  /* save capture size */
      capture: {
        capture[captop].s = s - getoff(p);
        capture[captop].idx = p->i.offset;
        capture[captop].kind = getkind(p);
        if (++captop >= capsize) {
          capture = doublecap(L, capture, captop, ptop);
          capsize = 2 * captop;
        }
        p++;
        continue;
      }
      case IOpenCall: {
        lua_rawgeti(L, penvidx(ptop), p->i.offset);
        luaL_error(L, "reference to %s outside a grammar", val2str(L, -1));
      }
      default: assert(0); return NULL;
    }
  }
}

// Assembly:
subq $0xa58, %rsp            # imm = 0xA58
movl 0xa60(%rsp), %eax
movq %rdi, 0xa48(%rsp)
movq %rsi, 0xa40(%rsp)
movq %rdx, 0xa38(%rsp)
movq %rcx, 0xa30(%rsp)
movq %r8, 0xa28(%rsp)
movq %r9, 0xa20(%rsp)
leaq 0xc0(%rsp), %rax
addq $0x960, %rax            # imm = 0x960
movq %rax, 0xb8(%rsp)
leaq 0xc0(%rsp), %rax
movq %rax, 0xb0(%rsp)
movl $0x20, 0xac(%rsp)
movl $0x0, 0xa8(%rsp)
movq 0xa28(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0xb0(%rsp), %rax
leaq 0x23a39f(%rip), %rcx    # 0x59cb98
movq %rcx, 0x8(%rax)
movq 0xa38(%rsp), %rcx
movq 0xb0(%rsp), %rax
movq %rcx, (%rax)
movq 0xb0(%rsp), %rax
movl $0x0, 0x10(%rax)
movq 0xb0(%rsp), %rax
addq $0x18, %rax
movq %rax, 0xb0(%rsp)
movq 0xa48(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x336160
movq 0xa0(%rsp), %rax
movzbl (%rax), %eax
movq %rax, 0x48(%rsp)
subq $0x17, %rax
ja 0x3637c6
movq 0x48(%rsp), %rax
leaq 0x23a1ca(%rip), %rcx    # 0x59ca38
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0xb0(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0xa48(%rsp), %rdi
movl 0xa60(%rsp), %esi
addl $0x4, %esi
callq 0x335300
movq %rax, %rcx
movq 0x40(%rsp), %rax
addq $0x18, %rcx
cmpq %rcx, %rax
jne 0x3628ae
jmp 0x3628cd
leaq 0x23a7fe(%rip), %rdi    # 0x59d0b3
leaq 0x23a33e(%rip), %rsi    # 0x59cbfa
movl $0x1cb, %edx            # imm = 0x1CB
leaq 0x23a80e(%rip), %rcx    # 0x59d0d6
callq 0x19490
movq 0xa20(%rsp), %rax
movslq 0xa8(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movb $0x0, 0xa(%rax)
movq 0xa20(%rsp), %rax
movslq 0xa8(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq $0x0, (%rax)
movq 0xa38(%rsp), %rax
movq %rax, 0xa50(%rsp)
jmp 0x3637e5
movq 0xb0(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0xa48(%rsp), %rdi
movl 0xa60(%rsp), %esi
addl $0x4, %esi
callq 0x335300
movq %rax, %rcx
movq 0x38(%rsp), %rax
cmpq %rcx, %rax
jne 0x36294e
jmp 0x36296d
leaq 0x23a7e9(%rip), %rdi    # 0x59d13e
leaq 0x23a29e(%rip), %rsi    # 0x59cbfa
movl $0x1d1, %edx            # imm = 0x1D1
leaq 0x23a76e(%rip), %rcx    # 0x59d0d6
callq 0x19490
movq $0x0, 0xa50(%rsp)
jmp 0x3637e5
movq 0xb0(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0xa48(%rsp), %rdi
movl 0xa60(%rsp), %esi
addl $0x4, %esi
callq 0x335300
movq %rax, %rcx
movq 0x30(%rsp), %rax
cmpq %rcx, %rax
jbe 0x3629c0
movq 0xb0(%rsp), %rax
cmpq $0x0, -0x18(%rax)
jne 0x3629c0
jmp 0x3629df
leaq 0x23a796(%rip), %rdi    # 0x59d15d
leaq 0x23a22c(%rip), %rsi    # 0x59cbfa
movl $0x1d5, %edx            # imm = 0x1D5
leaq 0x23a6fc(%rip), %rcx    # 0x59d0d6
callq 0x19490
movq 0xb0(%rsp), %rax
movq %rax, %rcx
addq $-0x18, %rcx
movq %rcx, 0xb0(%rsp)
movq -0x10(%rax), %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
movq 0xa0(%rsp), %rax
movzbl 0x1(%rax), %eax
movl %eax, 0x9c(%rsp)
movslq 0x9c(%rsp), %rax
movq 0xa30(%rsp), %rcx
movq 0xa38(%rsp), %rdx
subq %rdx, %rcx
cmpq %rcx, %rax
jg 0x362a6d
movq 0xa0(%rsp), %rax
addq $0x8, %rax
movq %rax, 0xa0(%rsp)
movl 0x9c(%rsp), %ecx
movq 0xa38(%rsp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0xa38(%rsp)
jmp 0x362ab4
movq 0xa0(%rsp), %rax
movswl 0x2(%rax), %eax
movl %eax, 0x98(%rsp)
cmpl $0x0, 0x98(%rsp)
je 0x362aad
movl 0x98(%rsp), %ecx
movq 0xa0(%rsp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362ab2
jmp 0x3631ee
jmp 0x362ab4
jmp 0x362848
movq 0xa38(%rsp), %rax
movzbl (%rax), %eax
movq 0xa0(%rsp), %rcx
movzbl 0x1(%rcx), %ecx
cmpl %ecx, %eax
jne 0x362b10
movq 0xa38(%rsp), %rax
cmpq 0xa30(%rsp), %rax
jae 0x362b10
movq 0xa0(%rsp), %rax
addq $0x8, %rax
movq %rax, 0xa0(%rsp)
movq 0xa38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xa38(%rsp)
jmp 0x362b57
movq 0xa0(%rsp), %rax
movswl 0x2(%rax), %eax
movl %eax, 0x94(%rsp)
cmpl $0x0, 0x94(%rsp)
je 0x362b50
movl 0x94(%rsp), %ecx
movq 0xa0(%rsp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362b55
jmp 0x3631ee
jmp 0x362b57
jmp 0x362848
movq 0xa38(%rsp), %rax
movzbl (%rax), %eax
movl %eax, 0x90(%rsp)
movq 0xa0(%rsp), %rax
movl 0x90(%rsp), %ecx
sarl $0x3, %ecx
movslq %ecx, %rcx
movzbl 0x8(%rax,%rcx), %eax
movl 0x90(%rsp), %ecx
andl $0x7, %ecx
movl $0x1, %edx
shll %cl, %edx
movl %edx, %ecx
andl %ecx, %eax
cmpl $0x0, %eax
je 0x362bde
movq 0xa38(%rsp), %rax
cmpq 0xa30(%rsp), %rax
jae 0x362bde
movq 0xa0(%rsp), %rax
addq $0x28, %rax
movq %rax, 0xa0(%rsp)
movq 0xa38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xa38(%rsp)
jmp 0x362c25
movq 0xa0(%rsp), %rax
movswl 0x2(%rax), %eax
movl %eax, 0x8c(%rsp)
cmpl $0x0, 0x8c(%rsp)
je 0x362c1e
movl 0x8c(%rsp), %ecx
movq 0xa0(%rsp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362c23
jmp 0x3631ee
jmp 0x362c25
jmp 0x362848
movq 0xa0(%rsp), %rax
movzbl 0x1(%rax), %eax
movl %eax, 0x88(%rsp)
movslq 0x88(%rsp), %rax
movq 0xa38(%rsp), %rcx
movq 0xa40(%rsp), %rdx
subq %rdx, %rcx
cmpq %rcx, %rax
jle 0x362c62
jmp 0x3631ee
movl 0x88(%rsp), %ecx
movq 0xa38(%rsp), %rax
movslq %ecx, %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, 0xa38(%rsp)
movq 0xa0(%rsp), %rax
addq $0x8, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
jmp 0x362c9f
movq 0xa38(%rsp), %rax
cmpq 0xa30(%rsp), %rax
jae 0x362d11
movq 0xa38(%rsp), %rax
movzbl (%rax), %eax
movl %eax, 0x84(%rsp)
movq 0xa0(%rsp), %rax
movl 0x84(%rsp), %ecx
sarl $0x3, %ecx
movslq %ecx, %rcx
movzbl 0x8(%rax,%rcx), %eax
movl 0x84(%rsp), %ecx
andl $0x7, %ecx
movl $0x1, %edx
shll %cl, %edx
movl %edx, %ecx
andl %ecx, %eax
cmpl $0x0, %eax
jne 0x362cf9
jmp 0x362d11
jmp 0x362cfb
movq 0xa38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xa38(%rsp)
jmp 0x362c9f
movq 0xa0(%rsp), %rax
addq $0x28, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
movq 0xa0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0xa38(%rsp), %rdi
movq 0xa30(%rsp), %rsi
movq 0xa40(%rsp), %rdx
movq 0xa0(%rsp), %rcx
addq $0x10, %rcx
callq *%rax
movq %rax, 0x78(%rsp)
cmpq $0x0, 0x78(%rsp)
je 0x362da1
movq 0x78(%rsp), %rax
movq %rax, 0xa38(%rsp)
movq 0xa0(%rsp), %rax
movzbl 0x1(%rax), %ecx
addl $0x2, %ecx
movq 0xa0(%rsp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362ddf
movq 0xa0(%rsp), %rax
movswl 0x2(%rax), %eax
movl %eax, 0x74(%rsp)
cmpl $0x0, 0x74(%rsp)
je 0x362dd8
movl 0x74(%rsp), %ecx
movq 0xa0(%rsp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362ddd
jmp 0x3631ee
jmp 0x362ddf
jmp 0x362848
movq 0xa0(%rsp), %rax
movswl 0x2(%rax), %ecx
movq 0xa0(%rsp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
movq 0xb0(%rsp), %rax
cmpq 0xb8(%rsp), %rax
jne 0x362e45
movq 0xa48(%rsp), %rdi
movl 0xa60(%rsp), %edx
leaq 0xb8(%rsp), %rsi
callq 0x3638e0
movq %rax, 0xb0(%rsp)
movq 0xa0(%rsp), %rcx
movq 0xa0(%rsp), %rax
movswl 0x2(%rax), %eax
cltq
shlq $0x3, %rax
addq %rax, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0xa38(%rsp), %rcx
movq 0xa0(%rsp), %rax
movzbl 0x1(%rax), %eax
movslq %eax, %rdx
xorl %eax, %eax
subq %rdx, %rax
addq %rax, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, (%rax)
movl 0xa8(%rsp), %ecx
movq 0xb0(%rsp), %rax
movl %ecx, 0x10(%rax)
movq 0xb0(%rsp), %rax
addq $0x18, %rax
movq %rax, 0xb0(%rsp)
movq 0xa0(%rsp), %rax
addq $0x8, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
movq 0xb0(%rsp), %rax
cmpq 0xb8(%rsp), %rax
jne 0x362f0d
movq 0xa48(%rsp), %rdi
movl 0xa60(%rsp), %edx
leaq 0xb8(%rsp), %rsi
callq 0x3638e0
movq %rax, 0xb0(%rsp)
movq 0xb0(%rsp), %rax
movq $0x0, (%rax)
movq 0xa0(%rsp), %rcx
addq $0x8, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0xb0(%rsp), %rax
addq $0x18, %rax
movq %rax, 0xb0(%rsp)
movq 0xa0(%rsp), %rax
movswl 0x2(%rax), %ecx
movq 0xa0(%rsp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
movq 0xb0(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0xa48(%rsp), %rdi
movl 0xa60(%rsp), %esi
addl $0x4, %esi
callq 0x335300
movq %rax, %rcx
movq 0x28(%rsp), %rax
cmpq %rcx, %rax
jbe 0x362fb5
movq 0xb0(%rsp), %rax
cmpq $0x0, -0x18(%rax)
je 0x362fb5
jmp 0x362fd4
leaq 0x23a1d9(%rip), %rdi    # 0x59d195
leaq 0x239c37(%rip), %rsi    # 0x59cbfa
movl $0x217, %edx            # imm = 0x217
leaq 0x23a107(%rip), %rcx    # 0x59d0d6
callq 0x19490
movq 0xb0(%rsp), %rax
addq $-0x18, %rax
movq %rax, 0xb0(%rsp)
movq 0xa0(%rsp), %rax
movswl 0x2(%rax), %ecx
movq 0xa0(%rsp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
movq 0xb0(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0xa48(%rsp), %rdi
movl 0xa60(%rsp), %esi
addl $0x4, %esi
callq 0x335300
movq %rax, %rcx
movq 0x20(%rsp), %rax
cmpq %rcx, %rax
jbe 0x363055
movq 0xb0(%rsp), %rax
cmpq $0x0, -0x18(%rax)
je 0x363055
jmp 0x363074
leaq 0x23a139(%rip), %rdi    # 0x59d195
leaq 0x239b97(%rip), %rsi    # 0x59cbfa
movl $0x21d, %edx            # imm = 0x21D
leaq 0x23a067(%rip), %rcx    # 0x59d0d6
callq 0x19490
movq 0xa38(%rsp), %rcx
movq 0xb0(%rsp), %rax
movq %rcx, -0x18(%rax)
movl 0xa8(%rsp), %ecx
movq 0xb0(%rsp), %rax
movl %ecx, -0x8(%rax)
movq 0xa0(%rsp), %rax
movswl 0x2(%rax), %ecx
movq 0xa0(%rsp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
movq 0xb0(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0xa48(%rsp), %rdi
movl 0xa60(%rsp), %esi
addl $0x4, %esi
callq 0x335300
movq %rax, %rcx
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
jbe 0x363107
movq 0xb0(%rsp), %rax
cmpq $0x0, -0x18(%rax)
je 0x363107
jmp 0x363126
leaq 0x23a087(%rip), %rdi    # 0x59d195
leaq 0x239ae5(%rip), %rsi    # 0x59cbfa
movl $0x224, %edx            # imm = 0x224
leaq 0x239fb5(%rip), %rcx    # 0x59d0d6
callq 0x19490
movq 0xb0(%rsp), %rax
movq %rax, %rcx
addq $-0x18, %rcx
movq %rcx, 0xb0(%rsp)
movq -0x18(%rax), %rax
movq %rax, 0xa38(%rsp)
movq 0xb0(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0xa8(%rsp)
movq 0xa0(%rsp), %rax
movswl 0x2(%rax), %ecx
movq 0xa0(%rsp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
movq 0xb0(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0xa48(%rsp), %rdi
movl 0xa60(%rsp), %esi
addl $0x4, %esi
callq 0x335300
movq %rax, %rcx
movq 0x10(%rsp), %rax
cmpq %rcx, %rax
jbe 0x3631b9
jmp 0x3631d8
leaq 0x23a00d(%rip), %rdi    # 0x59d1cd
leaq 0x239a33(%rip), %rsi    # 0x59cbfa
movl $0x22b, %edx            # imm = 0x22B
leaq 0x239f03(%rip), %rcx    # 0x59d0d6
callq 0x19490
movq 0xb0(%rsp), %rax
addq $-0x18, %rax
movq %rax, 0xb0(%rsp)
jmp 0x3631ee
jmp 0x3631f0
movq 0xb0(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0xa48(%rsp), %rdi
movl 0xa60(%rsp), %esi
addl $0x4, %esi
callq 0x335300
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jbe 0x363223
jmp 0x363242
leaq 0x239fa3(%rip), %rdi    # 0x59d1cd
leaq 0x2399c9(%rip), %rsi    # 0x59cbfa
movl $0x231, %edx            # imm = 0x231
leaq 0x239e99(%rip), %rcx    # 0x59d0d6
callq 0x19490
movq 0xb0(%rsp), %rax
movq %rax, %rcx
addq $-0x18, %rcx
movq %rcx, 0xb0(%rsp)
movq -0x18(%rax), %rax
movq %rax, 0xa38(%rsp)
cmpq $0x0, 0xa38(%rsp)
je 0x3631f0
movq 0xb0(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0xa8(%rsp)
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
movq 0xa48(%rsp), %rdi
callq 0x333eb0
addl $0x1, %eax
movl %eax, 0x70(%rsp)
movq 0xa48(%rsp), %rdi
movq 0xa20(%rsp), %rsi
movslq 0xa8(%rsp), %rax
shlq $0x4, %rax
addq %rax, %rsi
movq 0xa20(%rsp), %rdx
movq 0xa40(%rsp), %rcx
movq 0xa38(%rsp), %r8
movl 0xa60(%rsp), %r9d
callq 0x363a10
movl %eax, 0x6c(%rsp)
movq 0xa48(%rsp), %rdi
movl 0x70(%rsp), %esi
callq 0x334e60
subq $0x1, %rax
movq %rax, 0x60(%rsp)
movq 0xa48(%rsp), %rdi
callq 0x333eb0
subl 0x70(%rsp), %eax
movl %eax, 0x5c(%rsp)
cmpq $-0x1, 0x60(%rsp)
jne 0x36338f
movq 0xa48(%rsp), %rdi
movl 0x70(%rsp), %esi
callq 0x334ee0
cmpl $0x0, %eax
jne 0x36335d
movq 0xa48(%rsp), %rdi
movl 0x70(%rsp), %esi
subl $0x1, %esi
callq 0x333ed0
jmp 0x3631ee
movq 0xa48(%rsp), %rdi
movl 0x70(%rsp), %esi
callq 0x3345d0
cmpl $0x1, %eax
jne 0x36338b
movq 0xa38(%rsp), %rax
movq 0xa40(%rsp), %rcx
subq %rcx, %rax
movq %rax, 0x60(%rsp)
jmp 0x36338d
jmp 0x36338f
movq 0x60(%rsp), %rax
movq 0xa38(%rsp), %rcx
movq 0xa40(%rsp), %rdx
subq %rdx, %rcx
cmpq %rcx, %rax
jl 0x3633c9
movq 0x60(%rsp), %rax
movq 0xa30(%rsp), %rcx
movq 0xa40(%rsp), %rdx
subq %rdx, %rcx
cmpq %rcx, %rax
jle 0x3633df
movq 0xa48(%rsp), %rdi
leaq 0x239e13(%rip), %rsi    # 0x59d1eb
movb $0x0, %al
callq 0x33a320
movq 0xa40(%rsp), %rax
addq 0x60(%rsp), %rax
movq %rax, 0xa38(%rsp)
movl 0x6c(%rsp), %ecx
movl 0xa8(%rsp), %eax
subl %ecx, %eax
movl %eax, 0xa8(%rsp)
movq 0xa48(%rsp), %rdi
movl 0x70(%rsp), %esi
callq 0x333f60
cmpl $0x0, 0x5c(%rsp)
jle 0x3634be
movl 0x5c(%rsp), %eax
addl $0x1, %eax
addl 0xa8(%rsp), %eax
movl %eax, 0xa8(%rsp)
cmpl 0xac(%rsp), %eax
jl 0x36347d
movq 0xa48(%rsp), %rdi
movq 0xa20(%rsp), %rsi
movl 0xa8(%rsp), %edx
movl 0xa60(%rsp), %ecx
callq 0x363b60
movq %rax, 0xa20(%rsp)
movl 0xa8(%rsp), %eax
shll %eax
movl %eax, 0xac(%rsp)
movq 0xa38(%rsp), %rdi
movq 0xa20(%rsp), %rsi
movslq 0xa8(%rsp), %rax
shlq $0x4, %rax
addq %rax, %rsi
movslq 0x5c(%rsp), %rcx
xorl %eax, %eax
subq %rcx, %rax
shlq $0x4, %rax
addq %rax, %rsi
addq $-0x10, %rsi
movl 0x5c(%rsp), %edx
movl 0x70(%rsp), %ecx
callq 0x363bf0
movq 0xa0(%rsp), %rax
addq $0x8, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
movq 0xa38(%rsp), %rax
movq 0xa0(%rsp), %rcx
movzbl 0x1(%rcx), %ecx
sarl $0x4, %ecx
andl $0xf, %ecx
movslq %ecx, %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, 0x50(%rsp)
cmpl $0x0, 0xa8(%rsp)
jle 0x36350d
jmp 0x36352c
leaq 0x239d07(%rip), %rdi    # 0x59d21b
leaq 0x2396df(%rip), %rsi    # 0x59cbfa
movl $0x256, %edx            # imm = 0x256
leaq 0x239baf(%rip), %rcx    # 0x59d0d6
callq 0x19490
movq 0xa20(%rsp), %rax
movl 0xa8(%rsp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movzbl 0xb(%rax), %eax
cmpl $0x0, %eax
jne 0x3635e9
movq 0x50(%rsp), %rax
movq 0xa20(%rsp), %rcx
movl 0xa8(%rsp), %edx
subl $0x1, %edx
movslq %edx, %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
subq %rcx, %rax
cmpq $0xff, %rax
jge 0x3635e9
movq 0x50(%rsp), %rax
movq 0xa20(%rsp), %rcx
movl 0xa8(%rsp), %edx
subl $0x1, %edx
movslq %edx, %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
subq %rcx, %rax
addq $0x1, %rax
movb %al, %cl
movq 0xa20(%rsp), %rax
movl 0xa8(%rsp), %edx
subl $0x1, %edx
movslq %edx, %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movb %cl, 0xb(%rax)
movq 0xa0(%rsp), %rax
addq $0x8, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
movq 0xa20(%rsp), %rax
movslq 0xa8(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movb $0x1, 0xb(%rax)
jmp 0x363671
movq 0xa20(%rsp), %rax
movslq 0xa8(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movb $0x1, 0xb(%rax)
jmp 0x363671
movq 0xa20(%rsp), %rax
movslq 0xa8(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movb $0x0, 0xb(%rax)
jmp 0x363671
movq 0xa0(%rsp), %rax
movzbl 0x1(%rax), %eax
sarl $0x4, %eax
andl $0xf, %eax
addl $0x1, %eax
movb %al, %cl
movq 0xa20(%rsp), %rax
movslq 0xa8(%rsp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movb %cl, 0xb(%rax)
movq 0xa38(%rsp), %rcx
movq 0xa0(%rsp), %rax
movzbl 0x1(%rax), %eax
sarl $0x4, %eax
andl $0xf, %eax
movslq %eax, %rdx
xorl %eax, %eax
subq %rdx, %rax
addq %rax, %rcx
movq 0xa20(%rsp), %rax
movslq 0xa8(%rsp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq %rcx, (%rax)
movq 0xa0(%rsp), %rax
movw 0x2(%rax), %cx
movq 0xa20(%rsp), %rax
movslq 0xa8(%rsp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movw %cx, 0x8(%rax)
movq 0xa0(%rsp), %rax
movzbl 0x1(%rax), %eax
andl $0xf, %eax
movb %al, %cl
movq 0xa20(%rsp), %rax
movslq 0xa8(%rsp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movb %cl, 0xa(%rax)
movl 0xa8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa8(%rsp)
cmpl 0xac(%rsp), %eax
jl 0x363757
movq 0xa48(%rsp), %rdi
movq 0xa20(%rsp), %rsi
movl 0xa8(%rsp), %edx
movl 0xa60(%rsp), %ecx
callq 0x363b60
movq %rax, 0xa20(%rsp)
movl 0xa8(%rsp), %eax
shll %eax
movl %eax, 0xac(%rsp)
movq 0xa0(%rsp), %rax
addq $0x8, %rax
movq %rax, 0xa0(%rsp)
jmp 0x362848
movq 0xa48(%rsp), %rdi
movl 0xa60(%rsp), %esi
addl $0x3, %esi
movq 0xa0(%rsp), %rax
movswl 0x2(%rax), %edx
callq 0x336650
movq 0xa48(%rsp), %rax
movq %rax, (%rsp)
movq 0xa48(%rsp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x35f2b0
movq (%rsp), %rdi
movq %rax, %rdx
leaq 0x239a67(%rip), %rsi    # 0x59d226
movb $0x0, %al
callq 0x33a320
leaq 0x1dcf20(%rip), %rdi    # 0x5406ed
leaq 0x239426(%rip), %rsi    # 0x59cbfa
movl $0x279, %edx            # imm = 0x279
leaq 0x2398f6(%rip), %rcx    # 0x59d0d6
callq 0x19490
movq 0xa50(%rsp), %rax
addq $0xa58, %rsp            # imm = 0xA58
retq
nopw %cs:(%rax,%rax)