user: 这段汇编代码用C语言表示是什么样的？

```asm
<ss_mintrosort>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x210,%rsp
  mov    %rdi,-0x1e8(%rbp)
  mov    %rsi,-0x1f0(%rbp)
  mov    %rdx,-0x1f8(%rbp)
  mov    %rcx,-0x200(%rbp)
  mov    %r8d,-0x204(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x1d0(%rbp)
  movl   $0x0,-0x1dc(%rbp)
  mov    -0x200(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,%edi
  call   <ss_ilg@plt>
  mov    %eax,-0x1d8(%rbp)
L212:
  mov    -0x200(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  cmp    $0x20,%rax
  jg     L537
  mov    -0x200(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  cmp    $0x4,%rax
  jle    L204
  mov    -0x204(%rbp),%edi
  mov    -0x200(%rbp),%rcx
  mov    -0x1f8(%rbp),%rdx
  mov    -0x1f0(%rbp),%rsi
  mov    -0x1e8(%rbp),%rax
  mov    %edi,%r8d
  mov    %rax,%rdi
  call   <ss_insertionsort@plt>
L204:
  mov    -0x1dc(%rbp),%eax
  not    %eax
  shr    $0x1f,%eax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  cmpl   $0x0,-0x1dc(%rbp)
  je     L15
  subl   $0x1,-0x1dc(%rbp)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x190,%rax
  mov    (%rax),%rax
  mov    %rax,-0x1f8(%rbp)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x188,%rax
  mov    (%rax),%rax
  mov    %rax,-0x200(%rbp)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x180,%rax
  mov    (%rax),%eax
  mov    %eax,-0x204(%rbp)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x17c,%rax
  mov    (%rax),%eax
  mov    %eax,-0x1d8(%rbp)
  jmp    L672
L537:
  mov    -0x204(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x1e8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x198(%rbp)
  mov    -0x1d8(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    %edx,-0x1d8(%rbp)
  test   %eax,%eax
  jne    L432
  mov    -0x200(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,%ecx
  mov    -0x1f8(%rbp),%rdx
  mov    -0x1f0(%rbp),%rsi
  mov    -0x198(%rbp),%rax
  mov    %rax,%rdi
  call   <ss_heapsort@plt>
L432:
  cmpl   $0x0,-0x1d8(%rbp)
  jns    L418
  mov    -0x1f8(%rbp),%rax
  add    $0x4,%rax
  mov    %rax,-0x1c8(%rbp)
  mov    -0x1f8(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,-0x1d4(%rbp)
  jmp    L556
L240:
  mov    -0x1c8(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,-0x1d0(%rbp)
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  je     L336
  mov    -0x1c8(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  cmp    $0x4,%rax
  jg     L191
  mov    -0x1d0(%rbp),%eax
  mov    %eax,-0x1d4(%rbp)
  mov    -0x1c8(%rbp),%rax
  mov    %rax,-0x1f8(%rbp)
L336:
  addq   $0x4,-0x1c8(%rbp)
L556:
  mov    -0x1c8(%rbp),%rax
  cmp    -0x200(%rbp),%rax
  jb     L240
  jmp    L189
L191:
  nop
L189:
  mov    -0x1f8(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cltq
  lea    -0x1(%rax),%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  cmp    %eax,-0x1d4(%rbp)
  jle    L58
  mov    -0x204(%rbp),%ecx
  mov    -0x1c8(%rbp),%rdx
  mov    -0x1f8(%rbp),%rsi
  mov    -0x1f0(%rbp),%rax
  mov    %rax,%rdi
  call   <ss_partition@plt>
  mov    %rax,-0x1f8(%rbp)
L58:
  mov    -0x1c8(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x200(%rbp),%rax
  sub    -0x1c8(%rbp),%rax
  cmp    %rax,%rdx
  jg     L615
  mov    -0x1c8(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  cmp    $0x4,%rax
  jle    L26
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1c8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x200(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x180(%rax),%rdx
  mov    -0x204(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x17c,%rax
  movl   $0xffffffff,(%rax)
  mov    -0x1c8(%rbp),%rax
  mov    %rax,-0x200(%rbp)
  addl   $0x1,-0x204(%rbp)
  mov    -0x1c8(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,%edi
  call   <ss_ilg@plt>
  mov    %eax,-0x1d8(%rbp)
  jmp    L672
L26:
  mov    -0x1c8(%rbp),%rax
  mov    %rax,-0x1f8(%rbp)
  movl   $0xffffffff,-0x1d8(%rbp)
  jmp    L672
L615:
  mov    -0x200(%rbp),%rax
  sub    -0x1c8(%rbp),%rax
  cmp    $0x4,%rax
  jle    L290
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1f8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x1c8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x204(%rbp),%eax
  lea    0x1(%rax),%ecx
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x180,%rax
  mov    %ecx,(%rax)
  mov    -0x1c8(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,%edi
  call   <ss_ilg@plt>
  mov    %rax,%rcx
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x17c,%rax
  mov    %ecx,(%rax)
  mov    -0x1c8(%rbp),%rax
  mov    %rax,-0x1f8(%rbp)
  movl   $0xffffffff,-0x1d8(%rbp)
  jmp    L672
L290:
  mov    -0x1c8(%rbp),%rax
  mov    %rax,-0x200(%rbp)
  addl   $0x1,-0x204(%rbp)
  mov    -0x1c8(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,%edi
  call   <ss_ilg@plt>
  mov    %eax,-0x1d8(%rbp)
  jmp    L672
L418:
  mov    -0x200(%rbp),%rcx
  mov    -0x1f8(%rbp),%rdx
  mov    -0x1f0(%rbp),%rsi
  mov    -0x198(%rbp),%rax
  mov    %rax,%rdi
  call   <ss_pivot@plt>
  mov    %rax,-0x1c8(%rbp)
  mov    -0x1c8(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,-0x1d4(%rbp)
  mov    -0x1f8(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x1cc(%rbp)
  mov    -0x1c8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1f8(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x1c8(%rbp),%rax
  mov    -0x1cc(%rbp),%edx
  mov    %edx,(%rax)
  mov    -0x1f8(%rbp),%rax
  mov    %rax,-0x1c0(%rbp)
  nop
L20:
  addq   $0x4,-0x1c0(%rbp)
  mov    -0x1c0(%rbp),%rax
  cmp    -0x200(%rbp),%rax
  jae    L323
  mov    -0x1c0(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,-0x1d0(%rbp)
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  je     L20
L323:
  mov    -0x1c0(%rbp),%rax
  mov    %rax,-0x1c8(%rbp)
  mov    -0x1c8(%rbp),%rax
  cmp    -0x200(%rbp),%rax
  jae    L164
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  jge    L164
  jmp    L25
L612:
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  jne    L25
  mov    -0x1c0(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x1cc(%rbp)
  mov    -0x1c8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1c0(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x1c8(%rbp),%rax
  mov    -0x1cc(%rbp),%edx
  mov    %edx,(%rax)
  addq   $0x4,-0x1c8(%rbp)
L25:
  addq   $0x4,-0x1c0(%rbp)
  mov    -0x1c0(%rbp),%rax
  cmp    -0x200(%rbp),%rax
  jae    L164
  mov    -0x1c0(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,-0x1d0(%rbp)
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  jle    L612
L164:
  mov    -0x200(%rbp),%rax
  mov    %rax,-0x1b8(%rbp)
  nop
L428:
  subq   $0x4,-0x1b8(%rbp)
  mov    -0x1b8(%rbp),%rax
  cmp    -0x1c0(%rbp),%rax
  jbe    L491
  mov    -0x1b8(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,-0x1d0(%rbp)
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  je     L428
L491:
  mov    -0x1b8(%rbp),%rax
  mov    %rax,-0x1b0(%rbp)
  mov    -0x1b0(%rbp),%rax
  cmp    -0x1c0(%rbp),%rax
  jbe    L642
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  jle    L642
  jmp    L159
L442:
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  jne    L159
  mov    -0x1b8(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x1cc(%rbp)
  mov    -0x1b0(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1b8(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x1b0(%rbp),%rax
  mov    -0x1cc(%rbp),%edx
  mov    %edx,(%rax)
  subq   $0x4,-0x1b0(%rbp)
L159:
  subq   $0x4,-0x1b8(%rbp)
  mov    -0x1b8(%rbp),%rax
  cmp    -0x1c0(%rbp),%rax
  jbe    L642
  mov    -0x1b8(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,-0x1d0(%rbp)
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  jge    L442
  jmp    L642
L470:
  mov    -0x1c0(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x1cc(%rbp)
  mov    -0x1b8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1c0(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x1b8(%rbp),%rax
  mov    -0x1cc(%rbp),%edx
  mov    %edx,(%rax)
  jmp    L160
L576:
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  jne    L160
  mov    -0x1c0(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x1cc(%rbp)
  mov    -0x1c8(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1c0(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x1c8(%rbp),%rax
  mov    -0x1cc(%rbp),%edx
  mov    %edx,(%rax)
  addq   $0x4,-0x1c8(%rbp)
L160:
  addq   $0x4,-0x1c0(%rbp)
  mov    -0x1c0(%rbp),%rax
  cmp    -0x1b8(%rbp),%rax
  jae    L247
  mov    -0x1c0(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,-0x1d0(%rbp)
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  jle    L576
  jmp    L247
L354:
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  jne    L247
  mov    -0x1b8(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x1cc(%rbp)
  mov    -0x1b0(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1b8(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x1b0(%rbp),%rax
  mov    -0x1cc(%rbp),%edx
  mov    %edx,(%rax)
  subq   $0x4,-0x1b0(%rbp)
L247:
  subq   $0x4,-0x1b8(%rbp)
  mov    -0x1b8(%rbp),%rax
  cmp    -0x1c0(%rbp),%rax
  jbe    L642
  mov    -0x1b8(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,-0x1d0(%rbp)
  mov    -0x1d0(%rbp),%eax
  cmp    -0x1d4(%rbp),%eax
  jge    L354
L642:
  mov    -0x1c0(%rbp),%rax
  cmp    -0x1b8(%rbp),%rax
  jb     L470
  mov    -0x1c8(%rbp),%rax
  cmp    -0x1b0(%rbp),%rax
  ja     L202
  mov    -0x1c0(%rbp),%rax
  sub    $0x4,%rax
  mov    %rax,-0x1b8(%rbp)
  mov    -0x1c8(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,-0x1e0(%rbp)
  mov    -0x1c0(%rbp),%rax
  sub    -0x1c8(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,-0x1cc(%rbp)
  mov    -0x1e0(%rbp),%eax
  cmp    -0x1cc(%rbp),%eax
  jle    L532
  mov    -0x1cc(%rbp),%eax
  mov    %eax,-0x1e0(%rbp)
L532:
  mov    -0x1f8(%rbp),%rax
  mov    %rax,-0x1a8(%rbp)
  mov    -0x1e0(%rbp),%eax
  cltq
  shl    $0x2,%rax
  neg    %rax
  mov    %rax,%rdx
  mov    -0x1c0(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x1a0(%rbp)
  jmp    L176
L460:
  mov    -0x1a8(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x1cc(%rbp)
  mov    -0x1a0(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1a8(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x1a0(%rbp),%rax
  mov    -0x1cc(%rbp),%edx
  mov    %edx,(%rax)
  subl   $0x1,-0x1e0(%rbp)
  addq   $0x4,-0x1a8(%rbp)
  addq   $0x4,-0x1a0(%rbp)
L176:
  cmpl   $0x0,-0x1e0(%rbp)
  jg     L460
  mov    -0x1b0(%rbp),%rax
  sub    -0x1b8(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,-0x1e0(%rbp)
  mov    -0x200(%rbp),%rax
  sub    -0x1b0(%rbp),%rax
  sar    $0x2,%rax
  sub    $0x1,%eax
  mov    %eax,-0x1cc(%rbp)
  mov    -0x1e0(%rbp),%eax
  cmp    -0x1cc(%rbp),%eax
  jle    L56
  mov    -0x1cc(%rbp),%eax
  mov    %eax,-0x1e0(%rbp)
L56:
  mov    -0x1c0(%rbp),%rax
  mov    %rax,-0x1a8(%rbp)
  mov    -0x1e0(%rbp),%eax
  cltq
  shl    $0x2,%rax
  neg    %rax
  mov    %rax,%rdx
  mov    -0x200(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x1a0(%rbp)
  jmp    L552
L570:
  mov    -0x1a8(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x1cc(%rbp)
  mov    -0x1a0(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x1a8(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x1a0(%rbp),%rax
  mov    -0x1cc(%rbp),%edx
  mov    %edx,(%rax)
  subl   $0x1,-0x1e0(%rbp)
  addq   $0x4,-0x1a8(%rbp)
  addq   $0x4,-0x1a0(%rbp)
L552:
  cmpl   $0x0,-0x1e0(%rbp)
  jg     L570
  mov    -0x1c0(%rbp),%rax
  sub    -0x1c8(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x1f8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x1c8(%rbp)
  mov    -0x1b0(%rbp),%rax
  sub    -0x1b8(%rbp),%rax
  neg    %rax
  mov    %rax,%rdx
  mov    -0x200(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x1b8(%rbp)
  mov    -0x1c8(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cltq
  lea    -0x1(%rax),%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  cmp    %eax,-0x1d4(%rbp)
  jle    L585
  mov    -0x204(%rbp),%ecx
  mov    -0x1b8(%rbp),%rdx
  mov    -0x1c8(%rbp),%rsi
  mov    -0x1f0(%rbp),%rax
  mov    %rax,%rdi
  call   <ss_partition@plt>
  jmp    L90
L585:
  mov    -0x1c8(%rbp),%rax
L90:
  mov    %rax,-0x1c0(%rbp)
  mov    -0x1c8(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x200(%rbp),%rax
  sub    -0x1b8(%rbp),%rax
  cmp    %rax,%rdx
  jg     L651
  mov    -0x200(%rbp),%rax
  sub    -0x1b8(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x1b8(%rbp),%rax
  sub    -0x1c0(%rbp),%rax
  cmp    %rax,%rdx
  jg     L222
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1c0(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x1b8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x204(%rbp),%eax
  lea    0x1(%rax),%ecx
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x180,%rax
  mov    %ecx,(%rax)
  mov    -0x1b8(%rbp),%rax
  sub    -0x1c0(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,%edi
  call   <ss_ilg@plt>
  mov    %rax,%rcx
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x17c,%rax
  mov    %ecx,(%rax)
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1b8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x200(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x180(%rax),%rdx
  mov    -0x204(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x17c(%rax),%rdx
  mov    -0x1d8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1c8(%rbp),%rax
  mov    %rax,-0x200(%rbp)
  jmp    L212
L222:
  mov    -0x1c8(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x1b8(%rbp),%rax
  sub    -0x1c0(%rbp),%rax
  cmp    %rax,%rdx
  jg     L547
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1b8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x200(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x180(%rax),%rdx
  mov    -0x204(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x17c(%rax),%rdx
  mov    -0x1d8(%rbp),%eax
  mov    %eax,(%rdx)
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1c0(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x1b8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x204(%rbp),%eax
  lea    0x1(%rax),%ecx
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x180,%rax
  mov    %ecx,(%rax)
  mov    -0x1b8(%rbp),%rax
  sub    -0x1c0(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,%edi
  call   <ss_ilg@plt>
  mov    %rax,%rcx
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x17c,%rax
  mov    %ecx,(%rax)
  mov    -0x1c8(%rbp),%rax
  mov    %rax,-0x200(%rbp)
  jmp    L212
L547:
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1b8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x200(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x180(%rax),%rdx
  mov    -0x204(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x17c(%rax),%rdx
  mov    -0x1d8(%rbp),%eax
  mov    %eax,(%rdx)
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1f8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x1c8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x180(%rax),%rdx
  mov    -0x204(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x17c(%rax),%rdx
  mov    -0x1d8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1c0(%rbp),%rax
  mov    %rax,-0x1f8(%rbp)
  mov    -0x1b8(%rbp),%rax
  mov    %rax,-0x200(%rbp)
  addl   $0x1,-0x204(%rbp)
  mov    -0x1b8(%rbp),%rax
  sub    -0x1c0(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,%edi
  call   <ss_ilg@plt>
  mov    %eax,-0x1d8(%rbp)
  jmp    L212
L651:
  mov    -0x1c8(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x1b8(%rbp),%rax
  sub    -0x1c0(%rbp),%rax
  cmp    %rax,%rdx
  jg     L6
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1c0(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x1b8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x204(%rbp),%eax
  lea    0x1(%rax),%ecx
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x180,%rax
  mov    %ecx,(%rax)
  mov    -0x1b8(%rbp),%rax
  sub    -0x1c0(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,%edi
  call   <ss_ilg@plt>
  mov    %rax,%rcx
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x17c,%rax
  mov    %ecx,(%rax)
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1f8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x1c8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x180(%rax),%rdx
  mov    -0x204(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x17c(%rax),%rdx
  mov    -0x1d8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1b8(%rbp),%rax
  mov    %rax,-0x1f8(%rbp)
  jmp    L212
L6:
  mov    -0x200(%rbp),%rax
  sub    -0x1b8(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x1b8(%rbp),%rax
  sub    -0x1c0(%rbp),%rax
  cmp    %rax,%rdx
  jg     L259
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1f8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x1c8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x180(%rax),%rdx
  mov    -0x204(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x17c(%rax),%rdx
  mov    -0x1d8(%rbp),%eax
  mov    %eax,(%rdx)
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1c0(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x1b8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x204(%rbp),%eax
  lea    0x1(%rax),%ecx
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x180,%rax
  mov    %ecx,(%rax)
  mov    -0x1b8(%rbp),%rax
  sub    -0x1c0(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,%edi
  call   <ss_ilg@plt>
  mov    %rax,%rcx
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  sub    $0x17c,%rax
  mov    %ecx,(%rax)
  mov    -0x1b8(%rbp),%rax
  mov    %rax,-0x1f8(%rbp)
  jmp    L212
L259:
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1f8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x1c8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x180(%rax),%rdx
  mov    -0x204(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x17c(%rax),%rdx
  mov    -0x1d8(%rbp),%eax
  mov    %eax,(%rdx)
  cmpl   $0xf,-0x1dc(%rbp)
  setle  %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x190(%rax),%rdx
  mov    -0x1b8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x188(%rax),%rdx
  mov    -0x200(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x180(%rax),%rdx
  mov    -0x204(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1dc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x1dc(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  add    %rbp,%rax
  lea    -0x17c(%rax),%rdx
  mov    -0x1d8(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x1c0(%rbp),%rax
  mov    %rax,-0x1f8(%rbp)
  mov    -0x1b8(%rbp),%rax
  mov    %rax,-0x200(%rbp)
  addl   $0x1,-0x204(%rbp)
  mov    -0x1b8(%rbp),%rax
  sub    -0x1c0(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,%edi
  call   <ss_ilg@plt>
  mov    %eax,-0x1d8(%rbp)
  jmp    L212
L202:
  addl   $0x1,-0x1d8(%rbp)
  mov    -0x1f8(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x1f0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cltq
  lea    -0x1(%rax),%rdx
  mov    -0x198(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  cmp    %eax,-0x1d4(%rbp)
  jle    L177
  mov    -0x204(%rbp),%ecx
  mov    -0x200(%rbp),%rdx
  mov    -0x1f8(%rbp),%rsi
  mov    -0x1f0(%rbp),%rax
  mov    %rax,%rdi
  call   <ss_partition@plt>
  mov    %rax,-0x1f8(%rbp)
  mov    -0x200(%rbp),%rax
  sub    -0x1f8(%rbp),%rax
  sar    $0x2,%rax
  mov    %eax,%edi
  call   <ss_ilg@plt>
  mov    %eax,-0x1d8(%rbp)
L177:
  addl   $0x1,-0x204(%rbp)
L672:
  jmp    L212
L15:
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L406
  call   <__stack_chk_fail@plt>
L406:
  leave
  ret
```

