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

```asm
<unbalance>:
  endbr64
  push   %r14
  mov    %rdx,%r10
  mov    %ecx,%r11d
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  cmp    %r8d,%ecx
  jg     L71
  mov    %edi,%ebx
  mov    %r8d,%eax
  lea    -0x1(%rdi),%ebp
  imul   %ecx,%ebx
  sub    %r11d,%eax
  movslq %ecx,%rcx
  add    $0x1,%rbp
  add    %rcx,%rax
  lea    (%r9,%rcx,8),%rdx
  lea    0x8(%r9,%rax,8),%r12
  nopl   0x0(%rax,%rax,1)
L73:
  test   %edi,%edi
  jle    L36
  movslq %ebx,%rcx
  lea    0x0(,%rcx,8),%rax
  add    %rbp,%rcx
  shl    $0x3,%rcx
  cs nopw 0x0(%rax,%rax,1)
L60:
  movsd  (%rsi,%rax,1),%xmm0
  mulsd  (%rdx),%xmm0
  movsd  %xmm0,(%rsi,%rax,1)
  movsd  (%r10,%rax,1),%xmm0
  mulsd  (%rdx),%xmm0
  movsd  %xmm0,(%r10,%rax,1)
  add    $0x8,%rax
  cmp    %rcx,%rax
  jne    L60
L36:
  add    $0x8,%rdx
  add    %edi,%ebx
  cmp    %r12,%rdx
  jne    L73
L71:
  sub    $0x1,%r11d
  js     L22
  movslq %r11d,%rbx
  lea    -0x1(%rdi),%r12d
  lea    0x8(%rsi),%rbp
  imul   %edi,%r11d
  jmp    L125
  nopl   (%rax)
L135:
  sub    $0x1,%rbx
  sub    %edi,%r11d
  test   %ebx,%ebx
  js     L22
L125:
  cvttsd2si (%r9,%rbx,8),%ecx
  cmp    %ebx,%ecx
  je     L135
  test   %edi,%edi
  jle    L135
  imul   %edi,%ecx
  movslq %r11d,%r14
  lea    0x0(,%r14,8),%rdx
  lea    (%r12,%r14,1),%r13
  lea    (%rsi,%rdx,1),%rax
  lea    0x0(%rbp,%r13,8),%r13
  add    %r10,%rdx
  movslq %ecx,%rcx
  sub    %r14,%rcx
  nopl   (%rax)
L21:
  movsd  (%rax),%xmm0
  movsd  (%rax,%rcx,8),%xmm1
  movsd  %xmm1,(%rax)
  movsd  %xmm0,(%rax,%rcx,8)
  movsd  (%rdx),%xmm0
  movsd  (%rdx,%rcx,8),%xmm1
  add    $0x8,%rax
  movsd  %xmm1,(%rdx)
  movsd  %xmm0,(%rdx,%rcx,8)
  add    $0x8,%rdx
  cmp    %r13,%rax
  jne    L21
  sub    $0x1,%rbx
  sub    %edi,%r11d
  test   %ebx,%ebx
  jns    L125
L22:
  add    $0x1,%r8d
  cmp    %edi,%r8d
  jge    L54
  movslq %r8d,%r11
  lea    -0x1(%rdi),%ebp
  lea    0x8(%rsi),%rbx
  imul   %edi,%r8d
  jmp    L160
  nopl   0x0(%rax)
L176:
  add    $0x1,%r11
  add    %edi,%r8d
  cmp    %r11d,%edi
  jle    L54
L160:
  cvttsd2si (%r9,%r11,8),%ecx
  cmp    %r11d,%ecx
  je     L176
  test   %edi,%edi
  jle    L176
  imul   %edi,%ecx
  movslq %r8d,%r13
  lea    0x0(,%r13,8),%rdx
  lea    0x0(%rbp,%r13,1),%r12
  lea    (%rsi,%rdx,1),%rax
  lea    (%rbx,%r12,8),%r12
  add    %r10,%rdx
  movslq %ecx,%rcx
  sub    %r13,%rcx
  nop
L137:
  movsd  (%rax),%xmm0
  movsd  (%rax,%rcx,8),%xmm1
  movsd  %xmm1,(%rax)
  movsd  %xmm0,(%rax,%rcx,8)
  movsd  (%rdx),%xmm0
  movsd  (%rdx,%rcx,8),%xmm1
  add    $0x8,%rax
  movsd  %xmm1,(%rdx)
  movsd  %xmm0,(%rdx,%rcx,8)
  add    $0x8,%rdx
  cmp    %r12,%rax
  jne    L137
  add    $0x1,%r11
  add    %edi,%r8d
  cmp    %r11d,%edi
  jg     L160
L54:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
```

assistant: ```c
void unbalance(int n, double vr[], double vi[], int low, int hi, double scale[]) {
  int i, j, k;
  double tmp;
  for (i = low; i <= hi; i++) {
    for (j = 0; j < n; j++) {
      vr[((i) * (n) + (j))] *= scale[i];
      vi[((i) * (n) + (j))] *= scale[i];
    }
  }
  for (i = low - 1; i >= 0; i--) {
    if ((k = (int)scale[i]) != i) {
      for (j = 0; j < n; j++) {
        tmp = vr[((i) * (n) + (j))];
        vr[((i) * (n) + (j))] = vr[((k) * (n) + (j))];
        vr[((k) * (n) + (j))] = tmp;
        tmp = vi[((i) * (n) + (j))];
        vi[((i) * (n) + (j))] = vi[((k) * (n) + (j))];
        vi[((k) * (n) + (j))] = tmp;
      }
    }
  }
  for (i = hi + 1; i < n; i++) {
    if ((k = (int)scale[i]) != i) {
      for (j = 0; j < n; j++) {
        tmp = vr[((i) * (n) + (j))];
        vr[((i) * (n) + (j))] = vr[((k) * (n) + (j))];
        vr[((k) * (n) + (j))] = tmp;
        tmp = vi[((i) * (n) + (j))];
        vi[((i) * (n) + (j))] = vi[((k) * (n) + (j))];
        vi[((k) * (n) + (j))] = tmp;
      }
    }
  }
}
```