user: 请从给定的汇编指令推导出C源代码:

```asm
<tarai>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %edi,0x20(%rsp)
  mov    %esi,0x18(%rsp)
  mov    %edx,0x2c(%rsp)
  cmp    %esi,%edi
  jle    L647
  cs nopw 0x0(%rax,%rax,1)
L53:
  mov    0x20(%rsp),%eax
  mov    0x18(%rsp),%ecx
  sub    $0x1,%eax
  mov    %eax,0x38(%rsp)
  mov    %eax,%r15d
  cmp    %ecx,%eax
  jle    L999
  mov    0x2c(%rsp),%eax
  mov    %ecx,0x10(%rsp)
  mov    %ecx,%ebx
  mov    %eax,0x14(%rsp)
  nopl   0x0(%rax,%rax,1)
L712:
  lea    -0x1(%r15),%eax
  mov    %eax,0x1c(%rsp)
  mov    %eax,%r14d
  cmp    %ebx,%eax
  jle    L623
  mov    %r15d,0x24(%rsp)
  mov    0x14(%rsp),%r13d
  nopl   (%rax)
L235:
  lea    -0x1(%r14),%r15d
  mov    %r13d,%edx
  mov    %ebx,%esi
  mov    %r15d,%edi
  call   <tarai>
  lea    -0x1(%rbx),%r9d
  mov    %eax,0xc(%rsp)
  cmp    %r13d,%r9d
  jle    L161
  mov    %r13d,%r10d
  mov    %r13d,0x8(%rsp)
  mov    %r9d,%r13d
  mov    %ebx,0x28(%rsp)
  mov    %r14d,%ebx
  mov    %r14d,0x30(%rsp)
  mov    %r10d,%r14d
  jmp    L664
L697:
  lea    -0x1(%rbx),%edi
  mov    %r14d,%edx
  mov    %r13d,%esi
  mov    %ebp,%r14d
  call   <tarai>
  mov    %r12d,%r13d
  mov    %eax,%ebx
L664:
  lea    -0x1(%r13),%edi
  mov    %ebx,%edx
  mov    %r14d,%esi
  call   <tarai>
  lea    -0x1(%r14),%edi
  mov    %r13d,%edx
  mov    %ebx,%esi
  mov    %eax,%r12d
  call   <tarai>
  mov    %eax,%ebp
  cmp    %eax,%r12d
  jg     L697
  mov    0x8(%rsp),%r13d
  mov    0x28(%rsp),%ebx
  mov    0x30(%rsp),%r14d
L293:
  cmp    %ebp,0xc(%rsp)
  jle    L612
  lea    -0x1(%r13),%r9d
  cmp    %r14d,%r9d
  jg     L762
  jmp    L376
L186:
  mov    0x8(%rsp),%esi
  lea    -0x1(%rbx),%edi
  mov    %r14d,%edx
  lea    -0x1(%r13),%r15d
  mov    %r13d,%r14d
  call   <tarai>
  mov    %r12d,%r9d
  mov    %eax,%ebx
L762:
  lea    -0x1(%r9),%edi
  mov    %ebx,%edx
  mov    %r14d,%esi
  mov    %r9d,0x8(%rsp)
  call   <tarai>
  mov    0x8(%rsp),%edx
  mov    %ebx,%esi
  mov    %r15d,%edi
  mov    %eax,%r12d
  call   <tarai>
  mov    %eax,%r13d
  cmp    %eax,%r12d
  jg     L186
  mov    0xc(%rsp),%r14d
  mov    %ebp,%ebx
  jmp    L235
L623:
  mov    %ebx,%ebp
  nopl   (%rax)
L921:
  mov    0x10(%rsp),%eax
  mov    0x14(%rsp),%r14d
  lea    -0x1(%rax),%r13d
  cmp    %r14d,%r13d
  jle    L279
  mov    %r15d,0xc(%rsp)
  mov    %ebp,0x8(%rsp)
  mov    %r15d,%ebp
  nopw   0x0(%rax,%rax,1)
L904:
  lea    -0x1(%r13),%edi
  mov    %ebp,%edx
  mov    %r14d,%esi
  call   <tarai>
  lea    -0x1(%r14),%r8d
  mov    %eax,%r15d
  cmp    %ebp,%r8d
  jle    L425
  mov    %ebp,%r9d
  mov    %ebp,0x28(%rsp)
  mov    %r8d,%ebp
  mov    %r14d,0x30(%rsp)
  mov    %r9d,%r14d
  mov    %r13d,0x24(%rsp)
  jmp    L924
L948:
  lea    -0x1(%r13),%edi
  mov    %r14d,%edx
  mov    %ebp,%esi
  mov    %ebx,%r14d
  call   <tarai>
  mov    %r12d,%ebp
  mov    %eax,%r13d
L924:
  lea    -0x1(%rbp),%edi
  mov    %r13d,%edx
  mov    %r14d,%esi
  call   <tarai>
  lea    -0x1(%r14),%edi
  mov    %ebp,%edx
  mov    %r13d,%esi
  mov    %eax,%r12d
  call   <tarai>
  mov    %eax,%ebx
  cmp    %eax,%r12d
  jg     L948
  mov    0x24(%rsp),%r13d
  mov    0x28(%rsp),%ebp
  mov    0x30(%rsp),%r14d
L177:
  cmp    %ebx,%r15d
  jle    L435
  lea    -0x1(%rbp),%edi
  mov    %r14d,%edx
  mov    %r13d,%esi
  mov    %ebx,%r14d
  call   <tarai>
  mov    %r15d,%r13d
  mov    %eax,%ebp
  jmp    L904
L279:
  mov    %r14d,%ebx
  nopl   0x0(%rax)
L831:
  cmp    %ebp,%ebx
  jge    L375
  mov    0x14(%rsp),%r13d
  sub    $0x1,%r13d
  cmp    %r15d,%r13d
  jle    L735
  mov    %r13d,%r8d
  mov    0x10(%rsp),%r12d
  mov    %ebp,%r13d
  mov    0x1c(%rsp),%r14d
  mov    %ebx,%ebp
  jmp    L167
L159:
  mov    0x8(%rsp),%esi
  lea    -0x1(%r12),%edi
  mov    %r15d,%edx
  mov    %r14d,%r15d
  lea    -0x1(%r14),%r14d
  call   <tarai>
  mov    %ebx,%r8d
  mov    %eax,%r12d
L167:
  lea    -0x1(%r8),%edi
  mov    %r12d,%edx
  mov    %r15d,%esi
  mov    %r8d,0x8(%rsp)
  call   <tarai>
  mov    0x8(%rsp),%edx
  mov    %r14d,%edi
  mov    %r12d,%esi
  mov    %eax,%ebx
  call   <tarai>
  mov    %eax,%r14d
  cmp    %eax,%ebx
  jg     L159
  mov    %ebp,%ebx
  mov    %eax,0x14(%rsp)
  mov    %r13d,%ebp
  jmp    L997
  cs nopw 0x0(%rax,%rax,1)
L375:
  mov    %ebx,0x34(%rsp)
L236:
  mov    0x18(%rsp),%eax
  mov    0x2c(%rsp),%ecx
  sub    $0x1,%eax
  mov    %eax,0x14(%rsp)
  cmp    %ecx,%eax
  jle    L938
  mov    0x20(%rsp),%eax
  mov    %ecx,0x10(%rsp)
  mov    %ecx,%r13d
  mov    %eax,0x1c(%rsp)
  mov    0x14(%rsp),%eax
  xchg   %ax,%ax
L596:
  sub    $0x1,%eax
  mov    %eax,0x28(%rsp)
  mov    %eax,%r12d
  cmp    %r13d,%eax
  jle    L336
  mov    0x1c(%rsp),%ebp
  jmp    L80
L855:
  lea    -0x1(%rbp),%edi
  mov    %r13d,%edx
  mov    %r12d,%esi
  mov    %ebx,%r13d
  call   <tarai>
  mov    %r14d,%r12d
  mov    %eax,%ebp
L80:
  lea    -0x1(%r12),%edi
  mov    %ebp,%edx
  mov    %r13d,%esi
  call   <tarai>
  lea    -0x1(%r13),%edi
  mov    %r12d,%edx
  mov    %ebp,%esi
  mov    %eax,%r14d
  call   <tarai>
  mov    %eax,%ebx
  cmp    %eax,%r14d
  jg     L855
  mov    %eax,0x24(%rsp)
  mov    0x10(%rsp),%eax
  jmp    L409
  nopl   0x0(%rax)
L336:
  mov    %r13d,0x24(%rsp)
  mov    %r13d,%eax
L409:
  mov    0x1c(%rsp),%ebx
  lea    -0x1(%rax),%r15d
  cmp    %ebx,%r15d
  jle    L157
  mov    0x14(%rsp),%r13d
  xchg   %ax,%ax
L581:
  lea    -0x1(%r15),%r14d
  mov    %r13d,%edx
  mov    %ebx,%esi
  mov    %r14d,%edi
  call   <tarai>
  lea    -0x1(%rbx),%r9d
  mov    %eax,0xc(%rsp)
  cmp    %r13d,%r9d
  jle    L9
  mov    %r13d,%r10d
  mov    %ebx,0x8(%rsp)
  mov    %r15d,%ebx
  mov    %r13d,0x30(%rsp)
  mov    %r9d,%r13d
  mov    %r14d,0x3c(%rsp)
  mov    %r10d,%r14d
  jmp    L238
L297:
  lea    -0x1(%rbx),%edi
  mov    %r14d,%edx
  mov    %r13d,%esi
  mov    %ebp,%r14d
  call   <tarai>
  mov    %r12d,%r13d
  mov    %eax,%ebx
L238:
  lea    -0x1(%r13),%edi
  mov    %ebx,%edx
  mov    %r14d,%esi
  call   <tarai>
  lea    -0x1(%r14),%edi
  mov    %r13d,%edx
  mov    %ebx,%esi
  mov    %eax,%r12d
  call   <tarai>
  mov    %eax,%ebp
  cmp    %eax,%r12d
  jg     L297
  mov    0x8(%rsp),%ebx
  mov    0x30(%rsp),%r13d
  mov    0x3c(%rsp),%r14d
L201:
  cmp    %ebp,0xc(%rsp)
  jle    L810
  lea    -0x1(%r13),%r9d
  cmp    %r15d,%r9d
  jg     L774
  jmp    L989
L327:
  mov    0x8(%rsp),%esi
  lea    -0x1(%rbx),%edi
  mov    %r15d,%edx
  lea    -0x1(%r13),%r14d
  mov    %r13d,%r15d
  call   <tarai>
  mov    %r12d,%r9d
  mov    %eax,%ebx
L774:
  lea    -0x1(%r9),%edi
  mov    %ebx,%edx
  mov    %r15d,%esi
  mov    %r9d,0x8(%rsp)
  call   <tarai>
  mov    0x8(%rsp),%edx
  mov    %ebx,%esi
  mov    %r14d,%edi
  mov    %eax,%r12d
  call   <tarai>
  mov    %eax,%r13d
  cmp    %eax,%r12d
  jg     L327
  mov    0xc(%rsp),%r15d
  mov    %ebp,%ebx
  jmp    L581
L157:
  mov    %ebx,%ebp
  nopl   0x0(%rax)
L810:
  cmp    0x24(%rsp),%ebp
  jge    L91
  mov    0x1c(%rsp),%r12d
  mov    0x14(%rsp),%r14d
  sub    $0x1,%r12d
  cmp    %r14d,%r12d
  jle    L54
  mov    %ebp,0x8(%rsp)
  mov    0x28(%rsp),%ebx
  mov    0x10(%rsp),%ebp
  nopl   (%rax)
L747:
  lea    -0x1(%r12),%edi
  mov    %ebp,%edx
  mov    %r14d,%esi
  call   <tarai>
  mov    %eax,%r15d
  cmp    %ebp,%ebx
  jle    L895
  mov    %ebp,%r9d
  mov    %ebp,0x10(%rsp)
  mov    %ebx,%ebp
  mov    %r14d,0x14(%rsp)
  mov    %r9d,%r14d
  mov    %r12d,0xc(%rsp)
  jmp    L889
L880:
  lea    -0x1(%r12),%edi
  mov    %r14d,%edx
  mov    %ebp,%esi
  mov    %ebx,%r14d
  call   <tarai>
  mov    %r13d,%ebp
  mov    %eax,%r12d
L889:
  lea    -0x1(%rbp),%edi
  mov    %r12d,%edx
  mov    %r14d,%esi
  call   <tarai>
  lea    -0x1(%r14),%edi
  mov    %ebp,%edx
  mov    %r12d,%esi
  mov    %eax,%r13d
  call   <tarai>
  mov    %eax,%ebx
  cmp    %eax,%r13d
  jg     L880
  mov    0xc(%rsp),%r12d
  mov    0x10(%rsp),%ebp
  mov    0x14(%rsp),%r14d
L68:
  cmp    %ebx,%r15d
  jle    L600
  lea    -0x1(%rbp),%edi
  mov    %r14d,%edx
  mov    %r12d,%esi
  mov    %ebx,%r14d
  call   <tarai>
  mov    %r15d,%r12d
  lea    -0x1(%rbx),%ebx
  mov    %eax,%ebp
  jmp    L747
L91:
  mov    %ebp,0x30(%rsp)
  mov    0x34(%rsp),%ecx
  cmp    %ecx,0x30(%rsp)
  jge    L331
L464:
  mov    0x2c(%rsp),%r12d
  sub    $0x1,%r12d
  cmp    0x20(%rsp),%r12d
  jle    L947
  mov    %r12d,0x1c(%rsp)
  mov    %r12d,%eax
  mov    0x38(%rsp),%r15d
  mov    0x20(%rsp),%r12d
  nopl   (%rax)
L859:
  sub    $0x1,%eax
  mov    %eax,0x28(%rsp)
  mov    %eax,%ebp
  cmp    %r12d,%eax
  jle    L527
  mov    %r15d,0x8(%rsp)
  mov    0x18(%rsp),%r14d
  nopl   0x0(%rax)
L1019:
  lea    -0x1(%rbp),%edi
  mov    %r14d,%edx
  mov    %r12d,%esi
  call   <tarai>
  lea    -0x1(%r12),%r8d
  mov    %eax,%r15d
  cmp    %r14d,%r8d
  jle    L380
  mov    %r14d,%r9d
  mov    %r14d,0x10(%rsp)
  mov    %r8d,%r14d
  mov    %r12d,0x14(%rsp)
  mov    %r9d,%r12d
  mov    %ebp,0xc(%rsp)
  jmp    L363
L566:
  lea    -0x1(%rbp),%edi
  mov    %r12d,%edx
  mov    %r14d,%esi
  mov    %ebx,%r12d
  call   <tarai>
  mov    %r13d,%r14d
  mov    %eax,%ebp
L363:
  lea    -0x1(%r14),%edi
  mov    %ebp,%edx
  mov    %r12d,%esi
  call   <tarai>
  lea    -0x1(%r12),%edi
  mov    %r14d,%edx
  mov    %ebp,%esi
  mov    %eax,%r13d
  call   <tarai>
  mov    %eax,%ebx
  cmp    %eax,%r13d
  jg     L566
  mov    0xc(%rsp),%ebp
  mov    0x10(%rsp),%r14d
  mov    0x14(%rsp),%r12d
L502:
  cmp    %ebx,%r15d
  jle    L364
  lea    -0x1(%r14),%edi
  mov    %r12d,%edx
  mov    %ebp,%esi
  mov    %ebx,%r12d
  call   <tarai>
  mov    %r15d,%ebp
  mov    %eax,%r14d
  jmp    L1019
L735:
  mov    %r15d,0x14(%rsp)
L997:
  mov    %ebx,0x10(%rsp)
  mov    %ebp,%r15d
  jmp    L712
L54:
  mov    %r14d,0x1c(%rsp)
  cs nopw 0x0(%rax,%rax,1)
L781:
  mov    0x24(%rsp),%eax
  mov    %ebp,0x10(%rsp)
  mov    %ebp,%r13d
  mov    %eax,0x14(%rsp)
  jmp    L596
L527:
  mov    %r12d,0x24(%rsp)
  nopl   0x0(%rax)
L102:
  mov    0x18(%rsp),%ebx
  cmp    %ebx,%r15d
  jle    L594
  mov    0x1c(%rsp),%ebp
  nopl   0x0(%rax)
L330:
  lea    -0x1(%r15),%r12d
  mov    %r12d,%r9d
  cmp    %ebx,%r12d
  jle    L396
  mov    %ebp,%ecx
  mov    %r12d,%r13d
  mov    %ebx,%r10d
  mov    %ebp,%r12d
  mov    %ebx,%ebp
  jmp    L114
L204:
  mov    0x8(%rsp),%ecx
  mov    0x10(%rsp),%edx
  mov    0xc(%rsp),%esi
  lea    -0x1(%rcx),%edi
  call   <tarai>
  mov    %r14d,%r10d
  mov    %ebx,%r9d
  mov    %eax,%ecx
L114:
  lea    -0x1(%r9),%edi
  mov    %ecx,%edx
  mov    %r10d,%esi
  mov    %r9d,0xc(%rsp)
  mov    %ecx,0x14(%rsp)
  mov    %r10d,0x8(%rsp)
  call   <tarai>
  mov    0x8(%rsp),%r10d
  mov    0x14(%rsp),%ecx
  mov    0xc(%rsp),%edx
  mov    %eax,%ebx
  lea    -0x1(%r10),%edi
  mov    %ecx,%esi
  mov    %r10d,0x10(%rsp)
  mov    %ecx,0x8(%rsp)
  call   <tarai>
  mov    %eax,%r14d
  cmp    %eax,%ebx
  jg     L204
  mov    %ebp,%ebx
  mov    %eax,0x14(%rsp)
  mov    %r12d,%ebp
  mov    %r13d,%r12d
  jmp    L451
  nopw   0x0(%rax,%rax,1)
L396:
  mov    %ebx,0x14(%rsp)
L451:
  lea    -0x1(%rbx),%r9d
  cmp    %ebp,%r9d
  jle    L853
  mov    %r15d,%ecx
  mov    %ebp,%r10d
  jmp    L429
L949:
  mov    0x8(%rsp),%ecx
  mov    0x10(%rsp),%edx
  mov    0xc(%rsp),%esi
  lea    -0x1(%rcx),%edi
  call   <tarai>
  mov    %r13d,%r10d
  mov    %r14d,%r9d
  mov    %eax,%ecx
L429:
  lea    -0x1(%r9),%edi
  mov    %ecx,%edx
  mov    %r10d,%esi
  mov    %r9d,0xc(%rsp)
  mov    %ecx,0x2c(%rsp)
  mov    %r10d,0x8(%rsp)
  call   <tarai>
  mov    0x8(%rsp),%r10d
  mov    0x2c(%rsp),%ecx
  mov    0xc(%rsp),%edx
  mov    %eax,%r14d
  lea    -0x1(%r10),%edi
  mov    %ecx,%esi
  mov    %r10d,0x10(%rsp)
  mov    %ecx,0x8(%rsp)
  call   <tarai>
  mov    %eax,%r13d
  cmp    %eax,%r14d
  jg     L949
  nopl   (%rax)
L377:
  cmp    0x14(%rsp),%r13d
  jge    L123
  lea    -0x1(%rbp),%r9d
  cmp    %r15d,%r9d
  jg     L1016
  jmp    L287
L953:
  mov    0x8(%rsp),%esi
  lea    -0x1(%rbx),%edi
  mov    %r15d,%edx
  lea    -0x1(%rbp),%r12d
  mov    %ebp,%r15d
  call   <tarai>
  mov    %r14d,%r9d
  mov    %eax,%ebx
L1016:
  lea    -0x1(%r9),%edi
  mov    %ebx,%edx
  mov    %r15d,%esi
  mov    %r9d,0x8(%rsp)
  call   <tarai>
  mov    0x8(%rsp),%edx
  mov    %ebx,%esi
  mov    %r12d,%edi
  mov    %eax,%r14d
  call   <tarai>
  mov    %eax,%ebp
  cmp    %eax,%r14d
  jg     L953
  mov    0x14(%rsp),%r15d
  mov    %r13d,%ebx
  jmp    L330
L594:
  mov    %ebx,%r13d
  nopl   0x0(%rax,%rax,1)
L123:
  cmp    0x24(%rsp),%r13d
  jge    L459
  mov    0x18(%rsp),%r15d
  mov    0x1c(%rsp),%ebx
  sub    $0x1,%r15d
  cmp    %ebx,%r15d
  jle    L107
  mov    0x20(%rsp),%r12d
  mov    0x28(%rsp),%ebp
  mov    %r13d,0x1c(%rsp)
  nop
L224:
  lea    -0x1(%r15),%r13d
  mov    %r13d,%r9d
  cmp    %ebx,%r13d
  jle    L270
  mov    %r15d,0x14(%rsp)
  mov    %r12d,%ecx
  mov    %ebx,%r10d
  jmp    L845
L356:
  mov    0x8(%rsp),%ecx
  mov    0x10(%rsp),%edx
  mov    0xc(%rsp),%esi
  lea    -0x1(%rcx),%edi
  call   <tarai>
  mov    %r14d,%r10d
  mov    %r15d,%r9d
  mov    %eax,%ecx
L845:
  lea    -0x1(%r9),%edi
  mov    %ecx,%edx
  mov    %r10d,%esi
  mov    %r9d,0xc(%rsp)
  mov    %ecx,0x18(%rsp)
  mov    %r10d,0x8(%rsp)
  call   <tarai>
  mov    0x8(%rsp),%r10d
  mov    0x18(%rsp),%ecx
  mov    0xc(%rsp),%edx
  mov    %eax,%r15d
  lea    -0x1(%r10),%edi
  mov    %ecx,%esi
  mov    %r10d,0x10(%rsp)
  mov    %ecx,0x8(%rsp)
  call   <tarai>
  mov    %eax,%r14d
  cmp    %eax,%r15d
  jg     L356
  mov    0x14(%rsp),%r15d
  mov    %eax,0x14(%rsp)
  jmp    L875
  nopl   0x0(%rax)
L853:
  mov    %ebp,%r13d
  jmp    L377
  nopl   0x0(%rax,%rax,1)
L287:
  mov    %r15d,%ebp
  mov    %r13d,%ebx
  mov    0x14(%rsp),%r15d
  jmp    L330
L270:
  mov    %ebx,0x14(%rsp)
L875:
  mov    %ebp,%r9d
  cmp    %ebp,%r12d
  jge    L639
  mov    %r15d,%ecx
  mov    %r12d,%r10d
  jmp    L1001
L256:
  mov    0x8(%rsp),%ecx
  mov    0x10(%rsp),%edx
  mov    0xc(%rsp),%esi
  lea    -0x1(%rcx),%edi
  call   <tarai>
  mov    %r14d,%r10d
  mov    %ebp,%r9d
  mov    %eax,%ecx
L1001:
  lea    -0x1(%r9),%edi
  mov    %ecx,%edx
  mov    %r10d,%esi
  mov    %r9d,0xc(%rsp)
  mov    %ecx,0x18(%rsp)
  mov    %r10d,0x8(%rsp)
  call   <tarai>
  mov    0x8(%rsp),%r10d
  mov    0x18(%rsp),%ecx
  mov    0xc(%rsp),%edx
  mov    %eax,%ebp
  lea    -0x1(%r10),%edi
  mov    %ecx,%esi
  mov    %r10d,0x10(%rsp)
  mov    %ecx,0x8(%rsp)
  call   <tarai>
  mov    %eax,%r14d
  cmp    %eax,%ebp
  jg     L256
  nopw   0x0(%rax,%rax,1)
L301:
  cmp    0x14(%rsp),%r14d
  jge    L175
  lea    -0x1(%r12),%r9d
  cmp    %r9d,%r15d
  jl     L676
  jmp    L738
L703:
  mov    0x8(%rsp),%esi
  lea    -0x1(%rbx),%edi
  mov    %r15d,%edx
  lea    -0x1(%r12),%r13d
  mov    %r12d,%r15d
  call   <tarai>
  mov    %ebp,%r9d
  mov    %eax,%ebx
L676:
  lea    -0x1(%r9),%edi
  mov    %ebx,%edx
  mov    %r15d,%esi
  mov    %r9d,0x8(%rsp)
  call   <tarai>
  mov    0x8(%rsp),%edx
  mov    %ebx,%esi
  mov    %r13d,%edi
  mov    %eax,%ebp
  call   <tarai>
  mov    %eax,%r12d
  cmp    %eax,%ebp
  jg     L703
  mov    0x14(%rsp),%r15d
  mov    %r14d,%ebx
  lea    -0x1(%r14),%ebp
  jmp    L224
  nopl   (%rax)
L175:
  mov    %r14d,0x18(%rsp)
  mov    0x1c(%rsp),%r13d
L307:
  mov    0x24(%rsp),%eax
  mov    %r13d,0x20(%rsp)
  lea    -0x1(%r13),%r15d
  mov    %r13d,%r12d
  mov    %eax,0x1c(%rsp)
  jmp    L859
  nopl   0x0(%rax,%rax,1)
L639:
  mov    %r12d,%r14d
  jmp    L301
L738:
  mov    %r15d,%r12d
  mov    %r14d,%ebx
  mov    0x14(%rsp),%r15d
  lea    -0x1(%r14),%ebp
  jmp    L224
L459:
  mov    %r13d,0x2c(%rsp)
L456:
  mov    0x30(%rsp),%eax
  mov    %eax,0x18(%rsp)
  mov    0x34(%rsp),%eax
  mov    %eax,0x20(%rsp)
  jmp    L53
L107:
  mov    %ebx,0x18(%rsp)
  jmp    L307
L938:
  mov    %ecx,0x30(%rsp)
  mov    0x34(%rsp),%ecx
  cmp    %ecx,0x30(%rsp)
  jl     L464
L331:
  mov    0x30(%rsp),%r12d
L271:
  add    $0x48,%rsp
  mov    %r12d,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L999:
  mov    %ecx,0x34(%rsp)
  jmp    L236
L947:
  mov    0x20(%rsp),%eax
  mov    %eax,0x2c(%rsp)
  jmp    L456
L612:
  mov    0x24(%rsp),%r15d
  jmp    L921
  nopw   0x0(%rax,%rax,1)
L435:
  mov    0x8(%rsp),%ebp
  mov    0xc(%rsp),%r15d
  jmp    L831
  xchg   %ax,%ax
L989:
  mov    %r15d,%r13d
  mov    %ebp,%ebx
  mov    0xc(%rsp),%r15d
  jmp    L581
  nop
L600:
  mov    %ebx,0x1c(%rsp)
  mov    0x8(%rsp),%ebp
  jmp    L781
  nopl   (%rax)
L376:
  mov    %r14d,%r13d
  mov    %ebp,%ebx
  mov    0xc(%rsp),%r14d
  jmp    L235
  nop
L364:
  mov    %ebx,0x24(%rsp)
  mov    0x8(%rsp),%r15d
  jmp    L102
L161:
  mov    %r13d,%ebp
  jmp    L293
L425:
  mov    %ebp,%ebx
  jmp    L177
L647:
  mov    %esi,%r12d
  jmp    L271
L9:
  mov    %r13d,%ebp
  jmp    L201
L380:
  mov    %r14d,%ebx
  jmp    L502
L895:
  mov    %ebp,%ebx
  jmp    L68
```

assistant: ```c
int tarai(int x, int y, int z) {
  int ox = x;
  int oy = y;
  while (x > y) {
    ox = x;
    oy = y;
    x = tarai(x - 1, y, z);
    y = tarai(y - 1, z, ox);
    if (x <= y)
      break;
    z = tarai(z - 1, ox, oy);
  }
  return y;
}
```