assistant: ```c
void ss_mintrosort(const unsigned char *T, const int *PA, int *first, int *last, int depth) {
  struct {
    int *a, *b, c;
    int d;
  } stack[(16)];
  const unsigned char *Td;
  int *a, *b, *c, *d, *e, *f;
  int s, t;
  int ssize;
  int limit;
  int v, x = 0;
  for (ssize = 0, limit = ss_ilg(last - first);;) {
    if ((last - first) <= (8)) {
      if (1 < (last - first)) {
        ss_insertionsort(T, PA, first, last, depth);
      }
      do {
        assert(0 <= ssize);
        if (ssize == 0) {
          return;
        }
        (first) = stack[--ssize].a, (last) = stack[ssize].b, (depth) = stack[ssize].c, (limit) = stack[ssize].d;
      } while (0);
      continue;
    }
    Td = T + depth;
    if (limit-- == 0) {
      ss_heapsort(Td, PA, first, last - first);
    }
    if (limit < 0) {
      for (a = first + 1, v = Td[PA[*first]]; a < last; ++a) {
        if ((x = Td[PA[*a]]) != v) {
          if (1 < (a - first)) {
            break;
          }
          v = x;
          first = a;
        }
      }
      if (Td[PA[*first] - 1] < v) {
        first = ss_partition(PA, first, a, depth);
      }
      if ((a - first) <= (last - a)) {
        if (1 < (a - first)) {
          do {
            assert(ssize < (16));
            stack[ssize].a = (a), stack[ssize].b = (last), stack[ssize].c = (depth), stack[ssize++].d = (-1);
          } while (0);
          last = a, depth += 1, limit = ss_ilg(a - first);
        } else {
          first = a, limit = -1;
        }
      } else {
        if (1 < (last - a)) {
          do {
            assert(ssize < (16));
            stack[ssize].a = (first), stack[ssize].b = (a), stack[ssize].c = (depth + 1), stack[ssize++].d = (ss_ilg(a - first));
          } while (0);
          first = a, limit = -1;
        } else {
          last = a, depth += 1, limit = ss_ilg(a - first);
        }
      }
      continue;
    }
    a = ss_pivot(Td, PA, first, last);
    v = Td[PA[*a]];
    do {
      t = (*first);
      (*first) = (*a);
      (*a) = t;
    } while (0);
    for (b = first; (++b < last) && ((x = Td[PA[*b]]) == v);) {
    }
    if (((a = b) < last) && (x < v)) {
      for (; (++b < last) && ((x = Td[PA[*b]]) <= v);) {
        if (x == v) {
          do {
            t = (*b);
            (*b) = (*a);
            (*a) = t;
          } while (0);
          ++a;
        }
      }
    }
    for (c = last; (b < --c) && ((x = Td[PA[*c]]) == v);) {
    }
    if ((b < (d = c)) && (x > v)) {
      for (; (b < --c) && ((x = Td[PA[*c]]) >= v);) {
        if (x == v) {
          do {
            t = (*c);
            (*c) = (*d);
            (*d) = t;
          } while (0);
          --d;
        }
      }
    }
    for (; b < c;) {
      do {
        t = (*b);
        (*b) = (*c);
        (*c) = t;
      } while (0);
      for (; (++b < c) && ((x = Td[PA[*b]]) <= v);) {
        if (x == v) {
          do {
            t = (*b);
            (*b) = (*a);
            (*a) = t;
          } while (0);
          ++a;
        }
      }
      for (; (b < --c) && ((x = Td[PA[*c]]) >= v);) {
        if (x == v) {
          do {
            t = (*c);
            (*c) = (*d);
            (*d) = t;
          } while (0);
          --d;
        }
      }
    }
    if (a <= d) {
      c = b - 1;
      if ((s = a - first) > (t = b - a)) {
        s = t;
      }
      for (e = first, f = b - s; 0 < s; --s, ++e, ++f) {
        do {
          t = (*e);
          (*e) = (*f);
          (*f) = t;
        } while (0);
      }
      if ((s = d - c) > (t = last - d - 1)) {
        s = t;
      }
      for (e = b, f = last - s; 0 < s; --s, ++e, ++f) {
        do {
          t = (*e);
          (*e) = (*f);
          (*f) = t;
        } while (0);
      }
      a = first + (b - a), c = last - (d - c);
      b = (v <= Td[PA[*a] - 1]) ? a : ss_partition(PA, a, c, depth);
      if ((a - first) <= (last - c)) {
        if ((last - c) <= (c - b)) {
          do {
            assert(ssize < (16));
            stack[ssize].a = (b), stack[ssize].b = (c), stack[ssize].c = (depth + 1), stack[ssize++].d = (ss_ilg(c - b));
          } while (0);
          do {
            assert(ssize < (16));
            stack[ssize].a = (c), stack[ssize].b = (last), stack[ssize].c = (depth), stack[ssize++].d = (limit);
          } while (0);
          last = a;
        } else if ((a - first) <= (c - b)) {
          do {
            assert(ssize < (16));
            stack[ssize].a = (c), stack[ssize].b = (last), stack[ssize].c = (depth), stack[ssize++].d = (limit);
          } while (0);
          do {
            assert(ssize < (16));
            stack[ssize].a = (b), stack[ssize].b = (c), stack[ssize].c = (depth + 1), stack[ssize++].d = (ss_ilg(c - b));
          } while (0);
          last = a;
        } else {
          do {
            assert(ssize < (16));
            stack[ssize].a = (c), stack[ssize].b = (last), stack[ssize].c = (depth), stack[ssize++].d = (limit);
          } while (0);
          do {
            assert(ssize < (16));
            stack[ssize].a = (first), stack[ssize].b = (a), stack[ssize].c = (depth), stack[ssize++].d = (limit);
          } while (0);
          first = b, last = c, depth += 1, limit = ss_ilg(c - b);
        }
      } else {
        if ((a - first) <= (c - b)) {
          do {
            assert(ssize < (16));
            stack[ssize].a = (b), stack[ssize].b = (c), stack[ssize].c = (depth + 1), stack[ssize++].d = (ss_ilg(c - b));
          } while (0);
          do {
            assert(ssize < (16));
            stack[ssize].a = (first), stack[ssize].b = (a), stack[ssize].c = (depth), stack[ssize++].d = (limit);
          } while (0);
          first = c;
        } else if ((last - c) <= (c - b)) {
          do {
            assert(ssize < (16));
            stack[ssize].a = (first), stack[ssize].b = (a), stack[ssize].c = (depth), stack[ssize++].d = (limit);
          } while (0);
          do {
            assert(ssize < (16));
            stack[ssize].a = (b), stack[ssize].b = (c), stack[ssize].c = (depth + 1), stack[ssize++].d = (ss_ilg(c - b));
          } while (0);
          first = c;
        } else {
          do {
            assert(ssize < (16));
            stack[ssize].a = (first), stack[ssize].b = (a), stack[ssize].c = (depth), stack[ssize++].d = (limit);
          } while (0);
          do {
            assert(ssize < (16));
            stack[ssize].a = (c), stack[ssize].b = (last), stack[ssize].c = (depth), stack[ssize++].d = (limit);
          } while (0);
          first = b, last = c, depth += 1, limit = ss_ilg(c - b);
        }
      }
    } else {
      limit += 1;
      if (Td[PA[*first] - 1] < v) {
        first = ss_partition(PA, first, last, depth);
        limit = ss_ilg(last - first);
      }
      depth += 1;
    }
  }
}
```