user: What is the c source code of the assembly code below:

```asm
<sortints>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x310,%rsp
  mov    %rdi,-0x308(%rbp)
  mov    %esi,-0x30c(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x2f0(%rbp)
  cmpl   $0x1,-0x30c(%rbp)
  jle    L168
  mov    -0x2f0(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rbp,%rax
  lea    -0x290(%rax),%rdx
  mov    -0x308(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x2f0(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rbp,%rax
  lea    -0x288(%rax),%rdx
  mov    -0x30c(%rbp),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x2f0(%rbp)
  jmp    L168
L648:
  subl   $0x1,-0x2f0(%rbp)
  mov    -0x2f0(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rbp,%rax
  sub    $0x290,%rax
  mov    (%rax),%rax
  mov    %rax,-0x298(%rbp)
  mov    -0x2f0(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rbp,%rax
  sub    $0x288,%rax
  mov    (%rax),%eax
  mov    %eax,-0x2ec(%rbp)
  cmpl   $0x9,-0x2ec(%rbp)
  jg     L504
  movl   $0x1,-0x300(%rbp)
  jmp    L665
L202:
  mov    -0x300(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x2dc(%rbp)
  mov    -0x300(%rbp),%eax
  mov    %eax,-0x2fc(%rbp)
  jmp    L581
L611:
  mov    -0x2fc(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    -0x2fc(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x298(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  subl   $0x1,-0x2fc(%rbp)
  cmpl   $0x0,-0x2fc(%rbp)
  je     L196
L581:
  mov    -0x2fc(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x2dc(%rbp)
  jl     L611
  jmp    L466
L196:
  nop
L466:
  mov    -0x2fc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x298(%rbp),%rax
  add    %rax,%rdx
  mov    -0x2dc(%rbp),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x300(%rbp)
L665:
  mov    -0x300(%rbp),%eax
  cmp    -0x2ec(%rbp),%eax
  jl     L202
  jmp    L168
L504:
  cmpl   $0x13f,-0x2ec(%rbp)
  jg     L115
  mov    -0x298(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%ecx
  shr    $0x1f,%ecx
  add    %ecx,%eax
  sar    %eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jg     L408
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jg     L22
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  jmp    L348
L22:
  mov    -0x298(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  cmovge %edx,%eax
  jmp    L348
L408:
  mov    -0x298(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jg     L154
  mov    -0x298(%rbp),%rax
  mov    (%rax),%eax
  jmp    L348
L154:
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  cmovge %edx,%eax
L348:
  mov    %eax,-0x2f4(%rbp)
  jmp    L668
L115:
  mov    -0x298(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x298(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jg     L551
  mov    -0x298(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x298(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jg     L660
  mov    -0x298(%rbp),%rax
  mov    0x4(%rax),%eax
  jmp    L509
L660:
  mov    -0x298(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x298(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  cmovge %edx,%eax
  jmp    L509
L551:
  mov    -0x298(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x298(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jg     L67
  mov    -0x298(%rbp),%rax
  mov    (%rax),%eax
  jmp    L509
L67:
  mov    -0x298(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x298(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  cmovge %edx,%eax
L509:
  mov    %eax,-0x2e8(%rbp)
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%ecx
  shr    $0x1f,%ecx
  add    %ecx,%eax
  sar    %eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jg     L295
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%ecx
  shr    $0x1f,%ecx
  add    %ecx,%eax
  sar    %eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jg     L470
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  jmp    L452
L470:
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%ecx
  shr    $0x1f,%ecx
  add    %ecx,%eax
  sar    %eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  cmovge %edx,%eax
  jmp    L452
L295:
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%ecx
  shr    $0x1f,%ecx
  add    %ecx,%eax
  sar    %eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jg     L491
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  jmp    L452
L491:
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  mov    %eax,%ecx
  shr    $0x1f,%ecx
  add    %ecx,%eax
  sar    %eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  cmovge %edx,%eax
L452:
  mov    %eax,-0x2e4(%rbp)
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0xc(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x8(%rax),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jg     L88
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jg     L422
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  jmp    L63
L422:
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0xc(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  cmovge %edx,%eax
  jmp    L63
L88:
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0xc(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  jg     L625
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0xc(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  jmp    L63
L625:
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rcx
  mov    -0x298(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  cmovge %edx,%eax
L63:
  mov    %eax,-0x2e0(%rbp)
  mov    -0x2e8(%rbp),%eax
  cmp    -0x2e4(%rbp),%eax
  jg     L246
  mov    -0x2e4(%rbp),%eax
  cmp    -0x2e0(%rbp),%eax
  jle    L456
  mov    -0x2e8(%rbp),%edx
  mov    -0x2e0(%rbp),%eax
  cmp    %eax,%edx
  cmovge %edx,%eax
  jmp    L516
L456:
  mov    -0x2e4(%rbp),%eax
  jmp    L516
L246:
  mov    -0x2e8(%rbp),%eax
  cmp    -0x2e0(%rbp),%eax
  jle    L608
  mov    -0x2e4(%rbp),%edx
  mov    -0x2e0(%rbp),%eax
  cmp    %eax,%edx
  cmovge %edx,%eax
  jmp    L516
L608:
  mov    -0x2e8(%rbp),%eax
L516:
  mov    %eax,-0x2f4(%rbp)
L668:
  mov    -0x298(%rbp),%rax
  mov    %rax,-0x2c0(%rbp)
  mov    -0x2c0(%rbp),%rax
  mov    %rax,-0x2c8(%rbp)
  mov    -0x2ec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x2b0(%rbp)
  mov    -0x2b0(%rbp),%rax
  mov    %rax,-0x2b8(%rbp)
  jmp    L528
L593:
  mov    -0x2c0(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x2f4(%rbp)
  jne    L458
  mov    -0x2c8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x2c0(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x2c8(%rbp),%rax
  mov    -0x2f4(%rbp),%edx
  mov    %edx,(%rax)
  addq   $0x4,-0x2c8(%rbp)
L458:
  addq   $0x4,-0x2c0(%rbp)
L528:
  mov    -0x2c0(%rbp),%rax
  cmp    -0x2b8(%rbp),%rax
  ja     L253
  mov    -0x2c0(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x2f4(%rbp)
  jge    L593
  jmp    L253
L103:
  mov    -0x2b8(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x2f4(%rbp)
  jne    L172
  mov    -0x2b0(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x2b8(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x2b0(%rbp),%rax
  mov    -0x2f4(%rbp),%edx
  mov    %edx,(%rax)
  subq   $0x4,-0x2b0(%rbp)
L172:
  subq   $0x4,-0x2b8(%rbp)
L253:
  mov    -0x2b8(%rbp),%rax
  cmp    -0x2c0(%rbp),%rax
  jb     L416
  mov    -0x2b8(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x2f4(%rbp)
  jle    L103
L416:
  mov    -0x2c0(%rbp),%rax
  cmp    -0x2b8(%rbp),%rax
  ja     L380
  mov    -0x2c0(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x2dc(%rbp)
  mov    -0x2b8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x2c0(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x2b8(%rbp),%rax
  mov    -0x2dc(%rbp),%edx
  mov    %edx,(%rax)
  addq   $0x4,-0x2c0(%rbp)
  subq   $0x4,-0x2b8(%rbp)
  jmp    L528
L380:
  nop
  mov    -0x2c8(%rbp),%rax
  sub    -0x298(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,-0x2d8(%rbp)
  mov    -0x2c0(%rbp),%rax
  sub    -0x2c8(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,-0x2d4(%rbp)
  mov    -0x2d4(%rbp),%eax
  cmp    -0x2d8(%rbp),%eax
  jle    L236
  mov    -0x2d8(%rbp),%eax
  mov    %eax,-0x2f8(%rbp)
  jmp    L584
L236:
  mov    -0x2d4(%rbp),%eax
  mov    %eax,-0x2f8(%rbp)
L584:
  mov    -0x298(%rbp),%rax
  mov    %rax,-0x2a0(%rbp)
  mov    -0x2f8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  neg    %rax
  mov    %rax,%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x2a8(%rbp)
  jmp    L620
L6:
  mov    -0x2a8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x2a0(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x2a8(%rbp),%rax
  mov    -0x2f4(%rbp),%edx
  mov    %edx,(%rax)
  addq   $0x4,-0x2a0(%rbp)
  addq   $0x4,-0x2a8(%rbp)
  subl   $0x1,-0x2f8(%rbp)
L620:
  cmpl   $0x0,-0x2f8(%rbp)
  jg     L6
  mov    -0x2b0(%rbp),%rax
  sub    -0x298(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,-0x2d0(%rbp)
  mov    -0x2b0(%rbp),%rax
  sub    -0x2b8(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,-0x2cc(%rbp)
  mov    -0x2ec(%rbp),%eax
  sub    $0x1,%eax
  sub    -0x2d0(%rbp),%eax
  cmp    %eax,-0x2cc(%rbp)
  jle    L42
  mov    -0x2ec(%rbp),%eax
  sub    $0x1,%eax
  sub    -0x2d0(%rbp),%eax
  mov    %eax,-0x2f8(%rbp)
  jmp    L263
L42:
  mov    -0x2cc(%rbp),%eax
  mov    %eax,-0x2f8(%rbp)
L263:
  mov    -0x2c0(%rbp),%rax
  mov    %rax,-0x2a0(%rbp)
  mov    -0x2ec(%rbp),%eax
  sub    -0x2f8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x298(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x2a8(%rbp)
  jmp    L472
L194:
  mov    -0x2a0(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x2a8(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x2a0(%rbp),%rax
  mov    -0x2f4(%rbp),%edx
  mov    %edx,(%rax)
  addq   $0x4,-0x2a0(%rbp)
  addq   $0x4,-0x2a8(%rbp)
  subl   $0x1,-0x2f8(%rbp)
L472:
  cmpl   $0x0,-0x2f8(%rbp)
  jg     L194
  mov    -0x2d4(%rbp),%eax
  cmp    -0x2cc(%rbp),%eax
  jle    L361
  cmpl   $0x1,-0x2d4(%rbp)
  jle    L152
  mov    -0x2f0(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rbp,%rax
  lea    -0x290(%rax),%rdx
  mov    -0x298(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x2f0(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rbp,%rax
  lea    -0x288(%rax),%rdx
  mov    -0x2d4(%rbp),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x2f0(%rbp)
L152:
  cmpl   $0x1,-0x2cc(%rbp)
  jle    L168
  mov    -0x2ec(%rbp),%eax
  sub    -0x2cc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x298(%rbp),%rax
  add    %rax,%rdx
  mov    -0x2f0(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rbp,%rax
  sub    $0x290,%rax
  mov    %rdx,(%rax)
  mov    -0x2f0(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rbp,%rax
  lea    -0x288(%rax),%rdx
  mov    -0x2cc(%rbp),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x2f0(%rbp)
  jmp    L168
L361:
  cmpl   $0x1,-0x2cc(%rbp)
  jle    L619
  mov    -0x2ec(%rbp),%eax
  sub    -0x2cc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x298(%rbp),%rax
  add    %rax,%rdx
  mov    -0x2f0(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rbp,%rax
  sub    $0x290,%rax
  mov    %rdx,(%rax)
  mov    -0x2f0(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rbp,%rax
  lea    -0x288(%rax),%rdx
  mov    -0x2cc(%rbp),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x2f0(%rbp)
L619:
  cmpl   $0x1,-0x2d4(%rbp)
  jle    L168
  mov    -0x2f0(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rbp,%rax
  lea    -0x290(%rax),%rdx
  mov    -0x298(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x2f0(%rbp),%eax
  cltq
  shl    $0x4,%rax
  add    %rbp,%rax
  lea    -0x288(%rax),%rdx
  mov    -0x2d4(%rbp),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x2f0(%rbp)
L168:
  cmpl   $0x0,-0x2f0(%rbp)
  jg     L648
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L403
  call   <__stack_chk_fail@plt>
L403:
  leave
  ret
```

