user: Translate the below assembly code into C programming language:

```asm
<create_color_palette>:
  endbr64
  mov    %rdi,%rsi
  movb   $0xa,(%rdi)
  movb   $0x5,0x1(%rdi)
  movb   $0x64,0x2(%rdi)
  lea    0x3(%rdi),%rdx
  mov    $0x6,%eax
  mov    $0x69,%edi
L23:
  lea    (%rax,%rax,1),%ecx
  mov    %cl,(%rdx)
  mov    %al,0x1(%rdx)
  mov    %edi,%ecx
  sub    %eax,%ecx
  mov    %cl,0x2(%rdx)
  add    $0x3,%rdx
  add    $0x1,%eax
  cmp    $0x69,%al
  jne    L23
  movb   $0xc8,0x12c(%rsi)
  movb   $0x32,0x12d(%rsi)
  movb   $0x19,0x12e(%rsi)
  lea    0x12f(%rsi),%rdx
  mov    $0x1b,%eax
L20:
  movb   $0xc8,(%rdx)
  lea    0x19(%rax),%ecx
  mov    %cl,0x1(%rdx)
  mov    %al,0x2(%rdx)
  add    $0x3,%rdx
  add    $0x2,%eax
  cmp    $0xe1,%al
  jne    L20
  movb   $0xd7,0x258(%rsi)
  movb   $0xc6,0x259(%rsi)
  movb   $0x96,0x25a(%rsi)
  lea    0x25b(%rsi),%rax
  mov    %rax,%rcx
  mov    $0x12,%edx
L21:
  movb   $0xd8,(%rcx)
  mov    %dl,0x1(%rcx)
  lea    -0x3(%rdx),%edi
  mov    %dil,0x2(%rcx)
  add    $0x3,%rcx
  sub    $0x1,%edx
  cmp    $0x4b,%dl
  jne    L21
  mov    $0xf,%edx
  mov    $0xfffffff2,%edi
L55:
  mov    %dl,(%rax)
  movb   $0x14,0x1(%rax)
  mov    %edi,%ecx
  sub    %edx,%ecx
  mov    %cl,0x2(%rax)
  sub    $0x1,%edx
  add    $0x3,%rax
  cmp    $0x48,%dl
  jne    L55
  lea    0x4b0(%rsi),%rdx
  mov    $0xffffffaa,%eax
  mov    $0x19,%edi
L12:
  mov    %al,(%rdx)
  lea    0xe(%rax),%ecx
  mov    %cl,0x1(%rdx)
  mov    %edi,%ecx
  sub    %eax,%ecx
  mov    %cl,0x2(%rdx)
  add    $0x1,%eax
  add    $0x3,%rdx
  cmp    $0x72,%al
  jne    L12
  lea    0x708(%rsi),%rdx
  mov    $0x71,%eax
  mov    $0xfffffffb,%edi
L8:
  mov    %al,(%rdx)
  lea    0x1d(%rax),%ecx
  mov    %cl,0x1(%rdx)
  mov    %edi,%ecx
  sub    %eax,%ecx
  mov    %cl,0x2(%rdx)
  sub    $0x1,%eax
  add    $0x3,%rdx
  cmp    $0xa9,%al
  jne    L8
  lea    0x960(%rsi),%rdx
  mov    $0x320,%eax
L32:
  mov    %al,(%rdx)
  lea    0x1b(%rax),%ecx
  mov    %cl,0x1(%rdx)
  movb   $0xbc,0x2(%rdx)
  add    $0x1,%eax
  add    $0x3,%rdx
  cmp    $0x3ff,%eax
  jne    L32
  movb   $0x0,0xbfd(%rsi)
  movb   $0x0,0xbfe(%rsi)
  movb   $0x0,0xbff(%rsi)
  mov    $0x0,%eax
  ret
```

assistant: ```c
int create_color_palette(unsigned char palette[][3]) {
  palette[0][0] = 10;
  palette[0][1] = 5;
  palette[0][2] = 100;
  int a = 10;
  int b = 5;
  int c = 100;
  int q = 1;
  for (int p = 1; p < 100; p++) {
    palette[p][0] = (a + 2 * q);
    palette[p][1] = (b + 1 * q);
    palette[p][2] = (c - 1 * q);
    q++;
  }
  palette[100][0] = 200;
  palette[100][1] = 50;
  palette[100][2] = 25;
  int d = 200;
  int e = 50;
  int f = 25;
  q = 1;
  for (int p = 101; p < 200; p++) {
    palette[p][0] = d;
    palette[p][1] = (e + 2 * q);
    palette[p][2] = (f + 2 * q);
    q++;
  }
  palette[200][0] = 215;
  palette[200][1] = 198;
  palette[200][2] = 150;
  for (int p = 201; p < 400; p++) {
    palette[p][0] = 216;
    palette[p][1] = (199 - p + 20);
    palette[p][2] = (216 - p);
  }
  for (int p = 201; p < 400; p++) {
    palette[p][0] = (216 - p);
    palette[p][1] = 20;
    palette[p][2] = (16 + p + 10);
  }
  for (int p = 400; p < 600; p++) {
    palette[p][0] = (16 + p + 10);
    palette[p][1] = (20 + p + 20);
    palette[p][2] = (255 - p);
  }
  for (int p = 600; p < 800; p++) {
    palette[p][0] = (201 - p);
    palette[p][1] = (230 - p);
    palette[p][2] = (50 + p);
  }
  for (int p = 800; p < 1023; p++) {
    palette[p][0] = (0 + p);
    palette[p][1] = (27 + p);
    palette[p][2] = 188;
  }
  palette[1023][0] = 0;
  palette[1023][1] = 0;
  palette[1023][2] = 0;
  return 0;
}
```