user: 请从给定的汇编指令推导出C源代码：

```asm
<gen_path_pixels>:
  endbr64
  push   %rbp
  mov    $0x131f328,%edi
  lea    D126(%rip),%rbp
  push   %rbx
  mov    $0x100,%ebx
  sub    $0x28,%rsp
  call   <srandom@plt>
  mov    $0xc00,%esi
  lea    D99(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x3000,%esi
  lea    D66(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  cs nopw 0x0(%rax,%rax,1)
L6:
  xor    %eax,%eax
  call   <rand_double@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x18(%rsp)
  call   <rand_double@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x10(%rsp)
  call   <rand_double@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <rand_double@plt>
  movsd  0x18(%rsp),%xmm3
  mov    %rbp,%rdi
  mov    $0x4,%eax
  movsd  0x10(%rsp),%xmm2
  movsd  0x8(%rsp),%xmm1
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L6
  mov    $0x10,%ebx
  nopw   0x0(%rax,%rax,1)
L17:
  mov    D31(%rip),%rax
  pxor   %xmm1,%xmm1
  movq   %rax,%xmm0
  call   <rand_range_double@plt>
  mov    D31(%rip),%rax
  pxor   %xmm1,%xmm1
  movsd  %xmm0,0x18(%rsp)
  movq   %rax,%xmm0
  call   <rand_range_double@plt>
  mov    D31(%rip),%rax
  pxor   %xmm1,%xmm1
  movsd  %xmm0,0x10(%rsp)
  movq   %rax,%xmm0
  call   <rand_range_double@plt>
  mov    D31(%rip),%rax
  pxor   %xmm1,%xmm1
  movsd  %xmm0,0x8(%rsp)
  movq   %rax,%xmm0
  call   <rand_range_double@plt>
  movsd  0x8(%rsp),%xmm4
  mov    %rbp,%rdi
  mov    $0x4,%eax
  movsd  0x18(%rsp),%xmm3
  movsd  0x10(%rsp),%xmm2
  movapd %xmm4,%xmm1
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L17
  mov    $0x10,%ebx
  nopw   0x0(%rax,%rax,1)
L3:
  mov    D84(%rip),%rax
  movq   %rax,%xmm1
  mov    D47(%rip),%rax
  movq   %rax,%xmm0
  call   <rand_range_double@plt>
  mov    D84(%rip),%rax
  movsd  %xmm0,0x18(%rsp)
  movq   %rax,%xmm1
  mov    D47(%rip),%rax
  movq   %rax,%xmm0
  call   <rand_range_double@plt>
  mov    D84(%rip),%rax
  movsd  %xmm0,0x10(%rsp)
  movq   %rax,%xmm1
  mov    D47(%rip),%rax
  movq   %rax,%xmm0
  call   <rand_range_double@plt>
  mov    D84(%rip),%rax
  movsd  %xmm0,0x8(%rsp)
  movq   %rax,%xmm1
  mov    D47(%rip),%rax
  movq   %rax,%xmm0
  call   <rand_range_double@plt>
  movsd  0x8(%rsp),%xmm4
  mov    %rbp,%rdi
  mov    $0x4,%eax
  movsd  0x18(%rsp),%xmm3
  movsd  0x10(%rsp),%xmm2
  movapd %xmm4,%xmm1
  call   <printf@plt>
  sub    $0x1,%ebx
  jne    L3
  pxor   %xmm0,%xmm0
  lea    D112(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  lea    D110(%rip),%rdi
  call   <puts@plt>
  mov    $0x80,%esi
  lea    D13(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D174(%rip),%rdi
  call   <puts@plt>
  lea    D208(%rip),%rdi
  mov    $0x100,%esi
  xor    %eax,%eax
  call   <printf@plt>
  add    $0x28,%rsp
  lea    D133(%rip),%rdi
  pop    %rbx
  pop    %rbp
  jmp    10a0 <puts@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D126
data_type: string
name: disassemble_data
arguments: tag: D99
data_type: string
name: disassemble_data
arguments: tag: D66
data_type: string
name: disassemble_data
arguments: tag: D31
data_type: f32[2]
name: disassemble_data
arguments: tag: D84
data_type: f64
name: disassemble_data
arguments: tag: D47
data_type: f64
name: disassemble_data
arguments: tag: D112
data_type: string
name: disassemble_data
arguments: tag: D110
data_type: string
name: disassemble_data
arguments: tag: D13
data_type: string
name: disassemble_data
arguments: tag: D174
data_type: string
name: disassemble_data
arguments: tag: D208
data_type: string
name: disassemble_data
arguments: tag: D133
data_type: string

tool: D126: %a, %a, %a, %a,


tool: D99: static const int babl_num_path_test_pixels = %d;



tool: D66: static const double babl_path_test_pixels[%d] = {


tool: {"D31": [0.0,-1.875]}

tool: D84: 2

tool: D47: 1

tool: D112: %a, /* The remaining values default to zero. */ 

tool: D110: };


tool: D13: static const int babl_num_conversion_test_pixels = %d;



tool: D174: static const double *babl_conversion_test_pixels = babl_path_test_pixels;


tool: D208: static const int babl_num_format_test_pixels = %d;



tool: D133: static const double *babl_format_test_pixels = babl_path_test_pixels;


assistant: ```c
void gen_path_pixels(void) {
  int i;
  srandom(20050728);
  printf("static const int babl_num_path_test_pixels = %d;\n\n", 3072);
  printf("static const double babl_path_test_pixels[%d] = {\n", 3072 * 4);
  for (i = 0; i < 256; i++) {
    printf("%a, %a, %a, %a,\n", rand_double(), rand_double(), rand_double(), rand_double());
  }
  for (i = 0; i < 16; i++) {
    printf("%a, %a, %a, %a,\n", rand_range_double(-1.0, 0.0), rand_range_double(-1.0, 0.0), rand_range_double(-1.0, 0.0), rand_range_double(-1.0, 0.0));
  }
  for (i = 0; i < 16; i++) {
    printf("%a, %a, %a, %a,\n", rand_range_double(1.0, 2.0), rand_range_double(1.0, 2.0), rand_range_double(1.0, 2.0), rand_range_double(1.0, 2.0));
  }
  printf("%a, /* The remaining values default to zero. */ ", 0.0);
  printf("};\n\n");
  printf("static const int babl_num_conversion_test_pixels = %d;\n\n", 128);
  printf("static const double *babl_conversion_test_pixels = babl_path_test_pixels;\n\n");
  printf("static const int babl_num_format_test_pixels = %d;\n\n", 256);
  printf("static const double *babl_format_test_pixels = babl_path_test_pixels;\n\n");
}
```