user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x140,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x1,-0x12c(%rbp)
  movl   $0x3,-0x128(%rbp)
  movl   $0x6,-0x124(%rbp)
  movl   $0x7,-0x120(%rbp)
  movl   $0x9,-0x11c(%rbp)
  movl   $0x2,-0xec(%rbp)
  movl   $0x4,-0xe8(%rbp)
  movl   $0x3,-0xe4(%rbp)
  movl   $0x4,-0xe0(%rbp)
  movl   $0x5,-0xdc(%rbp)
  movl   $0x2,-0xd8(%rbp)
  movl   $0x3,-0xd4(%rbp)
  movl   $0x5,-0xd0(%rbp)
  movl   $0x1,-0xcc(%rbp)
  movl   $0x3,-0xc8(%rbp)
  movsd  D57(%rip),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  D10(%rip),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movsd  D86(%rip),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  D12(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D119(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  D71(%rip),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D59(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D62(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D58(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  D10(%rip),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movl   $0x2,-0xbc(%rbp)
  movl   $0x0,-0xb8(%rbp)
  movl   $0x4,-0xb4(%rbp)
  movl   $0x5,-0xb0(%rbp)
  movl   $0x0,-0xac(%rbp)
  movl   $0x0,-0xa8(%rbp)
  movl   $0x8,-0xa4(%rbp)
  movl   $0x0,-0xa0(%rbp)
  movl   $0xa,-0x9c(%rbp)
  movl   $0x0,-0x98(%rbp)
  lea    D15(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x13c(%rbp),%rax
  mov    %rax,%rsi
  lea    D34(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0x13c(%rbp),%edi
  lea    -0x110(%rbp),%r9
  lea    -0x90(%rbp),%r8
  lea    -0x60(%rbp),%rcx
  lea    -0xc0(%rbp),%rdx
  lea    -0xf0(%rbp),%rsi
  lea    -0x130(%rbp),%rax
  push   $0x5
  push   %rdi
  mov    %rax,%rdi
  call   <bellman_ford@plt>
  add    $0x10,%rsp
  mov    %eax,-0x134(%rbp)
  lea    D96(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x134(%rbp),%eax
  mov    %eax,%esi
  lea    D136(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x1,-0x138(%rbp)
  jmp    L3
L25:
  mov    -0x138(%rbp),%eax
  cltq
  mov    -0x110(%rbp,%rax,4),%edx
  mov    -0x138(%rbp),%eax
  cltq
  mov    -0x90(%rbp,%rax,8),%rcx
  mov    -0x138(%rbp),%eax
  movq   %rcx,%xmm0
  mov    %eax,%esi
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  addl   $0x1,-0x138(%rbp)
L3:
  cmpl   $0x5,-0x138(%rbp)
  jle    L25
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L5
  call   <__stack_chk_fail@plt>
L5:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: tag: D57
type_guessed: f64
name: unpack_data
arguments: tag: D10
type_guessed: f64
name: unpack_data
arguments: tag: D86
type_guessed: f64
name: unpack_data
arguments: tag: D12
type_guessed: f64
name: unpack_data
arguments: tag: D119
type_guessed: byte[8]
name: unpack_data
arguments: tag: D71
type_guessed: byte[8]
name: unpack_data
arguments: tag: D59
type_guessed: byte[8]
name: unpack_data
arguments: tag: D62
type_guessed: f64
name: unpack_data
arguments: tag: D58
type_guessed: f64
name: unpack_data
arguments: tag: D15
type_guessed: string
name: unpack_data
arguments: tag: D34
type_guessed: string
name: unpack_data
arguments: tag: D96
type_guessed: string
name: unpack_data
arguments: tag: D136
type_guessed: string
name: unpack_data
arguments: tag: D30
type_guessed: string

tool: D57: 6

tool: D10: 7

tool: D86: 5

tool: D12: 8

tool: {"D119": [0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xc0]}

tool: {"D71": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0]}

tool: {"D59": [0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xc0]}

tool: D62: 9

tool: D58: 2

tool: D15: Enter source node: 

tool: D34: %d

tool: D96: bellman_ford returns 

tool: D136: %d



tool: D30: %d: %f  %d


assistant: ```c
int main(void) {
  int first[6], node[11], next[11], pi[6];
  double w[11], d[6];
  int s;
  int i;
  int ok;
  first[1] = 1;
  first[2] = 3;
  first[3] = 6;
  first[4] = 7;
  first[5] = 9;
  node[1] = 2;
  node[2] = 4;
  node[3] = 3;
  node[4] = 4;
  node[5] = 5;
  node[6] = 2;
  node[7] = 3;
  node[8] = 5;
  node[9] = 1;
  node[10] = 3;
  w[1] = 6.0;
  w[2] = 7.0;
  w[3] = 5.0;
  w[4] = 8.0;
  w[5] = -4.0;
  w[6] = -2.0;
  w[7] = -3.0;
  w[8] = 9.0;
  w[9] = 2.0;
  w[10] = 7.0;
  next[1] = 2;
  next[2] = 0;
  next[3] = 4;
  next[4] = 5;
  next[5] = 0;
  next[6] = 0;
  next[7] = 8;
  next[8] = 0;
  next[9] = 10;
  next[10] = 0;
  printf("Enter source node: ");
  scanf("%d", &s);
  ok = bellman_ford(first, node, next, w, d, pi, s, 5);
  printf("bellman_ford returns ");
  printf("%d\n\n", ok);
  for (i = 1; i <= 5; ++i) {
    printf("%d: %f  %d\n", i, d[i], pi[i]);
  }
  return 0;
}
```