user: What would the C source look like for the assembly code provided here?

```asm
<__cvmx_spi4000_configure_mac>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  mov    $0x3ff,%edx
  mov    $0x505,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x14(%rbp),%eax
  mov    $0x3ff,%edx
  mov    $0x620,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x14(%rbp),%eax
  mov    $0x3ff,%edx
  mov    $0x59e,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x14(%rbp),%eax
  mov    $0x0,%edx
  mov    $0x505,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x14(%rbp),%eax
  mov    $0x0,%edx
  mov    $0x500,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  movl   $0x0,-0x8(%rbp)
  jmp    L27
L4:
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  or     $0x10,%eax
  mov    %eax,%ecx
  mov    -0x14(%rbp),%eax
  mov    $0x3,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x4(%rbp),%eax
  or     $0xf,%eax
  mov    %eax,%ecx
  mov    -0x14(%rbp),%eax
  mov    $0x3fff,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x4(%rbp),%ecx
  mov    -0x14(%rbp),%eax
  mov    $0x0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x4(%rbp),%eax
  or     $0x1,%eax
  mov    %eax,%ecx
  mov    -0x14(%rbp),%eax
  mov    $0x0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x4(%rbp),%eax
  or     $0x12,%eax
  mov    %eax,%ecx
  mov    -0x14(%rbp),%eax
  mov    $0x7,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x4(%rbp),%eax
  or     $0x15,%eax
  mov    %eax,%ecx
  mov    -0x14(%rbp),%eax
  mov    $0x1,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x4(%rbp),%eax
  or     $0x18,%eax
  mov    %eax,%ecx
  mov    -0x14(%rbp),%eax
  mov    $0x11cd,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x4(%rbp),%eax
  or     $0x19,%eax
  mov    %eax,%ecx
  mov    -0x14(%rbp),%eax
  mov    $0x0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  addl   $0x1,-0x8(%rbp)
L27:
  cmpl   $0x9,-0x8(%rbp)
  jle    L4
  mov    -0x14(%rbp),%eax
  mov    $0x3ff,%edx
  mov    $0x59f,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  movl   $0x0,-0x8(%rbp)
  jmp    L5
L0:
  mov    -0x8(%rbp),%eax
  lea    0x600(%rax),%ecx
  mov    -0x14(%rbp),%eax
  mov    $0x900,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x8(%rbp),%eax
  lea    0x60a(%rax),%ecx
  mov    -0x14(%rbp),%eax
  mov    $0x800,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x8(%rbp),%eax
  lea    0x614(%rax),%ecx
  mov    -0x14(%rbp),%eax
  mov    $0x380,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  addl   $0x1,-0x8(%rbp)
L5:
  cmpl   $0x9,-0x8(%rbp)
  jle    L0
  mov    -0x14(%rbp),%eax
  mov    $0x0,%edx
  mov    $0x59e,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x14(%rbp),%eax
  mov    $0x0,%edx
  mov    $0x620,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  mov    -0x14(%rbp),%eax
  mov    $0x3ff,%edx
  mov    $0x500,%esi
  mov    %eax,%edi
  call   <__cvmx_spi4000_write@plt>
  nop
  leave
  ret
```

assistant: ```c
void __cvmx_spi4000_configure_mac(int interface) {
  int port;
  __cvmx_spi4000_write(interface, 0x0505, 0x3ff);
  __cvmx_spi4000_write(interface, 0x0620, 0x3ff);
  __cvmx_spi4000_write(interface, 0x059e, 0x3ff);
  __cvmx_spi4000_write(interface, 0x0505, 0x0);
  __cvmx_spi4000_write(interface, 0x0500, 0x0);
  for (port = 0; port < 10; port++) {
    int port_offset = port << 7;
    __cvmx_spi4000_write(interface, port_offset | 0x0010, 0x3);
    __cvmx_spi4000_write(interface, port_offset | 0x000f, 0x3fff);
    __cvmx_spi4000_write(interface, port_offset | 0x0000, 0x0000);
    __cvmx_spi4000_write(interface, port_offset | 0x0001, 0x0000);
    if (0)
      __cvmx_spi4000_write(interface, port_offset | 0x0012, 0);
    else
      __cvmx_spi4000_write(interface, port_offset | 0x0012, 0x7);
    __cvmx_spi4000_write(interface, port_offset | 0x0015, 0x1);
    __cvmx_spi4000_write(interface, port_offset | 0x0018, 0x11cd);
    __cvmx_spi4000_write(interface, port_offset | 0x0019, 0x00);
  }
  __cvmx_spi4000_write(interface, 0x059f, 0x03ff);
  for (port = 0; port < 10; port++) {
    __cvmx_spi4000_write(interface, port + 0x0600, 0x0900);
    __cvmx_spi4000_write(interface, port + 0x060a, 0x0800);
    __cvmx_spi4000_write(interface, port + 0x0614, 0x0380);
  }
  __cvmx_spi4000_write(interface, 0x059e, 0x0);
  __cvmx_spi4000_write(interface, 0x0620, 0x0);
  __cvmx_spi4000_write(interface, 0x0500, 0x03ff);
}
```