user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<LCSubseq>:
  endbr64
  push   %r15
  mov    %ecx,%eax
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xc8,%rsp
  or     %edx,%eax
  mov    %edx,0x88(%rsp)
  mov    %ecx,0x80(%rsp)
  movl   $0x0,0x98(%rsp)
  js     L819
  movslq %edx,%rax
  movslq %ecx,%rcx
  movzbl (%rdi,%rax,1),%eax
  mov    %rcx,0x40(%rsp)
  mov    %al,0x8e(%rsp)
  mov    %rcx,%rax
  lea    -0x1(%rdx),%ecx
  sub    $0x1,%eax
  mov    %ecx,0x64(%rsp)
  mov    %ecx,%edx
  mov    %eax,0x7c(%rsp)
L1238:
  mov    0x7c(%rsp),%ecx
  mov    0x40(%rsp),%rax
  shr    $0x1f,%edx
  mov    %ecx,%ebx
  movzbl (%rsi,%rax,1),%eax
  shr    $0x1f,%ebx
  mov    %ebx,0x54(%rsp)
  cmp    0x8e(%rsp),%al
  jne    L1389
  mov    %edx,%eax
  addl   $0x1,0x98(%rsp)
  or     %ebx,%eax
  mov    %ecx,0x80(%rsp)
  mov    %al,0x8f(%rsp)
L478:
  cmpb   $0x0,0x8f(%rsp)
  jne    L819
  movslq 0x64(%rsp),%rax
  movslq 0x80(%rsp),%rcx
  mov    %rax,0x48(%rsp)
  mov    %rcx,%rax
  sub    $0x1,%eax
  mov    %rcx,0x40(%rsp)
  mov    %eax,0x7c(%rsp)
L1367:
  mov    0x48(%rsp),%rax
  movzbl (%rdi,%rax,1),%eax
  mov    %al,0x8e(%rsp)
  mov    0x64(%rsp),%eax
  mov    %eax,0x88(%rsp)
  sub    $0x1,%eax
  mov    %eax,0x64(%rsp)
  mov    %eax,%edx
  jmp    L1238
  nopl   (%rax)
L1389:
  mov    0x80(%rsp),%ebx
  mov    %ebx,%ecx
  shr    $0x1f,%ecx
  or     %cl,%dl
  mov    %dl,0x8f(%rsp)
  jne    L1287
  movslq 0x64(%rsp),%rdx
  mov    %ebx,0x1c(%rsp)
  movl   $0x0,0x84(%rsp)
  mov    %rdx,%rcx
  mov    %rdx,0x48(%rsp)
  movzbl (%rdi,%rdx,1),%edx
  mov    %ecx,0x3c(%rsp)
  sub    $0x1,%ecx
  mov    %ecx,0x18(%rsp)
  lea    -0x1(%rbx),%ecx
  mov    %dl,0x28(%rsp)
  mov    %ecx,0x20(%rsp)
L797:
  mov    0x20(%rsp),%ecx
  mov    0x18(%rsp),%edx
  mov    %ecx,%ebx
  shr    $0x1f,%edx
  shr    $0x1f,%ebx
  mov    %ebx,0x50(%rsp)
  cmp    0x28(%rsp),%al
  jne    L1074
  mov    %edx,%eax
  addl   $0x1,0x84(%rsp)
  or     %ebx,%eax
  mov    %ecx,0x1c(%rsp)
  mov    %al,0x30(%rsp)
L595:
  cmpb   $0x0,0x30(%rsp)
  jne    L760
  movslq 0x18(%rsp),%rax
  mov    %rax,0x10(%rsp)
  mov    0x1c(%rsp),%eax
  sub    $0x1,%eax
  mov    %eax,0x20(%rsp)
L975:
  mov    0x10(%rsp),%rax
  movzbl (%rdi,%rax,1),%eax
  mov    %al,0x28(%rsp)
  mov    0x18(%rsp),%eax
  mov    %eax,0x3c(%rsp)
  sub    $0x1,%eax
  mov    %eax,0x18(%rsp)
L951:
  movslq 0x1c(%rsp),%rax
  movzbl (%rsi,%rax,1),%eax
  jmp    L797
  xchg   %ax,%ax
L1074:
  mov    0x1c(%rsp),%ebx
  mov    %ebx,%ecx
  shr    $0x1f,%ecx
  or     %cl,%dl
  mov    %dl,0x30(%rsp)
  jne    L411
  movslq 0x18(%rsp),%rdx
  movl   $0x0,0x38(%rsp)
  mov    %ebx,%r15d
  lea    -0x1(%rbx),%r14d
  mov    %rdx,0x10(%rsp)
  movzbl (%rdi,%rdx,1),%r12d
  lea    -0x1(%rdx),%r13d
  mov    %edx,0x8(%rsp)
L141:
  mov    %r14d,%r11d
  mov    %r13d,%edx
  shr    $0x1f,%r11d
  shr    $0x1f,%edx
  cmp    %r12b,%al
  jne    L529
  mov    %edx,%eax
  addl   $0x1,0x38(%rsp)
  mov    %r14d,%r15d
  or     %r11d,%eax
  mov    %al,0x4(%rsp)
L560:
  cmpb   $0x0,0x4(%rsp)
  jne    L1327
  lea    -0x1(%r15),%r14d
