user: What is the c source code of the assembly code below?

```asm
<catalan>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x88,%rsp
  mov    %edi,0x7c(%rsp)
  movq   $0x1,0x70(%rsp)
  cmp    $0x1,%edi
  jle    L968
  mov    %edi,%eax
  movq   $0x0,0x70(%rsp)
  sub    $0x1,%eax
  movl   $0x0,0x60(%rsp)
  mov    %eax,0x78(%rsp)
  movq   $0x1,0x58(%rsp)
L785:
  mov    0x78(%rsp),%eax
  cmp    $0x1,%eax
  jle    L37
  sub    $0x1,%eax
  movq   $0x0,0x68(%rsp)
  mov    %eax,0x48(%rsp)
  movl   $0x0,0x4c(%rsp)
  movq   $0x1,0x40(%rsp)
  cmp    $0x1,%eax
  jle    L139
L677:
  sub    $0x1,%eax
  movq   $0x0,0x50(%rsp)
  mov    %eax,0x64(%rsp)
  mov    %eax,0x38(%rsp)
  movl   $0x0,0x30(%rsp)
  movq   $0x1,0x20(%rsp)
L971:
  mov    0x38(%rsp),%eax
  cmp    $0x1,%eax
  jle    L215
  movq   $0x0,0x8(%rsp)
  lea    -0x1(%rax),%r12d
  xor    %r13d,%r13d
  mov    $0x1,%ebp
L17:
  cmp    $0x1,%r12d
  jle    L417
L256:
  sub    $0x1,%r12d
  xor    %r14d,%r14d
  mov    %r12d,%r15d
L301:
  mov    %r12d,%edi
  sub    %r15d,%edi
  call   <catalan>
  mov    %r15d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%r14
  sub    $0x1,%r15d
  jae    L301
  mov    %r14,%rdx
  add    $0x1,%r13d
  imul   %rbp,%rdx
  add    %rdx,0x8(%rsp)
L254:
  cmp    $0x1,%r13d
  je     L752
  xor    %ebp,%ebp
  xor    %r14d,%r14d
  lea    -0x1(%r13),%r15d
L956:
  mov    %r14d,%edi
  call   <catalan>
  mov    %r15d,%edi
  sub    %r14d,%edi
  mov    %rax,%rbx
  add    $0x1,%r14d
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%rbp
  cmp    %r14d,%r13d
  jne    L956
  cmp    $0x1,%r12d
  jg     L256
L417:
  add    %rbp,0x8(%rsp)
  add    $0x1,%r13d
  test   %r12d,%r12d
  jne    L903
  mov    0x20(%rsp),%rax
  imul   0x8(%rsp),%rax
  mov    %rax,0x20(%rsp)
L215:
  mov    0x30(%rsp),%eax
  mov    0x20(%rsp),%rcx
  add    %rcx,0x50(%rsp)
  add    $0x1,%eax
  mov    %eax,0x34(%rsp)
  cmp    %eax,0x48(%rsp)
  je     L1001
  cmpl   $0x1,0x34(%rsp)
  jle    L547
  mov    0x30(%rsp),%eax
  movl   $0x0,0x10(%rsp)
  movq   $0x0,0x20(%rsp)
  mov    %eax,0x2c(%rsp)
  movq   $0x1,0x8(%rsp)
L804:
  mov    0x2c(%rsp),%eax
  cmp    $0x1,%eax
  jle    L149
  lea    -0x1(%rax),%ebp
  xor    %r13d,%r13d
  mov    %ebp,%r12d
L881:
  mov    %ebp,%edi
  sub    %r12d,%edi
  call   <catalan>
  mov    %r12d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%r13
  sub    $0x1,%r12d
  jae    L881
  imul   0x8(%rsp),%r13
  mov    %r13,0x8(%rsp)
L149:
  mov    0x10(%rsp),%eax
  mov    0x8(%rsp),%rcx
  add    %rcx,0x20(%rsp)
  lea    0x1(%rax),%esi
  mov    %esi,0x28(%rsp)
  cmp    %eax,0x30(%rsp)
  je     L749
  cmpl   $0x1,0x28(%rsp)
  jle    L303
  mov    %eax,0x1c(%rsp)
  xor    %r12d,%r12d
  mov    $0x1,%ebp
  movq   $0x0,0x8(%rsp)
L403:
  mov    0x1c(%rsp),%eax
  cmp    $0x1,%eax
  jle    L667
  lea    -0x1(%rax),%r15d
  xor    %r14d,%r14d
  mov    %r15d,%r13d
L825:
  mov    %r15d,%edi
  sub    %r13d,%edi
  call   <catalan>
  mov    %r13d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%r14
  sub    $0x1,%r13d
  jae    L825
  imul   %r14,%rbp
L667:
  add    %rbp,0x8(%rsp)
  lea    0x1(%r12),%r15d
  cmp    %r12d,0x10(%rsp)
  je     L693
  cmp    $0x1,%r15d
  jle    L920
  xor    %ebp,%ebp
  xor    %r13d,%r13d
L447:
  mov    %r13d,%edi
  call   <catalan>
  mov    %r12d,%edi
  sub    %r13d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  mov    %r13d,%eax
  add    $0x1,%r13d
  add    %rbx,%rbp
  cmp    %r12d,%eax
  jne    L447
  subl   $0x1,0x1c(%rsp)
  mov    %r15d,%r12d
  jmp    L403
L303:
  movq   $0x1,0x8(%rsp)
  nop
L693:
  mov    0x28(%rsp),%eax
  subl   $0x1,0x2c(%rsp)
  mov    %eax,0x10(%rsp)
  jmp    L804
L547:
  movq   $0x1,0x20(%rsp)
  nopl   0x0(%rax,%rax,1)
L749:
  mov    0x34(%rsp),%eax
  subl   $0x1,0x38(%rsp)
  mov    %eax,0x30(%rsp)
  jmp    L971
  nopw   0x0(%rax,%rax,1)
L920:
  subl   $0x1,0x1c(%rsp)
  mov    $0x1,%ebp
  mov    %r15d,%r12d
  jmp    L403
  nopw   0x0(%rax,%rax,1)
L1001:
  mov    0x50(%rsp),%rax
  addl   $0x1,0x4c(%rsp)
  imul   0x40(%rsp),%rax
  add    %rax,0x68(%rsp)
L288:
  mov    0x4c(%rsp),%eax
  cmp    $0x1,%eax
  je     L904
  sub    $0x1,%eax
  movq   $0x0,0x40(%rsp)
  mov    %eax,0x34(%rsp)
  movl   $0x0,0x2c(%rsp)
  movq   $0x1,0x20(%rsp)
L1032:
  mov    0x34(%rsp),%eax
  cmp    $0x1,%eax
  jle    L714
  sub    $0x1,%eax
  movq   $0x0,0x38(%rsp)
  mov    %eax,0x30(%rsp)
  movl   $0x0,0x1c(%rsp)
  movq   $0x1,0x8(%rsp)
L213:
  mov    0x30(%rsp),%eax
  cmp    $0x1,%eax
  jle    L78
  movq   $0x0,0x10(%rsp)
  lea    -0x1(%rax),%r12d
  xor    %r13d,%r13d
  mov    $0x1,%ebp
L604:
  cmp    $0x1,%r12d
  jle    L209
L816:
  sub    $0x1,%r12d
  xor    %r14d,%r14d
  mov    %r12d,%r15d
L847:
  mov    %r12d,%edi
  sub    %r15d,%edi
  call   <catalan>
  mov    %r15d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%r14
  sub    $0x1,%r15d
  jae    L847
  mov    %r14,%rdx
  add    $0x1,%r13d
  imul   %rbp,%rdx
  add    %rdx,0x10(%rsp)
L1050:
  cmp    $0x1,%r13d
  je     L1027
  xor    %ebp,%ebp
  xor    %r14d,%r14d
  lea    -0x1(%r13),%r15d
L669:
  mov    %r14d,%edi
  call   <catalan>
  mov    %r15d,%edi
  sub    %r14d,%edi
  mov    %rax,%rbx
  add    $0x1,%r14d
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%rbp
  cmp    %r13d,%r14d
  jne    L669
  cmp    $0x1,%r12d
  jg     L816
L209:
  add    %rbp,0x10(%rsp)
  add    $0x1,%r13d
  test   %r12d,%r12d
  jne    L145
  mov    0x8(%rsp),%rax
  imul   0x10(%rsp),%rax
  mov    %rax,0x8(%rsp)
L78:
  mov    0x1c(%rsp),%eax
  mov    0x8(%rsp),%rcx
  add    %rcx,0x38(%rsp)
  add    $0x1,%eax
  mov    %eax,0x28(%rsp)
  cmp    %eax,0x34(%rsp)
  je     L176
  cmpl   $0x1,0x28(%rsp)
  jle    L549
  mov    0x1c(%rsp),%eax
  xor    %r12d,%r12d
  mov    $0x1,%ebp
  movq   $0x0,0x8(%rsp)
  mov    %eax,0x10(%rsp)
L266:
  mov    0x10(%rsp),%eax
  cmp    $0x1,%eax
  jle    L1002
  lea    -0x1(%rax),%r15d
  xor    %r14d,%r14d
  mov    %r15d,%r13d
L298:
  mov    %r15d,%edi
  sub    %r13d,%edi
  call   <catalan>
  mov    %r13d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%r14
  sub    $0x1,%r13d
  jae    L298
  imul   %r14,%rbp
L1002:
  add    %rbp,0x8(%rsp)
  lea    0x1(%r12),%r15d
  cmp    %r12d,0x1c(%rsp)
  je     L1009
  cmp    $0x1,%r15d
  jle    L634
  xor    %ebp,%ebp
  xor    %r13d,%r13d
L353:
  mov    %r13d,%edi
  call   <catalan>
  mov    %r12d,%edi
  sub    %r13d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  mov    %r13d,%eax
  add    $0x1,%r13d
  add    %rbx,%rbp
  cmp    %r12d,%eax
  jne    L353
  subl   $0x1,0x10(%rsp)
  mov    %r15d,%r12d
  jmp    L266
L549:
  movq   $0x1,0x8(%rsp)
  nopl   0x0(%rax,%rax,1)
L1009:
  mov    0x28(%rsp),%eax
  subl   $0x1,0x30(%rsp)
  mov    %eax,0x1c(%rsp)
  jmp    L213
  nopw   0x0(%rax,%rax,1)
L176:
  mov    0x20(%rsp),%rax
  imul   0x38(%rsp),%rax
  mov    %rax,0x20(%rsp)
L714:
  mov    0x2c(%rsp),%eax
  mov    0x20(%rsp),%rcx
  add    %rcx,0x40(%rsp)
  add    $0x1,%eax
  mov    %eax,0x10(%rsp)
  cmp    0x4c(%rsp),%eax
  je     L562
  cmpl   $0x1,0x10(%rsp)
  jle    L784
  mov    0x2c(%rsp),%eax
  xor    %r12d,%r12d
  mov    $0x1,%ebp
  movq   $0x0,0x20(%rsp)
  mov    %eax,0x8(%rsp)
L295:
  mov    0x8(%rsp),%eax
  cmp    $0x1,%eax
  jle    L46
  lea    -0x1(%rax),%r15d
  xor    %r14d,%r14d
  mov    %r15d,%r13d
L352:
  mov    %r15d,%edi
  sub    %r13d,%edi
  call   <catalan>
  mov    %r13d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%r14
  sub    $0x1,%r13d
  jae    L352
  imul   %r14,%rbp
L46:
  add    %rbp,0x20(%rsp)
  lea    0x1(%r12),%r15d
  cmp    %r12d,0x2c(%rsp)
  je     L782
  cmp    $0x1,%r15d
  jle    L668
  xor    %ebp,%ebp
  xor    %r13d,%r13d
L769:
  mov    %r13d,%edi
  call   <catalan>
  mov    %r12d,%edi
  sub    %r13d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  mov    %r13d,%eax
  add    $0x1,%r13d
  add    %rbx,%rbp
  cmp    %r12d,%eax
  jne    L769
  subl   $0x1,0x8(%rsp)
  mov    %r15d,%r12d
  jmp    L295
L784:
  movq   $0x1,0x20(%rsp)
  nopl   0x0(%rax)
L782:
  mov    0x10(%rsp),%eax
  subl   $0x1,0x34(%rsp)
  mov    %eax,0x2c(%rsp)
  jmp    L1032
  nopw   0x0(%rax,%rax,1)
L634:
  subl   $0x1,0x10(%rsp)
  mov    $0x1,%ebp
  mov    %r15d,%r12d
  jmp    L266
L904:
  movq   $0x1,0x40(%rsp)
L562:
  mov    0x64(%rsp),%eax
  mov    %eax,0x48(%rsp)
  cmp    $0x1,%eax
  jg     L677
L139:
  mov    0x48(%rsp),%eax
  mov    0x40(%rsp),%rsi
  addl   $0x1,0x4c(%rsp)
  add    %rsi,0x68(%rsp)
  test   %eax,%eax
  jne    L349
  mov    0x58(%rsp),%rax
  imul   0x68(%rsp),%rax
  mov    %rax,0x58(%rsp)
L37:
  mov    0x60(%rsp),%eax
  mov    0x58(%rsp),%rcx
  add    %rcx,0x70(%rsp)
  add    $0x1,%eax
  mov    %eax,0x48(%rsp)
  cmp    %eax,0x7c(%rsp)
  je     L968
  cmpl   $0x1,0x48(%rsp)
  jle    L261
  mov    0x60(%rsp),%eax
  movq   $0x0,0x58(%rsp)
  movl   $0x0,0x30(%rsp)
  mov    %eax,0x34(%rsp)
  movq   $0x1,0x20(%rsp)
L418:
  mov    0x34(%rsp),%eax
  cmp    $0x1,%eax
  jle    L822
  sub    $0x1,%eax
  movq   $0x0,0x38(%rsp)
  mov    %eax,0x2c(%rsp)
  movl   $0x0,0x1c(%rsp)
  movq   $0x1,0x8(%rsp)
L393:
  mov    0x2c(%rsp),%eax
  cmp    $0x1,%eax
  jle    L907
  movq   $0x0,0x10(%rsp)
  lea    -0x1(%rax),%r12d
  xor    %r13d,%r13d
  mov    $0x1,%ebp
L91:
  cmp    $0x1,%r12d
  jle    L73
L296:
  sub    $0x1,%r12d
  xor    %r14d,%r14d
  mov    %r12d,%r15d
L540:
  mov    %r12d,%edi
  sub    %r15d,%edi
  call   <catalan>
  mov    %r15d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%r14
  sub    $0x1,%r15d
  jae    L540
  mov    %r14,%rdx
  add    $0x1,%r13d
  imul   %rbp,%rdx
  add    %rdx,0x10(%rsp)
L593:
  cmp    $0x1,%r13d
  je     L681
  xor    %ebp,%ebp
  xor    %r14d,%r14d
  lea    -0x1(%r13),%r15d
L991:
  mov    %r14d,%edi
  call   <catalan>
  mov    %r15d,%edi
  sub    %r14d,%edi
  mov    %rax,%rbx
  add    $0x1,%r14d
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%rbp
  cmp    %r13d,%r14d
  jne    L991
  cmp    $0x1,%r12d
  jg     L296
L73:
  add    %rbp,0x10(%rsp)
  add    $0x1,%r13d
  test   %r12d,%r12d
  jne    L983
  mov    0x8(%rsp),%rax
  imul   0x10(%rsp),%rax
  mov    %rax,0x8(%rsp)
L907:
  mov    0x1c(%rsp),%eax
  mov    0x8(%rsp),%rcx
  add    %rcx,0x38(%rsp)
  add    $0x1,%eax
  mov    %eax,0x28(%rsp)
  cmp    %eax,0x34(%rsp)
  je     L474
  cmpl   $0x1,0x28(%rsp)
  jle    L114
  mov    0x1c(%rsp),%eax
  xor    %r12d,%r12d
  mov    $0x1,%ebp
  movq   $0x0,0x8(%rsp)
  mov    %eax,0x10(%rsp)
L376:
  mov    0x10(%rsp),%eax
  cmp    $0x1,%eax
  jle    L302
  lea    -0x1(%rax),%r15d
  xor    %r14d,%r14d
  mov    %r15d,%r13d
L679:
  mov    %r15d,%edi
  sub    %r13d,%edi
  call   <catalan>
  mov    %r13d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%r14
  sub    $0x1,%r13d
  jae    L679
  imul   %r14,%rbp
L302:
  add    %rbp,0x8(%rsp)
  lea    0x1(%r12),%r15d
  cmp    %r12d,0x1c(%rsp)
  je     L61
  cmp    $0x1,%r15d
  jle    L744
  xor    %ebp,%ebp
  xor    %r13d,%r13d
L795:
  mov    %r13d,%edi
  call   <catalan>
  mov    %r12d,%edi
  sub    %r13d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  mov    %r13d,%eax
  add    $0x1,%r13d
  add    %rbx,%rbp
  cmp    %r12d,%eax
  jne    L795
  subl   $0x1,0x10(%rsp)
  mov    %r15d,%r12d
  jmp    L376
L114:
  movq   $0x1,0x8(%rsp)
  nopl   0x0(%rax,%rax,1)
L61:
  mov    0x28(%rsp),%eax
  subl   $0x1,0x2c(%rsp)
  mov    %eax,0x1c(%rsp)
  jmp    L393
  nopw   0x0(%rax,%rax,1)
L474:
  mov    0x20(%rsp),%rax
  imul   0x38(%rsp),%rax
  mov    %rax,0x20(%rsp)
L822:
  mov    0x30(%rsp),%eax
  mov    0x20(%rsp),%rsi
  add    %rsi,0x58(%rsp)
  lea    0x1(%rax),%ecx
  mov    %ecx,0x38(%rsp)
  cmp    %eax,0x60(%rsp)
  je     L357
  cmpl   $0x1,0x38(%rsp)
  jle    L202
  mov    %eax,0x2c(%rsp)
  movl   $0x0,0x1c(%rsp)
  movq   $0x0,0x20(%rsp)
  movq   $0x1,0x8(%rsp)
L676:
  mov    0x2c(%rsp),%eax
  cmp    $0x1,%eax
  jle    L118
  movq   $0x0,0x10(%rsp)
  lea    -0x1(%rax),%r12d
  xor    %r13d,%r13d
  mov    $0x1,%ebp
L919:
  cmp    $0x1,%r12d
  jle    L830
L248:
  sub    $0x1,%r12d
  xor    %r14d,%r14d
  mov    %r12d,%r15d
L557:
  mov    %r12d,%edi
  sub    %r15d,%edi
  call   <catalan>
  mov    %r15d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%r14
  sub    $0x1,%r15d
  jae    L557
  mov    %r14,%rdx
  add    $0x1,%r13d
  imul   %rbp,%rdx
  add    %rdx,0x10(%rsp)
L154:
  cmp    $0x1,%r13d
  je     L467
  xor    %ebp,%ebp
  xor    %r14d,%r14d
  lea    -0x1(%r13),%r15d
L13:
  mov    %r14d,%edi
  call   <catalan>
  mov    %r15d,%edi
  sub    %r14d,%edi
  mov    %rax,%rbx
  add    $0x1,%r14d
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%rbp
  cmp    %r13d,%r14d
  jne    L13
  cmp    $0x1,%r12d
  jg     L248
L830:
  add    %rbp,0x10(%rsp)
  add    $0x1,%r13d
  test   %r12d,%r12d
  jne    L75
  mov    0x8(%rsp),%rax
  imul   0x10(%rsp),%rax
  mov    %rax,0x8(%rsp)
L118:
  mov    0x1c(%rsp),%eax
  mov    0x8(%rsp),%rsi
  add    %rsi,0x20(%rsp)
  lea    0x1(%rax),%ecx
  mov    %ecx,0x28(%rsp)
  cmp    %eax,0x30(%rsp)
  je     L24
  cmpl   $0x1,0x28(%rsp)
  jle    L979
  mov    %eax,0x10(%rsp)
  xor    %r12d,%r12d
  mov    $0x1,%ebp
  movq   $0x0,0x8(%rsp)
L656:
  mov    0x10(%rsp),%eax
  cmp    $0x1,%eax
  jle    L162
  lea    -0x1(%rax),%r15d
  xor    %r14d,%r14d
  mov    %r15d,%r13d
L725:
  mov    %r15d,%edi
  sub    %r13d,%edi
  call   <catalan>
  mov    %r13d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  add    %rbx,%r14
  sub    $0x1,%r13d
  jae    L725
  imul   %r14,%rbp
L162:
  add    %rbp,0x8(%rsp)
  lea    0x1(%r12),%r15d
  cmp    0x1c(%rsp),%r12d
  je     L961
  cmp    $0x1,%r15d
  jle    L877
  xor    %ebp,%ebp
  xor    %r13d,%r13d
L962:
  mov    %r13d,%edi
  call   <catalan>
  mov    %r12d,%edi
  sub    %r13d,%edi
  mov    %rax,%rbx
  call   <catalan>
  imul   %rax,%rbx
  mov    %r13d,%eax
  add    $0x1,%r13d
  add    %rbx,%rbp
  cmp    %r12d,%eax
  jne    L962
  subl   $0x1,0x10(%rsp)
  mov    %r15d,%r12d
  jmp    L656
L979:
  movq   $0x1,0x8(%rsp)
  xchg   %ax,%ax
L961:
  mov    0x28(%rsp),%eax
  subl   $0x1,0x2c(%rsp)
  mov    %eax,0x1c(%rsp)
  jmp    L676
L202:
  movq   $0x1,0x20(%rsp)
  nopl   0x0(%rax,%rax,1)
L24:
  mov    0x38(%rsp),%eax
  subl   $0x1,0x34(%rsp)
  mov    %eax,0x30(%rsp)
  jmp    L418
L744:
  subl   $0x1,0x10(%rsp)
  mov    $0x1,%ebp
  mov    %r15d,%r12d
  jmp    L376
L877:
  subl   $0x1,0x10(%rsp)
  mov    $0x1,%ebp
  mov    %r15d,%r12d
  jmp    L656
L668:
  subl   $0x1,0x8(%rsp)
  mov    $0x1,%ebp
  mov    %r15d,%r12d
  jmp    L295
L261:
  movq   $0x1,0x58(%rsp)
L357:
  mov    0x48(%rsp),%eax
  subl   $0x1,0x78(%rsp)
  mov    %eax,0x60(%rsp)
  jmp    L785
L968:
  mov    0x70(%rsp),%rax
  add    $0x88,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L983:
  sub    $0x1,%r12d
  jmp    L593
L681:
  mov    $0x1,%ebp
  jmp    L91
L145:
  sub    $0x1,%r12d
  jmp    L1050
L1027:
  mov    $0x1,%ebp
  jmp    L604
L903:
  sub    $0x1,%r12d
  jmp    L254
L752:
  mov    $0x1,%ebp
  jmp    L17
L349:
  mov    0x48(%rsp),%eax
  sub    $0x1,%eax
  mov    %eax,0x64(%rsp)
  jmp    L288
L75:
  sub    $0x1,%r12d
  jmp    L154
L467:
  mov    $0x1,%ebp
  jmp    L919
```

assistant: ```c
long int catalan(int n) {
  int i;
  long int res = 0;
  if (n <= 1)
    return 1;
  for (i = 0; i < n; i++)
    res += catalan(i) * catalan(n - i - 1);
  return res;
}
```