user: Converte this assembly snippet into its equivalent C code:

```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     L422
  lea    (%rsi,%r13,1),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  cmp    %esi,%ebx
  je     L17
  lea    (%rbx,%rsi,1),%eax
  mov    %eax,%r15d
  shr    $0x1f,%r15d
  add    %eax,%r15d
  sar    %r15d
  cmp    %r15d,%esi
  je     L277
  lea    (%rsi,%r15,1),%eax
  mov    %eax,%r14d
  shr    $0x1f,%r14d
  add    %eax,%r14d
  sar    %r14d
  cmp    %r14d,%esi
  je     L356
  lea    (%rsi,%r14,1),%eax
  mov    %eax,%ebp
  shr    $0x1f,%ebp
  add    %eax,%ebp
  sar    %ebp
  cmp    %ebp,%esi
  je     L466
  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
L163:
  lea    0x1(%rbp),%esi
  cmp    %esi,%r14d
  je     L507
  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
L3:
  cmp    %r8d,%ecx
  cmovl  %r8d,%ecx
L295:
  lea    0x1(%r14),%esi
  cmp    %esi,%r15d
  je     L220
  lea    (%r15,%rsi,1),%eax
  mov    %eax,%ebp
  shr    $0x1f,%ebp
  add    %eax,%ebp
  sar    %ebp
  cmp    %ebp,%esi
  je     L469
  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
L49:
  lea    0x1(%rbp),%esi
  cmp    %esi,%r15d
  je     L560
  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
L199:
  cmp    %r8d,%r14d
  cmovl  %r8d,%r14d
L550:
  cmp    %ecx,%r14d
  cmovl  %ecx,%r14d
  add    $0x1,%r15d
  cmp    %r15d,%ebx
  je     L565
L457:
  lea    (%rbx,%r15,1),%eax
  mov    %eax,%esi
  shr    $0x1f,%esi
  add    %eax,%esi
  mov    %esi,%ecx
  sar    %ecx
  cmp    %ecx,%r15d
  je     L345
  lea    (%r15,%rcx,1),%eax
  mov    %eax,%ebp
  shr    $0x1f,%ebp
  add    %eax,%ebp
  sar    %ebp
  cmp    %ebp,%r15d
  je     L13
  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
L311:
  lea    0x1(%rbp),%esi
  cmp    %esi,%ecx
  je     L425
  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
L400:
  cmp    %r15d,%eax
  cmovge %eax,%r15d
L306:
  lea    0x1(%rcx),%esi
  cmp    %esi,%ebx
  je     L572
  lea    (%rbx,%rsi,1),%eax
  mov    %eax,%ebp
  shr    $0x1f,%ebp
  add    %eax,%ebp
  sar    %ebp
  cmp    %ebp,%esi
  je     L468
  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
L104:
  lea    0x1(%rbp),%esi
  cmp    %esi,%ebx
  je     L260
  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
L281:
  cmp    %ecx,%ebp
  cmovl  %ecx,%ebp
L63:
  cmp    %r15d,%ebp
  cmovl  %r15d,%ebp
L70:
  cmp    %r14d,%ebp
  lea    0x1(%rbx),%esi
  cmovl  %r14d,%ebp
  cmp    %r13d,%esi
  jne    L307
L227:
  mov    (%r12,%r13,4),%eax
L184:
  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)
L17:
  movslq %ebx,%rax
  lea    0x1(%rbx),%esi
  mov    (%rdi,%rax,4),%ebp
  cmp    %r13d,%esi
  je     L227
L307:
  lea    (%rsi,%r13,1),%eax
  mov    %eax,%r15d
  shr    $0x1f,%r15d
  add    %eax,%r15d
  sar    %r15d
  cmp    %r15d,%esi
  je     L364
  lea    (%rsi,%r15,1),%eax
  mov    %eax,%r14d
  shr    $0x1f,%r14d
  add    %eax,%r14d
  sar    %r14d
  cmp    %r14d,%esi
  je     L114
  lea    (%rsi,%r14,1),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  cmp    %ebx,%esi
  je     L286
  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
L563:
  lea    0x1(%rbx),%esi
  cmp    %esi,%r14d
  je     L354
  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
L185:
  cmp    %r8d,%ecx
  cmovl  %r8d,%ecx
L319:
  lea    0x1(%r14),%esi
  cmp    %esi,%r15d
  je     L60
  lea    (%r15,%rsi,1),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  cmp    %ebx,%esi
  je     L397
  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
L42:
  lea    0x1(%rbx),%esi
  cmp    %esi,%r15d
  je     L123
  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
L368:
  cmp    %r8d,%r14d
  cmovl  %r8d,%r14d
L297:
  cmp    %ecx,%r14d
  cmovl  %ecx,%r14d
  add    $0x1,%r15d
  cmp    %r15d,%r13d
  je     L162
L86:
  lea    0x0(%r13,%r15,1),%eax
  mov    %eax,%esi
  shr    $0x1f,%esi
  add    %eax,%esi
  mov    %esi,%ecx
  sar    %ecx
  cmp    %ecx,%r15d
  je     L203
  lea    (%r15,%rcx,1),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  cmp    %ebx,%r15d
  je     L602
  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
L540:
  lea    0x1(%rbx),%esi
  cmp    %esi,%ecx
  je     L379
  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
L225:
  cmp    %r15d,%eax
  cmovge %eax,%r15d
L255:
  lea    0x1(%rcx),%esi
  cmp    %esi,%r13d
  je     L6
  lea    0x0(%r13,%rsi,1),%eax
  mov    %eax,%ebx
  shr    $0x1f,%ebx
  add    %eax,%ebx
  sar    %ebx
  cmp    %ebx,%esi
  je     L488
  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
L413:
  lea    0x1(%rbx),%esi
  cmp    %esi,%r13d
  je     L170
  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
L340:
  cmp    %ecx,%eax
  cmovl  %ecx,%eax
L194:
  cmp    %r15d,%eax
  cmovl  %r15d,%eax
L412:
  cmp    %r14d,%eax
  cmovl  %r14d,%eax
  jmp    L184
  nopl   0x0(%rax,%rax,1)
L422:
  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)
L114:
  movslq %r14d,%rax
  mov    (%r12,%rax,4),%ecx
  jmp    L319
  nopl   0x0(%rax)
L356:
  movslq %r14d,%rax
  mov    (%rdi,%rax,4),%ecx
  jmp    L295
  nopl   0x0(%rax,%rax,1)
L364:
  movslq %r15d,%rax
  add    $0x1,%r15d
  mov    (%r12,%rax,4),%r14d
  cmp    %r15d,%r13d
  jne    L86
L162:
  mov    (%r12,%r13,4),%eax
  jmp    L412
  nopw   0x0(%rax,%rax,1)
L277:
  movslq %r15d,%rax
  add    $0x1,%r15d
  mov    (%rdi,%rax,4),%r14d
  cmp    %r15d,%ebx
  jne    L457
L565:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%ebp
  jmp    L70
L203:
  movslq %ecx,%rax
  mov    (%r12,%rax,4),%r15d
  jmp    L255
  nopl   0x0(%rax)
L60:
  movslq %r15d,%rax
  mov    (%r12,%rax,4),%r14d
  jmp    L297
  nopl   0x0(%rax)
L345:
  movslq %ecx,%rax
  mov    (%r12,%rax,4),%r15d
  jmp    L306
  nopl   0x0(%rax)
L220:
  movslq %r15d,%rax
  mov    (%r12,%rax,4),%r14d
  jmp    L550
  nopl   0x0(%rax)
L6:
  mov    (%r12,%r13,4),%eax
  jmp    L194
  nopl   0x0(%rax)
L572:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%ebp
  jmp    L63
  nopl   0x0(%rax)
L379:
  movslq %ecx,%rax
  mov    (%r12,%rax,4),%eax
  jmp    L225
  nopl   0x0(%rax)
L425:
  movslq %ecx,%rax
  mov    (%r12,%rax,4),%eax
  jmp    L400
  nopl   0x0(%rax)
L260:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%ebp
  jmp    L281
  nopl   0x0(%rax)
L468:
  movslq %ebp,%rax
  mov    (%r12,%rax,4),%ecx
  jmp    L104
  nopl   0x0(%rax)
L123:
  movslq %r15d,%rax
  mov    (%r12,%rax,4),%r14d
  jmp    L368
  nopl   0x0(%rax)
L560:
  movslq %r15d,%rax
  mov    (%r12,%rax,4),%r14d
  jmp    L199
  nopl   0x0(%rax)
L170:
  mov    (%r12,%r13,4),%eax
  jmp    L340
  nopl   0x0(%rax)
L488:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%ecx
  jmp    L413
  nopl   0x0(%rax)
L13:
  movslq %ebp,%rax
  mov    (%r12,%rax,4),%r15d
  jmp    L311
  nopl   0x0(%rax)
L469:
  movslq %ebp,%rax
  mov    (%r12,%rax,4),%r8d
  jmp    L49
  nopl   0x0(%rax)
L507:
  movslq %r14d,%rax
  mov    (%r12,%rax,4),%ecx
  jmp    L3
  nopl   0x0(%rax)
L466:
  movslq %ebp,%rax
  mov    (%rdi,%rax,4),%r8d
  jmp    L163
  nopl   0x0(%rax)
L602:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%r15d
  jmp    L540
  nopl   0x0(%rax)
L397:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%r8d
  jmp    L42
  nopl   0x0(%rax)
L354:
  movslq %r14d,%rax
  mov    (%r12,%rax,4),%ecx
  jmp    L185
  nopl   0x0(%rax)
L286:
  movslq %ebx,%rax
  mov    (%r12,%rax,4),%r8d
  jmp    L563
```

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;
}
```