L205:
  movslq %r13d,%rax
  mov    %r13d,0x8(%rsp)
  sub    $0x1,%r13d
  movzbl (%rdi,%rax,1),%r12d
L119:
  movslq %r15d,%rax
  movzbl (%rsi,%rax,1),%eax
  jmp    L141
  nopw   0x0(%rax,%rax,1)
L529:
  mov    %r15d,%ecx
  shr    $0x1f,%ecx
  or     %cl,%dl
  mov    %dl,0x4(%rsp)
  jne    L1029
  mov    %r13d,%ebx
  mov    %r15d,%ebp
  mov    %r12d,%r10d
  xor    %r8d,%r8d
  movslq %ebx,%rdx
  lea    -0x1(%rbx),%r9d
  lea    -0x1(%rbp),%r12d
  cmp    %al,(%rdi,%rdx,1)
  je     L1352
L177:
  mov    %r9d,%edx
  mov    %ebp,%ecx
  mov    %r10b,0x78(%rsp)
  mov    %r11d,0x90(%rsp)
  mov    %r8d,0x74(%rsp)
  mov    %r9d,0x70(%rsp)
  mov    %rsi,0x68(%rsp)
  mov    %rdi,0x58(%rsp)
  call   <LCSubseq>
  mov    0x68(%rsp),%rsi
  mov    %ebx,%edx
  mov    %r12d,%ecx
  mov    0x58(%rsp),%rdi
  mov    %eax,0x60(%rsp)
  call   <LCSubseq>
  mov    0x70(%rsp),%r9d
  cmp    %eax,0x60(%rsp)
  cmovle %r12d,%ebp
  mov    0x58(%rsp),%rdi
  mov    0x68(%rsp),%rsi
  cmovg  %r9d,%ebx
  mov    0x74(%rsp),%r8d
  movzbl 0x78(%rsp),%r10d
  mov    0x90(%rsp),%r11d
  mov    %ebx,%eax
  or     %ebp,%eax
  js     L863
  nopl   0x0(%rax)
L62:
  movslq %ebp,%rax
  lea    -0x1(%rbx),%r9d
  lea    -0x1(%rbp),%r12d
  movslq %ebx,%rdx
  movzbl (%rsi,%rax,1),%eax
  cmp    %al,(%rdi,%rdx,1)
  jne    L177
L1352:
  mov    %r9d,%ebx
  mov    %r12d,%ebp
  add    $0x1,%r8d
  mov    %ebx,%eax
  or     %ebp,%eax
  jns    L62
L863:
  mov    0x8(%rsp),%eax
  mov    %r10d,%r12d
  test   %eax,%eax
  js     L685
  test   %r11b,%r11b
  jne    L685
L512:
  mov    %r14d,%ebx
  mov    0x8(%rsp),%ebp
  mov    %r12d,%eax
  mov    %r12d,%r10d
  movslq %ebx,%rdx
  xor    %r11d,%r11d
  lea    -0x1(%rbx),%r12d
  lea    -0x1(%rbp),%r9d
  cmp    %al,(%rsi,%rdx,1)
  je     L581
L1226:
  mov    %r9d,%edx
  mov    %ebx,%ecx
  mov    %r11d,0x78(%rsp)
  mov    %r10b,0x90(%rsp)
  mov    %r8d,0x74(%rsp)
  mov    %r9d,0x70(%rsp)
  mov    %rsi,0x68(%rsp)
  mov    %rdi,0x58(%rsp)
  call   <LCSubseq>
  mov    0x68(%rsp),%rsi
  mov    %ebp,%edx
  mov    %r12d,%ecx
  mov    0x58(%rsp),%rdi
  mov    %eax,0x60(%rsp)
  call   <LCSubseq>
  mov    0x70(%rsp),%r9d
  cmp    %eax,0x60(%rsp)
  cmovle %r12d,%ebx
  mov    0x58(%rsp),%rdi
  mov    0x68(%rsp),%rsi
  cmovg  %r9d,%ebp
  mov    0x74(%rsp),%r8d
  mov    0x78(%rsp),%r11d
  movzbl 0x90(%rsp),%r10d
  mov    %ebp,%eax
  or     %ebx,%eax
  js     L1353
  xchg   %ax,%ax
L307:
  movslq %ebp,%rax
  lea    -0x1(%rbp),%r9d
  lea    -0x1(%rbx),%r12d
  movslq %ebx,%rdx
  movzbl (%rdi,%rax,1),%eax
  cmp    %al,(%rsi,%rdx,1)
  jne    L1226
L581:
  mov    %r9d,%ebp
  mov    %r12d,%ebx
  add    $0x1,%r11d
  mov    %ebp,%eax
  or     %ebx,%eax
  jns    L307
L1353:
  mov    %r10d,%r12d
  cmp    %r8d,%r11d
  jl     L560
  mov    %r14d,%r15d
  sub    $0x1,%r14d
  jmp    L119
  nopl   0x0(%rax,%rax,1)
L685:
  test   %r8d,%r8d
  jne    L205
  nopl   0x0(%rax)
L1327:
  mov    0x3c(%rsp),%ecx
  test   %ecx,%ecx
  js     L916
  cmpb   $0x0,0x50(%rsp)
  jne    L916
