user: 请将以下的汇编代码转换成C语言代码:

```asm
<maxRec>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  movslq %edx,%r13
  push   %r12
  mov    %rdi,%r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  cmp    %r13d,%esi
  je     L348
  lea    (%rsi,%r13,1),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  cmp    %esi,%ebx
  je     L499
  lea    (%rbx,%rsi,1),%eax
  mov    %eax,%r15d
  shr    $0x1f,%r15d
  add    %eax,%r15d
  sar    %r15d
  cmp    %r15d,%esi
  je     L113
  lea    (%rsi,%r15,1),%eax
  mov    %eax,%r14d
  shr    $0x1f,%r14d
  add    %eax,%r14d
  sar    %r14d
  cmp    %r14d,%esi
  je     L551
  lea    (%rsi,%r14,1),%eax
  mov    %eax,%ebp
  shr    $0x1f,%ebp
  add    %eax,%ebp
  sar    %ebp
  cmp    %ebp,%esi
  je     L455
  lea    (%rsi,%rbp,1),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %edx,0xc(%rsp)
  call   <maxRec>
  mov    0xc(%rsp),%edx
  mov    %r12,%rdi
  mov    %eax,0x8(%rsp)
  lea    0x1(%rdx),%esi
  mov    %ebp,%edx
  call   <maxRec>
  mov    0x8(%rsp),%r8d
  cmp    %eax,%r8d
  cmovl  %eax,%r8d
L262:
  lea    0x1(%rbp),%esi
  cmp    %esi,%r14d
  je     L182
  lea    (%r14,%rsi,1),%eax
  mov    %r12,%rdi
  mov    %r8d,0xc(%rsp)
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %edx,0x8(%rsp)
  call   <maxRec>
  mov    0x8(%rsp),%edx
  mov    %r12,%rdi
  mov    %eax,%ebp
  lea    0x1(%rdx),%esi
  mov    %r14d,%edx
  call   <maxRec>
  mov    0xc(%rsp),%r8d
  cmp    %eax,%ebp
  cmovge %ebp,%eax
  mov    %eax,%ecx
L409:
  cmp    %r8d,%ecx
  cmovl  %r8d,%ecx
L568:
  lea    0x1(%r14),%esi
  cmp    %esi,%r15d
  je     L545
  lea    (%r15,%rsi,1),%eax
  mov    %eax,%ebp
  shr    $0x1f,%ebp
  add    %eax,%ebp
  sar    %ebp
  cmp    %ebp,%esi
  je     L609
  lea    (%rsi,%rbp,1),%eax
  mov    %r12,%rdi
  mov    %ecx,0xc(%rsp)
  mov    %eax,%r14d
  shr    $0x1f,%r14d
  add    %eax,%r14d
  sar    %r14d
  mov    %r14d,%edx
  call   <maxRec>
  lea    0x1(%r14),%esi
  mov    %ebp,%edx
  mov    %r12,%rdi
  mov    %eax,0x8(%rsp)
  call   <maxRec>
  mov    0x8(%rsp),%r8d
  mov    0xc(%rsp),%ecx
  cmp    %eax,%r8d
  cmovl  %eax,%r8d
L330:
  lea    0x1(%rbp),%esi
  cmp    %esi,%r15d
  je     L547
  lea    (%r15,%rsi,1),%eax
  mov    %r12,%rdi
  mov    %r8d,0xc(%rsp)
  mov    %eax,%ebp
  mov    %ecx,0x8(%rsp)
  shr    $0x1f,%ebp
  add    %eax,%ebp
  sar    %ebp
  mov    %ebp,%edx
  call   <maxRec>
  lea    0x1(%rbp),%esi
  mov    %r15d,%edx
  mov    %r12,%rdi
  mov    %eax,%r14d
  call   <maxRec>
  mov    0xc(%rsp),%r8d
  mov    0x8(%rsp),%ecx
  cmp    %eax,%r14d
  cmovl  %eax,%r14d
L539:
  cmp    %r8d,%r14d
  cmovl  %r8d,%r14d
L487:
  cmp    %ecx,%r14d
  cmovl  %ecx,%r14d
  add    $0x1,%r15d
  cmp    %r15d,%ebx
  je     L153
L127:
  lea    (%rbx,%r15,1),%eax
  mov    %eax,%esi
  shr    $0x1f,%esi
  add    %eax,%esi
  mov    %esi,%ecx
  sar    %ecx
  cmp    %ecx,%r15d
  je     L81
  lea    (%r15,%rcx,1),%eax
  mov    %eax,%ebp
  shr    $0x1f,%ebp
  add    %eax,%ebp
  sar    %ebp
  cmp    %ebp,%r15d
  je     L469
  lea    (%r15,%rbp,1),%eax
  mov    %r15d,%esi
  mov    %r12,%rdi
  mov    %ecx,0xc(%rsp)
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %edx,0x8(%rsp)
  call   <maxRec>
  mov    0x8(%rsp),%edx
  mov    %r12,%rdi
  mov    %eax,%r15d
  lea    0x1(%rdx),%esi
  mov    %ebp,%edx
  call   <maxRec>
  mov    0xc(%rsp),%ecx
  cmp    %eax,%r15d
  cmovl  %eax,%r15d
L482:
  lea    0x1(%rbp),%esi
  cmp    %esi,%ecx
  je     L179
  lea    (%rcx,%rsi,1),%eax
  mov    %r12,%rdi
  mov    %ecx,0xc(%rsp)
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %edx,0x8(%rsp)
  call   <maxRec>
  mov    0xc(%rsp),%ecx
  mov    0x8(%rsp),%edx
  mov    %r12,%rdi
  mov    %eax,%ebp
  lea    0x1(%rdx),%esi
  mov    %ecx,%edx
  mov    %ecx,0x8(%rsp)
  call   <maxRec>
  mov    0x8(%rsp),%ecx
  cmp    %eax,%ebp
  cmovge %ebp,%eax
L5:
  cmp    %r15d,%eax
  cmovge %eax,%r15d
L248:
  lea    0x1(%rcx),%esi
  cmp    %esi,%ebx
  je     L144
  lea    (%rbx,%rsi,1),%eax
  mov    %eax,%ebp
  shr    $0x1f,%ebp
  add    %eax,%ebp
  sar    %ebp
  cmp    %ebp,%esi
  je     L297
  lea    (%rsi,%rbp,1),%eax
  mov    %r12,%rdi
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %edx,0xc(%rsp)
  call   <maxRec>
  mov    0xc(%rsp),%edx
  mov    %r12,%rdi
  mov    %eax,0x8(%rsp)
  lea    0x1(%rdx),%esi
  mov    %ebp,%edx
  call   <maxRec>
  mov    0x8(%rsp),%ecx
  cmp    %eax,%ecx
  cmovl  %eax,%ecx
L546:
  lea    0x1(%rbp),%esi
  cmp    %esi,%ebx
  je     L3
  lea    (%rbx,%rsi,1),%eax
  mov    %r12,%rdi
  mov    %ecx,0xc(%rsp)
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %edx,0x8(%rsp)
  call   <maxRec>
  mov    0x8(%rsp),%edx
  mov    %r12,%rdi
  mov    %eax,%ebp
  lea    0x1(%rdx),%esi
  mov    %ebx,%edx
  call   <maxRec>
  mov    0xc(%rsp),%ecx
  cmp    %eax,%ebp
  cmovl  %eax,%ebp
L266:
  cmp    %ecx,%ebp
  cmovl  %ecx,%ebp
L17:
  cmp    %r15d,%ebp
  cmovl  %r15d,%ebp
L329:
  cmp    %r14d,%ebp
  lea    0x1(%rbx),%esi
  cmovl  %r14d,%ebp
  cmp    %r13d,%esi
  jne    L111
L311:
  mov    (%r12,%r13,4),%eax
L483:
  cmp    %ebp,%eax
  cmovl  %ebp,%eax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L499:
  movslq %ebx,%rax
  lea    0x1(%rbx),%esi
  mov    (%rdi,%rax,4),%ebp
  cmp    %r13d,%esi
  je     L311
L111:
  lea    (%rsi,%r13,1),%eax
  mov    %eax,%r15d
  shr    $0x1f,%r15d
  add    %eax,%r15d
  sar    %r15d
  cmp    %r15d,%esi
  je     L167
  lea    (%rsi,%r15,1),%eax
  mov    %eax,%r14d
  shr    $0x1f,%r14d
  add    %eax,%r14d
  sar    %r14d
  cmp    %r14d,%esi
  je     L298
  lea    (%rsi,%r14,1),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  cmp    %ebx,%esi
  je     L473
  lea    (%rsi,%rbx,1),%eax
  mov    %r12,%rdi
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %edx,0xc(%rsp)
  call   <maxRec>
  mov    0xc(%rsp),%edx
  mov    %r12,%rdi
  mov    %eax,0x8(%rsp)
  lea    0x1(%rdx),%esi
  mov    %ebx,%edx
  call   <maxRec>
  mov    0x8(%rsp),%r8d
  cmp    %eax,%r8d
  cmovl  %eax,%r8d
L216:
  lea    0x1(%rbx),%esi
  cmp    %esi,%r14d
  je     L501
  lea    (%r14,%rsi,1),%eax
  mov    %r12,%rdi
  mov    %r8d,0xc(%rsp)
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %edx,0x8(%rsp)
  call   <maxRec>
  mov    0x8(%rsp),%edx
  mov    %r12,%rdi
  mov    %eax,%ebx
  lea    0x1(%rdx),%esi
  mov    %r14d,%edx
  call   <maxRec>
  mov    0xc(%rsp),%r8d
  cmp    %eax,%ebx
  cmovge %ebx,%eax
  mov    %eax,%ecx
L226:
  cmp    %r8d,%ecx
  cmovl  %r8d,%ecx
L86:
  lea    0x1(%r14),%esi
  cmp    %esi,%r15d
  je     L38
  lea    (%r15,%rsi,1),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  cmp    %ebx,%esi
  je     L183
  lea    (%rsi,%rbx,1),%eax
  mov    %r12,%rdi
  mov    %ecx,0xc(%rsp)
  mov    %eax,%r14d
  shr    $0x1f,%r14d
  add    %eax,%r14d
  sar    %r14d
  mov    %r14d,%edx
  call   <maxRec>
  lea    0x1(%r14),%esi
  mov    %ebx,%edx
  mov    %r12,%rdi
  mov    %eax,0x8(%rsp)
  call   <maxRec>
  mov    0x8(%rsp),%r8d
  mov    0xc(%rsp),%ecx
  cmp    %eax,%r8d
  cmovl  %eax,%r8d
L312:
  lea    0x1(%rbx),%esi
  cmp    %esi,%r15d
  je     L122
  lea    (%r15,%rsi,1),%eax
  mov    %r12,%rdi
  mov    %r8d,0xc(%rsp)
  mov    %eax,%ebx
  mov    %ecx,0x8(%rsp)
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  mov    %ebx,%edx
  call   <maxRec>
  lea    0x1(%rbx),%esi
  mov    %r15d,%edx
  mov    %r12,%rdi
  mov    %eax,%r14d
  call   <maxRec>
  mov    0xc(%rsp),%r8d
  mov    0x8(%rsp),%ecx
  cmp    %eax,%r14d
  cmovl  %eax,%r14d
L589:
  cmp    %r8d,%r14d
  cmovl  %r8d,%r14d
L65:
  cmp    %ecx,%r14d
  cmovl  %ecx,%r14d
  add    $0x1,%r15d
  cmp    %r15d,%r13d
  je     L391
L407:
  lea    0x0(%r13,%r15,1),%eax
  mov    %eax,%esi
  shr    $0x1f,%esi
  add    %eax,%esi
  mov    %esi,%ecx
  sar    %ecx
  cmp    %ecx,%r15d
  je     L222
  lea    (%r15,%rcx,1),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  cmp    %ebx,%r15d
  je     L24
  lea    (%r15,%rbx,1),%eax
  mov    %r15d,%esi
  mov    %r12,%rdi
  mov    %ecx,0xc(%rsp)
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %edx,0x8(%rsp)
  call   <maxRec>
  mov    0x8(%rsp),%edx
  mov    %r12,%rdi
  mov    %eax,%r15d
  lea    0x1(%rdx),%esi
  mov    %ebx,%edx
  call   <maxRec>
  mov    0xc(%rsp),%ecx
  cmp    %eax,%r15d
  cmovl  %eax,%r15d
L318:
  lea    0x1(%rbx),%esi
  cmp    %esi,%ecx
  je     L446
  lea    (%rcx,%rsi,1),%eax
  mov    %r12,%rdi
  mov    %ecx,0xc(%rsp)
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %edx,0x8(%rsp)
  call   <maxRec>
  mov    0xc(%rsp),%ecx
  mov    0x8(%rsp),%edx
  mov    %r12,%rdi
  mov    %eax,%ebx
  lea    0x1(%rdx),%esi
  mov    %ecx,%edx
  mov    %ecx,0x8(%rsp)
  call   <maxRec>
  mov    0x8(%rsp),%ecx
  cmp    %eax,%ebx
  cmovge %ebx,%eax
L493:
  cmp    %r15d,%eax
  cmovge %eax,%r15d
L198:
  lea    0x1(%rcx),%esi
  cmp    %esi,%r13d
  je     L475
  lea    0x0(%r13,%rsi,1),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  cmp    %ebx,%esi
  je     L452
  lea    (%rsi,%rbx,1),%eax
  mov    %r12,%rdi
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %edx,0xc(%rsp)
  call   <maxRec>
  mov    0xc(%rsp),%edx
  mov    %r12,%rdi
  mov    %eax,0x8(%rsp)
  lea    0x1(%rdx),%esi
  mov    %ebx,%edx
  call   <maxRec>
  mov    0x8(%rsp),%ecx
  cmp    %eax,%ecx
  cmovl  %eax,%ecx
L540:
  lea    0x1(%rbx),%esi
  cmp    %esi,%r13d
  je     L420
  lea    0x0(%r13,%rsi,1),%eax
  mov    %r12,%rdi
  mov    %ecx,0xc(%rsp)
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %eax,%edx
  sar    %edx
  mov    %edx,0x8(%rsp)
  call   <maxRec>
  mov    0x8(%rsp),%edx
  mov    %r12,%rdi
  mov    %eax,%ebx
  lea    0x1(%rdx),%esi
  mov    %r13d,%edx
  call   <maxRec>
  mov    0xc(%rsp),%ecx
  cmp    %eax,%ebx
  cmovge %ebx,%eax
L422:
  cmp    %ecx,%eax
  cmovl  %ecx,%eax
L463:
  cmp    %r15d,%eax
  cmovl  %r15d,%eax
L180:
  cmp    %r14d,%eax
  cmovl  %r14d,%eax
  jmp    L483
  nopl   0x0(%rax,%rax,1)
L348:
  movslq %esi,%rsi
  mov    (%rdi,%rsi,4),%eax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L298:
  movslq %r14d,%rax
  mov    (%r12,%rax,4),%ecx
  jmp    L86
  nopl   0x0(%rax)
L551:
  movslq %r14d,%rax
  mov    (%rdi,%rax,4),%ecx
  jmp    L568
  nopl   0x0(%rax,%rax,1)
L167:
  movslq %r15d,%rax
  add    $0x1,%r15d
  mov    (%r12,%rax,4),%r14d
  cmp    %r15d,%r13d
  jne    L407
L391:
  mov    (%r12,%r13,4),%eax
  jmp    L180
  nopw   0x0(%rax,%rax,1)
L113:
  movslq %r15d,%rax
  add    $0x1,%r15d
  mov    (%rdi,%rax,4),%r14d
  cmp    %r15d,%ebx
  jne    L127
L153:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%ebp
  jmp    L329
L222:
  movslq %ecx,%rax
  mov    (%r12,%rax,4),%r15d
  jmp    L198
  nopl   0x0(%rax)
L38:
  movslq %r15d,%rax
  mov    (%r12,%rax,4),%r14d
  jmp    L65
  nopl   0x0(%rax)
L81:
  movslq %ecx,%rax
  mov    (%r12,%rax,4),%r15d
  jmp    L248
  nopl   0x0(%rax)
L545:
  movslq %r15d,%rax
  mov    (%r12,%rax,4),%r14d
  jmp    L487
  nopl   0x0(%rax)
L475:
  mov    (%r12,%r13,4),%eax
  jmp    L463
  nopl   0x0(%rax)
L144:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%ebp
  jmp    L17
  nopl   0x0(%rax)
L446:
  movslq %ecx,%rax
  mov    (%r12,%rax,4),%eax
  jmp    L493
  nopl   0x0(%rax)
L179:
  movslq %ecx,%rax
  mov    (%r12,%rax,4),%eax
  jmp    L5
  nopl   0x0(%rax)
L3:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%ebp
  jmp    L266
  nopl   0x0(%rax)
L297:
  movslq %ebp,%rax
  mov    (%r12,%rax,4),%ecx
  jmp    L546
  nopl   0x0(%rax)
L122:
  movslq %r15d,%rax
  mov    (%r12,%rax,4),%r14d
  jmp    L589
  nopl   0x0(%rax)
L547:
  movslq %r15d,%rax
  mov    (%r12,%rax,4),%r14d
  jmp    L539
  nopl   0x0(%rax)
L420:
  mov    (%r12,%r13,4),%eax
  jmp    L422
  nopl   0x0(%rax)
L452:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%ecx
  jmp    L540
  nopl   0x0(%rax)
L469:
  movslq %ebp,%rax
  mov    (%r12,%rax,4),%r15d
  jmp    L482
  nopl   0x0(%rax)
L609:
  movslq %ebp,%rax
  mov    (%r12,%rax,4),%r8d
  jmp    L330
  nopl   0x0(%rax)
L182:
  movslq %r14d,%rax
  mov    (%r12,%rax,4),%ecx
  jmp    L409
  nopl   0x0(%rax)
L455:
  movslq %ebp,%rax
  mov    (%rdi,%rax,4),%r8d
  jmp    L262
  nopl   0x0(%rax)
L24:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%r15d
  jmp    L318
  nopl   0x0(%rax)
L183:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%r8d
  jmp    L312
  nopl   0x0(%rax)
L501:
  movslq %r14d,%rax
  mov    (%r12,%rax,4),%ecx
  jmp    L226
  nopl   0x0(%rax)
L473:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%r8d
  jmp    L216
```

assistant: ```c
int maxRec(int a[], int i, int j) {
  if (i == j)
    return a[i];
  int left = maxRec(a, i, (i + j) / 2);
  int right = maxRec(a, (i + j) / 2 + 1, j);
  return (left > right) ? left : right;
}
```