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

```asm
<decBase>:
  endbr64
  push   %r15
  mov    %esi,%r15d
  movsbl %dil,%esi
  push   %r14
  lea    D87(%rip),%r14
  mov    %r15d,%edx
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edi,%ebx
  mov    %r14,%rdi
  sub    $0x88,%rsp
  movdqa D38(%rip),%xmm0
  mov    %fs:0x28,%rax
  mov    %rax,0x78(%rsp)
  xor    %eax,%eax
  movb   $0x0,0x10(%rsp)
  movaps %xmm0,(%rsp)
  call   <printf@plt>
  mov    %ebx,%eax
  cltd
  idiv   %r15d
  movslq %eax,%rbx
  movslq %edx,%rbp
  cmp    %ebx,%r15d
  jg     L77
  movdqa D38(%rip),%xmm1
  movsbl %bl,%esi
  mov    %r15d,%edx
  xor    %eax,%eax
  mov    %r14,%rdi
  movb   $0x0,0x30(%rsp)
  movaps %xmm1,0x20(%rsp)
  call   <printf@plt>
  mov    %ebx,%eax
  cltd
  idiv   %r15d
  movslq %eax,%rbx
  movslq %edx,%r12
  cmp    %ebx,%r15d
  jle    L26
  lea    D50(%rip),%r15
  movsbl 0x20(%rsp,%rbx,1),%esi
  xor    %eax,%eax
  mov    %r15,%rdi
  call   <printf@plt>
L45:
  movsbl 0x20(%rsp,%r12,1),%esi
  mov    %r15,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L87
  nopl   (%rax)
L77:
  lea    D50(%rip),%r15
  movsbl (%rsp,%rbx,1),%esi
  xor    %eax,%eax
  mov    %r15,%rdi
  call   <printf@plt>
L87:
  mov    0x78(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L40
  movsbl (%rsp,%rbp,1),%esi
  add    $0x88,%rsp
  mov    %r15,%rdi
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1070 <printf@plt>
  nopl   0x0(%rax,%rax,1)
L26:
  movdqa D38(%rip),%xmm2
  movsbl %bl,%esi
  mov    %r15d,%edx
  xor    %eax,%eax
  mov    %r14,%rdi
  movb   $0x0,0x50(%rsp)
  movaps %xmm2,0x40(%rsp)
  call   <printf@plt>
  mov    %ebx,%eax
  cltd
  idiv   %r15d
  movslq %eax,%rbx
  movslq %edx,%r13
  cmp    %ebx,%r15d
  jg     L9
  movdqa D38(%rip),%xmm3
  mov    %r15d,%edx
  mov    %r14,%rdi
  xor    %eax,%eax
  movsbl %bl,%esi
  movb   $0x0,0x70(%rsp)
  movaps %xmm3,0x60(%rsp)
  call   <printf@plt>
  mov    %ebx,%eax
  cltd
  idiv   %r15d
  movslq %edx,%r14
  cmp    %eax,%r15d
  jg     L62
  mov    %r15d,%esi
  mov    %eax,%edi
  lea    D50(%rip),%r15
  call   <decBase>
L79:
  movsbl 0x60(%rsp,%r14,1),%esi
  mov    %r15,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L85
  cs nopw 0x0(%rax,%rax,1)
L9:
  lea    D50(%rip),%r15
  movsbl 0x40(%rsp,%rbx,1),%esi
  xor    %eax,%eax
  mov    %r15,%rdi
  call   <printf@plt>
L85:
  movsbl 0x40(%rsp,%r13,1),%esi
  mov    %r15,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L45
  nopl   0x0(%rax,%rax,1)
L62:
  movslq %eax,%rbx
  lea    D50(%rip),%r15
  xor    %eax,%eax
  movsbl 0x60(%rsp,%rbx,1),%esi
  mov    %r15,%rdi
  call   <printf@plt>
  jmp    L79
L40:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: data_tag: D87
type_infered: string
name: disassemble_data
arguments: data_tag: D38
type_infered: byte[16]
name: disassemble_data
arguments: data_tag: D50
type_infered: string

tool: D87: El resultado de convertir %d a la base %d es:


tool: {"D38": [0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46]}

tool: D50: %c

assistant: ```c
void decBase(int num, int base) {
  char tablaConv[] = "0123456789ABCDEF";
  int resto;
  int cociente;
  printf("El resultado de convertir %d a la base %d es:\n", num, base);
  cociente = num / base;
  resto = num % base;
  if (cociente >= (base))
    decBase(cociente, base);
  else
    printf("%c", tablaConv[cociente]);
  printf("%c", tablaConv[resto]);
}
```