L756:
  mov    0x3c(%rsp),%ecx
  movzbl 0x28(%rsp),%eax
  movl   $0x0,0x50(%rsp)
  movslq 0x20(%rsp),%r15
  mov    %al,0x4(%rsp)
  lea    -0x1(%rcx),%r13d
  mov    %ecx,0x10(%rsp)
  lea    -0x1(%r15),%r11d
  mov    %r15d,%r10d
  mov    %r15,%r9
  mov    %r11d,%r12d
L1216:
  mov    %r12d,%ecx
  mov    %r13d,%edx
  movzbl (%rsi,%r9,1),%eax
  shr    $0x1f,%ecx
  shr    $0x1f,%edx
  cmp    0x4(%rsp),%al
  jne    L616
  mov    %edx,%eax
  addl   $0x1,0x50(%rsp)
  mov    %r12d,%r10d
  or     %ecx,%eax
  mov    %al,0x8(%rsp)
L1189:
  cmpb   $0x0,0x8(%rsp)
  jne    L641
  movslq %r10d,%r9
  lea    -0x1(%r10),%r12d
L464:
  movslq %r13d,%rax
  mov    %r13d,0x10(%rsp)
  sub    $0x1,%r13d
  movzbl (%rdi,%rax,1),%eax
  mov    %al,0x4(%rsp)
  jmp    L1216
  nopl   (%rax)
L616:
  mov    0x10(%rsp),%r11d
  mov    %r10d,%r8d
  shr    $0x1f,%r8d
  shr    $0x1f,%r11d
  or     %ecx,%r11d
  mov    %edx,%ecx
  or     %r8b,%cl
  mov    %cl,0x8(%rsp)
  jne    L1335
  mov    %r13d,%ebx
  mov    %r10d,%ebp
  xor    %r8d,%r8d
  movslq %ebx,%rdx
  lea    -0x1(%rbx),%r14d
  lea    -0x1(%rbp),%r15d
  cmp    %al,(%rdi,%rdx,1)
  je     L579
L1271:
  mov    %ebp,%ecx
  mov    %r14d,%edx
  mov    %r11b,0x78(%rsp)
  mov    %r9,0x90(%rsp)
  mov    %r10d,0x74(%rsp)
  mov    %r8d,0x70(%rsp)
  mov    %rsi,0x68(%rsp)
  mov    %rdi,0x58(%rsp)
  call   <LCSubseq>
  mov    0x68(%rsp),%rsi
  mov    %ebx,%edx
  mov    %r15d,%ecx
  mov    0x58(%rsp),%rdi
  mov    %eax,0x60(%rsp)
  call   <LCSubseq>
  cmp    %eax,0x60(%rsp)
  mov    0x58(%rsp),%rdi
  cmovg  %r14d,%ebx
  cmovle %r15d,%ebp
  mov    0x68(%rsp),%rsi
  mov    0x70(%rsp),%r8d
  mov    0x74(%rsp),%r10d
  movzbl 0x78(%rsp),%r11d
  mov    %ebx,%eax
  mov    0x90(%rsp),%r9
  or     %ebp,%eax
  js     L53
  cs nopw 0x0(%rax,%rax,1)
L937:
  movslq %ebp,%rax
  lea    -0x1(%rbx),%r14d
  lea    -0x1(%rbp),%r15d
  movslq %ebx,%rdx
  movzbl (%rsi,%rax,1),%eax
  cmp    %al,(%rdi,%rdx,1)
  jne    L1271
L579:
  mov    %r14d,%ebx
  mov    %r15d,%ebp
  add    $0x1,%r8d
  mov    %ebx,%eax
  or     %ebp,%eax
  jns    L937
L53:
  test   %r11b,%r11b
  jne    L776
L1280:
  mov    %r12d,%ebx
  mov    0x10(%rsp),%r14d
  movzbl 0x4(%rsp),%eax
  xor    %r9d,%r9d
  movslq %ebx,%rdx
  lea    -0x1(%rbx),%ebp
  lea    -0x1(%r14),%r15d
  cmp    %al,(%rsi,%rdx,1)
  je     L1118
L492:
  mov    %ebx,%ecx
  mov    %r15d,%edx
  mov    %r10d,0x78(%rsp)
  mov    %r8d,0x74(%rsp)
  mov    %r9d,0x70(%rsp)
  mov    %rsi,0x68(%rsp)
  mov    %rdi,0x58(%rsp)
  call   <LCSubseq>
  mov    0x68(%rsp),%rsi
  mov    %r14d,%edx
  mov    %ebp,%ecx
  mov    0x58(%rsp),%rdi
  mov    %eax,0x60(%rsp)
  call   <LCSubseq>
  cmp    %eax,0x60(%rsp)
  mov    0x58(%rsp),%rdi
  cmovg  %r15d,%r14d
  cmovle %ebp,%ebx
  mov    0x68(%rsp),%rsi
  mov    0x70(%rsp),%r9d
  mov    0x74(%rsp),%r8d
  mov    0x78(%rsp),%r10d
  mov    %r14d,%eax
  or     %ebx,%eax
  js     L1141
  nopl   (%rax)
L789:
  movslq %r14d,%rax
  lea    -0x1(%r14),%r15d
  lea    -0x1(%rbx),%ebp
  movslq %ebx,%rdx
  movzbl (%rdi,%rax,1),%eax
  cmp    %al,(%rsi,%rdx,1)
  jne    L492
