user: Please show me the C implementation that matches the assembly code listed below:

```asm
<sort5_sorting_network_simple_swap>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x58(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovle %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x48(%rbp)
  mov    -0x58(%rbp),%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovge %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x44(%rbp)
  mov    -0x48(%rbp),%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%rax
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x1,%rax
  mov    -0x44(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovle %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x40(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovge %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x3,%rax
  mov    -0x40(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  mov    -0x3c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovle %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovge %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x2,%rax
  mov    -0x38(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  mov    -0x34(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovle %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovge %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x2,%rax
  mov    -0x30(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x3,%rax
  mov    -0x2c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovle %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x58(%rbp),%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovge %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x28(%rbp),%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%rax
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x3,%rax
  mov    -0x24(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovle %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x58(%rbp),%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovge %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    -0x58(%rbp),%rax
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x2,%rax
  mov    -0x1c(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovle %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovge %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x1,%rax
  mov    -0x18(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  mov    -0x14(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovle %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovge %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x1,%rax
  mov    -0x10(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x3,%rax
  mov    -0xc(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovle %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  cmovge %edx,%eax
  movsbl %al,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x58(%rbp),%rax
  add    $0x1,%rax
  mov    -0x8(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x2,%rax
  mov    -0x4(%rbp),%edx
  mov    %dl,(%rax)
  nop
  pop    %rbp
  ret
```

assistant: ```c
void sort5_sorting_network_simple_swap(char *d) {
  {
    const int a = (d[0] < d[1] ? d[0] : d[1]);
    const int b = (d[0] < d[1] ? d[1] : d[0]);
    d[0] = a;
    d[1] = b;
  };
  {
    const int a = (d[3] < d[4] ? d[3] : d[4]);
    const int b = (d[3] < d[4] ? d[4] : d[3]);
    d[3] = a;
    d[4] = b;
  };
  {
    const int a = (d[2] < d[4] ? d[2] : d[4]);
    const int b = (d[2] < d[4] ? d[4] : d[2]);
    d[2] = a;
    d[4] = b;
  };
  {
    const int a = (d[2] < d[3] ? d[2] : d[3]);
    const int b = (d[2] < d[3] ? d[3] : d[2]);
    d[2] = a;
    d[3] = b;
  };
  {
    const int a = (d[0] < d[3] ? d[0] : d[3]);
    const int b = (d[0] < d[3] ? d[3] : d[0]);
    d[0] = a;
    d[3] = b;
  };
  {
    const int a = (d[0] < d[2] ? d[0] : d[2]);
    const int b = (d[0] < d[2] ? d[2] : d[0]);
    d[0] = a;
    d[2] = b;
  };
  {
    const int a = (d[1] < d[4] ? d[1] : d[4]);
    const int b = (d[1] < d[4] ? d[4] : d[1]);
    d[1] = a;
    d[4] = b;
  };
  {
    const int a = (d[1] < d[3] ? d[1] : d[3]);
    const int b = (d[1] < d[3] ? d[3] : d[1]);
    d[1] = a;
    d[3] = b;
  };
  {
    const int a = (d[1] < d[2] ? d[1] : d[2]);
    const int b = (d[1] < d[2] ? d[2] : d[1]);
    d[1] = a;
    d[2] = b;
  };
}
```