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

```asm
<run_test>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0xffffffff,-0x94(%rbp)
  movl   $0x1,-0x90(%rbp)
  movl   $0x5,-0x8c(%rbp)
  movl   $0x0,-0x70(%rbp)
  movl   $0x32,-0x6c(%rbp)
  movl   $0x1e,-0x68(%rbp)
  movl   $0x64,-0x64(%rbp)
  movl   $0xa,-0x60(%rbp)
  movl   $0x32,-0x5c(%rbp)
  movl   $0x0,-0x58(%rbp)
  movl   $0x5,-0x54(%rbp)
  movl   $0x14,-0x50(%rbp)
  movl   $0x7fffffff,-0x4c(%rbp)
  movl   $0x1e,-0x48(%rbp)
  movl   $0x5,-0x44(%rbp)
  movl   $0x0,-0x40(%rbp)
  movl   $0x32,-0x3c(%rbp)
  movl   $0x7fffffff,-0x38(%rbp)
  movl   $0x64,-0x34(%rbp)
  movl   $0x14,-0x30(%rbp)
  movl   $0x32,-0x2c(%rbp)
  movl   $0x0,-0x28(%rbp)
  movl   $0xa,-0x24(%rbp)
  movl   $0xa,-0x20(%rbp)
  movl   $0x7fffffff,-0x1c(%rbp)
  movl   $0x7fffffff,-0x18(%rbp)
  movl   $0xa,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  mov    -0x8c(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x88(%rbp)
  mov    -0x8c(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x80(%rbp)
  mov    -0x8c(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x78(%rbp)
  cmpq   $0x0,-0x88(%rbp)
  je     L70
  cmpq   $0x0,-0x80(%rbp)
  je     L70
  cmpq   $0x0,-0x78(%rbp)
  jne    L5
L70:
  mov    $0x0,%edi
  call   <assert@plt>
  cmpq   $0x0,-0x88(%rbp)
  je     L55
  mov    -0x88(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
L55:
  cmpq   $0x0,-0x80(%rbp)
  je     L21
  mov    -0x80(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
L21:
  cmpq   $0x0,-0x78(%rbp)
  je     L135
  mov    -0x78(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
L135:
  mov    $0x0,%eax
  jmp    L191
L5:
  mov    -0x78(%rbp),%rdi
  mov    -0x80(%rbp),%rsi
  mov    -0x88(%rbp),%rcx
  lea    -0x70(%rbp),%rdx
  mov    -0x8c(%rbp),%eax
  mov    %rdi,%r9
  mov    %rsi,%r8
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <dijkstra_shortest@plt>
  movl   $0x0,-0x98(%rbp)
  jmp    L63
L108:
  mov    -0x98(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L143
  movl   $0x0,-0x90(%rbp)
  jmp    L138
L143:
  addl   $0x1,-0x98(%rbp)
L63:
  mov    -0x98(%rbp),%eax
  cmp    -0x8c(%rbp),%eax
  jl     L108
L138:
  movl   $0x0,-0x98(%rbp)
  jmp    L94
L194:
  mov    -0x98(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x94(%rbp)
  jge    L163
  mov    -0x98(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x94(%rbp)
L163:
  addl   $0x1,-0x98(%rbp)
L94:
  mov    -0x98(%rbp),%eax
  cmp    -0x8c(%rbp),%eax
  jl     L194
  cmpl   $0x23,-0x94(%rbp)
  jne    L192
  cmpl   $0x1,-0x90(%rbp)
  jne    L192
  mov    $0x1,%eax
  jmp    L121
L192:
  mov    $0x0,%eax
L121:
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x88(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x80(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x78(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  cmpl   $0x23,-0x94(%rbp)
  jne    L96
  cmpl   $0x1,-0x90(%rbp)
  jne    L96
  mov    $0x1,%eax
  jmp    L191
L96:
  mov    $0x0,%eax
L191:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L190
  call   <__stack_chk_fail@plt>
L190:
  leave
  ret
```

assistant: ```c
int run_test(void) {
  int i;
  int max = -1;
  int all = 1;
  int n = 5;
  int adjMtx[25] = {
      0, 50, 30, 100, 10, 50, 0, 5, 20, 0x7fffffff, 30, 5, 0, 50, 0x7fffffff, 100, 20, 50, 0, 10, 10, 0x7fffffff, 0x7fffffff, 10, 0,
  };
  int *dist = (int *)malloc(n * sizeof(int));
  int *setv = (int *)malloc(n * sizeof(int));
  int *path = (int *)malloc(n * sizeof(int));
  if (dist == NULL || setv == NULL || path == NULL) {
    assert(0 && "not enough memory");
    if (dist)
      free(dist);
    if (setv)
      free(setv);
    if (path)
      free(path);
    return 0;
  }
  dijkstra_shortest(n, 0, adjMtx, dist, setv, path);
  for (i = 0; i < n; ++i) {
    if (setv[i] == 0) {
      all = 0;
      break;
    }
  }
  for (i = 0; i < n; ++i) {
    if (max < dist[i])
      max = dist[i];
  }
  assert(max == 35 && all == 1 && "algorithm wrong, can't pass the test!");
  free(dist);
  free(setv);
  free(path);
  return (max == 35 && all == 1) ? 1 : 0;
}
```