L1118:
  mov    %r15d,%r14d
  mov    %ebp,%ebx
  add    $0x1,%r9d
  mov    %r14d,%eax
  or     %ebx,%eax
  jns    L789
L1141:
  cmp    %r8d,%r9d
  jl     L1189
  mov    %r12d,%r10d
  movslq %r12d,%r9
  sub    $0x1,%r12d
  jmp    L1216
  nopw   0x0(%rax,%rax,1)
L776:
  test   %r8d,%r8d
  jne    L464
  nopl   0x0(%rax)
L641:
  mov    0x38(%rsp),%ecx
  cmp    %ecx,0x50(%rsp)
  jl     L595
  mov    0x20(%rsp),%eax
  mov    %eax,0x1c(%rsp)
  sub    $0x1,%eax
  mov    %eax,0x20(%rsp)
  jmp    L951
  nopw   0x0(%rax,%rax,1)
L916:
  mov    0x38(%rsp),%eax
  test   %eax,%eax
  jne    L975
  nopl   0x0(%rax)
L760:
  mov    0x88(%rsp),%r9d
  test   %r9d,%r9d
  js     L1116
  cmpb   $0x0,0x54(%rsp)
  jne    L1116
L1169:
  movslq 0x7c(%rsp),%rdx
  movzbl 0x8e(%rsp),%eax
  movl   $0x0,0x90(%rsp)
  mov    0x88(%rsp),%ecx
  mov    %al,0x60(%rsp)
  mov    %rdx,%rax
  sub    $0x1,%eax
  mov    %ecx,0x74(%rsp)
  mov    %eax,0x48(%rsp)
  lea    -0x1(%rcx),%eax
  mov    %eax,0x38(%rsp)
  mov    %edx,0x58(%rsp)
  mov    %rdx,0x8(%rsp)
  mov    %eax,%edx
L574:
  mov    0x48(%rsp),%ecx
  mov    0x8(%rsp),%rax
  shr    $0x1f,%edx
  mov    %ecx,%ebx
  movzbl (%rsi,%rax,1),%eax
  shr    $0x1f,%ebx
  mov    %ebx,0x1c(%rsp)
  cmp    0x60(%rsp),%al
  jne    L587
  mov    %edx,%eax
  addl   $0x1,0x90(%rsp)
  or     %ebx,%eax
  mov    %ecx,0x58(%rsp)
  mov    %al,0x70(%rsp)
L1166:
  cmpb   $0x0,0x70(%rsp)
  jne    L84
  movslq 0x38(%rsp),%rax
  movslq 0x58(%rsp),%rcx
  mov    %rax,0x10(%rsp)
  mov    %rcx,%rax
  sub    $0x1,%eax
  mov    %rcx,0x8(%rsp)
  mov    %eax,0x48(%rsp)
L1105:
  mov    0x10(%rsp),%rax
  movzbl (%rdi,%rax,1),%eax
  mov    %al,0x60(%rsp)
  mov    0x38(%rsp),%eax
  mov    %eax,0x74(%rsp)
  sub    $0x1,%eax
  mov    %eax,0x38(%rsp)
  mov    %eax,%edx
  jmp    L574
  nopl   0x0(%rax,%rax,1)
L587:
  mov    0x58(%rsp),%ebx
  mov    %ebx,%ecx
  shr    $0x1f,%ecx
  or     %cl,%dl
  mov    %dl,0x70(%rsp)
  jne    L1036
  movslq 0x38(%rsp),%rdx
  movl   $0x0,0x68(%rsp)
  mov    %ebx,%r15d
  lea    -0x1(%rbx),%r14d
  mov    %rdx,0x10(%rsp)
  movzbl (%rdi,%rdx,1),%r12d
  lea    -0x1(%rdx),%r13d
  mov    %edx,0x18(%rsp)
L1111:
  mov    %r14d,%r11d
  mov    %r13d,%edx
  shr    $0x1f,%r11d
  shr    $0x1f,%edx
  cmp    %r12b,%al
  jne    L418
  mov    %edx,%eax
  addl   $0x1,0x68(%rsp)
  mov    %r14d,%r15d
  or     %r11d,%eax
  mov    %al,0x4(%rsp)
L105:
  cmpb   $0x0,0x4(%rsp)
  jne    L1161
  lea    -0x1(%r15),%r14d
L173:
  movslq %r13d,%rax
  mov    %r13d,0x18(%rsp)
  sub    $0x1,%r13d
  movzbl (%rdi,%rax,1),%r12d
L1278:
  movslq %r15d,%rax
  movzbl (%rsi,%rax,1),%eax
  jmp    L1111
  nopw   0x0(%rax,%rax,1)
L418:
  mov    %r15d,%ecx
  shr    $0x1f,%ecx
  or     %cl,%dl
  mov    %dl,0x4(%rsp)
  jne    L1331
  mov    %r13d,%ebx
  mov    %r15d,%ebp
  mov    %r12d,%r10d
  xor    %r8d,%r8d
  movslq %ebx,%rdx
  lea    -0x1(%rbx),%r9d
  lea    -0x1(%rbp),%r12d
  cmp    %al,(%rdi,%rdx,1)
  je     L422
