user: 提供的汇编代码用C语言表示会是什么样子:

```asm
<breathFirstSearch>:
  endbr64
  push   %r15
  movslq %esi,%rax
  push   %r14
  mov    %ecx,%r14d
  mov    %edx,%ecx
  push   %r13
  mov    %edx,%r13d
  push   %r12
  mov    %r8,%r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  movswq %r14w,%rbx
  sub    $0x18,%rsp
  mov    %dx,(%r8)
  movzbl 0x50(%rsp),%r15d
  test   %eax,%eax
  jle    L258
  mov    %r9,%rdi
  lea    (%rax,%rax,1),%rdx
  mov    $0xff,%esi
  mov    %ecx,0xc(%rsp)
  call   <memset@plt>
  mov    0xc(%rsp),%ecx
  mov    %rax,%r9
L258:
  mov    $0x1,%edi
  cs nopw 0x0(%rax,%rax,1)
L188:
  movslq %edi,%rax
  lea    -0x2(%r12,%rax,2),%rsi
L132:
  test   %edi,%edi
  je     L115
  movzwl (%rsi),%r8d
  lea    -0x1(%rdi),%edx
  mov    %rsi,%r11
  test   %r15b,%r15b
  jne    L3
  cmp    %bx,%r8w
  je     L115
L3:
  movswl %r8w,%eax
  sub    $0x2,%rsi
  lea    (%rax,%rax,2),%eax
  add    %eax,%eax
  movslq %eax,%r10
  movzwl 0x0(%rbp,%r10,2),%r10d
  cmp    $0xffff,%r10w
  je     L179
  movswq %r10w,%rsi
  lea    (%r9,%rsi,2),%rsi
  cmpw   $0xffff,(%rsi)
  je     L199
  add    $0x1,%eax
  cltq
  lea    (%rax,%rax,1),%rsi
  movzwl 0x0(%rbp,%rax,2),%eax
  cmp    $0xffff,%ax
  je     L129
  movswq %ax,%rdi
  lea    (%r9,%rdi,2),%rdi
  cmpw   $0xffff,(%rdi)
  je     L98
L9:
  movzwl 0x2(%rbp,%rsi,1),%eax
  lea    0x2(%rsi),%rdi
  cmp    $0xffff,%ax
  je     L129
  movswq %ax,%rsi
  lea    (%r9,%rsi,2),%rsi
  cmpw   $0xffff,(%rsi)
  je     L298
L135:
  movzwl 0x2(%rbp,%rdi,1),%eax
  lea    0x2(%rdi),%rsi
  cmp    $0xffff,%ax
  je     L129
  movswq %ax,%rdi
  lea    (%r9,%rdi,2),%rdi
  cmpw   $0xffff,(%rdi)
  je     L234
L105:
  movzwl 0x2(%rbp,%rsi,1),%eax
  lea    0x2(%rsi),%rdi
  cmp    $0xffff,%ax
  je     L129
L191:
  movswq %ax,%rsi
  lea    (%r9,%rsi,2),%rsi
  cmpw   $0xffff,(%rsi)
  jne    L79
  movslq %edx,%r10
  add    $0x1,%edx
  mov    %ax,(%r12,%r10,2)
  mov    %r8w,(%rsi)
L79:
  movzwl 0x2(%rbp,%rdi,1),%eax
  cmp    $0xffff,%ax
  je     L129
  movswq %ax,%rsi
  lea    (%r9,%rsi,2),%rsi
  cmpw   $0xffff,(%rsi)
  je     L102
L129:
  mov    %edx,%edi
  jmp    L188
  nopl   0x0(%rax)
L102:
  movslq %edx,%rdi
  add    $0x1,%edx
  mov    %ax,(%r12,%rdi,2)
  mov    %edx,%edi
  mov    %r8w,(%rsi)
  jmp    L188
  xchg   %ax,%ax
L199:
  add    $0x1,%eax
  mov    %r10w,(%r11)
  mov    %edi,%edx
  cltq
  mov    %r8w,(%rsi)
  lea    (%rax,%rax,1),%rsi
  movzwl 0x0(%rbp,%rax,2),%eax
  cmp    $0xffff,%ax
  je     L129
  movswq %ax,%rdi
  lea    (%r9,%rdi,2),%rdi
  cmpw   $0xffff,(%rdi)
  jne    L9
L98:
  lea    0x1(%rdx),%r10d
  movslq %edx,%rdx
  mov    %ax,(%r12,%rdx,2)
  mov    %r10d,%edx
  mov    %r8w,(%rdi)
  movzwl 0x2(%rbp,%rsi,1),%eax
  lea    0x2(%rsi),%rdi
  cmp    $0xffff,%ax
  je     L129
  movswq %ax,%rsi
  lea    (%r9,%rsi,2),%rsi
  cmpw   $0xffff,(%rsi)
  jne    L135
L298:
  lea    0x1(%rdx),%r10d
  movslq %edx,%rdx
  mov    %ax,(%r12,%rdx,2)
  mov    %r10d,%edx
  mov    %r8w,(%rsi)
  movzwl 0x2(%rbp,%rdi,1),%eax
  lea    0x2(%rdi),%rsi
  cmp    $0xffff,%ax
  je     L129
  movswq %ax,%rdi
  lea    (%r9,%rdi,2),%rdi
  cmpw   $0xffff,(%rdi)
  jne    L105
L234:
  lea    0x1(%rdx),%r10d
  movslq %edx,%rdx
  mov    %ax,(%r12,%rdx,2)
  mov    %r10d,%edx
  mov    %r8w,(%rdi)
  movzwl 0x2(%rbp,%rsi,1),%eax
  lea    0x2(%rsi),%rdi
  cmp    $0xffff,%ax
  jne    L191
  mov    %edx,%edi
  jmp    L188
  nopl   0x0(%rax)
L115:
  mov    %r14w,(%r12)
  cmp    %r14w,%r13w
  je     L307
  mov    $0x2,%eax
  jmp    L197
  nopw   0x0(%rax,%rax,1)
L1:
  movslq %eax,%rdx
  add    $0x1,%rax
  cmp    %bx,%cx
  je     L280
L197:
  movswq (%r9,%rbx,2),%rbx
  mov    %bx,-0x2(%r12,%rax,2)
  cmp    $0xffff,%bx
  jne    L1
  add    $0x18,%rsp
  mov    $0xffffffff,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L179:
  mov    %edx,%edi
  jmp    L132
  nopw   0x0(%rax,%rax,1)
L280:
  lea    -0x4(%rdx,%rdx,1),%rax
L126:
  movzwl (%r12,%rax,1),%eax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L307:
  mov    $0xfffffffffffffffe,%rax
  jmp    L126
```

assistant: ```c
short breathFirstSearch(short *graph, int zoneCount, short startZone, short endZone, short *temp1, short *temp2, char all) {
  int i, n = 0;
  short zone, next;
  temp1[n++] = startZone;
  for (i = 0; i < zoneCount; i++) {
    temp2[i] = -1;
  }
  for (; n;) {
    zone = temp1[--n];
    if (!all && zone == endZone)
      break;
    for (i = 0; i < 6 && ((next = graph[zone * 6 + i]) != -1); i++) {
      if (temp2[next] == -1) {
        temp1[n++] = next;
        temp2[next] = zone;
      }
    }
  }
  zone = endZone;
  temp1[0] = zone;
  for (i = 1; zone != startZone; i++) {
    zone = temp2[zone];
    temp1[i] = zone;
    if (zone == -1)
      return -1;
  }
  return temp1[i - 2];
}
```