// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/external/lpeg-0.10.2/lpeg.c
// Function: matchl
static int matchl (lua_State *L) {
  Capture capture[INITCAPSIZE];
  const char *r;
  size_t l;
  Instruction *p = getpatt(L, 1, NULL);
  const char *s = luaL_checklstring(L, SUBJIDX, &l);
  int ptop = lua_gettop(L);
  lua_Integer ii = luaL_optinteger(L, 3, 1);
  size_t i = (ii > 0) ?
             (((size_t)ii <= l) ? (size_t)ii - 1 : l) :
             (((size_t)-ii <= l) ? l - ((size_t)-ii) : 0);
  lua_pushnil(L);  /* subscache */
  lua_pushlightuserdata(L, capture);  /* caplistidx */
  lua_getfenv(L, 1);  /* penvidx */
  r = match(L, s, s + i, s + l, p, capture, ptop);
  if (r == NULL) {
    lua_pushnil(L);
    return 1;
  }
  return getcaptures(L, s, r, ptop);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc18, %rsp            # imm = 0xC18
movq %rdi, %rbp
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x1f10c5
movq %rax, %rbx
pushq $0x2
popq %rsi
leaq 0x50(%rsp), %rdx
movq %rbp, %rdi
callq 0x1de9c6
movq %rax, 0x20(%rsp)
movq %rbp, %rdi
callq 0x1db3c5
movl %eax, %r14d
pushq $0x3
popq %rsi
pushq $0x1
popq %rdx
movq %rbp, %rdi
callq 0x1dec14
testq %rax, %rax
jle 0x1f2b0f
movq 0x50(%rsp), %rcx
leaq -0x1(%rax), %r13
cmpq %rcx, %rax
cmovaq %rcx, %r13
jmp 0x1f2b25
movq 0x50(%rsp), %rcx
leaq (%rcx,%rax), %rdx
negq %rax
xorl %r13d, %r13d
cmpq %rax, %rcx
cmovaeq %rdx, %r13
movq %rbp, %rdi
callq 0x1dbe22
leaq 0xa10(%rsp), %rsi
movq %rbp, %rdi
movq %rsi, 0x10(%rsp)
callq 0x1dc4ec
pushq $0x1
popq %rsi
movq %rbp, %rdi
callq 0x1dc8e2
movq 0x20(%rsp), %rax
addq %rax, %r13
movq 0x50(%rsp), %rcx
movq %rcx, 0x68(%rsp)
addq %rcx, %rax
movq %rax, 0x38(%rsp)
leaq 0xa10(%rsp), %rax
leaq 0x48(%rsp), %rcx
movq %rax, (%rcx)
leaq 0x176e6a(%rip), %rcx    # 0x3699e8
movq %rcx, -0x958(%rax)
movq %r13, -0x960(%rax)
andl $0x0, -0x950(%rax)
leaq 0xc8(%rsp), %r15
leaq 0xb0(%rsp), %rsi
movq %rbp, %rdi
callq 0x1dc4ec
leal 0x3(%r14), %eax
movl %eax, 0x44(%rsp)
movq %r14, 0x28(%rsp)
addl $0x4, %r14d
pushq $0x20
popq %rax
movl %eax, 0x1c(%rsp)
xorl %r9d, %r9d
movq %rbx, %r8
movq %rbp, 0x30(%rsp)
movzbl (%r8), %eax
cmpq $0x17, %rax
ja 0x1f3447
leaq 0x176d0d(%rip), %rcx    # 0x3698f0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
movslq %r9d, %rbx
jmpq *%rax
movzbl 0x1(%r8), %eax
movq 0x38(%rsp), %rcx
subq %r13, %rcx
cmpq %rax, %rcx
jl 0x1f2d9b
addq $0x8, %r8
addq %rax, %r13
jmp 0x1f2bce
xorl %eax, %eax
jmp 0x1f315a
testl %r9d, %r9d
jle 0x1f33d9
leal -0x1(%r9), %eax
shlq $0x4, %rax
movq 0x10(%rsp), %rcx
cmpb $0x0, 0xb(%rcx,%rax)
jne 0x1f3155
movzbl 0x1(%r8), %edx
shrl $0x4, %edx
movq %r13, %rcx
subq %rdx, %rcx
addq 0x10(%rsp), %rax
subq (%rax), %rcx
cmpq $0xff, %rcx
jge 0x1f3155
incb %cl
movb %cl, 0xb(%rax)
jmp 0x1f31c0
cmpq 0x48(%rsp), %r15
jne 0x1f2c8b
movq %rbp, %rdi
leaq 0x48(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r8, %rbx
movq %r9, %r15
callq 0x1f3db9
movq %r15, %r9
movq %rbx, %r8
movq %rax, %r15
andq $0x0, (%r15)
leaq 0x8(%r8), %rax
movq %rax, 0x8(%r15)
addq $0x18, %r15
movswq 0x2(%r8), %rax
leaq (%r8,%rax,8), %r8
jmp 0x1f2bce
movq 0x38(%rsp), %rdx
cmpq %rdx, %r13
jae 0x1f2cd0
movzbl (%r13), %eax
movl %eax, %ecx
shrl $0x3, %ecx
movzbl 0x8(%r8,%rcx), %ecx
andl $0x7, %eax
btl %eax, %ecx
jae 0x1f2cd0
incq %r13
jmp 0x1f2cae
addq $0x28, %r8
jmp 0x1f2bce
movq %r9, %r12
leaq 0x10(%r8), %rcx
movq %r13, %rdi
movq 0x38(%rsp), %rsi
movq 0x20(%rsp), %rdx
movq %r8, %rbx
callq *0x8(%r8)
testq %rax, %rax
je 0x1f31e1
movzbl 0x1(%rbx), %ecx
addq $0x2, %rcx
movq %rax, %r13
movq %rbx, %r8
jmp 0x1f31f2
movq %r9, %r12
movq %r8, %rbx
movq %rbp, %rdi
movl %r14d, %esi
callq 0x1dbd9e
cmpq %rax, %r15
jbe 0x1f335d
cmpq $0x0, -0x18(%r15)
je 0x1f335d
addq $-0x18, %r15
movswq 0x2(%rbx), %rax
leaq (%rbx,%rax,8), %r8
movq %r12, %r9
jmp 0x1f2bce
movb (%r13), %al
cmpb 0x1(%r8), %al
sete %al
cmpq 0x38(%rsp), %r13
setb %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x1f2d9b
addq $0x8, %r8
incq %r13
jmp 0x1f2bce
movzbl (%r13), %eax
movl %eax, %ecx
shrl $0x3, %ecx
movzbl 0x8(%r8,%rcx), %ecx
andl $0x7, %eax
btl %eax, %ecx
jae 0x1f2d9b
cmpq 0x38(%rsp), %r13
jae 0x1f2d9b
addq $0x28, %r8
incq %r13
jmp 0x1f2bce
movswq 0x2(%r8), %rax
leaq (%r8,%rax,8), %r8
testq %rax, %rax
jne 0x1f2bce
jmp 0x1f2ee8
cmpq 0x48(%rsp), %r15
jne 0x1f2dda
movq %rbp, %rdi
leaq 0x48(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r8, %rbx
movq %r9, %r15
callq 0x1f3db9
movq %r15, %r9
movq %rbx, %r8
movq %rax, %r15
movswq 0x2(%r8), %rax
leaq (%r8,%rax,8), %rax
movq %rax, 0x8(%r15)
movzbl 0x1(%r8), %eax
movq %r13, %rcx
subq %rax, %rcx
movq %rcx, (%r15)
movl %r9d, 0x10(%r15)
addq $0x18, %r15
jmp 0x1f31c0
movzbl 0x1(%r8), %eax
movq %r13, %rcx
subq 0x20(%rsp), %rcx
subq %rax, %r13
addq $0x8, %r8
cmpq %rax, %rcx
jge 0x1f2bce
jmp 0x1f2ee8
movq %r8, %rbx
movq %rbp, %rdi
movl %r14d, %esi
callq 0x1dbd9e
cmpq %rax, %r15
jbe 0x1f337c
movq -0x18(%r15), %r13
testq %r13, %r13
je 0x1f337c
movl -0x8(%r15), %r9d
addq $-0x18, %r15
jmp 0x1f2eb4
movq %r9, %rbx
movq %rbp, %rdi
movl %r14d, %esi
callq 0x1dbd9e
cmpq %rax, %r15
jbe 0x1f333e
cmpq $0x0, -0x18(%r15)
jne 0x1f333e
movq -0x10(%r15), %r8
addq $-0x18, %r15
movq %rbx, %r9
jmp 0x1f2bce
movq %r9, %r12
movq %r8, %rbx
movq %rbp, %rdi
movl %r14d, %esi
callq 0x1dbd9e
cmpq %rax, %r15
jbe 0x1f331f
cmpq $0x0, -0x18(%r15)
je 0x1f331f
movq %r13, -0x18(%r15)
movq %r12, %r9
movl %r9d, -0x8(%r15)
movswq 0x2(%rbx), %rax
leaq (%rbx,%rax,8), %r8
jmp 0x1f2bce
movb 0x1(%r8), %al
shrb $0x4, %al
incb %al
jmp 0x1f315a
movq %rbp, %rdi
movl %r14d, %esi
callq 0x1dbd9e
cmpq %rax, %r15
jbe 0x1f33ba
addq $-0x18, %r15
movq %rbp, %rdi
movl %r14d, %esi
callq 0x1dbd9e
cmpq %rax, %r15
jbe 0x1f3300
movq -0x18(%r15), %r13
addq $-0x18, %r15
testq %r13, %r13
je 0x1f2ee8
movl 0x10(%r15), %r9d
movq 0x8(%r15), %r8
jmp 0x1f2bce
movq %r9, 0x78(%rsp)
movq %r8, 0x58(%rsp)
movq %rbp, %rdi
callq 0x1db3c5
movl %eax, %r12d
shlq $0x4, %rbx
addq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x1f3eff
cmpb $0xc, 0xa(%rax)
jne 0x1f33f8
leal 0x1(%r12), %ecx
movl %ecx, 0xc(%rsp)
movb $0x0, 0xa(%rbx)
movq %r13, (%rbx)
movq 0x10(%rsp), %rcx
movq %rcx, 0x88(%rsp)
movq %rax, 0x80(%rsp)
movq %rbp, 0x90(%rsp)
movq 0x20(%rsp), %rcx
movq %rcx, 0xa0(%rsp)
andl $0x0, 0xa8(%rsp)
movq %rax, 0x60(%rsp)
movq 0x28(%rsp), %rax
movl %eax, 0x98(%rsp)
movq %rbp, %rdi
pushq $0x4
popq %rsi
leaq 0x1771f7(%rip), %rdx    # 0x36a19d
callq 0x1deabb
movq 0x60(%rsp), %rax
movswl 0x8(%rax), %edx
movq %rbp, %rdi
movl 0x44(%rsp), %esi
callq 0x1dc73a
movq %rbp, %rdi
pushq $0x2
popq %rsi
callq 0x1db711
subq 0x20(%rsp), %r13
leaq 0x1(%r13), %rsi
movq %rbp, %rdi
callq 0x1dbe48
leaq 0x80(%rsp), %rdi
xorl %esi, %esi
callq 0x1f3f2a
leal 0x2(%rax), %esi
movq %rbp, %rdi
pushq $-0x1
popq %rdx
callq 0x1dce3a
movq %rbp, %rdi
movl 0xc(%rsp), %esi
callq 0x1dbb20
movq %rbp, %rdi
movq %rax, %rbp
callq 0x1db3c5
movq 0x30(%rsp), %rcx
movq %rax, 0x70(%rsp)
subq $0x1, %rbp
jae 0x1f304d
movq %rcx, %rbp
movq %rcx, %rdi
movl 0xc(%rsp), %esi
callq 0x1dbb4f
testl %eax, %eax
je 0x1f3217
movq %rbp, %rdi
movl 0xc(%rsp), %esi
callq 0x1db731
cmpl $0x1, %eax
pushq $-0x1
popq %rbp
cmoveq %r13, %rbp
cmpq %r13, %rbp
setge %al
cmpq 0x68(%rsp), %rbp
setle %cl
testb %cl, %al
jne 0x1f3072
movq 0x30(%rsp), %rdi
leaq 0x177068(%rip), %rsi    # 0x36a0d3
xorl %eax, %eax
callq 0x1de79c
subq 0x60(%rsp), %rbx
shrq $0x4, %rbx
movl 0xc(%rsp), %esi
movq 0x70(%rsp), %rax
subl %esi, %eax
addq 0x20(%rsp), %rbp
movq 0x78(%rsp), %r13
subl %ebx, %r13d
movq %rax, %rbx
movq 0x30(%rsp), %rdi
callq 0x1db411
testl %ebx, %ebx
movq 0x10(%rsp), %rax
jle 0x1f31fe
addl %ebx, %r13d
incl %r13d
cmpl 0x1c(%rsp), %r13d
movq %r13, %r9
jl 0x1f30e6
movq 0x30(%rsp), %rdi
movq %rax, %rsi
movl %r9d, %edx
movq 0x28(%rsp), %rcx
movq %rbx, %r13
movq %r9, %rbx
callq 0x1f3e90
movq %rbx, %r9
movq %r13, %rbx
leal (%r9,%r9), %ecx
movl %ecx, 0x1c(%rsp)
movl 0xc(%rsp), %edi
movslq %r9d, %rsi
shlq $0x4, %rsi
leaq (%rax,%rsi), %r8
movl %ebx, %edx
movq %rdx, %rcx
shlq $0x4, %rcx
subq %rcx, %r8
cmpb $0xc, -0x6(%r8)
jne 0x1f339b
cmpb $0x0, -0x5(%r8)
jne 0x1f339b
movw %di, -0x8(%r8)
addq $-0x10, %r8
addl $0x2, %r12d
subq %rcx, %rsi
addq %rax, %rsi
addq $0xb, %rsi
pushq $0x1
popq %rdi
cmpq %rdx, %rdi
jae 0x1f31c9
movq %rbp, -0xb(%rsi)
movw $0x10c, -0x1(%rsi)      # imm = 0x10C
movw %r12w, -0x3(%rsi)
incq %rdi
incl %r12d
addq $0x10, %rsi
jmp 0x1f3131
movl %r9d, %ebx
movb $0x1, %al
shlq $0x4, %rbx
movq 0x10(%rsp), %rsi
movb %al, 0xb(%rsi,%rbx)
movzbl 0x1(%r8), %eax
shrl $0x4, %eax
movq %r13, %rcx
subq %rax, %rcx
movq %rcx, (%rsi,%rbx)
movzwl 0x2(%r8), %eax
movw %ax, 0x8(%rsi,%rbx)
movb 0x1(%r8), %al
andb $0xf, %al
movb %al, 0xa(%rsi,%rbx)
incl %r9d
cmpl 0x1c(%rsp), %r9d
jl 0x1f31c0
movq %rbp, %rdi
movl %r9d, %edx
movq 0x28(%rsp), %rcx
movq %r8, %rbx
movq %r9, %r12
callq 0x1f3e90
movq %r12, %r9
movq %rbx, %r8
movq %rax, 0x10(%rsp)
leal (%r12,%r12), %eax
movl %eax, 0x1c(%rsp)
addq $0x8, %r8
jmp 0x1f2bce
movq %rax, 0x10(%rsp)
movw $0x100, 0xa(%r8,%rcx)   # imm = 0x100
movq %rbp, (%r8,%rcx)
movq 0x58(%rsp), %r8
jmp 0x1f3206
movswq 0x2(%rbx), %rcx
testq %rcx, %rcx
movq %rbx, %r8
je 0x1f2ee8
leaq (%r8,%rcx,8), %r8
movq %r12, %r9
jmp 0x1f2bce
movq 0x58(%rsp), %r8
movq %r13, %r9
addq $0x8, %r8
movq %rbp, %r13
movq 0x30(%rsp), %rbp
jmp 0x1f2bce
movq %rbp, %rdi
movl %r12d, %esi
callq 0x1db3d2
jmp 0x1f2ee8
movq %r9, %rbx
movq %rbp, %rdi
movl %r14d, %esi
callq 0x1dbd9e
addq $0x18, %rax
cmpq %rax, %r15
jne 0x1f3466
movslq %ebx, %rax
shlq $0x4, %rax
movq 0x10(%rsp), %rcx
movb $0x0, 0xa(%rcx,%rax)
andq $0x0, (%rcx,%rax)
testq %r13, %r13
movq 0x28(%rsp), %rbx
je 0x1f32e1
movl %ebx, %esi
addl $0x2, %esi
movq %rbp, %rdi
callq 0x1dbd9e
cmpb $0x0, 0xa(%rax)
je 0x1f32b8
leaq 0xb0(%rsp), %r14
movq %rax, (%r14)
movq %rax, 0x8(%r14)
movq %rbp, 0x10(%r14)
movq 0x20(%rsp), %rax
movq %rax, 0x20(%r14)
andl $0x0, 0x28(%r14)
movl %ebx, 0x18(%r14)
xorl %ebx, %ebx
movq %r14, %rdi
callq 0x1f3fb2
addl %eax, %ebx
movq 0xb0(%rsp), %rax
cmpb $0x0, 0xa(%rax)
jne 0x1f329c
testl %ebx, %ebx
jne 0x1f32ec
subq 0x20(%rsp), %r13
incq %r13
movq %rbp, %rdi
movq %r13, %rsi
callq 0x1dbe48
jmp 0x1f32e9
movq %rbp, %rdi
movl %r14d, %esi
callq 0x1dbd9e
cmpq %rax, %r15
jne 0x1f3485
movq %rbp, %rdi
callq 0x1dbe22
pushq $0x1
popq %rbx
movl %ebx, %eax
addq $0xc18, %rsp            # imm = 0xC18
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x176dae(%rip), %rdi    # 0x36a0b5
leaq 0x1767d4(%rip), %rsi    # 0x369ae2
leaq 0x176ca9(%rip), %rcx    # 0x369fbe
movl $0x231, %edx            # imm = 0x231
callq 0x174b0
leaq 0x176d57(%rip), %rdi    # 0x36a07d
leaq 0x1767b5(%rip), %rsi    # 0x369ae2
leaq 0x176c8a(%rip), %rcx    # 0x369fbe
movl $0x21d, %edx            # imm = 0x21D
callq 0x174b0
leaq 0x176d00(%rip), %rdi    # 0x36a045
leaq 0x176796(%rip), %rsi    # 0x369ae2
leaq 0x176c6b(%rip), %rcx    # 0x369fbe
movl $0x1d5, %edx            # imm = 0x1D5
callq 0x174b0
leaq 0x176d19(%rip), %rdi    # 0x36a07d
leaq 0x176777(%rip), %rsi    # 0x369ae2
leaq 0x176c4c(%rip), %rcx    # 0x369fbe
movl $0x217, %edx            # imm = 0x217
callq 0x174b0
leaq 0x176cfa(%rip), %rdi    # 0x36a07d
leaq 0x176758(%rip), %rsi    # 0x369ae2
leaq 0x176c2d(%rip), %rcx    # 0x369fbe
movl $0x224, %edx            # imm = 0x224
callq 0x174b0
leaq 0x176ee3(%rip), %rdi    # 0x36a285
leaq 0x176739(%rip), %rsi    # 0x369ae2
leaq 0x176f02(%rip), %rcx    # 0x36a2b2
movl $0x1a8, %edx            # imm = 0x1A8
callq 0x174b0
leaq 0x176cf4(%rip), %rdi    # 0x36a0b5
leaq 0x17671a(%rip), %rsi    # 0x369ae2
leaq 0x176bef(%rip), %rcx    # 0x369fbe
movl $0x22b, %edx            # imm = 0x22B
callq 0x174b0
leaq 0x176d23(%rip), %rdi    # 0x36a103
leaq 0x1766fb(%rip), %rsi    # 0x369ae2
leaq 0x176bd0(%rip), %rcx    # 0x369fbe
movl $0x256, %edx            # imm = 0x256
callq 0x174b0
leaq 0x176d31(%rip), %rdi    # 0x36a130
leaq 0x1766dc(%rip), %rsi    # 0x369ae2
leaq 0x176d3d(%rip), %rcx    # 0x36a14a
movl $0x7f2, %edx            # imm = 0x7F2
callq 0x174b0
movswl 0x2(%r8), %edx
movq %rbp, %rdi
movl 0x44(%rsp), %esi
callq 0x1dc73a
pushq $-0x1
popq %rsi
movq %rbp, %rdi
callq 0x1f1dc6
leaq 0x176cd4(%rip), %rsi    # 0x36a10e
movq %rbp, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x1de79c
leaq 0x11b8a7(%rip), %rdi    # 0x30ecf5
leaq 0x17668d(%rip), %rsi    # 0x369ae2
leaq 0x176b62(%rip), %rcx    # 0x369fbe
movl $0x279, %edx            # imm = 0x279
callq 0x174b0
leaq 0x176b2e(%rip), %rdi    # 0x369f9b
leaq 0x17666e(%rip), %rsi    # 0x369ae2
leaq 0x176b43(%rip), %rcx    # 0x369fbe
movl $0x1cb, %edx            # imm = 0x1CB
callq 0x174b0
leaq 0x176b9a(%rip), %rdi    # 0x36a026
leaq 0x17664f(%rip), %rsi    # 0x369ae2
leaq 0x176b24(%rip), %rcx    # 0x369fbe
movl $0x1d1, %edx            # imm = 0x1D1
callq 0x174b0