L302:
  mov    %r9d,%edx
  mov    %ebp,%ecx
  mov    %r11d,0x54(%rsp)
  mov    %r10b,0x40(%rsp)
  mov    %r8d,0x50(%rsp)
  mov    %r9d,0x3c(%rsp)
  mov    %rsi,0x30(%rsp)
  mov    %rdi,0x28(%rsp)
  call   <LCSubseq>
  mov    0x30(%rsp),%rsi
  mov    %ebx,%edx
  mov    %r12d,%ecx
  mov    0x28(%rsp),%rdi
  mov    %eax,0x20(%rsp)
  call   <LCSubseq>
  mov    0x3c(%rsp),%r9d
  cmp    %eax,0x20(%rsp)
  cmovle %r12d,%ebp
  mov    0x28(%rsp),%rdi
  mov    0x30(%rsp),%rsi
  cmovg  %r9d,%ebx
  mov    0x50(%rsp),%r8d
  movzbl 0x40(%rsp),%r10d
  mov    0x54(%rsp),%r11d
  mov    %ebx,%eax
  or     %ebp,%eax
  js     L1293
  nopl   0x0(%rax,%rax,1)
L1080:
  movslq %ebp,%rax
  lea    -0x1(%rbx),%r9d
  lea    -0x1(%rbp),%r12d
  movslq %ebx,%rdx
  movzbl (%rsi,%rax,1),%eax
  cmp    %al,(%rdi,%rdx,1)
  jne    L302
L422:
  mov    %r9d,%ebx
  mov    %r12d,%ebp
  add    $0x1,%r8d
  mov    %ebx,%eax
  or     %ebp,%eax
  jns    L1080
L1293:
  mov    0x18(%rsp),%eax
  mov    %r10d,%r12d
  test   %eax,%eax
  js     L1075
  test   %r11b,%r11b
  jne    L1075
L590:
  mov    %r14d,%ebx
  mov    0x18(%rsp),%ebp
  mov    %r12d,%eax
  mov    %r12d,%r10d
  movslq %ebx,%rdx
  xor    %r11d,%r11d
  lea    -0x1(%rbx),%r12d
  lea    -0x1(%rbp),%r9d
  cmp    %al,(%rsi,%rdx,1)
  je     L1159
L300:
  mov    %r9d,%edx
  mov    %ebx,%ecx
  mov    %r10b,0x54(%rsp)
  mov    %r11d,0x40(%rsp)
  mov    %r8d,0x50(%rsp)
  mov    %r9d,0x3c(%rsp)
  mov    %rsi,0x30(%rsp)
  mov    %rdi,0x28(%rsp)
  call   <LCSubseq>
  mov    0x30(%rsp),%rsi
  mov    %ebp,%edx
  mov    %r12d,%ecx
  mov    0x28(%rsp),%rdi
  mov    %eax,0x20(%rsp)
  call   <LCSubseq>
  mov    0x3c(%rsp),%r9d
  cmp    %eax,0x20(%rsp)
  cmovle %r12d,%ebx
  mov    0x28(%rsp),%rdi
  mov    0x30(%rsp),%rsi
  cmovg  %r9d,%ebp
  mov    0x50(%rsp),%r8d
  mov    0x40(%rsp),%r11d
  movzbl 0x54(%rsp),%r10d
  mov    %ebp,%eax
  or     %ebx,%eax
  js     L630
L16:
  movslq %ebp,%rax
  lea    -0x1(%rbp),%r9d
  lea    -0x1(%rbx),%r12d
  movslq %ebx,%rdx
  movzbl (%rdi,%rax,1),%eax
  cmp    %al,(%rsi,%rdx,1)
  jne    L300
L1159:
  mov    %r9d,%ebp
  mov    %r12d,%ebx
  add    $0x1,%r11d
  mov    %ebp,%eax
  or     %ebx,%eax
  jns    L16
L630:
  mov    %r10d,%r12d
  cmp    %r8d,%r11d
  jl     L105
  mov    %r14d,%r15d
  sub    $0x1,%r14d
  jmp    L1278
  nopl   0x0(%rax,%rax,1)
L1075:
  test   %r8d,%r8d
  jne    L173
  nopl   0x0(%rax)
L1161:
  mov    0x74(%rsp),%eax
  test   %eax,%eax
  js     L1135
  cmpb   $0x0,0x1c(%rsp)
  jne    L1135
L163:
  movslq 0x48(%rsp),%rdx
  movzbl 0x60(%rsp),%eax
  movl   $0x0,0x78(%rsp)
  mov    0x74(%rsp),%ecx
  mov    %al,0x1c(%rsp)
  mov    %rdx,%rax
  sub    $0x1,%eax
  mov    %ecx,0x50(%rsp)
  mov    %eax,0x10(%rsp)
  lea    -0x1(%rcx),%eax
  mov    %eax,0x4(%rsp)
  mov    %edx,0x28(%rsp)
  mov    %rdx,0x20(%rsp)
  mov    %eax,%edx
L502:
  mov    0x10(%rsp),%ecx
  mov    0x20(%rsp),%rax
  shr    $0x1f,%edx
  mov    %ecx,%ebx
  movzbl (%rsi,%rax,1),%eax
  shr    $0x1f,%ebx
  mov    %ebx,0x54(%rsp)
  cmp    0x1c(%rsp),%al
  jne    L824
  mov    %edx,%eax
  addl   $0x1,0x78(%rsp)
  or     %ebx,%eax
  mov    %ecx,0x28(%rsp)
  mov    %al,0x3c(%rsp)
