user: Translate the below assembly code into C programming language:

```asm
<scale_volume_image_cubic>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r13
  push   %r12
  push   %rbx
  sub    $0xb8,%rsp
  mov    %rdi,-0xa8(%rbp)
  mov    %esi,-0xac(%rbp)
  mov    %edx,-0xb0(%rbp)
  mov    %ecx,-0xb4(%rbp)
  mov    %r8,-0xc0(%rbp)
  mov    %r9d,-0xb8(%rbp)
  movss  %xmm0,-0xc4(%rbp)
  mov    -0xac(%rbp),%eax
  imul   0x20(%rbp),%eax
  mov    %eax,-0x60(%rbp)
  mov    -0xb8(%rbp),%eax
  imul   0x10(%rbp),%eax
  mov    0x20(%rbp),%edx
  imul   %edx,%eax
  mov    %eax,-0x5c(%rbp)
  mov    -0xac(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    0x20(%rbp),%edx
  imul   %edx,%eax
  mov    %eax,-0x58(%rbp)
  cmpl   $0x0,0x28(%rbp)
  je     L473
  movss  D9(%rip),%xmm0
  divss  -0xc4(%rbp),%xmm0
  movss  %xmm0,-0x44(%rbp)
  movl   $0x0,-0x90(%rbp)
  jmp    L705
L675:
  cmpl   $0x1,-0xb4(%rbp)
  jle    L96
  mov    0x18(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x90(%rbp),%eax
  shl    $0x7,%eax
  mov    -0xb4(%rbp),%edx
  lea    -0x1(%rdx),%ebx
  cltd
  idiv   %ebx
  mov    %eax,-0x84(%rbp)
  mov    -0xb4(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x90(%rbp)
  jne    L636
  subl   $0x1,-0x84(%rbp)
L636:
  mov    -0x84(%rbp),%eax
  and    $0x7f,%eax
  mov    %eax,-0x78(%rbp)
  sarl   $0x7,-0x84(%rbp)
  jmp    L526
L96:
  movl   $0x0,-0x78(%rbp)
  mov    -0x78(%rbp),%eax
  mov    %eax,-0x84(%rbp)
L526:
  movl   $0x0,-0x94(%rbp)
  jmp    L759
L667:
  cmpl   $0x1,-0xb0(%rbp)
  jle    L71
  mov    0x10(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x94(%rbp),%eax
  shl    $0x7,%eax
  mov    -0xb0(%rbp),%edx
  lea    -0x1(%rdx),%ebx
  cltd
  idiv   %ebx
  mov    %eax,-0x88(%rbp)
  mov    -0xb0(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x94(%rbp)
  jne    L252
  subl   $0x1,-0x88(%rbp)
L252:
  mov    -0x88(%rbp),%eax
  and    $0x7f,%eax
  mov    %eax,-0x7c(%rbp)
  sarl   $0x7,-0x88(%rbp)
  jmp    L36
L71:
  movl   $0x0,-0x7c(%rbp)
  mov    -0x7c(%rbp),%eax
  mov    %eax,-0x88(%rbp)
L36:
  movl   $0x0,-0x98(%rbp)
  jmp    L440
L21:
  cmpl   $0x1,-0xac(%rbp)
  jle    L297
  mov    -0xb8(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x98(%rbp),%eax
  shl    $0x7,%eax
  mov    -0xac(%rbp),%edx
  lea    -0x1(%rdx),%ebx
  cltd
  idiv   %ebx
  mov    %eax,-0x8c(%rbp)
  mov    -0xac(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x98(%rbp)
  jne    L171
  subl   $0x1,-0x8c(%rbp)
L171:
  mov    -0x8c(%rbp),%eax
  and    $0x7f,%eax
  mov    %eax,-0x80(%rbp)
  sarl   $0x7,-0x8c(%rbp)
  jmp    L731
L297:
  movl   $0x0,-0x80(%rbp)
  mov    -0x80(%rbp),%eax
  mov    %eax,-0x8c(%rbp)
L731:
  mov    -0x84(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0xb8(%rbp),%eax
  imul   0x10(%rbp),%eax
  imul   %eax,%edx
  mov    -0x88(%rbp),%eax
  sub    $0x1,%eax
  imul   -0xb8(%rbp),%eax
  add    %eax,%edx
  mov    -0x8c(%rbp),%eax
  sub    $0x1,%eax
  add    %edx,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0xc0(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x5c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x38(%rbp)
  mov    -0x5c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x30(%rbp)
  mov    -0x5c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x28(%rbp)
  movl   $0x0,-0x9c(%rbp)
  jmp    L567
L541:
  mov    -0xb8(%rbp),%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    -0xb8(%rbp),%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x54(%rbp)
  cmpl   $0x0,-0x88(%rbp)
  jle    L632
  mov    0x20(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x74(%rbp)
  jmp    L601
L632:
  mov    -0x54(%rbp),%eax
  mov    %eax,-0x74(%rbp)
L601:
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x50(%rbp)
  mov    -0xb0(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x88(%rbp)
  jge    L292
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    -0xb8(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    -0xb8(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x70(%rbp)
  jmp    L32
L292:
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x70(%rbp)
L32:
  mov    -0x7c(%rbp),%edi
  mov    -0x70(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x54(%rbp),%esi
  mov    -0x74(%rbp),%eax
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x4c(%rbp)
  cmpl   $0x0,-0x84(%rbp)
  jle    L571
  mov    -0xb8(%rbp),%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    -0xb8(%rbp),%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x54(%rbp)
  cmpl   $0x0,-0x88(%rbp)
  jle    L268
  mov    0x20(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x74(%rbp)
  jmp    L499
L268:
  mov    -0x54(%rbp),%eax
  mov    %eax,-0x74(%rbp)
L499:
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x50(%rbp)
  mov    -0xb0(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x88(%rbp)
  jge    L397
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    -0xb8(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    -0xb8(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x70(%rbp)
  jmp    L87
L397:
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x70(%rbp)
L87:
  mov    -0x7c(%rbp),%edi
  mov    -0x70(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x54(%rbp),%esi
  mov    -0x74(%rbp),%eax
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x68(%rbp)
  jmp    L437
L571:
  mov    -0x4c(%rbp),%eax
  mov    %eax,-0x68(%rbp)
L437:
  mov    -0xb8(%rbp),%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    -0xb8(%rbp),%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x54(%rbp)
  cmpl   $0x0,-0x88(%rbp)
  jle    L584
  mov    0x20(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x74(%rbp)
  jmp    L311
L584:
  mov    -0x54(%rbp),%eax
  mov    %eax,-0x74(%rbp)
L311:
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x50(%rbp)
  mov    -0xb0(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x88(%rbp)
  jge    L471
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    -0xb8(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    -0xb8(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x70(%rbp)
  jmp    L446
L471:
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x70(%rbp)
L446:
  mov    -0x7c(%rbp),%edi
  mov    -0x70(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x54(%rbp),%esi
  mov    -0x74(%rbp),%eax
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x48(%rbp)
  mov    -0xb4(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x84(%rbp)
  jge    L782
  mov    -0xb8(%rbp),%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    -0xb8(%rbp),%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x54(%rbp)
  cmpl   $0x0,-0x88(%rbp)
  jle    L321
  mov    0x20(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x74(%rbp)
  jmp    L419
L321:
  mov    -0x54(%rbp),%eax
  mov    %eax,-0x74(%rbp)
L419:
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x50(%rbp)
  mov    -0xb0(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x88(%rbp)
  jge    L113
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r13d
  mov    -0xb8(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%r12d
  mov    -0xb8(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%ebx
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0xc4(%rbp),%edx
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    -0x80(%rbp),%edx
  mov    %edx,%r8d
  mov    %r13d,%ecx
  mov    %r12d,%edx
  mov    %ebx,%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x70(%rbp)
  jmp    L359
L113:
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x70(%rbp)
L359:
  mov    -0x7c(%rbp),%edi
  mov    -0x70(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x54(%rbp),%esi
  mov    -0x74(%rbp),%eax
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x64(%rbp)
  jmp    L82
L782:
  mov    -0x48(%rbp),%eax
  mov    %eax,-0x64(%rbp)
L82:
  mov    -0x78(%rbp),%edi
  mov    -0x64(%rbp),%ecx
  mov    -0x48(%rbp),%edx
  mov    -0x4c(%rbp),%esi
  mov    -0x68(%rbp),%eax
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x6c(%rbp)
  cmpl   $0x0,-0x6c(%rbp)
  jns    L150
  movl   $0x0,-0x6c(%rbp)
L150:
  cmpl   $0xff,-0x6c(%rbp)
  jle    L415
  movl   $0xff,-0x6c(%rbp)
L415:
  mov    -0x44(%rbp),%edx
  mov    -0x6c(%rbp),%eax
  movd   %edx,%xmm0
  mov    %eax,%edi
  call   <gamma_correct@plt>
  mov    %eax,%edx
  mov    -0x90(%rbp),%eax
  imul   -0x58(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x94(%rbp),%eax
  imul   -0x60(%rbp),%eax
  add    %eax,%ecx
  mov    -0x98(%rbp),%eax
  imul   0x20(%rbp),%eax
  add    %eax,%ecx
  mov    -0x9c(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0xa8(%rbp),%rax
  add    %rcx,%rax
  mov    %dl,(%rax)
  addq   $0x1,-0x40(%rbp)
  addq   $0x1,-0x38(%rbp)
  addq   $0x1,-0x30(%rbp)
  addq   $0x1,-0x28(%rbp)
  addl   $0x1,-0x9c(%rbp)
L567:
  mov    -0x9c(%rbp),%eax
  cmp    0x20(%rbp),%eax
  jl     L541
  addl   $0x1,-0x98(%rbp)
L440:
  mov    -0x98(%rbp),%eax
  cmp    -0xac(%rbp),%eax
  jl     L21
  addl   $0x1,-0x94(%rbp)
L759:
  mov    -0x94(%rbp),%eax
  cmp    -0xb0(%rbp),%eax
  jl     L667
  addl   $0x1,-0x90(%rbp)
L705:
  mov    -0x90(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L675
  jmp    L337
L473:
  movl   $0x0,-0x90(%rbp)
  jmp    L229
L411:
  cmpl   $0x1,-0xb4(%rbp)
  jle    L685
  mov    0x18(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x90(%rbp),%eax
  shl    $0x7,%eax
  mov    -0xb4(%rbp),%edx
  lea    -0x1(%rdx),%ebx
  cltd
  idiv   %ebx
  mov    %eax,-0x84(%rbp)
  mov    -0xb4(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x90(%rbp)
  jne    L626
  subl   $0x1,-0x84(%rbp)
L626:
  mov    -0x84(%rbp),%eax
  and    $0x7f,%eax
  mov    %eax,-0x78(%rbp)
  sarl   $0x7,-0x84(%rbp)
  jmp    L548
L685:
  movl   $0x0,-0x78(%rbp)
  mov    -0x78(%rbp),%eax
  mov    %eax,-0x84(%rbp)
L548:
  movl   $0x0,-0x94(%rbp)
  jmp    L369
L624:
  cmpl   $0x1,-0xb0(%rbp)
  jle    L539
  mov    0x10(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x94(%rbp),%eax
  shl    $0x7,%eax
  mov    -0xb0(%rbp),%edx
  lea    -0x1(%rdx),%ebx
  cltd
  idiv   %ebx
  mov    %eax,-0x88(%rbp)
  mov    -0xb0(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x94(%rbp)
  jne    L589
  subl   $0x1,-0x88(%rbp)
L589:
  mov    -0x88(%rbp),%eax
  and    $0x7f,%eax
  mov    %eax,-0x7c(%rbp)
  sarl   $0x7,-0x88(%rbp)
  jmp    L99
L539:
  movl   $0x0,-0x7c(%rbp)
  mov    -0x7c(%rbp),%eax
  mov    %eax,-0x88(%rbp)
L99:
  movl   $0x0,-0x98(%rbp)
  jmp    L421
L105:
  cmpl   $0x1,-0xac(%rbp)
  jle    L633
  mov    -0xb8(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x98(%rbp),%eax
  shl    $0x7,%eax
  mov    -0xac(%rbp),%edx
  lea    -0x1(%rdx),%ebx
  cltd
  idiv   %ebx
  mov    %eax,-0x8c(%rbp)
  mov    -0xac(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x98(%rbp)
  jne    L486
  subl   $0x1,-0x8c(%rbp)
L486:
  mov    -0x8c(%rbp),%eax
  and    $0x7f,%eax
  mov    %eax,-0x80(%rbp)
  sarl   $0x7,-0x8c(%rbp)
  jmp    L596
L633:
  movl   $0x0,-0x80(%rbp)
  mov    -0x80(%rbp),%eax
  mov    %eax,-0x8c(%rbp)
L596:
  mov    -0x84(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0xb8(%rbp),%eax
  imul   0x10(%rbp),%eax
  imul   %eax,%edx
  mov    -0x88(%rbp),%eax
  sub    $0x1,%eax
  imul   -0xb8(%rbp),%eax
  add    %eax,%edx
  mov    -0x8c(%rbp),%eax
  sub    $0x1,%eax
  add    %edx,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0xc0(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x5c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x38(%rbp)
  mov    -0x5c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x30(%rbp)
  mov    -0x5c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x28(%rbp)
  movl   $0x0,-0x9c(%rbp)
  jmp    L60
L291:
  mov    -0xb8(%rbp),%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0xb8(%rbp),%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x38(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdi
  mov    -0x38(%rbp),%rax
  add    %rdi,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x54(%rbp)
  cmpl   $0x0,-0x88(%rbp)
  jle    L625
  mov    0x20(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x38(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x74(%rbp)
  jmp    L76
L625:
  mov    -0x54(%rbp),%eax
  mov    %eax,-0x74(%rbp)
L76:
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x38(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdi
  mov    -0x38(%rbp),%rax
  add    %rdi,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x50(%rbp)
  mov    -0xb0(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x88(%rbp)
  jge    L514
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0xb8(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0xb8(%rbp),%esi
  mov    %esi,%eax
  add    %eax,%eax
  add    %esi,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x38(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edi
  mov    %edi,%eax
  add    %eax,%eax
  add    %edi,%eax
  movslq %eax,%rdi
  mov    -0x38(%rbp),%rax
  add    %rdi,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x70(%rbp)
  jmp    L754
L514:
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x70(%rbp)
L754:
  mov    -0x7c(%rbp),%edi
  mov    -0x70(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x54(%rbp),%esi
  mov    -0x74(%rbp),%eax
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x4c(%rbp)
  cmpl   $0x0,-0x84(%rbp)
  jle    L741
  mov    -0xb8(%rbp),%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0xb8(%rbp),%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x40(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdi
  mov    -0x40(%rbp),%rax
  add    %rdi,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x54(%rbp)
  cmpl   $0x0,-0x88(%rbp)
  jle    L418
  mov    0x20(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x40(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x74(%rbp)
  jmp    L46
L418:
  mov    -0x54(%rbp),%eax
  mov    %eax,-0x74(%rbp)
L46:
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x40(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdi
  mov    -0x40(%rbp),%rax
  add    %rdi,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x50(%rbp)
  mov    -0xb0(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x88(%rbp)
  jge    L350
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0xb8(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0xb8(%rbp),%esi
  mov    %esi,%eax
  add    %eax,%eax
  add    %esi,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x40(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edi
  mov    %edi,%eax
  add    %eax,%eax
  add    %edi,%eax
  movslq %eax,%rdi
  mov    -0x40(%rbp),%rax
  add    %rdi,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x70(%rbp)
  jmp    L191
L350:
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x70(%rbp)
L191:
  mov    -0x7c(%rbp),%edi
  mov    -0x70(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x54(%rbp),%esi
  mov    -0x74(%rbp),%eax
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x68(%rbp)
  jmp    L148
L741:
  mov    -0x4c(%rbp),%eax
  mov    %eax,-0x68(%rbp)
L148:
  mov    -0xb8(%rbp),%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0xb8(%rbp),%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x30(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdi
  mov    -0x30(%rbp),%rax
  add    %rdi,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x54(%rbp)
  cmpl   $0x0,-0x88(%rbp)
  jle    L289
  mov    0x20(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x30(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x74(%rbp)
  jmp    L725
L289:
  mov    -0x54(%rbp),%eax
  mov    %eax,-0x74(%rbp)
L725:
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x30(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdi
  mov    -0x30(%rbp),%rax
  add    %rdi,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x50(%rbp)
  mov    -0xb0(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x88(%rbp)
  jge    L331
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0xb8(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0xb8(%rbp),%esi
  mov    %esi,%eax
  add    %eax,%eax
  add    %esi,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x30(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edi
  mov    %edi,%eax
  add    %eax,%eax
  add    %edi,%eax
  movslq %eax,%rdi
  mov    -0x30(%rbp),%rax
  add    %rdi,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x70(%rbp)
  jmp    L770
L331:
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x70(%rbp)
L770:
  mov    -0x7c(%rbp),%edi
  mov    -0x70(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x54(%rbp),%esi
  mov    -0x74(%rbp),%eax
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x48(%rbp)
  mov    -0xb4(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x84(%rbp)
  jge    L794
  mov    -0xb8(%rbp),%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0xb8(%rbp),%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdi
  mov    -0x28(%rbp),%rax
  add    %rdi,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x54(%rbp)
  cmpl   $0x0,-0x88(%rbp)
  jle    L307
  mov    0x20(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x74(%rbp)
  jmp    L283
L307:
  mov    -0x54(%rbp),%eax
  mov    %eax,-0x74(%rbp)
L283:
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x3,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdi
  mov    -0x28(%rbp),%rax
  add    %rdi,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x50(%rbp)
  mov    -0xb0(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x88(%rbp)
  jge    L463
  mov    -0xb8(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0xb8(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    $0x2,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0xb8(%rbp),%esi
  mov    %esi,%eax
  add    %eax,%eax
  add    %esi,%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x28(%rbp),%rax
  add    %rsi,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0xb8(%rbp),%eax
  imul   0x20(%rbp),%eax
  mov    %eax,%edi
  mov    %edi,%eax
  add    %eax,%eax
  add    %edi,%eax
  movslq %eax,%rdi
  mov    -0x28(%rbp),%rax
  add    %rdi,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    -0x80(%rbp),%edi
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x70(%rbp)
  jmp    L453
L463:
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x70(%rbp)
L453:
  mov    -0x7c(%rbp),%edi
  mov    -0x70(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x54(%rbp),%esi
  mov    -0x74(%rbp),%eax
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x64(%rbp)
  jmp    L339
L794:
  mov    -0x48(%rbp),%eax
  mov    %eax,-0x64(%rbp)
L339:
  mov    -0x78(%rbp),%edi
  mov    -0x64(%rbp),%ecx
  mov    -0x48(%rbp),%edx
  mov    -0x4c(%rbp),%esi
  mov    -0x68(%rbp),%eax
  mov    %edi,%r8d
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,-0x6c(%rbp)
  cmpl   $0x0,-0x6c(%rbp)
  jns    L37
  movl   $0x0,-0x6c(%rbp)
L37:
  cmpl   $0xff,-0x6c(%rbp)
  jle    L201
  movl   $0xff,-0x6c(%rbp)
L201:
  mov    -0x90(%rbp),%eax
  imul   -0x58(%rbp),%eax
  mov    %eax,%edx
  mov    -0x94(%rbp),%eax
  imul   -0x60(%rbp),%eax
  add    %eax,%edx
  mov    -0x98(%rbp),%eax
  imul   0x20(%rbp),%eax
  add    %eax,%edx
  mov    -0x9c(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  mov    -0x6c(%rbp),%edx
  mov    %dl,(%rax)
  addq   $0x1,-0x40(%rbp)
  addq   $0x1,-0x38(%rbp)
  addq   $0x1,-0x30(%rbp)
  addq   $0x1,-0x28(%rbp)
  addl   $0x1,-0x9c(%rbp)
L60:
  mov    -0x9c(%rbp),%eax
  cmp    0x20(%rbp),%eax
  jl     L291
  addl   $0x1,-0x98(%rbp)
L421:
  mov    -0x98(%rbp),%eax
  cmp    -0xac(%rbp),%eax
  jl     L105
  addl   $0x1,-0x94(%rbp)
L369:
  mov    -0x94(%rbp),%eax
  cmp    -0xb0(%rbp),%eax
  jl     L624
  addl   $0x1,-0x90(%rbp)
L229:
  mov    -0x90(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L411
L337:
  nop
  add    $0xb8,%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D9
datatype: f32

tool: D9: 1

assistant: ```c
void scale_volume_image_cubic(unsigned char *dst, int dw, int dh, int dd, unsigned char *src, int sw, int sh, int sd, int bpp, int gc, float gamma) {
  int n, x, y, z;
  int ix, iy, iz;
  int wx, wy, wz;
  int a, b, c, d;
  int val, v0, v1, v2, v3;
  int dstride = dw * bpp;
  int sslice = sw * sh * bpp;
  int dslice = dw * dh * bpp;
  unsigned char *s0, *s1, *s2, *s3;
  float invgamma;
  if (gc) {
    invgamma = 1.0 / gamma;
    for (z = 0; z < dd; ++z) {
      if (dd > 1) {
        iz = (((sd - 1) * z) << 7) / (dd - 1);
        if (z == dd - 1)
          --iz;
        wz = iz & 0x7f;
        iz >>= 7;
      } else
        iz = wz = 0;
      for (y = 0; y < dh; ++y) {
        if (dh > 1) {
          iy = (((sh - 1) * y) << 7) / (dh - 1);
          if (y == dh - 1)
            --iy;
          wy = iy & 0x7f;
          iy >>= 7;
        } else
          iy = wy = 0;
        for (x = 0; x < dw; ++x) {
          if (dw > 1) {
            ix = (((sw - 1) * x) << 7) / (dw - 1);
            if (x == dw - 1)
              --ix;
            wx = ix & 0x7f;
            ix >>= 7;
          } else
            ix = wx = 0;
          s0 = src + (((iz - 1) * (sw * sh)) + ((iy - 1) * sw) + (ix - 1)) * bpp;
          s1 = s0 + sslice;
          s2 = s1 + sslice;
          s3 = s2 + sslice;
          for (n = 0; n < bpp; ++n) {
            b = icerp(gamma_correct(s1[(sw + 0) * bpp], gamma), gamma_correct(s1[(sw + 1) * bpp], gamma), gamma_correct(s1[(sw + 2) * bpp], gamma), gamma_correct(s1[(sw + 3) * bpp], gamma), wx);
            if (iy > 0) {
              a = icerp(gamma_correct(s1[0], gamma), gamma_correct(s1[bpp], gamma), gamma_correct(s1[2 * bpp], gamma), gamma_correct(s1[3 * bpp], gamma), wx);
            } else
              a = b;
            c = icerp(gamma_correct(s1[(2 * sw + 0) * bpp], gamma), gamma_correct(s1[(2 * sw + 1) * bpp], gamma), gamma_correct(s1[(2 * sw + 2) * bpp], gamma), gamma_correct(s1[(2 * sw + 3) * bpp], gamma), wx);
            if (iy < dh - 1) {
              d = icerp(gamma_correct(s1[(3 * sw + 0) * bpp], gamma), gamma_correct(s1[(3 * sw + 1) * bpp], gamma), gamma_correct(s1[(3 * sw + 2) * bpp], gamma), gamma_correct(s1[(3 * sw + 3) * bpp], gamma), wx);
            } else
              d = c;
            v1 = icerp(a, b, c, d, wy);
            if (iz > 0) {
              b = icerp(gamma_correct(s0[(sw + 0) * bpp], gamma), gamma_correct(s0[(sw + 1) * bpp], gamma), gamma_correct(s0[(sw + 2) * bpp], gamma), gamma_correct(s0[(sw + 3) * bpp], gamma), wx);
              if (iy > 0) {
                a = icerp(gamma_correct(s0[0], gamma), gamma_correct(s0[bpp], gamma), gamma_correct(s0[2 * bpp], gamma), gamma_correct(s0[3 * bpp], gamma), wx);
              } else
                a = b;
              c = icerp(gamma_correct(s0[(2 * sw + 0) * bpp], gamma), gamma_correct(s0[(2 * sw + 1) * bpp], gamma), gamma_correct(s0[(2 * sw + 2) * bpp], gamma), gamma_correct(s0[(2 * sw + 3) * bpp], gamma), wx);
              if (iy < dh - 1) {
                d = icerp(gamma_correct(s0[(3 * sw + 0) * bpp], gamma), gamma_correct(s0[(3 * sw + 1) * bpp], gamma), gamma_correct(s0[(3 * sw + 2) * bpp], gamma), gamma_correct(s0[(3 * sw + 3) * bpp], gamma), wx);
              } else
                d = c;
              v0 = icerp(a, b, c, d, wy);
            } else
              v0 = v1;
            b = icerp(gamma_correct(s2[(sw + 0) * bpp], gamma), gamma_correct(s2[(sw + 1) * bpp], gamma), gamma_correct(s2[(sw + 2) * bpp], gamma), gamma_correct(s2[(sw + 3) * bpp], gamma), wx);
            if (iy > 0) {
              a = icerp(gamma_correct(s2[0], gamma), gamma_correct(s2[bpp], gamma), gamma_correct(s2[2 * bpp], gamma), gamma_correct(s2[3 * bpp], gamma), wx);
            } else
              a = b;
            c = icerp(gamma_correct(s2[(2 * sw + 0) * bpp], gamma), gamma_correct(s2[(2 * sw + 1) * bpp], gamma), gamma_correct(s2[(2 * sw + 2) * bpp], gamma), gamma_correct(s2[(2 * sw + 3) * bpp], gamma), wx);
            if (iy < dh - 1) {
              d = icerp(gamma_correct(s2[(3 * sw + 0) * bpp], gamma), gamma_correct(s2[(3 * sw + 1) * bpp], gamma), gamma_correct(s2[(3 * sw + 2) * bpp], gamma), gamma_correct(s2[(3 * sw + 3) * bpp], gamma), wx);
            } else
              d = c;
            v2 = icerp(a, b, c, d, wy);
            if (iz < dd - 1) {
              b = icerp(gamma_correct(s3[(sw + 0) * bpp], gamma), gamma_correct(s3[(sw + 1) * bpp], gamma), gamma_correct(s3[(sw + 2) * bpp], gamma), gamma_correct(s3[(sw + 3) * bpp], gamma), wx);
              if (iy > 0) {
                a = icerp(gamma_correct(s3[0], gamma), gamma_correct(s3[bpp], gamma), gamma_correct(s3[2 * bpp], gamma), gamma_correct(s3[3 * bpp], gamma), wx);
              } else
                a = b;
              c = icerp(gamma_correct(s3[(2 * sw + 0) * bpp], gamma), gamma_correct(s3[(2 * sw + 1) * bpp], gamma), gamma_correct(s3[(2 * sw + 2) * bpp], gamma), gamma_correct(s3[(2 * sw + 3) * bpp], gamma), wx);
              if (iy < dh - 1) {
                d = icerp(gamma_correct(s3[(3 * sw + 0) * bpp], gamma), gamma_correct(s3[(3 * sw + 1) * bpp], gamma), gamma_correct(s3[(3 * sw + 2) * bpp], gamma), gamma_correct(s3[(3 * sw + 3) * bpp], gamma), wx);
              } else
                d = c;
              v3 = icerp(a, b, c, d, wy);
            } else
              v3 = v2;
            val = icerp(v0, v1, v2, v3, wz);
            if (val < 0)
              val = 0;
            if (val > 255)
              val = 255;
            dst[(z * dslice) + (y * dstride) + (x * bpp) + n] = gamma_correct(val, invgamma);
            ++s0;
            ++s1;
            ++s2;
            ++s3;
          }
        }
      }
    }
  } else {
    for (z = 0; z < dd; ++z) {
      if (dd > 1) {
        iz = (((sd - 1) * z) << 7) / (dd - 1);
        if (z == dd - 1)
          --iz;
        wz = iz & 0x7f;
        iz >>= 7;
      } else
        iz = wz = 0;
      for (y = 0; y < dh; ++y) {
        if (dh > 1) {
          iy = (((sh - 1) * y) << 7) / (dh - 1);
          if (y == dh - 1)
            --iy;
          wy = iy & 0x7f;
          iy >>= 7;
        } else
          iy = wy = 0;
        for (x = 0; x < dw; ++x) {
          if (dw > 1) {
            ix = (((sw - 1) * x) << 7) / (dw - 1);
            if (x == dw - 1)
              --ix;
            wx = ix & 0x7f;
            ix >>= 7;
          } else
            ix = wx = 0;
          s0 = src + (((iz - 1) * (sw * sh)) + ((iy - 1) * sw) + (ix - 1)) * bpp;
          s1 = s0 + sslice;
          s2 = s1 + sslice;
          s3 = s2 + sslice;
          for (n = 0; n < bpp; ++n) {
            b = icerp(s1[(sw + 0) * bpp], s1[(sw + 1) * bpp], s1[(sw + 2) * bpp], s1[(sw + 3) * bpp], wx);
            if (iy > 0) {
              a = icerp(s1[0], s1[bpp], s1[2 * bpp], s1[3 * bpp], wx);
            } else
              a = b;
            c = icerp(s1[(2 * sw + 0) * bpp], s1[(2 * sw + 1) * bpp], s1[(2 * sw + 2) * bpp], s1[(2 * sw + 3) * bpp], wx);
            if (iy < dh - 1) {
              d = icerp(s1[(3 * sw + 0) * bpp], s1[(3 * sw + 1) * bpp], s1[(3 * sw + 2) * bpp], s1[(3 * sw + 3) * bpp], wx);
            } else
              d = c;
            v1 = icerp(a, b, c, d, wy);
            if (iz > 0) {
              b = icerp(s0[(sw + 0) * bpp], s0[(sw + 1) * bpp], s0[(sw + 2) * bpp], s0[(sw + 3) * bpp], wx);
              if (iy > 0) {
                a = icerp(s0[0], s0[bpp], s0[2 * bpp], s0[3 * bpp], wx);
              } else
                a = b;
              c = icerp(s0[(2 * sw + 0) * bpp], s0[(2 * sw + 1) * bpp], s0[(2 * sw + 2) * bpp], s0[(2 * sw + 3) * bpp], wx);
              if (iy < dh - 1) {
                d = icerp(s0[(3 * sw + 0) * bpp], s0[(3 * sw + 1) * bpp], s0[(3 * sw + 2) * bpp], s0[(3 * sw + 3) * bpp], wx);
              } else
                d = c;
              v0 = icerp(a, b, c, d, wy);
            } else
              v0 = v1;
            b = icerp(s2[(sw + 0) * bpp], s2[(sw + 1) * bpp], s2[(sw + 2) * bpp], s2[(sw + 3) * bpp], wx);
            if (iy > 0) {
              a = icerp(s2[0], s2[bpp], s2[2 * bpp], s2[3 * bpp], wx);
            } else
              a = b;
            c = icerp(s2[(2 * sw + 0) * bpp], s2[(2 * sw + 1) * bpp], s2[(2 * sw + 2) * bpp], s2[(2 * sw + 3) * bpp], wx);
            if (iy < dh - 1) {
              d = icerp(s2[(3 * sw + 0) * bpp], s2[(3 * sw + 1) * bpp], s2[(3 * sw + 2) * bpp], s2[(3 * sw + 3) * bpp], wx);
            } else
              d = c;
            v2 = icerp(a, b, c, d, wy);
            if (iz < dd - 1) {
              b = icerp(s3[(sw + 0) * bpp], s3[(sw + 1) * bpp], s3[(sw + 2) * bpp], s3[(sw + 3) * bpp], wx);
              if (iy > 0) {
                a = icerp(s3[0], s3[bpp], s3[2 * bpp], s3[3 * bpp], wx);
              } else
                a = b;
              c = icerp(s3[(2 * sw + 0) * bpp], s3[(2 * sw + 1) * bpp], s3[(2 * sw + 2) * bpp], s3[(2 * sw + 3) * bpp], wx);
              if (iy < dh - 1) {
                d = icerp(s3[(3 * sw + 0) * bpp], s3[(3 * sw + 1) * bpp], s3[(3 * sw + 2) * bpp], s3[(3 * sw + 3) * bpp], wx);
              } else
                d = c;
              v3 = icerp(a, b, c, d, wy);
            } else
              v3 = v2;
            val = icerp(v0, v1, v2, v3, wz);
            if (val < 0)
              val = 0;
            if (val > 255)
              val = 255;
            dst[(z * dslice) + (y * dstride) + (x * bpp) + n] = val;
            ++s0;
            ++s1;
            ++s2;
            ++s3;
          }
        }
      }
    }
  }
}
```