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

```asm
<floyd>:
  endbr64
  push   %rbp
  mov    %rdx,%r10
  mov    %rdi,%rax
  push   %rbx
  mov    %rsi,%rbx
  movl   $0x0,(%rsi)
  mov    (%rdi),%edx
  mov    %edx,(%r10)
  cmp    $0x7ffe,%edx
  jg     L395
  movl   $0x0,(%rsi)
L395:
  mov    0x4(%rax),%edx
  mov    %edx,0x4(%r10)
  cmp    $0x7ffe,%edx
  jg     L324
  movl   $0x0,0x4(%rbx)
L324:
  mov    0x8(%rax),%edx
  mov    %edx,0x8(%r10)
  cmp    $0x7ffe,%edx
  jg     L256
  movl   $0x0,0x8(%rbx)
L256:
  mov    0xc(%rax),%edx
  mov    %edx,0xc(%r10)
  cmp    $0x7ffe,%edx
  jg     L237
  movl   $0x0,0xc(%rbx)
L237:
  mov    0x10(%rax),%edx
  mov    %edx,0x10(%r10)
  cmp    $0x7ffe,%edx
  jg     L272
  movl   $0x0,0x10(%rbx)
L272:
  mov    0x14(%rax),%edx
  mov    %edx,0x14(%r10)
  cmp    $0x7ffe,%edx
  jg     L176
  movl   $0x0,0x14(%rbx)
L176:
  movl   $0x1,0x1c(%rbx)
  mov    0x18(%rax),%edx
  mov    %edx,0x18(%r10)
  cmp    $0x7ffe,%edx
  jg     L113
  movl   $0x1,0x18(%rbx)
L113:
  mov    0x1c(%rax),%edx
  mov    %edx,0x1c(%r10)
  cmp    $0x7ffe,%edx
  jg     L161
  movl   $0x1,0x1c(%rbx)
L161:
  mov    0x20(%rax),%edx
  mov    %edx,0x20(%r10)
  cmp    $0x7ffe,%edx
  jg     L250
  movl   $0x1,0x20(%rbx)
L250:
  mov    0x24(%rax),%edx
  mov    %edx,0x24(%r10)
  cmp    $0x7ffe,%edx
  jg     L172
  movl   $0x1,0x24(%rbx)
L172:
  mov    0x28(%rax),%edx
  mov    %edx,0x28(%r10)
  cmp    $0x7ffe,%edx
  jg     L16
  movl   $0x1,0x28(%rbx)
L16:
  mov    0x2c(%rax),%edx
  mov    %edx,0x2c(%r10)
  cmp    $0x7ffe,%edx
  jg     L131
  movl   $0x1,0x2c(%rbx)
L131:
  movl   $0x2,0x38(%rbx)
  mov    0x30(%rax),%edx
  mov    %edx,0x30(%r10)
  cmp    $0x7ffe,%edx
  jg     L152
  movl   $0x2,0x30(%rbx)
L152:
  mov    0x34(%rax),%edx
  mov    %edx,0x34(%r10)
  cmp    $0x7ffe,%edx
  jg     L248
  movl   $0x2,0x34(%rbx)
L248:
  mov    0x38(%rax),%edx
  mov    %edx,0x38(%r10)
  cmp    $0x7ffe,%edx
  jg     L147
  movl   $0x2,0x38(%rbx)
L147:
  mov    0x3c(%rax),%edx
  mov    %edx,0x3c(%r10)
  cmp    $0x7ffe,%edx
  jg     L254
  movl   $0x2,0x3c(%rbx)
L254:
  mov    0x40(%rax),%edx
  mov    %edx,0x40(%r10)
  cmp    $0x7ffe,%edx
  jg     L356
  movl   $0x2,0x40(%rbx)
L356:
  mov    0x44(%rax),%edx
  mov    %edx,0x44(%r10)
  cmp    $0x7ffe,%edx
  jg     L419
  movl   $0x2,0x44(%rbx)
L419:
  movl   $0x3,0x54(%rbx)
  mov    0x48(%rax),%edx
  mov    %edx,0x48(%r10)
  cmp    $0x7ffe,%edx
  jg     L145
  movl   $0x3,0x48(%rbx)
L145:
  mov    0x4c(%rax),%edx
  mov    %edx,0x4c(%r10)
  cmp    $0x7ffe,%edx
  jg     L400
  movl   $0x3,0x4c(%rbx)
L400:
  mov    0x50(%rax),%edx
  mov    %edx,0x50(%r10)
  cmp    $0x7ffe,%edx
  jg     L157
  movl   $0x3,0x50(%rbx)
L157:
  mov    0x54(%rax),%edx
  mov    %edx,0x54(%r10)
  cmp    $0x7ffe,%edx
  jg     L19
  movl   $0x3,0x54(%rbx)
L19:
  mov    0x58(%rax),%edx
  mov    %edx,0x58(%r10)
  cmp    $0x7ffe,%edx
  jg     L438
  movl   $0x3,0x58(%rbx)
L438:
  mov    0x5c(%rax),%edx
  mov    %edx,0x5c(%r10)
  cmp    $0x7ffe,%edx
  jg     L87
  movl   $0x3,0x5c(%rbx)
L87:
  movl   $0x4,0x70(%rbx)
  mov    0x60(%rax),%edx
  mov    %edx,0x60(%r10)
  cmp    $0x7ffe,%edx
  jg     L341
  movl   $0x4,0x60(%rbx)
L341:
  mov    0x64(%rax),%edx
  mov    %edx,0x64(%r10)
  cmp    $0x7ffe,%edx
  jg     L231
  movl   $0x4,0x64(%rbx)
L231:
  mov    0x68(%rax),%edx
  mov    %edx,0x68(%r10)
  cmp    $0x7ffe,%edx
  jg     L4
  movl   $0x4,0x68(%rbx)
L4:
  mov    0x6c(%rax),%edx
  mov    %edx,0x6c(%r10)
  cmp    $0x7ffe,%edx
  jg     L115
  movl   $0x4,0x6c(%rbx)
L115:
  mov    0x70(%rax),%edx
  mov    %edx,0x70(%r10)
  cmp    $0x7ffe,%edx
  jg     L365
  movl   $0x4,0x70(%rbx)
L365:
  mov    0x74(%rax),%edx
  mov    %edx,0x74(%r10)
  cmp    $0x7ffe,%edx
  jg     L404
  movl   $0x4,0x74(%rbx)
L404:
  movl   $0x5,0x8c(%rbx)
  mov    0x78(%rax),%edx
  mov    %edx,0x78(%r10)
  cmp    $0x7ffe,%edx
  jg     L24
  movl   $0x5,0x78(%rbx)
L24:
  mov    0x7c(%rax),%edx
  mov    %edx,0x7c(%r10)
  cmp    $0x7ffe,%edx
  jg     L101
  movl   $0x5,0x7c(%rbx)
L101:
  mov    0x80(%rax),%edx
  mov    %edx,0x80(%r10)
  cmp    $0x7ffe,%edx
  jg     L366
  movl   $0x5,0x80(%rbx)
L366:
  mov    0x84(%rax),%edx
  mov    %edx,0x84(%r10)
  cmp    $0x7ffe,%edx
  jg     L191
  movl   $0x5,0x84(%rbx)
L191:
  mov    0x88(%rax),%edx
  mov    %edx,0x88(%r10)
  cmp    $0x7ffe,%edx
  jg     L121
  movl   $0x5,0x88(%rbx)
L121:
  mov    0x8c(%rax),%eax
  mov    %eax,0x8c(%r10)
  cmp    $0x7ffe,%eax
  jg     L253
  movl   $0x5,0x8c(%rbx)
L253:
  mov    %r10,%rbp
  mov    %r10,%rcx
  lea    0x90(%r10),%r11
  xor    %r8d,%r8d
  nopl   0x0(%rax,%rax,1)
L127:
  mov    %rbx,%rdi
  mov    %r10,%rax
  mov    %rbp,%rsi
  nopl   0x0(%rax)
L166:
  mov    (%rsi),%edx
  mov    (%rcx),%r9d
  add    %edx,%r9d
  cmp    (%rax),%r9d
  jge    L198
  mov    %r9d,(%rax)
  mov    %r8d,(%rdi)
  mov    (%rsi),%edx
L198:
  mov    0x4(%rcx),%r9d
  add    %edx,%r9d
  cmp    0x4(%rax),%r9d
  jge    L355
  mov    %r9d,0x4(%rax)
  mov    %r8d,0x4(%rdi)
  mov    (%rsi),%edx
L355:
  mov    0x8(%rcx),%r9d
  add    %edx,%r9d
  cmp    0x8(%rax),%r9d
  jge    L384
  mov    %r9d,0x8(%rax)
  mov    %r8d,0x8(%rdi)
  mov    (%rsi),%edx
L384:
  mov    0xc(%rcx),%r9d
  add    %edx,%r9d
  cmp    0xc(%rax),%r9d
  jge    L103
  mov    %r9d,0xc(%rax)
  mov    %r8d,0xc(%rdi)
  mov    (%rsi),%edx
L103:
  mov    0x10(%rcx),%r9d
  add    %edx,%r9d
  cmp    0x10(%rax),%r9d
  jge    L41
  mov    %r9d,0x10(%rax)
  mov    %r8d,0x10(%rdi)
  mov    (%rsi),%edx
L41:
  add    0x14(%rcx),%edx
  cmp    0x14(%rax),%edx
  jge    L193
  mov    %edx,0x14(%rax)
  mov    %r8d,0x14(%rdi)
L193:
  add    $0x18,%rax
  add    $0x18,%rsi
  add    $0x18,%rdi
  cmp    %r11,%rax
  jne    L166
  add    $0x1,%r8d
  add    $0x18,%rcx
  add    $0x4,%rbp
  cmp    $0x6,%r8d
  jne    L127
  pop    %rbx
  pop    %rbp
  ret
```

assistant: ```c
void floyd(int g[6][6], int path[6][6], int dist[6][6]) {
  int i, j, k, l;
  for (i = 0; i < 6; i++) {
    path[i][i] = i;
    for (j = 0; j < 6; j++) {
      dist[i][j] = g[i][j];
      if (dist[i][j] < 32767) {
        path[i][j] = i;
      }
    }
  }
  for (k = 0; k < 6; k++) {
    for (i = 0; i < 6; i++) {
      for (j = 0; j < 6; j++) {
        if (dist[i][k] + dist[k][j] < dist[i][j]) {
          dist[i][j] = dist[i][k] + dist[k][j];
          path[i][j] = k;
        }
      }
    }
  }
}
```