L250:
  cmpb   $0x0,0x3c(%rsp)
  jne    L877
  movslq 0x4(%rsp),%rax
  movslq 0x28(%rsp),%rcx
  mov    %rax,0x40(%rsp)
  mov    %rcx,%rax
  sub    $0x1,%eax
  mov    %rcx,0x20(%rsp)
  mov    %eax,0x10(%rsp)
L667:
  mov    0x40(%rsp),%rax
  movzbl (%rdi,%rax,1),%eax
  mov    %al,0x1c(%rsp)
  mov    0x4(%rsp),%eax
  mov    %eax,0x50(%rsp)
  sub    $0x1,%eax
  mov    %eax,0x4(%rsp)
  mov    %eax,%edx
  jmp    L502
  nopw   0x0(%rax,%rax,1)
L824:
  mov    0x28(%rsp),%ebx
  mov    %ebx,%ecx
  shr    $0x1f,%ecx
  or     %cl,%dl
  mov    %dl,0x3c(%rsp)
  jne    L807
  movslq 0x4(%rsp),%rdx
  movl   $0x0,0x30(%rsp)
  mov    %ebx,%r15d
  lea    -0x1(%rbx),%r14d
  mov    %rdx,0x40(%rsp)
  movzbl (%rdi,%rdx,1),%r12d
  lea    -0x1(%rdx),%r13d
  mov    %edx,0x8(%rsp)
L901:
  mov    %r13d,%edx
  mov    %r14d,%r11d
  shr    $0x1f,%edx
  shr    $0x1f,%r11d
  cmp    %r12b,%al
  jne    L1061
  mov    %r11d,%eax
  addl   $0x1,0x30(%rsp)
  mov    %r14d,%r15d
  or     %edx,%eax
  mov    %al,0x18(%rsp)
L1242:
  cmpb   $0x0,0x18(%rsp)
  jne    L467
  lea    -0x1(%r15),%r14d
L290:
  movslq %r13d,%rax
  mov    %r13d,0x8(%rsp)
  sub    $0x1,%r13d
  movzbl (%rdi,%rax,1),%r12d
L1290:
  movslq %r15d,%rax
  movzbl (%rsi,%rax,1),%eax
  jmp    L901
  nop
L1061:
  mov    %r15d,%ecx
  shr    $0x1f,%ecx
  or     %cl,%dl
  mov    %dl,0x18(%rsp)
  jne    L1085
  mov    %r13d,%ebx
  mov    %r15d,%ebp
  xor    %r8d,%r8d
  movslq %ebx,%rdx
  lea    -0x1(%rbx),%r9d
  lea    -0x1(%rbp),%r10d
  cmp    %al,(%rdi,%rdx,1)
  je     L5
L399:
  mov    %r9d,%edx
  mov    %ebp,%ecx
  mov    %r11d,0xbc(%rsp)
  mov    %r8d,0xb8(%rsp)
  mov    %r10d,0xb0(%rsp)
  mov    %r9d,0xb4(%rsp)
  mov    %rsi,0xa8(%rsp)
  mov    %rdi,0xa0(%rsp)
  call   <LCSubseq>
  mov    0xa8(%rsp),%rsi
  mov    0xb0(%rsp),%ecx
  mov    %ebx,%edx
  mov    0xa0(%rsp),%rdi
  mov    %eax,0x9c(%rsp)
  call   <LCSubseq>
  mov    0xb4(%rsp),%r9d
  cmp    %eax,0x9c(%rsp)
  mov    0xb0(%rsp),%r10d
  mov    0xa0(%rsp),%rdi
  cmovg  %r9d,%ebx
  mov    0xa8(%rsp),%rsi
  mov    0xb8(%rsp),%r8d
  cmovle %r10d,%ebp
  mov    0xbc(%rsp),%r11d
  mov    %ebx,%eax
  or     %ebp,%eax
  js     L959
  nopl   0x0(%rax,%rax,1)
L1312:
  movslq %ebp,%rax
  lea    -0x1(%rbx),%r9d
  lea    -0x1(%rbp),%r10d
  movslq %ebx,%rdx
  movzbl (%rsi,%rax,1),%eax
  cmp    %al,(%rdi,%rdx,1)
  jne    L399
L5:
  mov    %r9d,%ebx
  mov    %r10d,%ebp
  add    $0x1,%r8d
  mov    %ebx,%eax
  or     %ebp,%eax
  jns    L1312
L959:
  mov    0x8(%rsp),%r9d
  test   %r9d,%r9d
  js     L1250
  test   %r11b,%r11b
  jne    L1250
L1326:
  mov    %r14d,%ebx
  mov    0x8(%rsp),%ebp
  mov    %r12d,%edx
  xor    %r11d,%r11d
  movslq %ebx,%rax
  lea    -0x1(%rbx),%r10d
  lea    -0x1(%rbp),%r9d
  cmp    %dl,(%rsi,%rax,1)
  je     L1026
