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

```asm
<print_ram_line>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  mov    %edi,%r13d
  mov    $0x8,%edi
  push   %r12
  mov    %esi,%r12d
  mov    $0x29,%esi
  push   %rbp
  mov    %ecx,%ebp
  push   %rbx
  sub    $0x18,%rsp
  mov    %edx,0x4(%rsp)
  lea    D79(%rip),%rdx
  movss  %xmm0,0x8(%rsp)
  call   <cprint@plt>
  movss  0x8(%rsp),%xmm0
  ucomiss D96(%rip),%xmm0
  jp     L121
  lea    D85(%rip),%rdx
  je     L29
L121:
  ucomiss D2(%rip),%xmm0
  jp     L71
  je     L109
L71:
  movss  D32(%rip),%xmm1
  xor    %r8d,%r8d
  cvttss2si %xmm0,%edx
  comiss %xmm0,%xmm1
  jbe    L34
  mov    $0x36,%esi
  mov    $0x1,%ecx
  mov    $0x8,%edi
  mov    $0x39,%ebx
  call   <dprint@plt>
  mov    $0x3a,%r15d
  mov    $0x38,%r9d
  movl   $0x3b,0xc(%rsp)
  mov    $0x37,%esi
  jmp    L44
  nopl   0x0(%rax)
L109:
  lea    D97(%rip),%rdx
L29:
  mov    $0x36,%esi
  mov    $0x8,%edi
  mov    $0x3b,%ebx
  mov    $0x3c,%r15d
  call   <cprint@plt>
  mov    $0x3a,%r9d
  mov    $0x39,%esi
  movl   $0x3d,0xc(%rsp)
L44:
  lea    D88(%rip),%r14
  mov    $0x8,%edi
  mov    %r9d,0x8(%rsp)
  mov    %r14,%rdx
  call   <cprint@plt>
  xor    %r8d,%r8d
  cmp    $0x9,%r13d
  mov    0x8(%rsp),%r9d
  jg     L103
  mov    $0x1,%ecx
  mov    %r13d,%edx
  mov    %r9d,%esi
  mov    $0x8,%edi
  call   <dprint@plt>
L114:
  mov    %r14,%rdx
  mov    %ebx,%esi
  mov    $0x8,%edi
  call   <cprint@plt>
  xor    %r8d,%r8d
  cmp    $0x9,%r12d
  jg     L110
  mov    $0x1,%ecx
  mov    %r12d,%edx
  mov    %r15d,%esi
  mov    $0x8,%edi
  call   <dprint@plt>
  add    $0x2,%ebx
L30:
  mov    %r14,%rdx
  mov    %ebx,%esi
  mov    $0x8,%edi
  call   <cprint@plt>
  mov    0x4(%rsp),%edx
  lea    0x1(%rbx),%esi
  xor    %r8d,%r8d
  cmp    $0x9,%edx
  jg     L105
  mov    $0x1,%ecx
  mov    $0x8,%edi
  call   <dprint@plt>
  lea    0x2(%rbx),%esi
  cmp    $0x3,%ebp
  je     L53
L152:
  jg     L185
  cmp    $0x1,%ebp
  je     L61
  cmp    $0x2,%ebp
  jne    L154
  lea    D33(%rip),%rdx
L8:
  add    $0x18,%rsp
  mov    $0x8,%edi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1070 <cprint@plt>
  nopl   0x0(%rax)
L185:
  lea    D82(%rip),%rdx
  cmp    $0x4,%ebp
  je     L8
L154:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L105:
  mov    $0x2,%ecx
  mov    $0x8,%edi
  call   <dprint@plt>
  lea    0x3(%rbx),%esi
  cmp    $0x3,%ebp
  jne    L152
L53:
  lea    D59(%rip),%rdx
  jmp    L8
L110:
  mov    $0x2,%ecx
  mov    %r12d,%edx
  mov    %r15d,%esi
  mov    $0x8,%edi
  call   <dprint@plt>
  add    $0x3,%ebx
  jmp    L30
  nopl   (%rax)
L103:
  mov    $0x2,%ecx
  mov    %r13d,%edx
  mov    %r9d,%esi
  mov    $0x8,%edi
  call   <dprint@plt>
  mov    %r15d,%ebx
  mov    0xc(%rsp),%r15d
  jmp    L114
  nopw   0x0(%rax,%rax,1)
L34:
  mov    $0x36,%esi
  mov    $0x2,%ecx
  mov    $0x8,%edi
  mov    $0x3a,%ebx
  call   <dprint@plt>
  mov    $0x3b,%r15d
  mov    $0x39,%r9d
  movl   $0x3c,0xc(%rsp)
  mov    $0x38,%esi
  jmp    L44
  nop
L61:
  lea    D68(%rip),%rdx
  jmp    L8
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D79
datatype: string
name: extract_symbolic_data
arguments: data_tag: D96
datatype: f32
name: extract_symbolic_data
arguments: data_tag: D85
datatype: string
name: extract_symbolic_data
arguments: data_tag: D2
datatype: f32
name: extract_symbolic_data
arguments: data_tag: D32
datatype: byte[4]
name: extract_symbolic_data
arguments: data_tag: D97
datatype: string
name: extract_symbolic_data
arguments: data_tag: D88
datatype: string
name: extract_symbolic_data
arguments: data_tag: D33
datatype: string
name: extract_symbolic_data
arguments: data_tag: D82
datatype: string
name: extract_symbolic_data
arguments: data_tag: D59
datatype: string
name: extract_symbolic_data
arguments: data_tag: D68
datatype: string

tool: D79: Timings: CAS                        

tool: D96: 1.5

tool: D85: 1.5

tool: D2: 2.5

tool: {"D32": [0x00,0x00,0x20,0x41]}

tool: D97: 2.5

tool: D88: -

tool: D33:  @ 128-bit Mode

tool: D82:  @ 256-bit Mode

tool: D59:  @ 192-bit Mode

tool: D68:  @ 64-bit Mode

assistant: ```c
void print_ram_line(float cas, int rcd, int rp, int ras, int chan) {
  int cur_col = 41;
  cprint(8, cur_col, "Timings: CAS                        ");
  cur_col += 13;
  if (cas == 1.5) {
    cprint(8, cur_col, "1.5");
    cur_col += 3;
  } else if (cas == 2.5) {
    cprint(8, cur_col, "2.5");
    cur_col += 3;
  } else if (cas < 10) {
    dprint(8, cur_col, cas, 1, 0);
    cur_col += 1;
  } else {
    dprint(8, cur_col, cas, 2, 0);
    cur_col += 2;
  }
  cprint(8, cur_col, "-");
  cur_col += 1;
  if (rcd < 10) {
    dprint(8, cur_col, rcd, 1, 0);
    cur_col += 1;
  } else {
    dprint(8, cur_col, rcd, 2, 0);
    cur_col += 2;
  }
  cprint(8, cur_col, "-");
  cur_col += 1;
  if (rp < 10) {
    dprint(8, cur_col, rp, 1, 0);
    cur_col += 1;
  } else {
    dprint(8, cur_col, rp, 2, 0);
    cur_col += 2;
  }
  cprint(8, cur_col, "-");
  cur_col += 1;
  if (ras < 10) {
    dprint(8, cur_col, ras, 1, 0);
    cur_col += 1;
  } else {
    dprint(8, cur_col, ras, 2, 0);
    cur_col += 2;
  }
  switch (chan) {
  case 0:
    break;
  case 1:
    cprint(8, cur_col, " @ 64-bit Mode");
    break;
  case 2:
    cprint(8, cur_col, " @ 128-bit Mode");
    break;
  case 3:
    cprint(8, cur_col, " @ 192-bit Mode");
    break;
  case 4:
    cprint(8, cur_col, " @ 256-bit Mode");
    break;
  }
}
```