user: 提供的汇编代码用C语言表示会是什么样子：

```asm
<generate_font_style>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  movq   $0x0,-0x8(%rbp)
  jmp    L70
L45:
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L178
  mov    -0x18(%rbp),%rax
  movl   $0x0,(%rax)
  jmp    L121
L178:
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L163
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  or     $0x8,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L121
L163:
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x4,%eax
  jne    L77
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  or     $0x1,%ah
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L121
L77:
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x5,%eax
  jne    L32
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  or     $0x2,%ah
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L121
L32:
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x1d,%eax
  jbe    L174
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x25,%eax
  ja     L174
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x1e,%eax
  jne    L78
  movl   $0x7,-0xc(%rbp)
  jmp    L81
L78:
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x25,%eax
  jne    L6
  movl   $0x0,-0xc(%rbp)
  jmp    L81
L6:
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  sub    $0x1e,%eax
  mov    %eax,-0xc(%rbp)
L81:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  and    $0xfffffff8,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  and    $0x7,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L121
L174:
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x27,%eax
  jbe    L121
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x2f,%eax
  ja     L121
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  sub    $0x28,%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  and    $0xffffff8f,%eax
  mov    %eax,%edx
  mov    -0xc(%rbp),%eax
  shl    $0x4,%eax
  and    $0x70,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
L121:
  addq   $0x1,-0x8(%rbp)
L70:
  mov    -0x8(%rbp),%rax
  cmp    -0x28(%rbp),%rax
  jb     L45
  nop
  nop
  pop    %rbp
  ret
```

assistant: ```c
void generate_font_style(unsigned int *style, unsigned int *ansi_val, size_t len) {
  size_t i;
  unsigned int color;
  for (i = 0; i < len; i++) {
    if (ansi_val[i] == 0)
      (*style = 0);
    else if (ansi_val[i] == 1)
      (*style |= 0x08);
    else if (ansi_val[i] == 4)
      (*style |= 0x0100);
    else if (ansi_val[i] == 5)
      (*style |= 0x0200);
    else if (ansi_val[i] >= 30 && ansi_val[i] <= 37) {
      if (ansi_val[i] == 30)
        color = 7;
      else if (ansi_val[i] == 37)
        color = 0;
      else
        color = ansi_val[i] - 30;
      (*style = (*style & ~0x07) | (color & 0x07));
    } else if (ansi_val[i] >= 40 && ansi_val[i] <= 47) {
      color = ansi_val[i] - 40;
      (*style = (*style & ~0x70) | ((color & 0x07) << 4));
    }
  }
}
```