L64:
  mov    %r9d,%edx
  mov    %ebx,%ecx
  mov    %r11d,0xbc(%rsp)
  mov    %r8d,0xb8(%rsp)
  mov    %r10d,0xb0(%rsp)
  mov    %r9d,0xb4(%rsp)
  mov    %rsi,0xa8(%rsp)
  mov    %rdi,0xa0(%rsp)
  call   <LCSubseq>
  mov    0xa8(%rsp),%rsi
  mov    0xb0(%rsp),%ecx
  mov    %ebp,%edx
  mov    0xa0(%rsp),%rdi
  mov    %eax,0x9c(%rsp)
  call   <LCSubseq>
  mov    0xb4(%rsp),%r9d
  cmp    %eax,0x9c(%rsp)
  mov    0xb0(%rsp),%r10d
  mov    0xa0(%rsp),%rdi
  cmovg  %r9d,%ebp
  mov    0xa8(%rsp),%rsi
  mov    0xb8(%rsp),%r8d
  cmovle %r10d,%ebx
  mov    0xbc(%rsp),%r11d
  mov    %ebp,%eax
  or     %ebx,%eax
  js     L537
  nop
L169:
  movslq %ebp,%rax
  lea    -0x1(%rbp),%r9d
  lea    -0x1(%rbx),%r10d
  movzbl (%rdi,%rax,1),%edx
  movslq %ebx,%rax
  cmp    %dl,(%rsi,%rax,1)
  jne    L64
L1026:
  mov    %r9d,%ebp
  mov    %r10d,%ebx
  add    $0x1,%r11d
  mov    %ebp,%eax
  or     %ebx,%eax
  jns    L169
L537:
  cmp    %r8d,%r11d
  jl     L1242
  mov    %r14d,%r15d
  sub    $0x1,%r14d
  jmp    L1290
L1250:
  test   %r8d,%r8d
  jne    L290
  nopl   0x0(%rax)
L467:
  mov    0x50(%rsp),%r11d
  test   %r11d,%r11d
  js     L1048
  cmpb   $0x0,0x54(%rsp)
  jne    L1048
L1156:
  movslq 0x10(%rsp),%rax
  mov    0x50(%rsp),%r13d
  movl   $0x0,0x18(%rsp)
  mov    %rax,%rcx
  movzbl (%rsi,%rax,1),%r9d
  movzbl 0x1c(%rsp),%eax
  lea    -0x1(%r13),%r10d
  mov    %ecx,%r12d
  lea    -0x1(%rcx),%r15d
  cmp    %r9b,%al
  jne    L1065
L1285:
  addl   $0x1,0x18(%rsp)
  mov    %r15d,%r12d
  mov    %r10d,%r13d
L1371:
  mov    %r13d,%eax
  or     %r12d,%eax
  js     L1088
  movslq %r12d,%rax
  lea    -0x1(%r12),%r15d
  movzbl (%rsi,%rax,1),%r9d
L875:
  movslq %r13d,%rax
  lea    -0x1(%r13),%r10d
  movzbl (%rdi,%rax,1),%eax
  cmp    %r9b,%al
  je     L1285
L1065:
  test   %r12d,%r12d
  js     L561
  test   %r10d,%r10d
  js     L561
  mov    %r10d,%ebx
  mov    %r12d,%ebp
  mov    %r9d,%edx
  xor    %r11d,%r11d
  movslq %ebx,%rax
  lea    -0x1(%rbx),%r14d
  lea    -0x1(%rbp),%r8d
  cmp    %dl,(%rdi,%rax,1)
  je     L983
L1283:
  mov    %ebp,%ecx
  mov    %r14d,%edx
  mov    %r10d,0xa8(%rsp)
  mov    %r9b,0xa0(%rsp)
  mov    %r11d,0x9c(%rsp)
  mov    %r8d,0x54(%rsp)
  mov    %rsi,0x40(%rsp)
  mov    %rdi,0x20(%rsp)
  call   <LCSubseq>
  mov    0x40(%rsp),%rsi
  mov    0x54(%rsp),%ecx
  mov    %ebx,%edx
  mov    0x20(%rsp),%rdi
  mov    %eax,0x8(%rsp)
  call   <LCSubseq>
  mov    0x54(%rsp),%r8d
  cmp    %eax,0x8(%rsp)
  cmovg  %r14d,%ebx
  mov    0x20(%rsp),%rdi
  mov    0x40(%rsp),%rsi
  cmovle %r8d,%ebp
  mov    0x9c(%rsp),%r11d
  movzbl 0xa0(%rsp),%r9d
  mov    %ebx,%eax
  mov    0xa8(%rsp),%r10d
  or     %ebp,%eax
  js     L726
  nopw   0x0(%rax,%rax,1)
L481:
  movslq %ebp,%rax
  lea    -0x1(%rbx),%r14d
  lea    -0x1(%rbp),%r8d
  movzbl (%rsi,%rax,1),%edx
  movslq %ebx,%rax
  cmp    %dl,(%rdi,%rax,1)
  jne    L1283
L983:
  mov    %r14d,%ebx
  mov    %r8d,%ebp
  add    $0x1,%r11d
  mov    %ebx,%eax
  or     %ebp,%eax
  jns    L481
