user: 请从给定的汇编指令推导出C源代码:

```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,0xf8(%rsp)
  mov    %edx,%esi
  mov    0x1b0(%rsp),%ebx
  mov    %edx,0x120(%rsp)
  mov    0x1a0(%rsp),%edx
  mov    %r9d,0x12c(%rsp)
  imul   %eax,%ebx
  imul   %edx,%r9d
  mov    %r8,0xf0(%rsp)
  mov    0x1b8(%rsp),%r8d
  imul   %esi,%eax
  mov    %rdi,0x100(%rsp)
  mov    %ecx,%edi
  imul   0x1b0(%rsp),%eax
  mov    %ecx,0x144(%rsp)
  mov    %r9d,0x14c(%rsp)
  mov    0x1a8(%rsp),%ecx
  imul   0x1b0(%rsp),%r9d
  mov    %ebx,0x128(%rsp)
  mov    %eax,0x150(%rsp)
  movss  %xmm0,0x4(%rsp)
  mov    %r9d,0x134(%rsp)
  test   %r8d,%r8d
  jne    L290
  test   %edi,%edi
  jle    L487
  mov    0x12c(%rsp),%ebx
  sub    $0x1,%ecx
  sub    $0x1,%edx
  movl   $0x0,0x124(%rsp)
  shl    $0x7,%ecx
  shl    $0x7,%edx
  movl   $0x0,0x130(%rsp)
  lea    0x3(%rbx),%eax
  lea    (%rbx,%rbx,1),%r9d
  mov    %ecx,0x13c(%rsp)
  imul   0x1b0(%rsp),%eax
  mov    %edx,0x110(%rsp)
  movl   $0x0,0x138(%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,0xfc(%rsp)
  movslq 0x1b0(%rsp),%rax
  mov    %rax,0x80(%rsp)
  mov    0x144(%rsp),%eax
  cmp    $0x1,%eax
  je     L58
L267:
  lea    -0x1(%rax),%ebx
  mov    0x130(%rsp),%eax
  mov    0x120(%rsp),%edi
  mov    %ebx,0x98(%rsp)
  cltd
  idiv   %ebx
  xor    %edx,%edx
  cmp    0x124(%rsp),%ebx
  sete   %dl
  sub    %edx,%eax
  mov    %eax,%ebx
  sar    $0x7,%eax
  and    $0x7f,%ebx
  mov    %eax,0x60(%rsp)
  sub    $0x1,%eax
  mov    %ebx,0x90(%rsp)
  test   %edi,%edi
  jle    L464
L25:
  imul   0x14c(%rsp),%eax
  movl   $0x0,0x108(%rsp)
  movl   $0x0,0x118(%rsp)
  mov    %eax,0x11c(%rsp)
  mov    0x138(%rsp),%eax
  mov    %eax,0x10c(%rsp)
  nopl   0x0(%rax,%rax,1)
L578:
  mov    0x120(%rsp),%eax
  cmp    $0x1,%eax
  je     L522
  lea    -0x1(%rax),%ebx
  mov    0x118(%rsp),%eax
  mov    0xf8(%rsp),%esi
  mov    %ebx,0x14(%rsp)
  cltd
  idiv   %ebx
  xor    %edx,%edx
  cmp    0x108(%rsp),%ebx
  sete   %dl
  sub    %edx,%eax
  mov    %eax,%ebx
  sar    $0x7,%eax
  and    $0x7f,%ebx
  mov    %eax,0x4(%rsp)
  sub    $0x1,%eax
  mov    %ebx,0x10(%rsp)
  test   %esi,%esi
  jle    L53
L366:
  imul   0x12c(%rsp),%eax
  add    0x11c(%rsp),%eax
  movl   $0x0,0xc0(%rsp)
  mov    %eax,0xe4(%rsp)
  movslq 0x134(%rsp),%rax
  movl   $0x0,0xd0(%rsp)
  mov    %rax,0xe8(%rsp)
  mov    0x10c(%rsp),%eax
  mov    %eax,0xc8(%rsp)
  nopl   0x0(%rax,%rax,1)
L179:
  mov    0xf8(%rsp),%eax
  cmp    $0x1,%eax
  je     L677
  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
L173:
  add    0xe4(%rsp),%eax
  imul   0x1b0(%rsp),%eax
  mov    0x1b0(%rsp),%ecx
  cltq
  add    0xf0(%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)
  test   %ecx,%ecx
  jle    L335
  mov    %rax,%rcx
  movslq 0xc8(%rsp),%rax
  mov    %rdx,%r13
  add    0x100(%rsp),%rax
  mov    %rax,0x58(%rsp)
  mov    0x1b0(%rsp),%eax
  sub    $0x1,%eax
  lea    0x1(%rcx,%rax,1),%rax
  mov    %rax,0x88(%rsp)
  jmp    L600
  nopl   0x0(%rax)
L261:
  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    L661
  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
L661:
  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    0x4(%rsp),%esi
  cmp    %esi,0x14(%rsp)
  mov    0x6c(%rsp),%r10d
  mov    %eax,%r9d
  mov    %eax,%ecx
  jg     L12
L234:
  mov    0x10(%rsp),%r8d
  mov    %r9d,%edx
  mov    %r14d,%esi
  mov    %r10d,%edi
  call   <icerp@plt>
  mov    0x60(%rsp),%edx
  mov    %eax,%r14d
  mov    %eax,%ecx
  cmp    %edx,0x98(%rsp)
  jg     L50
L85:
  mov    0x68(%rsp),%esi
  mov    0x90(%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     L335
L600:
  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    L604
  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
L604:
  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    0x4(%rsp),%edx
  cmp    %edx,0x14(%rsp)
  mov    0x68(%rsp),%r9d
  mov    %eax,%r15d
  mov    %eax,%ecx
  jg     L507
L127:
  mov    0x10(%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    L261
  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    L81
  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
L81:
  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    0x4(%rsp),%esi
  cmp    %esi,0x14(%rsp)
  mov    0x6c(%rsp),%r9d
  mov    %eax,%r15d
  mov    %eax,%ecx
  jg     L667
L236:
  mov    0x10(%rsp),%r8d
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %r9d,%edi
  call   <icerp@plt>
  mov    %eax,%r15d
  jmp    L261
  nopl   0x0(%rax)
L292:
  mov    0x1b0(%rsp),%edx
  addl   $0x1,0xe8(%rsp)
  add    %edx,0xfc(%rsp)
  mov    0xe8(%rsp),%eax
  mov    0x11c(%rsp),%edx
  add    %edx,0x108(%rsp)
  cmp    %eax,0xf8(%rsp)
  jg     L238
L42:
  mov    0x128(%rsp),%ecx
  addl   $0x1,0x124(%rsp)
  add    %ecx,0x130(%rsp)
  mov    0x124(%rsp),%eax
  mov    0x13c(%rsp),%ecx
  add    %ecx,0x138(%rsp)
  cmp    %eax,0x120(%rsp)
  jg     L247
L666:
  mov    0x150(%rsp),%ecx
  addl   $0x1,0x148(%rsp)
  add    %ecx,0x158(%rsp)
  mov    0x148(%rsp),%eax
  mov    0x15c(%rsp),%ecx
  add    %ecx,0x154(%rsp)
  cmp    %eax,0x144(%rsp)
  jne    L453
L487:
  add    $0x168,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L50:
  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    L175
  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
L175:
  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    0x4(%rsp),%edx
  cmp    %edx,0x14(%rsp)
  mov    0x6c(%rsp),%r11d
  mov    0xe0(%rsp),%r9d
  mov    %eax,%r10d
  mov    %eax,%ecx
  jg     L543
L429:
  mov    0x10(%rsp),%r8d
  mov    %r10d,%edx
  mov    %r9d,%esi
  mov    %r11d,%edi
  call   <icerp@plt>
  mov    %eax,%ecx
  jmp    L85
  nopl   0x0(%rax)
L12:
  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    L234
  nopw   0x0(%rax,%rax,1)
L507:
  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    L127
  nopl   0x0(%rax)
L667:
  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    L236
  nopl   0x0(%rax)
L335:
  addl   $0x1,0xc0(%rsp)
  mov    0x1b0(%rsp),%ecx
  mov    0xfc(%rsp),%esi
  add    %ecx,0xc8(%rsp)
  add    %esi,0xd0(%rsp)
  mov    0xc0(%rsp),%eax
  cmp    %eax,0xf8(%rsp)
  jg     L179
L53:
  mov    0x128(%rsp),%ecx
  addl   $0x1,0x108(%rsp)
  add    %ecx,0x10c(%rsp)
  mov    0x108(%rsp),%eax
  mov    0x110(%rsp),%ecx
  add    %ecx,0x118(%rsp)
  cmp    %eax,0x120(%rsp)
  jg     L578
L464:
  mov    0x150(%rsp),%ecx
  addl   $0x1,0x124(%rsp)
  add    %ecx,0x138(%rsp)
  mov    0x124(%rsp),%eax
  mov    0x13c(%rsp),%ecx
  add    %ecx,0x130(%rsp)
  cmp    %eax,0x144(%rsp)
  je     L487
  mov    0x144(%rsp),%eax
  cmp    $0x1,%eax
  jne    L267
L58:
  mov    0x120(%rsp),%eax
  test   %eax,%eax
  jle    L487
  movl   $0x0,0x90(%rsp)
  mov    $0xffffffff,%eax
  movl   $0x0,0x60(%rsp)
  movl   $0x0,0x98(%rsp)
  jmp    L25
  nopw   0x0(%rax,%rax,1)
L543:
  mov    0xa0(%rsp),%rsi
  mov    %eax,0xd8(%rsp)
  mov    %r12d,%r8d
  mov    0x8(%rsp),%rax
  mov    0xa8(%rsp),%rdx
  mov    0xb8(%rsp),%rdi
  movzbl (%rax,%rsi,1),%ecx
  mov    0xb0(%rsp),%rsi
  movzbl (%rax,%rdx,1),%edx
  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    L429
L677:
  xor    %r12d,%r12d
  mov    $0xffffffff,%eax
  jmp    L173
L522:
  mov    0xf8(%rsp),%edx
  test   %edx,%edx
  jle    L464
  movl   $0x0,0x10(%rsp)
  mov    $0xffffffff,%eax
  movl   $0x0,0x4(%rsp)
  movl   $0x0,0x14(%rsp)
  jmp    L366
L290:
  mov    0x144(%rsp),%edi
  movss  D3(%rip),%xmm0
  divss  0x4(%rsp),%xmm0
  movss  %xmm0,0xe0(%rsp)
  test   %edi,%edi
  jle    L487
  mov    0x12c(%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,0x13c(%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,0x11c(%rsp)
  movslq 0x1b0(%rsp),%rax
  mov    %rax,0xa0(%rsp)
L453:
  mov    0x144(%rsp),%eax
  cmp    $0x1,%eax
  je     L356
  lea    -0x1(%rax),%ebx
  mov    0x154(%rsp),%eax
  mov    0x120(%rsp),%esi
  mov    %ebx,0xb8(%rsp)
  cltd
  idiv   %ebx
  xor    %edx,%edx
  cmp    0x148(%rsp),%ebx
  sete   %dl
  sub    %edx,%eax
  mov    %eax,%ebx
  sar    $0x7,%eax
  and    $0x7f,%ebx
  mov    %eax,0x68(%rsp)
  sub    $0x1,%eax
  mov    %ebx,0xb0(%rsp)
  test   %esi,%esi
  jle    L666
L98:
  imul   0x14c(%rsp),%eax
  movl   $0x0,0x138(%rsp)
  movl   $0x0,0x124(%rsp)
  mov    %eax,0x140(%rsp)
  mov    0x158(%rsp),%eax
  mov    %eax,0x130(%rsp)
  nopl   0x0(%rax,%rax,1)
L247:
  mov    0x120(%rsp),%eax
  cmp    $0x1,%eax
  je     L138
  lea    -0x1(%rax),%ebx
  mov    0x138(%rsp),%eax
  mov    0xf8(%rsp),%ecx
  mov    %ebx,0x18(%rsp)
  cltd
  idiv   %ebx
  xor    %edx,%edx
  cmp    0x124(%rsp),%ebx
  sete   %dl
  sub    %edx,%eax
  mov    %eax,%ebx
  sar    $0x7,%eax
  and    $0x7f,%ebx
  mov    %eax,0x10(%rsp)
  sub    $0x1,%eax
  mov    %ebx,0x14(%rsp)
  test   %ecx,%ecx
  jle    L42
L595:
  imul   0x12c(%rsp),%eax
  add    0x140(%rsp),%eax
  movl   $0x0,0x108(%rsp)
  mov    %eax,0x118(%rsp)
  movslq 0x134(%rsp),%rax
  movl   $0x0,0xe8(%rsp)
  mov    %rax,0x110(%rsp)
  mov    0x130(%rsp),%eax
  mov    %eax,0xfc(%rsp)
  nopl   0x0(%rax,%rax,1)
L238:
  mov    0xf8(%rsp),%eax
  cmp    $0x1,%eax
  je     L378
  lea    -0x1(%rax),%ecx
  mov    0x108(%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
L445:
  add    0x118(%rsp),%eax
  imul   0x1b0(%rsp),%eax
  mov    0x1b0(%rsp),%edx
  cltq
  add    0xf0(%rsp),%rax
  mov    %rax,%rbx
  mov    %rax,%rcx
  mov    0x110(%rsp),%rax
  add    %rax,%rbx
  lea    (%rbx,%rax,1),%rbp
  add    %rbp,%rax
  mov    %rax,0x8(%rsp)
  test   %edx,%edx
  jle    L292
  mov    %rax,%rdx
  movslq 0xfc(%rsp),%rax
  mov    %rcx,%r13
  add    0x100(%rsp),%rax
  mov    %rax,0x60(%rsp)
  mov    0x1b0(%rsp),%eax
  sub    $0x1,%eax
  lea    0x1(%rdx,%rax,1),%rax
  mov    %rax,0xa8(%rsp)
  jmp    L123
  nopl   0x0(%rax)
L426:
  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),%r9d
  mov    %eax,%r14d
  mov    %eax,%r10d
  test   %r9d,%r9d
  jle    L621
  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
L621:
  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    0x10(%rsp),%esi
  cmp    %esi,0x18(%rsp)
  mov    0x88(%rsp),%r10d
  mov    %eax,%r9d
  mov    %eax,%ecx
  jg     L408
L39:
  mov    0x14(%rsp),%r8d
  mov    %r14d,%esi
  mov    %r9d,%edx
  mov    %r10d,%edi
  call   <icerp@plt>
  mov    0x68(%rsp),%esi
  mov    %eax,%r14d
  mov    %eax,%ecx
  cmp    %esi,0xb8(%rsp)
  jg     L608
L511:
  mov    0x6c(%rsp),%esi
  mov    0xb0(%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     L292
L123:
  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    %r15d,%edx
  mov    %r14d,%esi
  mov    %eax,%edi
  mov    %r12d,%r8d
  call   <icerp@plt>
  mov    0x10(%rsp),%r15d
  mov    %eax,%r14d
  mov    %eax,%r9d
  test   %r15d,%r15d
  jle    L505
  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
L505:
  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    0x10(%rsp),%esi
  cmp    %esi,0x18(%rsp)
  mov    0x78(%rsp),%r9d
  mov    %eax,%r15d
  mov    %eax,%ecx
  jg     L156
L592:
  mov    0x14(%rsp),%r8d
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %r9d,%edi
  call   <icerp@plt>
  mov    0x68(%rsp),%r11d
  mov    %eax,0x6c(%rsp)
  mov    %eax,%r15d
  test   %r11d,%r11d
  jle    L426
  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    %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    L182
  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
L182:
  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    0x10(%rsp),%edx
  cmp    %edx,0x18(%rsp)
  mov    0x80(%rsp),%r9d
  mov    %eax,%r15d
  mov    %eax,%ecx
  jg     L590
L375:
  mov    0x14(%rsp),%r8d
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %r9d,%edi
  call   <icerp@plt>
  mov    %eax,%r15d
  jmp    L426
  nopw   0x0(%rax,%rax,1)
L156:
  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    L592
  nopl   (%rax)
L608:
  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    0x78(%rsp),%edx
  mov    0x70(%rsp),%esi
  mov    %r12d,%r8d
  mov    0x80(%rsp),%ecx
  mov    %eax,%edi
  call   <icerp@plt>
  mov    0x10(%rsp),%r8d
  mov    %eax,%r9d
  mov    %eax,%r11d
  test   %r8d,%r8d
  jle    L521
  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
L521:
  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    0x10(%rsp),%esi
  cmp    %esi,0x18(%rsp)
  mov    0x88(%rsp),%r11d
  mov    0xe4(%rsp),%r9d
  mov    %eax,%r10d
  mov    %eax,%ecx
  jg     L657
L241:
  mov    0x14(%rsp),%r8d
  mov    %r10d,%edx
  mov    %r9d,%esi
  mov    %r11d,%edi
  call   <icerp@plt>
  mov    %eax,%ecx
  jmp    L511
  nopw   0x0(%rax,%rax,1)
L408:
  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    L39
  xchg   %ax,%ax
L590:
  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    L375
  nopl   0x0(%rax,%rax,1)
L657:
  mov    0xc0(%rsp),%rdx
  mov    %eax,0x10c(%rsp)
  mov    0x8(%rsp),%rax
  movss  0x4(%rsp),%xmm0
  movzbl (%rax,%rdx,1),%edi
  call   <gamma_correct@plt>
  mov    0xc8(%rsp),%rsi
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x80(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rsi,1),%edi
  call   <gamma_correct@plt>
  mov    0xd0(%rsp),%rcx
  movss  0x4(%rsp),%xmm0
  mov    %eax,0x78(%rsp)
  mov    0x8(%rsp),%rax
  movzbl (%rax,%rcx,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    0x10c(%rsp),%r10d
  mov    0xe4(%rsp),%r9d
  mov    0x88(%rsp),%r11d
  mov    %eax,%ecx
  jmp    L241
  cs nopw 0x0(%rax,%rax,1)
L378:
  mov    $0xffffffff,%eax
  xor    %r12d,%r12d
  jmp    L445
L138:
  mov    0xf8(%rsp),%esi
  test   %esi,%esi
  jle    L666
  movl   $0x0,0x14(%rsp)
  mov    $0xffffffff,%eax
  movl   $0x0,0x10(%rsp)
  movl   $0x0,0x18(%rsp)
  jmp    L595
L356:
  mov    0x120(%rsp),%ecx
  test   %ecx,%ecx
  jle    L487
  movl   $0x0,0xb0(%rsp)
  mov    $0xffffffff,%eax
  movl   $0x0,0x68(%rsp)
  movl   $0x0,0xb8(%rsp)
  jmp    L98
```

tool_calls: name: parse_data
arguments: label: D3
datatype: f32

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