assistant: ```c
void sortints(int *x, int n) {
  int i, j;
  int a, d, ba, dc, s, nn;
  int tmp1, v, v1, v2, v3;
  int *x0, *xa, *xb, *xc, *xd, *xh, *xl;
  struct {
    int *addr;
    int len;
  } stack[40];
  int top;
  top = 0;
  if (n > 1) {
    stack[top].addr = x;
    stack[top].len = n;
    ++top;
  }
  while (top > 0) {
    --top;
    x0 = stack[top].addr;
    nn = stack[top].len;
    if (nn < 10) {
      for (i = 1; i < nn; ++i) {
        tmp1 = x0[i];
        for (j = i; x0[j - 1] > tmp1;) {
          x0[j] = x0[j - 1];
          if (--j == 0)
            break;
        }
        x0[j] = tmp1;
      }
      continue;
    }
    if (nn < 320)
      v = ((x0[0]) <= (x0[nn / 2]) ? ((x0[nn / 2]) <= (x0[nn - 1]) ? (x0[nn / 2]) : (x0[nn - 1]) <= (x0[0]) ? (x0[0]) : (x0[nn - 1])) : ((x0[0]) <= (x0[nn - 1]) ? (x0[0]) : (x0[nn - 1]) <= (x0[nn / 2]) ? (x0[nn / 2]) : (x0[nn - 1])));
    else {
      v1 = ((x0[0]) <= (x0[1]) ? ((x0[1]) <= (x0[2]) ? (x0[1]) : (x0[2]) <= (x0[0]) ? (x0[0]) : (x0[2])) : ((x0[0]) <= (x0[2]) ? (x0[0]) : (x0[2]) <= (x0[1]) ? (x0[1]) : (x0[2])));
      v2 = ((x0[nn / 2 - 1]) <= (x0[nn / 2]) ? ((x0[nn / 2]) <= (x0[nn / 2 + 1]) ? (x0[nn / 2]) : (x0[nn / 2 + 1]) <= (x0[nn / 2 - 1]) ? (x0[nn / 2 - 1]) : (x0[nn / 2 + 1])) : ((x0[nn / 2 - 1]) <= (x0[nn / 2 + 1]) ? (x0[nn / 2 - 1]) : (x0[nn / 2 + 1]) <= (x0[nn / 2]) ? (x0[nn / 2]) : (x0[nn / 2 + 1])));
      v3 = ((x0[nn - 3]) <= (x0[nn - 2]) ? ((x0[nn - 2]) <= (x0[nn - 1]) ? (x0[nn - 2]) : (x0[nn - 1]) <= (x0[nn - 3]) ? (x0[nn - 3]) : (x0[nn - 1])) : ((x0[nn - 3]) <= (x0[nn - 1]) ? (x0[nn - 3]) : (x0[nn - 1]) <= (x0[nn - 2]) ? (x0[nn - 2]) : (x0[nn - 1])));
      v = ((v1) <= (v2) ? ((v2) <= (v3) ? (v2) : (v3) <= (v1) ? (v1) : (v3)) : ((v1) <= (v3) ? (v1) : (v3) <= (v2) ? (v2) : (v3)));
    }
    xa = xb = x0;
    xc = xd = x0 + (nn - 1);
    for (;;) {
      while (xb <= xc && *xb <= v) {
        if (*xb == v) {
          *xb = *xa;
          *xa = v;
          ++xa;
        }
        ++xb;
      }
      while (xc >= xb && *xc >= v) {
        if (*xc == v) {
          *xc = *xd;
          *xd = v;
          --xd;
        }
        --xc;
      }
      if (xb > xc)
        break;
      tmp1 = *xb;
      *xb = *xc;
      *xc = tmp1;
      ;
      ++xb;
      --xc;
    }
    a = xa - x0;
    ba = xb - xa;
    if (ba > a)
      s = a;
    else
      s = ba;
    for (xl = x0, xh = xb - s; s > 0; --s) {
      *xl = *xh;
      *xh = v;
      ++xl;
      ++xh;
    }
    d = xd - x0;
    dc = xd - xc;
    if (dc > nn - 1 - d)
      s = nn - 1 - d;
    else
      s = dc;
    for (xl = xb, xh = x0 + (nn - s); s > 0; --s) {
      *xh = *xl;
      *xl = v;
      ++xl;
      ++xh;
    }
    if (ba > dc) {
      if (ba > 1) {
        stack[top].addr = x0;
        stack[top].len = ba;
        ++top;
      }
      if (dc > 1) {
        stack[top].addr = x0 + (nn - dc);
        stack[top].len = dc;
        ++top;
      }
    } else {
      if (dc > 1) {
        stack[top].addr = x0 + (nn - dc);
        stack[top].len = dc;
        ++top;
      }
      if (ba > 1) {
        stack[top].addr = x0;
        stack[top].len = ba;
        ++top;
      }
    }
  }
}
```