L726:
  mov    %r15d,%ecx
  mov    %r13d,%edx
  mov    %r9b,0x54(%rsp)
  mov    %r11d,0x9c(%rsp)
  mov    %r10d,0x40(%rsp)
  mov    %rsi,0x20(%rsp)
  mov    %rdi,0x8(%rsp)
  call   <LCSubseq>
  mov    0x8(%rsp),%rdi
  mov    0x20(%rsp),%rsi
  mov    0x9c(%rsp),%r11d
  mov    0x40(%rsp),%r10d
  movzbl 0x54(%rsp),%r9d
  cmp    %eax,%r11d
  jle    L158
  mov    %r10d,%r13d
  jmp    L875
  nopl   0x0(%rax,%rax,1)
L1088:
  mov    0x30(%rsp),%ecx
  cmp    %ecx,0x18(%rsp)
  jl     L250
  movslq 0x10(%rsp),%rcx
  mov    0x4(%rsp),%edx
  mov    %rcx,%rax
  mov    %ecx,0x28(%rsp)
  sub    $0x1,%eax
  mov    %rcx,0x20(%rsp)
  mov    %eax,0x10(%rsp)
  jmp    L502
  nop
L1048:
  mov    0x30(%rsp),%ecx
  test   %ecx,%ecx
  jne    L667
  nopl   0x0(%rax)
L877:
  mov    0x68(%rsp),%ecx
  cmp    %ecx,0x78(%rsp)
  jl     L1166
  movslq 0x48(%rsp),%rcx
  mov    0x38(%rsp),%edx
  mov    %rcx,%rax
  mov    %ecx,0x58(%rsp)
  sub    $0x1,%eax
  mov    %rcx,0x8(%rsp)
  mov    %eax,0x48(%rsp)
  jmp    L574
  nop
L1085:
  mov    0x8(%rsp),%r10d
  test   %r10d,%r10d
  js     L467
  test   %r11b,%r11b
  jne    L467
  xor    %r8d,%r8d
  jmp    L1326
  nop
L1135:
  mov    0x68(%rsp),%ebp
  test   %ebp,%ebp
  jne    L1105
  nopl   0x0(%rax)
L84:
  mov    0x84(%rsp),%ecx
  cmp    %ecx,0x90(%rsp)
  jl     L478
  movslq 0x7c(%rsp),%rcx
  mov    0x64(%rsp),%edx
  mov    %rcx,%rax
  mov    %ecx,0x80(%rsp)
  sub    $0x1,%eax
  mov    %rcx,0x40(%rsp)
  mov    %eax,0x7c(%rsp)
  jmp    L1238
  nopl   0x0(%rax,%rax,1)
L807:
  mov    0x50(%rsp),%ebx
  test   %ebx,%ebx
  js     L877
  cmpb   $0x0,0x54(%rsp)
  jne    L877
  movl   $0x0,0x30(%rsp)
  jmp    L1156
  nopl   0x0(%rax)
L1331:
  mov    0x18(%rsp),%eax
  test   %eax,%eax
  js     L1161
  test   %r11b,%r11b
  jne    L1161
  xor    %r8d,%r8d
  jmp    L590
  nopl   (%rax)
L1029:
  mov    0x8(%rsp),%edx
  test   %edx,%edx
  js     L1327
  test   %r11b,%r11b
  jne    L1327
  xor    %r8d,%r8d
  jmp    L512
  nopl   (%rax)
L1335:
  test   %r11b,%r11b
  jne    L641
  xor    %r8d,%r8d
  jmp    L1280
L1116:
  mov    0x84(%rsp),%edx
  test   %edx,%edx
  jne    L1367
L819:
  mov    0x98(%rsp),%eax
  add    $0xc8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L411:
  mov    0x3c(%rsp),%r8d
  test   %r8d,%r8d
  js     L760
  cmpb   $0x0,0x50(%rsp)
  jne    L760
  movl   $0x0,0x38(%rsp)
  jmp    L756
  xchg   %ax,%ax
L1036:
  mov    0x74(%rsp),%eax
  test   %eax,%eax
  js     L84
  cmpb   $0x0,0x1c(%rsp)
  jne    L84
  movl   $0x0,0x68(%rsp)
  jmp    L163
  nopl   0x0(%rax)
L158:
  mov    %r15d,%r12d
  jmp    L1371
L1287:
  mov    0x88(%rsp),%r10d
  test   %r10d,%r10d
  js     L819
  cmpb   $0x0,0x54(%rsp)
  jne    L819
  movl   $0x0,0x84(%rsp)
  jmp    L1169
L561:
  mov    %r13d,%edx
  mov    %r15d,%ecx
  mov    %r10d,0x40(%rsp)
  mov    %rsi,0x20(%rsp)
  mov    %rdi,0x8(%rsp)
  call   <LCSubseq>
  mov    0x40(%rsp),%r10d
  mov    0x8(%rsp),%rdi
  test   %eax,%eax
  mov    0x20(%rsp),%rsi
  cmovns %r15d,%r12d
  cmovs  %r10d,%r13d
  jmp    L1371
```

assistant: ```c
int LCSubseq(char a[], char b[], int m, int n) {
  if (m < 0 || n < 0) {
    return 0;
  }
  if (a[m] == b[n])
    return 1 + LCSubseq(a, b, m - 1, n - 1);
  else
    return ((LCSubseq(a, b, m - 1, n) > LCSubseq(a, b, m, n - 1)) ? LCSubseq(a, b, m - 1, n) : LCSubseq(a, b, m, n - 1));
}
```