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

```asm
<scale_volume_image_cubic>:
  endbr64
  push   %r15
  mov    %esi,%eax
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x168,%rsp
  mov    %esi,0xf0(%rsp)
  mov    %edx,%esi
  mov    0x1b0(%rsp),%ebx
  mov    %edx,0xf4(%rsp)
  mov    0x1a0(%rsp),%edx
  mov    %r9d,0x130(%rsp)
  imul   %eax,%ebx
  mov    0x1b8(%rsp),%r13d
  imul   %edx,%r9d
  mov    %rdi,0x108(%rsp)
  mov    %ecx,%edi
  imul   %esi,%eax
  mov    %ecx,0x104(%rsp)
  mov    0x1a8(%rsp),%ecx
  imul   0x1b0(%rsp),%eax
  mov    %r8,0xf8(%rsp)
  mov    %r9d,0x14c(%rsp)
  imul   0x1b0(%rsp),%r9d
  mov    %ebx,0x12c(%rsp)
  mov    %eax,0x150(%rsp)
  mov    %r9d,0x138(%rsp)
  movss  %xmm0,0x4(%rsp)
  test   %r13d,%r13d
  jne    L200
  test   %edi,%edi
  jle    L80
  mov    0x130(%rsp),%ebx
  sub    $0x1,%ecx
  sub    $0x1,%edx
  movl   $0x0,0x128(%rsp)
  shl    $0x7,%ecx
  shl    $0x7,%edx
  movl   $0x0,0x13c(%rsp)
  lea    0x3(%rbx),%eax
  lea    (%rbx,%rbx,1),%r9d
  mov    %ecx,0x140(%rsp)
  imul   0x1b0(%rsp),%eax
  mov    %edx,0x118(%rsp)
  movl   $0x0,0x134(%rsp)
  movslq %eax,%rsi
  sub    0x1b0(%rsp),%eax
  mov    %rsi,0x18(%rsp)
  movslq %eax,%rsi
  sub    0x1b0(%rsp),%eax
  mov    %rsi,0x20(%rsp)
  mov    %eax,%edi
  movslq %eax,%rsi
  lea    (%rax,%rax,1),%r8d
  sub    0x1b0(%rsp),%edi
  mov    %rsi,0x28(%rsp)
  movslq %edi,%rsi
  mov    %rsi,0x30(%rsp)
  mov    0x1b0(%rsp),%esi
  lea    (%rsi,%rsi,1),%r10d
  mov    0x1b0(%rsp),%esi
  add    %r10d,%esi
  movslq %esi,%rsi
  mov    %rsi,0x70(%rsp)
  movslq %r10d,%rsi
  mov    %rsi,0x78(%rsp)
  lea    0x3(%r9),%esi
  imul   0x1b0(%rsp),%esi
  movslq %esi,%r11
  sub    %r10d,%esi
  mov    %r11,0x38(%rsp)
  movslq %r8d,%r11
  add    %eax,%r8d
  movslq %esi,%rsi
  movslq %r8d,%rax
  mov    %rsi,0x48(%rsp)
  lea    (%rdi,%rdi,1),%esi
  mov    %rax,0xa0(%rsp)
  lea    0x2(%rbx,%r9,1),%eax
  imul   0x1b0(%rsp),%eax
  mov    %r11,0x40(%rsp)
  movslq %esi,%r11
  add    %edi,%esi
  mov    %r11,0x50(%rsp)
  movslq %eax,%r11
  sub    0x1b0(%rsp),%eax
  cltq
  mov    %r11,0xa8(%rsp)
  mov    %rax,0xb0(%rsp)
  movslq %esi,%rax
  mov    %rax,0xb8(%rsp)
  lea    -0x1(%rbx),%eax
  shl    $0x7,%eax
  mov    %eax,0x100(%rsp)
  movslq 0x1b0(%rsp),%rax
  mov    %rax,0x80(%rsp)
  mov    0x104(%rsp),%eax
  cmp    $0x1,%eax
  je     L377
L56:
  lea    -0x1(%rax),%ecx
  mov    0x13c(%rsp),%eax
  cltd
  idiv   %ecx
  xor    %edx,%edx
  cmp    0x128(%rsp),%ecx
  mov    0xf4(%rsp),%ecx
  sete   %dl
  sub    %edx,%eax
  mov    %eax,%ebx
  sar    $0x7,%eax
  and    $0x7f,%ebx
  mov    %eax,0x60(%rsp)
  sub    $0x1,%eax
  mov    %ebx,0x98(%rsp)
  test   %ecx,%ecx
  jle    L633
L33:
  imul   0x14c(%rsp),%eax
  movl   $0x0,0x110(%rsp)
  movl   $0x0,0x120(%rsp)
  mov    %eax,0x124(%rsp)
  mov    0x134(%rsp),%eax
  mov    %eax,0x114(%rsp)
  nopl   0x0(%rax)
L50:
  mov    0xf4(%rsp),%eax
  cmp    $0x1,%eax
  je     L241
  lea    -0x1(%rax),%ecx
  mov    0x120(%rsp),%eax
  cltd
  idiv   %ecx
  xor    %edx,%edx
  cmp    0x110(%rsp),%ecx
  sete   %dl
  sub    %edx,%eax
  mov    0xf0(%rsp),%edx
  mov    %eax,%ebx
  sar    $0x7,%eax
  and    $0x7f,%ebx
  mov    %eax,0x4(%rsp)
  sub    $0x1,%eax
  mov    %ebx,0x14(%rsp)
  test   %edx,%edx
  jle    L225
L483:
  imul   0x130(%rsp),%eax
  add    0x124(%rsp),%eax
  movl   $0x0,0xc0(%rsp)
  mov    %eax,0xe4(%rsp)
  movslq 0x138(%rsp),%rax
  movl   $0x0,0xd0(%rsp)
  mov    %rax,0xe8(%rsp)
  mov    0x114(%rsp),%eax
  mov    %eax,0xc8(%rsp)
  nopw   0x0(%rax,%rax,1)
L380:
  mov    0xf0(%rsp),%eax
  cmp    $0x1,%eax
  je     L447
  lea    -0x1(%rax),%ecx
  mov    0xd0(%rsp),%eax
  cltd
  idiv   %ecx
  xor    %edx,%edx
  cmp    0xc0(%rsp),%ecx
  sete   %dl
  sub    %edx,%eax
  mov    %eax,%r12d
  sar    $0x7,%eax
  and    $0x7f,%r12d
  sub    $0x1,%eax
L175:
  add    0xe4(%rsp),%eax
  imul   0x1b0(%rsp),%eax
  cltq
  add    0xf8(%rsp),%rax
  mov    %rax,%rbx
  mov    %rax,%rdx
  mov    0xe8(%rsp),%rax
  add    %rax,%rbx
  lea    (%rbx,%rax,1),%rbp
  add    %rbp,%rax
  mov    %rax,0x8(%rsp)
  mov    0x1b0(%rsp),%eax
  test   %eax,%eax
  jle    L51
  mov    0x104(%rsp),%eax
  mov    0x8(%rsp),%rsi
  mov    %rdx,%r13
  sub    $0x1,%eax
  mov    %eax,0x90(%rsp)
  mov    0xf4(%rsp),%eax
  sub    $0x1,%eax
  mov    %eax,0x10(%rsp)
  movslq 0xc8(%rsp),%rax
  add    0x108(%rsp),%rax
  mov    %rax,0x58(%rsp)
  mov    0x1b0(%rsp),%eax
  sub    $0x1,%eax
  lea    0x1(%rsi,%rax,1),%rax
  mov    %rax,0x88(%rsp)
  jmp    L585
  nopl   (%rax)
L178:
  mov    0x18(%rsp),%rax
  mov    %r12d,%r8d
  movzbl 0x0(%rbp,%rax,1),%ecx
  mov    0x20(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edx
  mov    0x28(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%esi
  mov    0x30(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <icerp@plt>
  mov    0x4(%rsp),%r8d
  mov    %eax,%r14d
  mov    %eax,%r10d
  test   %r8d,%r8d
  jle    L135
  mov    0x70(%rsp),%rax
  movzbl 0x0(%rbp),%edi
  mov    %r12d,%r8d
  movzbl 0x0(%rbp,%rax,1),%ecx
  mov    0x78(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edx
  mov    0x80(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%esi
  call   <icerp@plt>
  mov    %eax,%r10d
L135:
  mov    0x38(%rsp),%rax
  mov    %r12d,%r8d
  mov    %r10d,0x6c(%rsp)
  movzbl 0x0(%rbp,%rax,1),%ecx
  mov    0x40(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edx
  mov    0x48(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%esi
  mov    0x50(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <icerp@plt>
  mov    0x10(%rsp),%esi
  cmp    %esi,0x4(%rsp)
  mov    0x6c(%rsp),%r10d
  mov    %eax,%r9d
  mov    %eax,%ecx
  jl     L567
L345:
  mov    0x14(%rsp),%r8d
  mov    %r9d,%edx
  mov    %r14d,%esi
  mov    %r10d,%edi
  call   <icerp@plt>
  mov    0x90(%rsp),%edx
  mov    %eax,%r14d
  mov    %eax,%ecx
  cmp    %edx,0x60(%rsp)
  jl     L545
L370:
  mov    0x68(%rsp),%esi
  mov    0x98(%rsp),%r8d
  mov    %r14d,%edx
  mov    %r15d,%edi
  call   <icerp@plt>
  mov    $0xff,%edx
  mov    0x58(%rsp),%rsi
  cmp    %edx,%eax
  cmovg  %edx,%eax
  xor    %edx,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  add    $0x1,%rsi
  add    $0x1,%r13
  add    $0x1,%rbx
  addq   $0x1,0x8(%rsp)
  add    $0x1,%rbp
  mov    %al,-0x1(%rsi)
  mov    0x8(%rsp),%rax
  mov    %rsi,0x58(%rsp)
  cmp    0x88(%rsp),%rax
  je     L51
L585:
  mov    0x18(%rsp),%rax
  mov    %r12d,%r8d
  movzbl (%rbx,%rax,1),%ecx
  mov    0x20(%rsp),%rax
  movzbl (%rbx,%rax,1),%edx
  mov    0x28(%rsp),%rax
  movzbl (%rbx,%rax,1),%esi
  mov    0x30(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <icerp@plt>
  mov    0x4(%rsp),%r15d
  mov    %eax,%r14d
  mov    %eax,%r9d
  test   %r15d,%r15d
  jle    L402
  mov    0x70(%rsp),%rax
  movzbl (%rbx),%edi
  mov    %r12d,%r8d
  movzbl (%rbx,%rax,1),%ecx
  mov    0x78(%rsp),%rax
  movzbl (%rbx,%rax,1),%edx
  mov    0x80(%rsp),%rax
  movzbl (%rbx,%rax,1),%esi
  call   <icerp@plt>
  mov    %eax,%r9d
L402:
  mov    0x38(%rsp),%rax
  mov    %r12d,%r8d
  mov    %r9d,0x68(%rsp)
  movzbl (%rbx,%rax,1),%ecx
  mov    0x40(%rsp),%rax
  movzbl (%rbx,%rax,1),%edx
  mov    0x48(%rsp),%rax
  movzbl (%rbx,%rax,1),%esi
  mov    0x50(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <icerp@plt>
  mov    0x10(%rsp),%edx
  cmp    %edx,0x4(%rsp)
  mov    0x68(%rsp),%r9d
  mov    %eax,%r15d
  mov    %eax,%ecx
  jl     L602
L519:
  mov    0x14(%rsp),%r8d
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %r9d,%edi
  call   <icerp@plt>
  mov    0x60(%rsp),%r11d
  mov    %eax,0x68(%rsp)
  mov    %eax,%r15d
  test   %r11d,%r11d
  jle    L178
  mov    0x18(%rsp),%rax
  mov    %r12d,%r8d
  movzbl 0x0(%r13,%rax,1),%ecx
  mov    0x20(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edx
  mov    0x28(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%esi
  mov    0x30(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <icerp@plt>
  mov    0x4(%rsp),%r10d
  mov    %eax,%r14d
  mov    %eax,%r9d
  test   %r10d,%r10d
  jle    L237
  mov    0x70(%rsp),%rax
  movzbl 0x0(%r13),%edi
  mov    %r12d,%r8d
  movzbl 0x0(%r13,%rax,1),%ecx
  mov    0x78(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edx
  mov    0x80(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%esi
  call   <icerp@plt>
  mov    %eax,%r9d
L237:
  mov    0x38(%rsp),%rax
  mov    %r12d,%r8d
  mov    %r9d,0x6c(%rsp)
  movzbl 0x0(%r13,%rax,1),%ecx
  mov    0x40(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edx
  mov    0x48(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%esi
  mov    0x50(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <icerp@plt>
  mov    0x10(%rsp),%esi
  cmp    %esi,0x4(%rsp)
  mov    0x6c(%rsp),%r9d
  mov    %eax,%r15d
  mov    %eax,%ecx
  jl     L493
L132:
  mov    0x14(%rsp),%r8d
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %r9d,%edi
  call   <icerp@plt>
  mov    %eax,%r15d
  jmp    L178
  nopl   0x0(%rax)
L418:
  mov    0x1b0(%rsp),%edx
  addl   $0x1,0xe8(%rsp)
  add    %edx,0x100(%rsp)
  mov    0xe8(%rsp),%eax
  mov    0x124(%rsp),%edx
  add    %edx,0x110(%rsp)
  cmp    %eax,0xf0(%rsp)
  jg     L92
L521:
  addl   $0x1,0x128(%rsp)
  mov    0x12c(%rsp),%edx
  mov    0x140(%rsp),%ecx
  add    %edx,0x134(%rsp)
  add    %ecx,0x13c(%rsp)
  mov    0x128(%rsp),%eax
  cmp    %eax,0xf4(%rsp)
  jg     L425
L458:
  addl   $0x1,0x148(%rsp)
  mov    0x150(%rsp),%edx
  mov    0x15c(%rsp),%ecx
  add    %edx,0x158(%rsp)
  add    %ecx,0x154(%rsp)
  mov    0x148(%rsp),%eax
  cmp    %eax,0x104(%rsp)
  jne    L206
L80:
  add    $0x168,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L545:
  mov    0x8(%rsp),%rax
  mov    0x18(%rsp),%rdx
  mov    %r12d,%r8d
  mov    0x20(%rsp),%rsi
  mov    0x30(%rsp),%rdi
  movzbl (%rax,%rdx,1),%ecx
  movzbl (%rax,%rsi,1),%edx
  mov    0x28(%rsp),%rsi
  movzbl (%rax,%rdi,1),%edi
  movzbl (%rax,%rsi,1),%esi
  call   <icerp@plt>
  mov    0x4(%rsp),%edi
  mov    %eax,%r9d
  mov    %eax,%r11d
  test   %edi,%edi
  jle    L430
  mov    0x70(%rsp),%rdx
  mov    0x78(%rsp),%rsi
  mov    %eax,0x6c(%rsp)
  mov    %r12d,%r8d
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rdx,1),%ecx
  movzbl (%rax,%rsi,1),%edx
  mov    0x80(%rsp),%rsi
  movzbl (%rax),%edi
  movzbl (%rax,%rsi,1),%esi
  call   <icerp@plt>
  mov    0x6c(%rsp),%r9d
  mov    %eax,%r11d
L430:
  mov    0x8(%rsp),%rax
  mov    0x38(%rsp),%rdx
  mov    %r12d,%r8d
  mov    %r11d,0x6c(%rsp)
  mov    0x40(%rsp),%rsi
  mov    0x50(%rsp),%rdi
  mov    %r9d,0xe0(%rsp)
  movzbl (%rax,%rdx,1),%ecx
  movzbl (%rax,%rsi,1),%edx
  mov    0x48(%rsp),%rsi
  movzbl (%rax,%rdi,1),%edi
  movzbl (%rax,%rsi,1),%esi
  call   <icerp@plt>
  mov    0x10(%rsp),%edx
  cmp    %edx,0x4(%rsp)
  mov    0x6c(%rsp),%r11d
  mov    0xe0(%rsp),%r9d
  mov    %eax,%r10d
  mov    %eax,%ecx
  jl     L643
L309:
  mov    0x14(%rsp),%r8d
  mov    %r10d,%edx
  mov    %r9d,%esi
  mov    %r11d,%edi
  call   <icerp@plt>
  mov    %eax,%ecx
  jmp    L370
  nopl   0x0(%rax)
L567:
  mov    %eax,0xe0(%rsp)
  mov    0xa0(%rsp),%rax
  mov    %r12d,%r8d
  movzbl 0x0(%rbp,%rax,1),%ecx
  mov    0xa8(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edx
  mov    0xb0(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%esi
  mov    0xb8(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <icerp@plt>
  mov    0xe0(%rsp),%r9d
  mov    0x6c(%rsp),%r10d
  mov    %eax,%ecx
  jmp    L345
  nop
L602:
  mov    0xa0(%rsp),%rax
  mov    %r12d,%r8d
  movzbl (%rbx,%rax,1),%ecx
  mov    0xa8(%rsp),%rax
  movzbl (%rbx,%rax,1),%edx
  mov    0xb0(%rsp),%rax
  movzbl (%rbx,%rax,1),%esi
  mov    0xb8(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <icerp@plt>
  mov    0x68(%rsp),%r9d
  mov    %eax,%ecx
  jmp    L519
  nopl   0x0(%rax)
L493:
  mov    0xa0(%rsp),%rax
  mov    %r12d,%r8d
  movzbl 0x0(%r13,%rax,1),%ecx
  mov    0xa8(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edx
  mov    0xb0(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%esi
  mov    0xb8(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <icerp@plt>
  mov    0x6c(%rsp),%r9d
  mov    %eax,%ecx
  jmp    L132
  nopl   0x0(%rax)
L51:
  addl   $0x1,0xc0(%rsp)
  mov    0x1b0(%rsp),%esi
  mov    0x100(%rsp),%edx
  add    %esi,0xc8(%rsp)
  add    %edx,0xd0(%rsp)
  mov    0xc0(%rsp),%eax
  cmp    %eax,0xf0(%rsp)
  jg     L380
L225:
  addl   $0x1,0x110(%rsp)
  mov    0x12c(%rsp),%edx
  mov    0x118(%rsp),%ecx
  add    %edx,0x114(%rsp)
  add    %ecx,0x120(%rsp)
  mov    0x110(%rsp),%eax
  cmp    %eax,0xf4(%rsp)
  jg     L50
L633:
  addl   $0x1,0x128(%rsp)
  mov    0x150(%rsp),%edx
  mov    0x140(%rsp),%ecx
  add    %edx,0x134(%rsp)
  add    %ecx,0x13c(%rsp)
  mov    0x128(%rsp),%eax
  cmp    %eax,0x104(%rsp)
  je     L80
  mov    0x104(%rsp),%eax
  cmp    $0x1,%eax
  jne    L56
L377:
  mov    0xf4(%rsp),%eax
  test   %eax,%eax
  jle    L80
  movl   $0x0,0x98(%rsp)
  mov    $0xffffffff,%eax
  movl   $0x0,0x60(%rsp)
  jmp    L33
  nopl   0x0(%rax)
L643:
  mov    0xa8(%rsp),%rsi
  mov    %eax,0xd8(%rsp)
  mov    %r12d,%r8d
  mov    0x8(%rsp),%rax
  mov    0xa0(%rsp),%rcx
  mov    0xb8(%rsp),%rdi
  movzbl (%rax,%rsi,1),%edx
  mov    0xb0(%rsp),%rsi
  movzbl (%rax,%rcx,1),%ecx
  movzbl (%rax,%rdi,1),%edi
  movzbl (%rax,%rsi,1),%esi
  call   <icerp@plt>
  mov    0xd8(%rsp),%r10d
  mov    0x6c(%rsp),%r11d
  mov    0xe0(%rsp),%r9d
  mov    %eax,%ecx
  jmp    L309
L447:
  xor    %r12d,%r12d
  mov    $0xffffffff,%eax
  jmp    L175
L241:
  mov    0xf0(%rsp),%edx
  test   %edx,%edx
  jle    L633
  movl   $0x0,0x14(%rsp)
  mov    $0xffffffff,%eax
  movl   $0x0,0x4(%rsp)
  jmp    L483
L200:
  mov    0x104(%rsp),%r12d
  movss  D8(%rip),%xmm0
  divss  0x4(%rsp),%xmm0
  movss  %xmm0,0xe0(%rsp)
  test   %r12d,%r12d
  jle    L80
  mov    0x130(%rsp),%ebx
  sub    $0x1,%ecx
  sub    $0x1,%edx
  movl   $0x0,0x154(%rsp)
  shl    $0x7,%ecx
  shl    $0x7,%edx
  movl   $0x0,0x158(%rsp)
  lea    0x3(%rbx),%eax
  lea    (%rbx,%rbx,1),%r9d
  mov    %ecx,0x15c(%rsp)
  imul   0x1b0(%rsp),%eax
  mov    %edx,0x140(%rsp)
  movl   $0x0,0x148(%rsp)
  movslq %eax,%rsi
  sub    0x1b0(%rsp),%eax
  mov    %rsi,0x20(%rsp)
  movslq %eax,%rsi
  sub    0x1b0(%rsp),%eax
  mov    %eax,%edi
  mov    %rsi,0x28(%rsp)
  sub    0x1b0(%rsp),%edi
  movslq %eax,%rsi
  mov    %rsi,0x30(%rsp)
  movslq %edi,%rsi
  lea    (%rax,%rax,1),%r8d
  mov    %rsi,0x38(%rsp)
  mov    0x1b0(%rsp),%esi
  lea    (%rsi,%rsi,1),%r10d
  mov    0x1b0(%rsp),%esi
  add    %r10d,%esi
  movslq %esi,%rsi
  mov    %rsi,0x90(%rsp)
  movslq %r10d,%rsi
  mov    %rsi,0x98(%rsp)
  lea    0x3(%r9),%esi
  imul   0x1b0(%rsp),%esi
  movslq %esi,%r11
  sub    %r10d,%esi
  mov    %r11,0x40(%rsp)
  movslq %r8d,%r11
  add    %eax,%r8d
  movslq %esi,%rsi
  movslq %r8d,%rax
  mov    %rsi,0x50(%rsp)
  lea    (%rdi,%rdi,1),%esi
  mov    %rax,0xc0(%rsp)
  lea    0x2(%rbx,%r9,1),%eax
  imul   0x1b0(%rsp),%eax
  mov    %r11,0x48(%rsp)
  movslq %esi,%r11
  add    %edi,%esi
  mov    %r11,0x58(%rsp)
  movslq %eax,%r11
  sub    0x1b0(%rsp),%eax
  cltq
  mov    %r11,0xc8(%rsp)
  mov    %rax,0xd0(%rsp)
  movslq %esi,%rax
  mov    %rax,0xd8(%rsp)
  lea    -0x1(%rbx),%eax
  shl    $0x7,%eax
  mov    %eax,0x124(%rsp)
  movslq 0x1b0(%rsp),%rax
  mov    %rax,0xa0(%rsp)
L206:
  mov    0x104(%rsp),%eax
  cmp    $0x1,%eax
  je     L89
  lea    -0x1(%rax),%ecx
  mov    0x154(%rsp),%eax
  mov    0xf4(%rsp),%ebp
  cltd
  idiv   %ecx
  xor    %edx,%edx
  cmp    0x148(%rsp),%ecx
  sete   %dl
  sub    %edx,%eax
  mov    %eax,%ebx
  sar    $0x7,%eax
  and    $0x7f,%ebx
  mov    %eax,0x68(%rsp)
  sub    $0x1,%eax
  mov    %ebx,0xb8(%rsp)
  test   %ebp,%ebp
  jle    L458
L636:
  imul   0x14c(%rsp),%eax
  movl   $0x0,0x13c(%rsp)
  movl   $0x0,0x128(%rsp)
  mov    %eax,0x144(%rsp)
  mov    0x158(%rsp),%eax
  mov    %eax,0x134(%rsp)
  nopl   0x0(%rax,%rax,1)
L425:
  mov    0xf4(%rsp),%eax
  cmp    $0x1,%eax
  je     L346
  lea    -0x1(%rax),%ecx
  mov    0x13c(%rsp),%eax
  cltd
  idiv   %ecx
  xor    %edx,%edx
  cmp    0x128(%rsp),%ecx
  sete   %dl
  sub    %edx,%eax
  mov    %eax,%ebx
  sar    $0x7,%eax
  and    $0x7f,%ebx
  mov    %eax,0x10(%rsp)
  sub    $0x1,%eax
  mov    %ebx,0x18(%rsp)
  mov    0xf0(%rsp),%ebx
  test   %ebx,%ebx
  jle    L521
L642:
  imul   0x130(%rsp),%eax
  add    0x144(%rsp),%eax
  movl   $0x0,0x110(%rsp)
  mov    %eax,0x120(%rsp)
  movslq 0x138(%rsp),%rax
  movl   $0x0,0xe8(%rsp)
  mov    %rax,0x118(%rsp)
  mov    0x134(%rsp),%eax
  mov    %eax,0x100(%rsp)
  nopw   0x0(%rax,%rax,1)
L92:
  mov    0xf0(%rsp),%eax
  cmp    $0x1,%eax
  je     L498
  lea    -0x1(%rax),%ecx
  mov    0x110(%rsp),%eax
  cltd
  idiv   %ecx
  xor    %edx,%edx
  cmp    0xe8(%rsp),%ecx
  sete   %dl
  sub    %edx,%eax
  mov    %eax,%r12d
  sar    $0x7,%eax
  and    $0x7f,%r12d
  sub    $0x1,%eax
L515:
  add    0x120(%rsp),%eax
  imul   0x1b0(%rsp),%eax
  mov    0x1b0(%rsp),%r11d
  cltq
  add    0xf8(%rsp),%rax
  mov    %rax,%rbx
  mov    %rax,%rdx
  mov    0x118(%rsp),%rax
  add    %rax,%rbx
  lea    (%rbx,%rax,1),%rbp
  add    %rbp,%rax
  mov    %rax,0x8(%rsp)
  test   %r11d,%r11d
  jle    L418
  mov    0x104(%rsp),%eax
  mov    0x8(%rsp),%rcx
  mov    %rdx,%r13
  sub    $0x1,%eax
  mov    %eax,0xb0(%rsp)
  mov    0xf4(%rsp),%eax
  sub    $0x1,%eax
  mov    %eax,0x14(%rsp)
  movslq 0x100(%rsp),%rax
  add    0x108(%rsp),%rax
  mov    %rax,0x60(%rsp)
  mov    0x1b0(%rsp),%eax
  sub    $0x1,%eax
  lea    0x1(%rcx,%rax,1),%rax
  mov    %rax,0xa8(%rsp)
  jmp    L130
  nopw   0x0(%rax,%rax,1)
L540:
  mov    0x20(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0x28(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0x30(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,%r14d
  mov    0x38(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  mov    0x78(%rsp),%ecx
  mov    0x70(%rsp),%edx
  mov    %r14d,%esi
  mov    %eax,%edi
  mov    %r12d,%r8d
  call   <icerp@plt>
  mov    0x10(%rsp),%edi
  mov    %eax,%r14d
  mov    %eax,%r10d
  test   %edi,%edi
  jle    L591
  mov    0x90(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x80(%rsp)
  mov    0x98(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0xa0(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  movzbl 0x0(%rbp),%edi
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  call   <gamma_correct@plt>
  mov    0x78(%rsp),%edx
  mov    0x70(%rsp),%esi
  mov    %r12d,%r8d
  mov    0x80(%rsp),%ecx
  mov    %eax,%edi
  call   <icerp@plt>
  mov    %eax,%r10d
L591:
  mov    0x40(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  mov    %r10d,0x88(%rsp)
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x80(%rsp)
  mov    0x48(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0x50(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0x58(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  mov    0x70(%rsp),%esi
  mov    0x78(%rsp),%edx
  mov    %r12d,%r8d
  mov    0x80(%rsp),%ecx
  mov    %eax,%edi
  call   <icerp@plt>
  mov    0x14(%rsp),%esi
  cmp    %esi,0x10(%rsp)
  mov    0x88(%rsp),%r10d
  mov    %eax,%r9d
  mov    %eax,%ecx
  jl     L13
L314:
  mov    0x18(%rsp),%r8d
  mov    %r14d,%esi
  mov    %r9d,%edx
  mov    %r10d,%edi
  call   <icerp@plt>
  mov    0xb0(%rsp),%esi
  mov    %eax,%r14d
  mov    %eax,%ecx
  cmp    %esi,0x68(%rsp)
  jl     L347
L400:
  mov    0x6c(%rsp),%esi
  mov    0xb8(%rsp),%r8d
  mov    %r14d,%edx
  mov    %r15d,%edi
  call   <icerp@plt>
  mov    $0xff,%edx
  movss  0xe0(%rsp),%xmm0
  cmp    %edx,%eax
  cmovle %eax,%edx
  xor    %eax,%eax
  mov    %edx,%edi
  test   %edx,%edx
  cmovs  %eax,%edi
  add    $0x1,%r13
  add    $0x1,%rbx
  add    $0x1,%rbp
  call   <gamma_correct@plt>
  mov    0x60(%rsp),%rsi
  addq   $0x1,0x8(%rsp)
  mov    %al,(%rsi)
  add    $0x1,%rsi
  mov    0x8(%rsp),%rax
  mov    %rsi,0x60(%rsp)
  cmp    %rax,0xa8(%rsp)
  je     L418
L130:
  mov    0x20(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x6c(%rsp)
  mov    0x28(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,%r15d
  mov    0x30(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,%r14d
  mov    0x38(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  mov    0x6c(%rsp),%ecx
  mov    %r14d,%esi
  mov    %r12d,%r8d
  mov    %eax,%edi
  mov    %r15d,%edx
  call   <icerp@plt>
  mov    0x10(%rsp),%r10d
  mov    %eax,%r14d
  mov    %eax,%r9d
  test   %r10d,%r10d
  jle    L645
  mov    0x90(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0x98(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x6c(%rsp)
  mov    0xa0(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  movzbl (%rbx),%edi
  movss  0x4(%rsp),%xmm0
  mov    %eax,%r15d
  call   <gamma_correct@plt>
  mov    0x70(%rsp),%ecx
  mov    0x6c(%rsp),%edx
  mov    %r12d,%r8d
  mov    %eax,%edi
  mov    %r15d,%esi
  call   <icerp@plt>
  mov    %eax,%r9d
L645:
  mov    0x40(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  mov    %r9d,0x78(%rsp)
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0x48(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x6c(%rsp)
  mov    0x50(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,%r15d
  mov    0x58(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  mov    0x70(%rsp),%ecx
  mov    0x6c(%rsp),%edx
  mov    %r15d,%esi
  mov    %eax,%edi
  mov    %r12d,%r8d
  call   <icerp@plt>
  mov    0x14(%rsp),%esi
  cmp    %esi,0x10(%rsp)
  mov    0x78(%rsp),%r9d
  mov    %eax,%r15d
  mov    %eax,%ecx
  jl     L236
L279:
  mov    0x18(%rsp),%r8d
  mov    %r15d,%edx
  mov    %r9d,%edi
  mov    %r14d,%esi
  call   <icerp@plt>
  mov    0x68(%rsp),%r9d
  mov    %eax,0x6c(%rsp)
  mov    %eax,%r15d
  test   %r9d,%r9d
  jle    L540
  mov    0x20(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0x28(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,%r15d
  mov    0x30(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,%r14d
  mov    0x38(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  mov    0x70(%rsp),%ecx
  mov    %r12d,%r8d
  mov    %r14d,%esi
  mov    %eax,%edi
  mov    %r15d,%edx
  call   <icerp@plt>
  mov    0x10(%rsp),%r8d
  mov    %eax,%r14d
  mov    %eax,%r9d
  test   %r8d,%r8d
  jle    L363
  mov    0x90(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0x98(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0xa0(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  movzbl 0x0(%r13),%edi
  movss  0x4(%rsp),%xmm0
  mov    %eax,%r15d
  call   <gamma_correct@plt>
  mov    0x78(%rsp),%ecx
  mov    0x70(%rsp),%edx
  mov    %r12d,%r8d
  mov    %eax,%edi
  mov    %r15d,%esi
  call   <icerp@plt>
  mov    %eax,%r9d
L363:
  mov    0x40(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  mov    %r9d,0x80(%rsp)
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0x48(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0x50(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,%r15d
  mov    0x58(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  mov    0x78(%rsp),%ecx
  mov    0x70(%rsp),%edx
  mov    %r15d,%esi
  mov    %eax,%edi
  mov    %r12d,%r8d
  call   <icerp@plt>
  mov    0x14(%rsp),%edx
  cmp    %edx,0x10(%rsp)
  mov    0x80(%rsp),%r9d
  mov    %eax,%r15d
  mov    %eax,%ecx
  jl     L124
L413:
  mov    0x18(%rsp),%r8d
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %r9d,%edi
  call   <icerp@plt>
  mov    %eax,%r15d
  jmp    L540
L236:
  mov    0xc0(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  mov    %r9d,0x80(%rsp)
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0xc8(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0xd0(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x6c(%rsp)
  mov    0xd8(%rsp),%rax
  movzbl (%rbx,%rax,1),%edi
  call   <gamma_correct@plt>
  mov    0x78(%rsp),%ecx
  mov    0x70(%rsp),%edx
  mov    %r12d,%r8d
  mov    0x6c(%rsp),%esi
  mov    %eax,%edi
  call   <icerp@plt>
  mov    0x80(%rsp),%r9d
  mov    %eax,%ecx
  jmp    L279
  nopl   (%rax)
L347:
  mov    0x20(%rsp),%rdx
  mov    0x8(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  movzbl (%rax,%rdx,1),%edi
  call   <gamma_correct@plt>
  mov    0x28(%rsp),%rsi
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x80(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rsi,1),%edi
  call   <gamma_correct@plt>
  mov    0x30(%rsp),%rdx
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rdx,1),%edi
  call   <gamma_correct@plt>
  mov    0x38(%rsp),%rsi
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rsi,1),%edi
  call   <gamma_correct@plt>
  mov    0x70(%rsp),%esi
  mov    0x78(%rsp),%edx
  mov    %r12d,%r8d
  mov    0x80(%rsp),%ecx
  mov    %eax,%edi
  call   <icerp@plt>
  mov    0x10(%rsp),%esi
  mov    %eax,%r9d
  mov    %eax,%r11d
  test   %esi,%esi
  jle    L554
  mov    0x90(%rsp),%rdx
  mov    %eax,0x88(%rsp)
  mov    0x8(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  movzbl (%rax,%rdx,1),%edi
  call   <gamma_correct@plt>
  mov    0x98(%rsp),%rdx
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x80(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rdx,1),%edi
  call   <gamma_correct@plt>
  mov    0xa0(%rsp),%rsi
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rsi,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax),%edi
  call   <gamma_correct@plt>
  mov    0x78(%rsp),%edx
  mov    0x70(%rsp),%esi
  mov    %r12d,%r8d
  mov    0x80(%rsp),%ecx
  mov    %eax,%edi
  call   <icerp@plt>
  mov    0x88(%rsp),%r9d
  mov    %eax,%r11d
L554:
  mov    0x40(%rsp),%rsi
  mov    0x8(%rsp),%rax
  mov    %r9d,0xe4(%rsp)
  movss  0x4(%rsp),%xmm0
  mov    %r11d,0x88(%rsp)
  movzbl (%rax,%rsi,1),%edi
  call   <gamma_correct@plt>
  mov    0x48(%rsp),%rdx
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x80(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rdx,1),%edi
  call   <gamma_correct@plt>
  mov    0x50(%rsp),%rsi
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rsi,1),%edi
  call   <gamma_correct@plt>
  mov    0x58(%rsp),%rdx
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rdx,1),%edi
  call   <gamma_correct@plt>
  mov    0x70(%rsp),%esi
  mov    0x78(%rsp),%edx
  mov    %r12d,%r8d
  mov    0x80(%rsp),%ecx
  mov    %eax,%edi
  call   <icerp@plt>
  mov    0x14(%rsp),%esi
  cmp    %esi,0x10(%rsp)
  mov    0x88(%rsp),%r11d
  mov    0xe4(%rsp),%r9d
  mov    %eax,%r10d
  mov    %eax,%ecx
  jl     L610
L230:
  mov    0x18(%rsp),%r8d
  mov    %r10d,%edx
  mov    %r9d,%esi
  mov    %r11d,%edi
  call   <icerp@plt>
  mov    %eax,%ecx
  jmp    L400
L13:
  mov    %eax,0xe4(%rsp)
  mov    0xc0(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x80(%rsp)
  mov    0xc8(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0xd0(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0xd8(%rsp),%rax
  movzbl 0x0(%rbp,%rax,1),%edi
  call   <gamma_correct@plt>
  mov    0x78(%rsp),%edx
  mov    0x70(%rsp),%esi
  mov    %r12d,%r8d
  mov    0x80(%rsp),%ecx
  mov    %eax,%edi
  call   <icerp@plt>
  mov    0xe4(%rsp),%r9d
  mov    0x88(%rsp),%r10d
  mov    %eax,%ecx
  jmp    L314
  cs nopw 0x0(%rax,%rax,1)
L124:
  mov    0xc0(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  mov    %r9d,0x88(%rsp)
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x80(%rsp)
  mov    0xc8(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0xd0(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0xd8(%rsp),%rax
  movzbl 0x0(%r13,%rax,1),%edi
  call   <gamma_correct@plt>
  mov    0x78(%rsp),%edx
  mov    0x70(%rsp),%esi
  mov    %r12d,%r8d
  mov    0x80(%rsp),%ecx
  mov    %eax,%edi
  call   <icerp@plt>
  mov    0x88(%rsp),%r9d
  mov    %eax,%ecx
  jmp    L413
  nopl   0x0(%rax,%rax,1)
L610:
  mov    0xc0(%rsp),%rdx
  mov    %eax,0x114(%rsp)
  mov    0x8(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  movzbl (%rax,%rdx,1),%edi
  call   <gamma_correct@plt>
  mov    0xc8(%rsp),%rcx
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x80(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rcx,1),%edi
  call   <gamma_correct@plt>
  mov    0xd0(%rsp),%rsi
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rsi,1),%edi
  call   <gamma_correct@plt>
  mov    0xd8(%rsp),%rdx
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x70(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rdx,1),%edi
  call   <gamma_correct@plt>
  mov    0x78(%rsp),%edx
  mov    0x70(%rsp),%esi
  mov    %r12d,%r8d
  mov    0x80(%rsp),%ecx
  mov    %eax,%edi
  call   <icerp@plt>
  mov    0x114(%rsp),%r10d
  mov    0xe4(%rsp),%r9d
  mov    0x88(%rsp),%r11d
  mov    %eax,%ecx
  jmp    L230
  cs nopw 0x0(%rax,%rax,1)
L498:
  mov    $0xffffffff,%eax
  xor    %r12d,%r12d
  jmp    L515
L346:
  mov    0xf0(%rsp),%esi
  test   %esi,%esi
  jle    L458
  movl   $0x0,0x18(%rsp)
  mov    $0xffffffff,%eax
  movl   $0x0,0x10(%rsp)
  jmp    L642
L89:
  mov    0xf4(%rsp),%ecx
  test   %ecx,%ecx
  jle    L80
  movl   $0x0,0xb8(%rsp)
  mov    $0xffffffff,%eax
  movl   $0x0,0x68(%rsp)
  jmp    L636
```

tool_calls: name: retrieve_data
arguments: tag: D8
type_guessed: f32

tool: D8: 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;
          }
        }
      }
    }
  }
}
```