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

```asm
<next_permutaion>:
  endbr64
  lea    -0x1(%rsi),%r9d
  test   %r9d,%r9d
  jle    L71
  movslq %esi,%rax
  push   %r14
  shl    $0x2,%rax
  push   %r13
  lea    -0x8(%rdi,%rax,1),%rdx
  push   %r12
  push   %rbp
  push   %rbx
  mov    %esi,%ebx
  mov    -0x4(%rdi,%rax,1),%ecx
  mov    %r9d,%eax
  jmp    L5
L174:
  sub    $0x4,%rdx
  sub    $0x1,%eax
  je     L48
L5:
  mov    %ecx,%esi
  mov    (%rdx),%ecx
  cmp    %esi,%ecx
  jg     L174
  movslq %r9d,%rbp
  lea    0x0(,%rbp,4),%r11
  lea    (%rdi,%r11,1),%rsi
  mov    (%rsi),%r10d
  cmp    %eax,%r9d
  jle    L2
  mov    %r9d,%r8d
  jmp    L195
  nopl   (%rax)
L1:
  sub    $0x1,%r8d
  sub    $0x4,%rsi
  cmp    %eax,%r8d
  je     L128
L195:
  mov    (%rsi),%r10d
  cmp    %r10d,%ecx
  jg     L1
  movslq %eax,%r8
L123:
  sub    $0x2,%ebx
  mov    %ecx,(%rsi)
  lea    0x4(%r11),%r14
  lea    0x0(,%r8,4),%rsi
  sub    %eax,%ebx
  mov    %r10d,(%rdx)
  mov    %r8,%rdx
  mov    %ebx,%r12d
  shr    %r12d
  lea    0x1(%r12),%ecx
  lea    (%rcx,%r8,1),%r13
  mov    %rcx,%r10
  neg    %rcx
  shl    $0x2,%r13
  lea    (%r14,%rcx,4),%rcx
  cmp    %rcx,%r13
  setle  %cl
  cmp    %r14,%rsi
  setge  %r13b
  or     %r13b,%cl
  je     L31
  cmp    $0x1,%ebx
  jbe    L31
  cmp    $0x5,%ebx
  jbe    L116
  mov    %r10d,%ecx
  add    %rdi,%rsi
  lea    -0xc(%rdi,%r11,1),%rdx
  shr    $0x2,%ecx
  lea    -0x1(%rcx),%ebx
  lea    0x10(%rsi),%rcx
  shl    $0x4,%rbx
  add    %rcx,%rbx
  jmp    L214
L181:
  add    $0x10,%rcx
L214:
  movdqu (%rsi),%xmm0
  movdqu (%rdx),%xmm2
  sub    $0x10,%rdx
  pshufd $0x1b,%xmm2,%xmm1
  pshufd $0x1b,%xmm0,%xmm0
  movups %xmm1,(%rsi)
  mov    %rcx,%rsi
  movups %xmm0,0x10(%rdx)
  cmp    %rbx,%rcx
  jne    L181
  mov    %r10d,%edx
  and    $0xfffffffc,%edx
  add    %edx,%eax
  sub    %edx,%r9d
  cmp    %edx,%r10d
  je     L25
L109:
  sub    %edx,%r10d
  cmp    %edx,%r12d
  je     L86
  add    %rdx,%r8
  neg    %rdx
  lea    -0x4(%r11,%rdx,4),%rdx
  lea    (%rdi,%r8,4),%rcx
  add    %rdi,%rdx
  movq   (%rcx),%xmm0
  movq   (%rdx),%xmm1
  pshufd $0xe1,%xmm0,%xmm0
  pshufd $0xe1,%xmm1,%xmm1
  movq   %xmm1,(%rcx)
  movq   %xmm0,(%rdx)
  mov    %r10d,%edx
  and    $0xfffffffe,%edx
  add    %edx,%eax
  sub    %edx,%r9d
  cmp    %edx,%r10d
  je     L25
L86:
  cltq
  movslq %r9d,%r9
  lea    (%rdi,%rax,4),%rdx
  lea    (%rdi,%r9,4),%rax
  mov    (%rdx),%ecx
  mov    (%rax),%esi
  mov    %esi,(%rdx)
  mov    %ecx,(%rax)
L25:
  mov    $0x1,%eax
L48:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L31:
  mov    (%rdi,%rdx,4),%eax
  mov    (%rdi,%rbp,4),%ecx
  mov    %ecx,(%rdi,%rdx,4)
  add    $0x1,%rdx
  mov    %eax,(%rdi,%rbp,4)
  sub    $0x1,%rbp
  cmp    %ebp,%edx
  jl     L31
  jmp    L25
  nopw   0x0(%rax,%rax,1)
L128:
  movslq %eax,%r8
  lea    (%rdi,%r8,4),%rsi
  mov    (%rsi),%r10d
  jmp    L123
L71:
  je     L40
  movslq %r9d,%rsi
  mov    $0x1,%eax
  shl    $0x2,%rsi
  lea    -0x4(%rdi,%rsi,1),%r8
  add    %rdi,%rsi
  mov    (%r8),%ecx
  mov    (%rsi),%r10d
  mov    %ecx,(%rsi)
  mov    %r10d,(%r8)
  ret
L116:
  xor    %edx,%edx
  jmp    L109
L2:
  mov    %ecx,(%rsi)
  mov    %r10d,(%rdx)
  jmp    L25
L40:
  xor    %eax,%eax
  ret
```

assistant: ```c
int next_permutaion(int *list, int lsize) {
  int size = lsize;
  int i, j;
  int temp;
  for (i = size - 1; (i > 0) && (list[i] < list[i - 1]); --i)
    ;
  if (0 == i)
    return 0;
  for (j = size - 1; (j > i) && (list[j] < list[i - 1]); --j)
    ;
  temp = list[j];
  list[j] = list[i - 1];
  list[i - 1] = temp;
  for (j = size - 1; i < j; --j, ++i) {
    temp = list[i];
    list[i] = list[j];
    list[j] = temp;
  }
  return 1;
}
```