user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<main>:
  endbr64
  push   %r14
  push   %r13
  mov    %rsi,%r13
  push   %r12
  mov    %edi,%r12d
  xor    %edi,%edi
  push   %rbp
  push   %rbx
  mov    $0x1,%ebx
  sub    $0x30,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rbp
  call   <time@plt>
  mov    %eax,%edi
  call   <srand@plt>
L11:
  cmp    %ebx,%r12d
  jle    L73
  mov    0x0(%r13,%rbx,8),%rdi
  xor    %edx,%edx
  xor    %esi,%esi
  call   <strtoll@plt>
L19:
  mov    %eax,-0x4(%rbp,%rbx,4)
  add    $0x1,%rbx
  cmp    $0x5,%rbx
  jne    L11
  lea    0x10(%rsp),%r12
  mov    %rbp,%rdi
  mov    %rbp,%rbx
  mov    %r12,%rsi
  lea    D51(%rip),%rbp
  lea    D17(%rip),%r14
  call   <convert_uint32_float@plt>
  lea    D34(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  lea    0x1(%rax),%r13d
  test   %eax,%eax
  jne    L27
L58:
  mov    (%rbx),%esi
  mov    %r14,%rdi
  xor    %eax,%eax
  call   <printf@plt>
L92:
  mov    %r13d,%eax
  add    $0x4,%rbx
  lea    0x1(%rax),%r13d
  test   %eax,%eax
  je     L58
L27:
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    (%rbx),%esi
  xor    %eax,%eax
  mov    %r14,%rdi
  call   <printf@plt>
  cmp    $0x4,%r13d
  jne    L92
  lea    D31(%rip),%r13
  mov    %r12,%rbx
  lea    D18(%rip),%r14
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D44(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  lea    0x1(%rax),%r12d
  test   %eax,%eax
  jne    L36
L79:
  pxor   %xmm0,%xmm0
  mov    %r14,%rdi
  mov    $0x1,%eax
  cvtss2sd (%rbx),%xmm0
  call   <printf@plt>
L84:
  mov    %r12d,%eax
  add    $0x4,%rbx
  lea    0x1(%rax),%r12d
  test   %eax,%eax
  je     L79
L36:
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  pxor   %xmm0,%xmm0
  mov    %r14,%rdi
  mov    $0x1,%eax
  cvtss2sd (%rbx),%xmm0
  call   <printf@plt>
  cmp    $0x4,%r12d
  jne    L84
  mov    %r13,%rdi
  call   <puts@plt>
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L57
  add    $0x30,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopw   0x0(%rax,%rax,1)
L73:
  xor    %eax,%eax
  call   <rand@plt>
  jmp    L19
L57:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: label: D51
data_type: string
name: disassemble_data
arguments: label: D17
data_type: string
name: disassemble_data
arguments: label: D34
data_type: string
name: disassemble_data
arguments: label: D31
data_type: string
name: disassemble_data
arguments: label: D18
data_type: string
name: disassemble_data
arguments: label: D44
data_type: string

tool: D51: , 

tool: D17: %u

tool: D34: uint32_t[4] = {

tool: D31: }

tool: D18: %0.3f

tool: D44: float[4] = {

assistant: ```c
int main(int argc, char *argv[]) {
  uint32_t v_in[4];
  float v_out[4];
  int i;
  srand(time(NULL));
  for (i = 1; i <= 4; i++) {
    if (i < argc)
      v_in[i - 1] = strtoll(argv[i], NULL, 0);
    else
      v_in[i - 1] = rand();
  }
  convert_uint32_float(v_in, v_out);
  printf("uint32_t[4] = {");
  for (unsigned i = 0; i < 4; i++) {
    if (i > 0) {
      printf(", ");
    }
    printf("%u", v_in[i]);
  }
  printf("}\n");
  printf("float[4] = {");
  for (unsigned i = 0; i < 4; i++) {
    if (i > 0) {
      printf(", ");
    }
    printf("%0.3f", v_out[i]);
  }
  printf("}\n");
  return 0;
}
```