user: Demonstrate the C code that generates the assembly output below:

```asm
<lcs>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %rdi,0x8(%rsp)
  test   %ecx,%ecx
  je     L310
  mov    %edx,%ebx
  test   %edx,%edx
  je     L310
  mov    %rdi,%rax
  mov    %rsi,%rbp
  movslq %edx,%rdi
  xor    %r10d,%r10d
  lea    -0x1(%rcx),%esi
  movslq %ecx,%rcx
  sub    %rcx,%rdi
  movslq %esi,%rsi
  add    %rax,%rdi
  jmp    L705
  cs nopw 0x0(%rax,%rax,1)
L627:
  add    $0x1,%r10d
  sub    $0x1,%rsi
  test   %dl,%dl
  jne    L248
  test   %cl,%cl
  jne    L248
L705:
  mov    %ebx,%r11d
  sub    $0x1,%ebx
  movzbl 0x0(%rbp,%rsi,1),%eax
  lea    0x1(%rsi),%r8d
  sete   %dl
  test   %esi,%esi
  movslq %esi,%r14
  mov    %esi,%r12d
  sete   %cl
  cmp    %al,(%rdi,%rsi,1)
  je     L627
  test   %r8d,%r8d
  je     L259
  test   %dl,%dl
  jne    L259
  movslq %r8d,%r8
  xor    %edx,%edx
  movslq %ebx,%rdi
  movslq %r14d,%rcx
  sub    %r8,%rdi
  mov    %edx,%r8d
  add    0x8(%rsp),%rdi
  jmp    L747
  nopl   0x0(%rax,%rax,1)
L694:
  add    $0x1,%r8d
  sub    $0x1,%rcx
  test   %dl,%dl
  jne    L767
  test   %r15b,%r15b
  jne    L767
  movzbl 0x0(%rbp,%rcx,1),%eax
  mov    %r13d,%ebx
L747:
  mov    %ebx,%r13d
  lea    0x1(%rcx),%esi
  sub    $0x1,%r13d
  sete   %dl
  test   %ecx,%ecx
  sete   %r15b
  cmp    %al,(%rdi,%rcx,1)
  je     L694
  mov    %r8d,0x14(%rsp)
  mov    %ecx,0x1c(%rsp)
  test   %esi,%esi
  je     L134
  test   %dl,%dl
  jne    L134
  movslq %ecx,%rdx
  movslq %r13d,%rdi
  xor    %ecx,%ecx
  movslq %esi,%rsi
  mov    %r11d,0x24(%rsp)
  sub    %rsi,%rdi
  mov    %ecx,%r11d
  add    0x8(%rsp),%rdi
  mov    %r12d,0x20(%rsp)
  jmp    L574
  nopl   0x0(%rax)
L804:
  add    $0x1,%r11d
  sub    $0x1,%rdx
  test   %sil,%sil
  jne    L375
  test   %r8b,%r8b
  jne    L375
  movzbl 0x0(%rbp,%rdx,1),%eax
  mov    %ecx,%r13d
L574:
  mov    %r13d,%ecx
  lea    0x1(%rdx),%r9d
  sub    $0x1,%ecx
  sete   %sil
  test   %edx,%edx
  sete   %r8b
  cmp    %al,(%rdi,%rdx,1)
  je     L804
  movslq %edx,%rax
  mov    %r11d,0x18(%rsp)
  mov    0x20(%rsp),%r12d
  mov    0x24(%rsp),%r11d
  mov    %eax,0x24(%rsp)
  test   %r9d,%r9d
  je     L922
  test   %sil,%sil
  jne    L922
  movslq %ecx,%rsi
  movslq %r9d,%r9
  mov    %r12d,0x28(%rsp)
  xor    %edi,%edi
  mov    %rsi,%rdx
  mov    %r8b,0x2c(%rsp)
  sub    %r9,%rsi
  add    0x8(%rsp),%rsi
  jmp    L279
  nopw   0x0(%rax,%rax,1)
L71:
  add    $0x1,%edi
  test   %edx,%edx
  sete   %cl
  test   %eax,%eax
  sete   %r9b
  sub    $0x1,%rax
  or     %r9b,%cl
  jne    L98
L279:
  mov    %edx,%r9d
  movzbl 0x0(%rbp,%rax,1),%r8d
  lea    0x1(%rax),%ecx
  sub    $0x1,%edx
  cmp    %r8b,(%rsi,%rax,1)
  je     L71
  movzbl 0x2c(%rsp),%r8d
  mov    %edi,0x20(%rsp)
  mov    %rbp,%rsi
  mov    0x8(%rsp),%rdi
  mov    %r11d,0x38(%rsp)
  mov    %r8b,0x34(%rsp)
  mov    0x28(%rsp),%r12d
  mov    %r10d,0x2c(%rsp)
  mov    %r9d,0x3c(%rsp)
  mov    %eax,0x30(%rsp)
  call   <lcs>
  mov    0x30(%rsp),%ecx
  mov    0x3c(%rsp),%edx
  mov    %rbp,%rsi
  mov    0x8(%rsp),%rdi
  mov    %eax,0x28(%rsp)
  call   <lcs>
  mov    0x28(%rsp),%esi
  mov    %eax,%edi
  call   <max@plt>
  add    %eax,0x20(%rsp)
  mov    0x2c(%rsp),%r10d
  movzbl 0x34(%rsp),%r8d
  mov    0x38(%rsp),%r11d
L87:
  test   %r13d,%r13d
  je     L177
  test   %r8b,%r8b
  jne    L177
  movslq 0x24(%rsp),%rcx
  movslq %r13d,%rsi
  xor    %r13d,%r13d
  mov    %rsi,%rdx
  lea    -0x1(%rcx),%eax
  sub    %rcx,%rsi
  add    0x8(%rsp),%rsi
  cltq
  jmp    L421
  nopl   0x0(%rax,%rax,1)
L514:
  add    $0x1,%r13d
  test   %edx,%edx
  sete   %cl
  test   %eax,%eax
  sete   %dil
  sub    $0x1,%rax
  or     %dil,%cl
  jne    L241
L421:
  mov    %edx,%r8d
  movzbl 0x0(%rbp,%rax,1),%edi
  lea    0x1(%rax),%ecx
  sub    $0x1,%edx
  cmp    %dil,(%rsi,%rax,1)
  je     L514
  mov    0x8(%rsp),%rdi
  mov    %rbp,%rsi
  mov    %r11d,0x34(%rsp)
  mov    %r10d,0x28(%rsp)
  mov    %r8d,0x30(%rsp)
  mov    %eax,0x2c(%rsp)
  call   <lcs>
  mov    0x2c(%rsp),%ecx
  mov    0x30(%rsp),%edx
  mov    %rbp,%rsi
  mov    0x8(%rsp),%rdi
  mov    %eax,0x24(%rsp)
  call   <lcs>
  mov    0x24(%rsp),%esi
  mov    %eax,%edi
  call   <max@plt>
  mov    0x28(%rsp),%r10d
  mov    0x34(%rsp),%r11d
  add    %eax,%r13d
L241:
  mov    0x20(%rsp),%esi
  mov    %r13d,%edi
  mov    %r10d,0x28(%rsp)
  mov    %r11d,0x24(%rsp)
  call   <max@plt>
  add    %eax,0x18(%rsp)
  mov    0x24(%rsp),%r11d
  mov    0x28(%rsp),%r10d
L219:
  test   %ebx,%ebx
  je     L651
  test   %r15b,%r15b
  jne    L651
  movslq 0x1c(%rsp),%rcx
  movslq %ebx,%r8
  mov    %r10d,0x1c(%rsp)
  xor    %r13d,%r13d
  mov    %r8,%rdx
  lea    -0x1(%rcx),%eax
  sub    %rcx,%r8
  add    0x8(%rsp),%r8
  cltq
  jmp    L304
  nopl   0x0(%rax)
L148:
  add    $0x1,%r13d
  sub    $0x1,%rax
  test   %cl,%cl
  jne    L49
  test   %sil,%sil
  jne    L49
L304:
  mov    %edx,%r9d
  sub    $0x1,%edx
  movzbl 0x0(%rbp,%rax,1),%r10d
  lea    0x1(%rax),%edi
  sete   %cl
  test   %eax,%eax
  movslq %eax,%rbx
  mov    %eax,%r15d
  sete   %sil
  cmp    %r10b,(%r8,%rax,1)
  je     L148
  mov    0x1c(%rsp),%r10d
  test   %edi,%edi
  je     L125
  test   %cl,%cl
  jne    L125
  movslq %edi,%rdi
  xor    %ecx,%ecx
  movslq %edx,%rsi
  mov    %r12d,0x20(%rsp)
  sub    %rdi,%rsi
  mov    %r9d,0x24(%rsp)
  movslq %ebx,%rax
  add    0x8(%rsp),%rsi
  mov    %ecx,%edi
  jmp    L649
  nopl   0x0(%rax,%rax,1)
L739:
  add    $0x1,%edi
  test   %edx,%edx
  sete   %cl
  test   %eax,%eax
  sete   %r8b
  sub    $0x1,%rax
  or     %r8b,%cl
  jne    L894
L649:
  mov    %edx,%r8d
  movzbl 0x0(%rbp,%rax,1),%r9d
  lea    0x1(%rax),%ecx
  sub    $0x1,%edx
  cmp    %r9b,(%rsi,%rax,1)
  je     L739
  mov    0x24(%rsp),%r9d
  mov    %edi,0x1c(%rsp)
  mov    %rbp,%rsi
  mov    0x8(%rsp),%rdi
  mov    %r11d,0x30(%rsp)
  mov    %r9d,0x34(%rsp)
  mov    0x20(%rsp),%r12d
  mov    %r10d,0x28(%rsp)
  mov    %r8d,0x2c(%rsp)
  mov    %eax,0x24(%rsp)
  call   <lcs>
  mov    0x24(%rsp),%ecx
  mov    0x2c(%rsp),%edx
  mov    %rbp,%rsi
  mov    0x8(%rsp),%rdi
  mov    %eax,0x20(%rsp)
  call   <lcs>
  mov    0x20(%rsp),%esi
  mov    %eax,%edi
  call   <max@plt>
  add    %eax,0x1c(%rsp)
  mov    0x28(%rsp),%r10d
  mov    0x30(%rsp),%r11d
  mov    0x34(%rsp),%r9d
L920:
  test   %r15d,%r15d
  je     L512
  movslq %r9d,%rsi
  lea    -0x1(%rbx),%eax
  xor    %r15d,%r15d
  mov    %rsi,%rdx
  cltq
  sub    %rbx,%rsi
  add    0x8(%rsp),%rsi
  jmp    L291
  nopl   0x0(%rax,%rax,1)
L343:
  add    $0x1,%r15d
  test   %edx,%edx
  sete   %cl
  test   %eax,%eax
  sete   %dil
  sub    $0x1,%rax
  or     %dil,%cl
  jne    L512
L291:
  mov    %edx,%ebx
  movzbl 0x0(%rbp,%rax,1),%edi
  lea    0x1(%rax),%ecx
  sub    $0x1,%edx
  cmp    %dil,(%rsi,%rax,1)
  je     L343
  mov    0x8(%rsp),%rdi
  mov    %rbp,%rsi
  mov    %r11d,0x2c(%rsp)
  mov    %r10d,0x24(%rsp)
  mov    %eax,0x28(%rsp)
  call   <lcs>
  mov    0x28(%rsp),%ecx
  mov    0x8(%rsp),%rdi
  mov    %ebx,%edx
  mov    %rbp,%rsi
  mov    %eax,0x20(%rsp)
  call   <lcs>
  mov    0x20(%rsp),%esi
  mov    %eax,%edi
  call   <max@plt>
  mov    0x2c(%rsp),%r11d
  mov    0x24(%rsp),%r10d
  add    %eax,%r15d
L512:
  mov    0x1c(%rsp),%esi
  mov    %r15d,%edi
  mov    %r10d,0x24(%rsp)
  mov    %r11d,0x20(%rsp)
  call   <max@plt>
  mov    0x20(%rsp),%r11d
  mov    0x24(%rsp),%r10d
  add    %eax,%r13d
L650:
  mov    0x18(%rsp),%esi
  mov    %r13d,%edi
  mov    %r10d,0x20(%rsp)
  mov    %r11d,0x1c(%rsp)
  call   <max@plt>
  mov    0x1c(%rsp),%r11d
  add    %eax,0x14(%rsp)
  mov    0x20(%rsp),%r10d
  jmp    L329
  cs nopw 0x0(%rax,%rax,1)
L767:
  mov    %r8d,0x14(%rsp)
L329:
  test   %r12d,%r12d
  je     L750
  movslq %r11d,%r8
  lea    -0x1(%r14),%eax
  xor    %r12d,%r12d
  mov    %r8,%rbx
  cltq
  sub    %r14,%r8
  add    0x8(%rsp),%r8
  jmp    L870
  nopw   0x0(%rax,%rax,1)
L853:
  add    $0x1,%r12d
  sub    $0x1,%rax
  test   %sil,%sil
  jne    L750
  test   %dil,%dil
  jne    L750
L870:
  mov    %ebx,%r14d
  sub    $0x1,%ebx
  movzbl 0x0(%rbp,%rax,1),%edx
  lea    0x1(%rax),%ecx
  sete   %sil
  test   %eax,%eax
  movslq %eax,%r15
  mov    %eax,%r13d
  sete   %dil
  cmp    %dl,(%r8,%rax,1)
  je     L853
  test   %ecx,%ecx
  je     L740
  test   %sil,%sil
  jne    L740
  movslq %ebx,%rdi
  movslq %ecx,%rcx
  mov    %r12d,0x18(%rsp)
  movslq %r15d,%rax
  sub    %rcx,%rdi
  xor    %r11d,%r11d
  add    0x8(%rsp),%rdi
  jmp    L834
  nopw   0x0(%rax,%rax,1)
L734:
  add    $0x1,%r11d
  sub    $0x1,%rax
  test   %sil,%sil
  jne    L245
  test   %r8b,%r8b
  jne    L245
  movzbl 0x0(%rbp,%rax,1),%edx
  mov    %ecx,%ebx
L834:
  mov    %ebx,%ecx
  lea    0x1(%rax),%r9d
  sub    $0x1,%ecx
  sete   %sil
  test   %eax,%eax
  sete   %r8b
  cmp    %dl,(%rdi,%rax,1)
  je     L734
  cltq
  mov    0x18(%rsp),%r12d
  mov    %eax,0x1c(%rsp)
  test   %r9d,%r9d
  je     L727
  test   %sil,%sil
  jne    L727
  movslq %ecx,%rsi
  movslq %r9d,%r9
  mov    %r12d,0x20(%rsp)
  xor    %edi,%edi
  mov    %rsi,%rdx
  mov    %r8b,0x24(%rsp)
  sub    %r9,%rsi
  add    0x8(%rsp),%rsi
  jmp    L452
  nopl   (%rax)
L661:
  add    $0x1,%edi
  test   %edx,%edx
  sete   %cl
  test   %eax,%eax
  sete   %r9b
  sub    $0x1,%rax
  or     %r9b,%cl
  jne    L249
L452:
  mov    %edx,%r9d
  movzbl 0x0(%rbp,%rax,1),%r8d
  lea    0x1(%rax),%ecx
  sub    $0x1,%edx
  cmp    %r8b,(%rsi,%rax,1)
  je     L661
  movzbl 0x24(%rsp),%r8d
  mov    %edi,0x18(%rsp)
  mov    %rbp,%rsi
  mov    0x8(%rsp),%rdi
  mov    %r11d,0x34(%rsp)
  mov    %r8b,0x2c(%rsp)
  mov    0x20(%rsp),%r12d
  mov    %r10d,0x24(%rsp)
  mov    %r9d,0x30(%rsp)
  mov    %eax,0x28(%rsp)
  call   <lcs>
  mov    0x28(%rsp),%ecx
  mov    0x30(%rsp),%edx
  mov    %rbp,%rsi
  mov    0x8(%rsp),%rdi
  mov    %eax,0x20(%rsp)
  call   <lcs>
  mov    0x20(%rsp),%esi
  mov    %eax,%edi
  call   <max@plt>
  add    %eax,0x18(%rsp)
  mov    0x24(%rsp),%r10d
  movzbl 0x2c(%rsp),%r8d
  mov    0x34(%rsp),%r11d
L213:
  test   %ebx,%ebx
  je     L117
  test   %r8b,%r8b
  jne    L117
  movslq 0x1c(%rsp),%rcx
  movslq %ebx,%rsi
  xor    %ebx,%ebx
  mov    %rsi,%rdx
  lea    -0x1(%rcx),%eax
  sub    %rcx,%rsi
  add    0x8(%rsp),%rsi
  cltq
  jmp    L337
  nopl   0x0(%rax)
L703:
  add    $0x1,%ebx
  test   %edx,%edx
  sete   %cl
  test   %eax,%eax
  sete   %dil
  sub    $0x1,%rax
  or     %dil,%cl
  jne    L39
L337:
  mov    %edx,%r8d
  movzbl 0x0(%rbp,%rax,1),%edi
  lea    0x1(%rax),%ecx
  sub    $0x1,%edx
  cmp    %dil,(%rsi,%rax,1)
  je     L703
  mov    0x8(%rsp),%rdi
  mov    %rbp,%rsi
  mov    %r11d,0x2c(%rsp)
  mov    %r10d,0x20(%rsp)
  mov    %r8d,0x28(%rsp)
  mov    %eax,0x24(%rsp)
  call   <lcs>
  mov    0x24(%rsp),%ecx
  mov    0x28(%rsp),%edx
  mov    %rbp,%rsi
  mov    0x8(%rsp),%rdi
  mov    %eax,0x1c(%rsp)
  call   <lcs>
  mov    0x1c(%rsp),%esi
  mov    %eax,%edi
  call   <max@plt>
  mov    0x20(%rsp),%r10d
  mov    0x2c(%rsp),%r11d
  add    %eax,%ebx
L39:
  mov    0x18(%rsp),%esi
  mov    %ebx,%edi
  mov    %r10d,0x20(%rsp)
  mov    %r11d,0x1c(%rsp)
  call   <max@plt>
  mov    0x1c(%rsp),%r11d
  mov    0x20(%rsp),%r10d
  add    %eax,%r11d
L202:
  test   %r13d,%r13d
  je     L622
  movslq %r14d,%r8
  lea    -0x1(%r15),%eax
  xor    %r13d,%r13d
  mov    %r8,%rdx
  cltq
  sub    %r15,%r8
  add    0x8(%rsp),%r8
  jmp    L849
  nopw   0x0(%rax,%rax,1)
L814:
  add    $0x1,%r13d
  sub    $0x1,%rax
  test   %cl,%cl
  jne    L622
  test   %sil,%sil
  jne    L622
L849:
  mov    %edx,%ebx
  sub    $0x1,%edx
  movzbl 0x0(%rbp,%rax,1),%r9d
  lea    0x1(%rax),%edi
  sete   %cl
  test   %eax,%eax
  movslq %eax,%r15
  mov    %eax,%r14d
  sete   %sil
  cmp    %r9b,(%r8,%rax,1)
  je     L814
  test   %edi,%edi
  je     L669
  test   %cl,%cl
  jne    L669
  movslq %edx,%rsi
  movslq %edi,%rdi
  mov    %r10d,0x18(%rsp)
  movslq %r15d,%rax
  sub    %rdi,%rsi
  xor    %r8d,%r8d
  add    0x8(%rsp),%rsi
  jmp    L604
  nopw   0x0(%rax,%rax,1)
L242:
  add    $0x1,%r8d
  test   %edx,%edx
  sete   %cl
  test   %eax,%eax
  sete   %dil
  sub    $0x1,%rax
  or     %dil,%cl
  jne    L382
L604:
  mov    %edx,%r9d
  movzbl 0x0(%rbp,%rax,1),%r10d
  lea    0x1(%rax),%ecx
  sub    $0x1,%edx
  cmp    %r10b,(%rsi,%rax,1)
  je     L242
  mov    0x18(%rsp),%r10d
  mov    0x8(%rsp),%rdi
  mov    %rbp,%rsi
  mov    %r11d,0x2c(%rsp)
  mov    %r8d,0x24(%rsp)
  mov    %r10d,0x20(%rsp)
  mov    %r9d,0x28(%rsp)
  mov    %eax,0x1c(%rsp)
  call   <lcs>
  mov    0x1c(%rsp),%ecx
  mov    0x28(%rsp),%edx
  mov    %rbp,%rsi
  mov    0x8(%rsp),%rdi
  mov    %eax,0x18(%rsp)
  call   <lcs>
  mov    0x18(%rsp),%esi
  mov    %eax,%edi
  call   <max@plt>
  mov    0x24(%rsp),%r8d
  mov    0x20(%rsp),%r10d
  mov    0x2c(%rsp),%r11d
  add    %eax,%r8d
L923:
  test   %r14d,%r14d
  je     L56
  movslq %ebx,%rsi
  lea    -0x1(%r15),%eax
  xor    %r14d,%r14d
  mov    %rsi,%rdx
  cltq
  sub    %r15,%rsi
  add    0x8(%rsp),%rsi
  jmp    L73
  nopl   0x0(%rax,%rax,1)
L631:
  add    $0x1,%r14d
  test   %edx,%edx
  sete   %cl
  test   %eax,%eax
  sete   %dil
  sub    $0x1,%rax
  or     %dil,%cl
  jne    L56
L73:
  mov    %edx,%r15d
  movzbl 0x0(%rbp,%rax,1),%edi
  lea    0x1(%rax),%ecx
  mov    %eax,%ebx
  sub    $0x1,%edx
  cmp    %dil,(%rsi,%rax,1)
  je     L631
  mov    0x8(%rsp),%rdi
  mov    %rbp,%rsi
  mov    %r11d,0x24(%rsp)
  mov    %r8d,0x20(%rsp)
  mov    %r10d,0x1c(%rsp)
  call   <lcs>
  mov    0x8(%rsp),%rdi
  mov    %ebx,%ecx
  mov    %r15d,%edx
  mov    %rbp,%rsi
  mov    %eax,0x18(%rsp)
  call   <lcs>
  mov    0x18(%rsp),%esi
  mov    %eax,%edi
  call   <max@plt>
  mov    0x24(%rsp),%r11d
  mov    0x20(%rsp),%r8d
  mov    0x1c(%rsp),%r10d
  add    %eax,%r14d
L56:
  mov    %r8d,%esi
  mov    %r14d,%edi
  mov    %r10d,0x18(%rsp)
  mov    %r11d,0x8(%rsp)
  call   <max@plt>
  mov    0x8(%rsp),%r11d
  mov    0x18(%rsp),%r10d
  add    %eax,%r13d
L622:
  mov    %r11d,%esi
  mov    %r13d,%edi
  mov    %r10d,0x8(%rsp)
  call   <max@plt>
  mov    0x8(%rsp),%r10d
  add    %eax,%r12d
L750:
  mov    0x14(%rsp),%esi
  mov    %r12d,%edi
  mov    %r10d,0x8(%rsp)
  call   <max@plt>
  mov    0x8(%rsp),%r10d
  add    %eax,%r10d
L248:
  add    $0x48,%rsp
  mov    %r10d,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L49:
  mov    0x1c(%rsp),%r10d
  jmp    L650
  nopw   0x0(%rax,%rax,1)
L375:
  mov    %r11d,0x18(%rsp)
  mov    0x20(%rsp),%r12d
  mov    0x24(%rsp),%r11d
  jmp    L219
  nopl   0x0(%rax)
L245:
  mov    0x18(%rsp),%r12d
  jmp    L202
L310:
  xor    %r10d,%r10d
  jmp    L248
L382:
  mov    0x18(%rsp),%r10d
  jmp    L923
L98:
  mov    0x28(%rsp),%r12d
  movzbl 0x2c(%rsp),%r8d
  mov    %edi,0x20(%rsp)
  jmp    L87
L894:
  mov    0x20(%rsp),%r12d
  mov    0x24(%rsp),%r9d
  mov    %edi,0x1c(%rsp)
  jmp    L920
L249:
  mov    0x20(%rsp),%r12d
  movzbl 0x24(%rsp),%r8d
  mov    %edi,0x18(%rsp)
  jmp    L213
L259:
  movl   $0x0,0x14(%rsp)
  jmp    L329
L651:
  xor    %r13d,%r13d
  jmp    L650
L134:
  movl   $0x0,0x18(%rsp)
  jmp    L219
L740:
  xor    %r11d,%r11d
  jmp    L202
L922:
  movl   $0x0,0x20(%rsp)
  jmp    L87
L727:
  movl   $0x0,0x18(%rsp)
  jmp    L213
L669:
  xor    %r8d,%r8d
  jmp    L923
L177:
  xor    %r13d,%r13d
  jmp    L241
L117:
  xor    %ebx,%ebx
  jmp    L39
L125:
  movl   $0x0,0x1c(%rsp)
  jmp    L920
```

assistant: ```c
int lcs(char *X, char *Y, int m, int n) {
  if (m == 0 || n == 0)
    return 0;
  if (X[m - 1] == Y[n - 1])
    return 1 + lcs(X, Y, m - 1, n - 1);
  else
    return max(lcs(X, Y, m, n - 1), lcs(X, Y, m - 1, n));
}
```