user: What would the C source look like for the assembly code provided here:

```asm
<random_walk>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %rsi,-0x30(%rbp)
  movl   $0x0,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  movl   $0x0,-0xc(%rbp)
  jmp    L95
L244:
  mov    $0x0,%eax
  call   <get_rn@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  comisd D97(%rip),%xmm0
  jbe    L1
  addl   $0x1,-0x14(%rbp)
  jmp    L173
L1:
  movsd  -0x8(%rbp),%xmm0
  comisd D37(%rip),%xmm0
  jbe    L191
  subl   $0x1,-0x14(%rbp)
  jmp    L173
L191:
  movsd  -0x8(%rbp),%xmm0
  comisd D62(%rip),%xmm0
  jbe    L210
  addl   $0x1,-0x10(%rbp)
  jmp    L173
L210:
  subl   $0x1,-0x10(%rbp)
L173:
  addl   $0x1,-0xc(%rbp)
L95:
  mov    -0xc(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L244
  cmpl   $0x0,-0x14(%rbp)
  jne    L282
  cmpl   $0x0,-0x10(%rbp)
  jne    L282
  mov    -0x30(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  D62(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x30(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  movsd  D62(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x30(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%rax
  add    $0x10,%rax
  movsd  D62(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x30(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  mov    -0x30(%rbp),%rax
  add    $0x18,%rax
  movsd  D62(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L48
L282:
  cmpl   $0x0,-0x14(%rbp)
  jne    L179
  cmpl   $0x0,-0x10(%rbp)
  js     L275
  mov    $0x8,%edx
  jmp    L302
L275:
  mov    $0x0,%edx
L302:
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  cmpl   $0x0,-0x10(%rbp)
  js     L8
  mov    $0x8,%edx
  jmp    L297
L8:
  mov    $0x0,%edx
L297:
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  D37(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  cmpl   $0x0,-0x10(%rbp)
  js     L306
  mov    $0x18,%edx
  jmp    L60
L306:
  mov    $0x10,%edx
L60:
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  cmpl   $0x0,-0x10(%rbp)
  js     L203
  mov    $0x18,%edx
  jmp    L168
L203:
  mov    $0x10,%edx
L168:
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  D37(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L48
L179:
  cmpl   $0x0,-0x10(%rbp)
  jne    L77
  cmpl   $0x0,-0x14(%rbp)
  js     L142
  mov    $0x10,%edx
  jmp    L13
L142:
  mov    $0x0,%edx
L13:
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  cmpl   $0x0,-0x14(%rbp)
  js     L283
  mov    $0x10,%edx
  jmp    L153
L283:
  mov    $0x0,%edx
L153:
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  D37(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  cmpl   $0x0,-0x14(%rbp)
  js     L21
  mov    $0x18,%edx
  jmp    L155
L21:
  mov    $0x8,%edx
L155:
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  cmpl   $0x0,-0x14(%rbp)
  js     L115
  mov    $0x18,%edx
  jmp    L308
L115:
  mov    $0x8,%edx
L308:
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  D37(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L48
L77:
  cmpl   $0x0,-0x14(%rbp)
  js     L301
  mov    $0x2,%edx
  jmp    L163
L301:
  mov    $0x0,%edx
L163:
  mov    -0x10(%rbp),%eax
  not    %eax
  shr    $0x1f,%eax
  movzbl %al,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  cmpl   $0x0,-0x14(%rbp)
  js     L236
  mov    $0x2,%edx
  jmp    L10
L236:
  mov    $0x0,%edx
L10:
  mov    -0x10(%rbp),%eax
  not    %eax
  shr    $0x1f,%eax
  movzbl %al,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movsd  D15(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L48:
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D97
type_guessed: f64[2]
name: retrieve_data
arguments: tag: D37
type_guessed: f64[2]
name: retrieve_data
arguments: tag: D62
type_guessed: f64[2]
name: retrieve_data
arguments: tag: D15
type_guessed: f64

tool: {"D97": [0.75,0.5]}

tool: {"D37": [0.5,0.25]}

tool: {"D62": [0.25,1.0]}

tool: D15: 1

assistant: ```c
void random_walk(int walk_length, double *quadrant) {
  int x, y, i, j;
  double rn;
  x = y = 0;
  for (i = 0; i < walk_length; i++) {
    rn = get_rn();
    if (rn > 0.75)
      x++;
    else if (rn > 0.5)
      x--;
    else if (rn > 0.25)
      y++;
    else
      y--;
  }
  if (x == 0 && y == 0) {
    quadrant[0] += 0.25;
    quadrant[1] += 0.25;
    quadrant[2] += 0.25;
    quadrant[3] += 0.25;
  } else if (x == 0) {
    quadrant[((y < 0) ? 0 : 1)] += 0.5;
    quadrant[2 + ((y < 0) ? 0 : 1)] += 0.5;
  } else if (y == 0) {
    quadrant[2 * ((x < 0) ? 0 : 1)] += 0.5;
    quadrant[2 * ((x < 0) ? 0 : 1) + 1] += 0.5;
  } else
    quadrant[2 * ((x < 0) ? 0 : 1) + ((y < 0) ? 0 : 1)] += 1.0;
}
```