user: Converte this assembly snippet into its equivalent C code:

```asm
<scale_internal_int>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xe0,%rsp
  mov    %edi,-0xb4(%rbp)
  mov    %esi,-0xb8(%rbp)
  mov    %edx,-0xbc(%rbp)
  mov    %rcx,-0xc8(%rbp)
  mov    %r8d,-0xc0(%rbp)
  mov    %r9d,-0xcc(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0xd8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0xc0(%rbp),%eax
  add    %eax,%eax
  cmp    %eax,-0xb8(%rbp)
  jne    L207
  mov    -0xcc(%rbp),%eax
  add    %eax,%eax
  cmp    %eax,-0xbc(%rbp)
  jne    L207
  mov    0x18(%rbp),%r9d
  mov    -0xd8(%rbp),%r8
  mov    -0xc8(%rbp),%rcx
  mov    -0xbc(%rbp),%edx
  mov    -0xb8(%rbp),%esi
  mov    -0xb4(%rbp),%eax
  sub    $0x8,%rsp
  mov    0x30(%rbp),%edi
  push   %rdi
  mov    0x28(%rbp),%edi
  push   %rdi
  mov    0x20(%rbp),%edi
  push   %rdi
  mov    %eax,%edi
  call   <halveImage_int@plt>
  add    $0x20,%rsp
  jmp    L387
L207:
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0xbc(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0xcc(%rbp),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x78(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0xb8(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0xc0(%rbp),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x74(%rbp)
  mov    -0x78(%rbp),%eax
  movd   %eax,%xmm0
  call   <floor@plt>
  mov    %eax,-0x70(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x70(%rbp),%xmm1
  movss  -0x78(%rbp),%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x6c(%rbp)
  mov    -0x74(%rbp),%eax
  movd   %eax,%xmm0
  call   <floor@plt>
  mov    %eax,-0x68(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x68(%rbp),%xmm1
  movss  -0x74(%rbp),%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x64(%rbp)
  movss  -0x74(%rbp),%xmm0
  mulss  -0x78(%rbp),%xmm0
  movss  %xmm0,-0x60(%rbp)
  movl   $0x0,-0x98(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x88(%rbp)
  mov    -0x70(%rbp),%eax
  mov    %eax,-0x94(%rbp)
  movss  -0x6c(%rbp),%xmm0
  movss  %xmm0,-0x84(%rbp)
  movl   $0x0,-0xac(%rbp)
  jmp    L864
L263:
  mov    -0x94(%rbp),%eax
  cmp    -0xbc(%rbp),%eax
  jl     L197
  mov    -0xbc(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x94(%rbp)
L197:
  movl   $0x0,-0xa0(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x90(%rbp)
  mov    -0x68(%rbp),%eax
  mov    %eax,-0x9c(%rbp)
  movss  -0x64(%rbp),%xmm0
  movss  %xmm0,-0x8c(%rbp)
  movl   $0x0,-0xa8(%rbp)
  jmp    L292
L61:
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x14(%rbp)
  movss  -0x14(%rbp),%xmm0
  movss  %xmm0,-0x18(%rbp)
  movss  -0x18(%rbp),%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movss  -0x1c(%rbp),%xmm0
  movss  %xmm0,-0x20(%rbp)
  mov    -0xa0(%rbp),%eax
  imul   0x28(%rbp),%eax
  mov    %eax,-0x5c(%rbp)
  mov    -0x94(%rbp),%eax
  cmp    -0x98(%rbp),%eax
  jle    L99
  mov    -0x9c(%rbp),%eax
  cmp    -0xa0(%rbp),%eax
  jle    L99
  movss  D97(%rip),%xmm0
  subss  -0x88(%rbp),%xmm0
  movss  %xmm0,-0x58(%rbp)
  mov    -0x5c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x98(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  add    %rax,%rdx
  mov    -0xc8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x48(%rbp)
  movss  D97(%rip),%xmm0
  subss  -0x90(%rbp),%xmm0
  movss  -0x58(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x54(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L282
L515:
  cmpl   $0x0,0x30(%rbp)
  je     L798
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L541
L798:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L541:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L282:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L515
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x30(%rbp)
  mov    -0xa0(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x80(%rbp)
  jmp    L175
L607:
  mov    0x28(%rbp),%eax
  cltq
  add    %rax,-0x48(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L739
L874:
  cmpl   $0x0,0x30(%rbp)
  je     L894
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x58(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L812
L894:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x58(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L812:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L739:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L874
  addl   $0x1,-0x80(%rbp)
L175:
  mov    -0x80(%rbp),%eax
  cmp    -0x9c(%rbp),%eax
  jl     L607
  mov    0x28(%rbp),%eax
  cltq
  add    %rax,-0x48(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  movss  -0x58(%rbp),%xmm0
  mulss  -0x8c(%rbp),%xmm0
  movss  %xmm0,-0x54(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L69
L884:
  cmpl   $0x0,0x30(%rbp)
  je     L604
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L594
L604:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L594:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L69:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L884
  movss  -0x84(%rbp),%xmm0
  movss  %xmm0,-0x58(%rbp)
  movss  D97(%rip),%xmm0
  subss  -0x90(%rbp),%xmm0
  movss  -0x58(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x94(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  add    %rax,%rdx
  mov    -0xc8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x48(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L67
L512:
  cmpl   $0x0,0x30(%rbp)
  je     L213
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L545
L213:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L545:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L67:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L512
  mov    -0xa0(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x80(%rbp)
  jmp    L485
L341:
  mov    0x28(%rbp),%eax
  cltq
  add    %rax,-0x48(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L26
L547:
  cmpl   $0x0,0x30(%rbp)
  je     L147
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x58(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L245
L147:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x58(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L245:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L26:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L547
  addl   $0x1,-0x80(%rbp)
L485:
  mov    -0x80(%rbp),%eax
  cmp    -0x9c(%rbp),%eax
  jl     L341
  mov    0x28(%rbp),%eax
  cltq
  add    %rax,-0x48(%rbp)
  movss  -0x58(%rbp),%xmm0
  mulss  -0x8c(%rbp),%xmm0
  movss  %xmm0,-0x54(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L306
L389:
  cmpl   $0x0,0x30(%rbp)
  je     L568
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L662
L568:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L662:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L306:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L389
  mov    -0x98(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x7c(%rbp)
  jmp    L876
L10:
  mov    0x20(%rbp),%eax
  cltq
  add    %rax,-0x30(%rbp)
  mov    0x20(%rbp),%eax
  cltq
  add    %rax,-0x28(%rbp)
  movl   $0x0,-0xa4(%rbp)
  jmp    L145
L612:
  cmpl   $0x0,0x30(%rbp)
  je     L59
  mov    -0x30(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x30(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm2,%xmm2
  cvtsi2ss %eax,%xmm2
  movss  D97(%rip),%xmm0
  subss  -0x90(%rbp),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x8c(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L540
L59:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm2,%xmm2
  cvtsi2ss %eax,%xmm2
  movss  D97(%rip),%xmm0
  subss  -0x90(%rbp),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x8c(%rbp),%xmm0
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L540:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x30(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x28(%rbp)
L145:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L612
  addl   $0x1,-0x7c(%rbp)
L876:
  mov    -0x7c(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L10
  jmp    L318
L99:
  mov    -0x94(%rbp),%eax
  cmp    -0x98(%rbp),%eax
  jle    L91
  movss  -0x8c(%rbp),%xmm0
  subss  -0x90(%rbp),%xmm0
  movss  %xmm0,-0x50(%rbp)
  movss  D97(%rip),%xmm0
  subss  -0x88(%rbp),%xmm0
  movss  -0x50(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x98(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  add    %rax,%rdx
  mov    -0xc8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x48(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L315
L17:
  cmpl   $0x0,0x30(%rbp)
  je     L829
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L269
L829:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L269:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L315:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L17
  mov    -0x98(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x7c(%rbp)
  jmp    L293
L859:
  mov    0x20(%rbp),%eax
  cltq
  add    %rax,-0x48(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L461
L673:
  cmpl   $0x0,0x30(%rbp)
  je     L78
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x50(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L283
L78:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x50(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L283:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L461:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L673
  addl   $0x1,-0x7c(%rbp)
L293:
  mov    -0x7c(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L859
  movss  -0x50(%rbp),%xmm0
  mulss  -0x84(%rbp),%xmm0
  movss  %xmm0,-0x54(%rbp)
  mov    0x20(%rbp),%eax
  cltq
  add    %rax,-0x48(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L917
L374:
  cmpl   $0x0,0x30(%rbp)
  je     L484
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L837
L484:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L837:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L917:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L374
  jmp    L318
L91:
  mov    -0x9c(%rbp),%eax
  cmp    -0xa0(%rbp),%eax
  jle    L32
  movss  -0x84(%rbp),%xmm0
  subss  -0x88(%rbp),%xmm0
  movss  %xmm0,-0x58(%rbp)
  movss  D97(%rip),%xmm0
  subss  -0x90(%rbp),%xmm0
  movss  -0x58(%rbp),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x98(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  add    %rax,%rdx
  mov    -0xc8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x48(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L391
L646:
  cmpl   $0x0,0x30(%rbp)
  je     L44
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L618
L44:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L618:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L391:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L646
  mov    -0xa0(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x80(%rbp)
  jmp    L776
L110:
  mov    0x28(%rbp),%eax
  cltq
  add    %rax,-0x48(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L11
L548:
  cmpl   $0x0,0x30(%rbp)
  je     L64
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x58(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L588
L64:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x58(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L588:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L11:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L548
  addl   $0x1,-0x80(%rbp)
L776:
  mov    -0x80(%rbp),%eax
  cmp    -0x9c(%rbp),%eax
  jl     L110
  mov    0x28(%rbp),%eax
  cltq
  add    %rax,-0x48(%rbp)
  movss  -0x58(%rbp),%xmm0
  mulss  -0x8c(%rbp),%xmm0
  movss  %xmm0,-0x54(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L406
L574:
  cmpl   $0x0,0x30(%rbp)
  je     L237
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L165
L237:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L165:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L406:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L574
  jmp    L318
L32:
  movss  -0x84(%rbp),%xmm0
  movaps %xmm0,%xmm1
  subss  -0x88(%rbp),%xmm1
  movss  -0x8c(%rbp),%xmm0
  subss  -0x90(%rbp),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x54(%rbp)
  mov    -0x5c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x98(%rbp),%eax
  imul   0x20(%rbp),%eax
  cltq
  add    %rax,%rdx
  mov    -0xc8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x48(%rbp)
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L367
L317:
  cmpl   $0x0,0x30(%rbp)
  je     L109
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L331
L109:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  -0x54(%rbp),%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L331:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L367:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L317
L318:
  mov    -0x5c(%rbp),%eax
  movslq %eax,%rdx
  mov    0x28(%rbp),%eax
  cltq
  add    %rax,%rdx
  mov    -0x98(%rbp),%eax
  add    $0x1,%eax
  imul   0x20(%rbp),%eax
  cltq
  add    %rax,%rdx
  mov    -0xc8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x40(%rbp)
  mov    -0x98(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x7c(%rbp)
  jmp    L123
L235:
  mov    -0x40(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  mov    -0xa0(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x80(%rbp)
  jmp    L24
L421:
  movl   $0x0,-0xa4(%rbp)
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  jmp    L284
L628:
  cmpl   $0x0,0x30(%rbp)
  je     L671
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  or     %edx,%eax
  mov    %eax,-0xb0(%rbp)
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  lea    -0xb0(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
  jmp    L529
L671:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm1
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  addss  %xmm1,%xmm0
  mov    -0xa4(%rbp),%eax
  cltq
  movss  %xmm0,-0x20(%rbp,%rax,4)
L529:
  addl   $0x1,-0xa4(%rbp)
  mov    0x18(%rbp),%eax
  cltq
  add    %rax,-0x38(%rbp)
L284:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L628
  mov    0x28(%rbp),%eax
  cltq
  add    %rax,-0x48(%rbp)
  addl   $0x1,-0x80(%rbp)
L24:
  mov    -0x80(%rbp),%eax
  cmp    -0x9c(%rbp),%eax
  jl     L421
  mov    0x20(%rbp),%eax
  cltq
  add    %rax,-0x40(%rbp)
  addl   $0x1,-0x7c(%rbp)
L123:
  mov    -0x7c(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L235
  mov    -0xac(%rbp),%eax
  imul   -0xc0(%rbp),%eax
  mov    %eax,%edx
  mov    -0xa8(%rbp),%eax
  add    %eax,%edx
  mov    -0xb4(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0x4c(%rbp)
  movl   $0x0,-0xa4(%rbp)
  jmp    L773
L229:
  mov    -0xa4(%rbp),%eax
  cltq
  movss  -0x20(%rbp,%rax,4),%xmm0
  divss  -0x60(%rbp),%xmm0
  mov    -0x4c(%rbp),%edx
  mov    -0xa4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xd8(%rbp),%rax
  add    %rax,%rdx
  cvttss2si %xmm0,%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0xa4(%rbp)
L773:
  mov    -0xa4(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jl     L229
  mov    -0x9c(%rbp),%eax
  mov    %eax,-0xa0(%rbp)
  movss  -0x8c(%rbp),%xmm0
  movss  %xmm0,-0x90(%rbp)
  mov    -0x68(%rbp),%eax
  add    %eax,-0x9c(%rbp)
  movss  -0x8c(%rbp),%xmm0
  addss  -0x64(%rbp),%xmm0
  movss  %xmm0,-0x8c(%rbp)
  movss  -0x8c(%rbp),%xmm0
  movss  D97(%rip),%xmm1
  comiss %xmm1,%xmm0
  jbe    L740
  movss  -0x8c(%rbp),%xmm0
  movss  D97(%rip),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x8c(%rbp)
  addl   $0x1,-0x9c(%rbp)
L740:
  addl   $0x1,-0xa8(%rbp)
L292:
  mov    -0xa8(%rbp),%eax
  cmp    -0xc0(%rbp),%eax
  jl     L61
  mov    -0x94(%rbp),%eax
  mov    %eax,-0x98(%rbp)
  movss  -0x84(%rbp),%xmm0
  movss  %xmm0,-0x88(%rbp)
  mov    -0x70(%rbp),%eax
  add    %eax,-0x94(%rbp)
  movss  -0x84(%rbp),%xmm0
  addss  -0x6c(%rbp),%xmm0
  movss  %xmm0,-0x84(%rbp)
  movss  -0x84(%rbp),%xmm0
  movss  D97(%rip),%xmm1
  comiss %xmm1,%xmm0
  jbe    L562
  movss  -0x84(%rbp),%xmm0
  movss  D97(%rip),%xmm1
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x84(%rbp)
  addl   $0x1,-0x94(%rbp)
L562:
  addl   $0x1,-0xac(%rbp)
L864:
  mov    -0xac(%rbp),%eax
  cmp    -0xcc(%rbp),%eax
  jl     L263
L387:
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L258
  call   <__stack_chk_fail@plt>
L258:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D97
type: f32

tool: D97: 1

assistant: ```c
void scale_internal_int(GLint components, GLint widthin, GLint heightin, const GLint *datain, GLint widthout, GLint heightout, GLint *dataout, GLint element_size, GLint ysize, GLint group_size, GLint myswap_bytes) {
  float convx;
  float convy;
  float percent;
  float totals[4];
  float area;
  int i, j, k, xindex;
  const char *temp, *temp0;
  const char *temp_index;
  int outindex;
  int lowx_int, highx_int, lowy_int, highy_int;
  float x_percent, y_percent;
  float lowx_float, highx_float, lowy_float, highy_float;
  float convy_float, convx_float;
  int convy_int, convx_int;
  int l, m;
  const char *left, *right;
  GLuint swapbuf;
  if (widthin == widthout * 2 && heightin == heightout * 2) {
    halveImage_int(components, widthin, heightin, (const GLint *)datain, (GLint *)dataout, element_size, ysize, group_size, myswap_bytes);
    return;
  }
  convy = (float)heightin / heightout;
  convx = (float)widthin / widthout;
  convy_int = floor(convy);
  convy_float = convy - convy_int;
  convx_int = floor(convx);
  convx_float = convx - convx_int;
  area = convx * convy;
  lowy_int = 0;
  lowy_float = 0;
  highy_int = convy_int;
  highy_float = convy_float;
  for (i = 0; i < heightout; i++) {
    if (highy_int >= heightin)
      highy_int = heightin - 1;
    lowx_int = 0;
    lowx_float = 0;
    highx_int = convx_int;
    highx_float = convx_float;
    for (j = 0; j < widthout; j++) {
      totals[0] = totals[1] = totals[2] = totals[3] = 0.0;
      xindex = lowx_int * group_size;
      if ((highy_int > lowy_int) && (highx_int > lowx_int)) {
        y_percent = 1 - lowy_float;
        temp = (const char *)datain + xindex + lowy_int * ysize;
        percent = y_percent * (1 - lowx_float);
        for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
          if (myswap_bytes) {
            swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
            totals[k] += *(const GLint *)&swapbuf * percent;
          } else {
            totals[k] += *(const GLint *)temp_index * percent;
          }
        }
        left = temp;
        for (l = lowx_int + 1; l < highx_int; l++) {
          temp += group_size;
          for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
            if (myswap_bytes) {
              swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
              totals[k] += *(const GLint *)&swapbuf * y_percent;
            } else {
              totals[k] += *(const GLint *)temp_index * y_percent;
            }
          }
        }
        temp += group_size;
        right = temp;
        percent = y_percent * highx_float;
        for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
          if (myswap_bytes) {
            swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
            totals[k] += *(const GLint *)&swapbuf * percent;
          } else {
            totals[k] += *(const GLint *)temp_index * percent;
          }
        }
        y_percent = highy_float;
        percent = y_percent * (1 - lowx_float);
        temp = (const char *)datain + xindex + highy_int * ysize;
        for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
          if (myswap_bytes) {
            swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
            totals[k] += *(const GLint *)&swapbuf * percent;
          } else {
            totals[k] += *(const GLint *)temp_index * percent;
          }
        }
        for (l = lowx_int + 1; l < highx_int; l++) {
          temp += group_size;
          for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
            if (myswap_bytes) {
              swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
              totals[k] += *(const GLint *)&swapbuf * y_percent;
            } else {
              totals[k] += *(const GLint *)temp_index * y_percent;
            }
          }
        }
        temp += group_size;
        percent = y_percent * highx_float;
        for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
          if (myswap_bytes) {
            swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
            totals[k] += *(const GLint *)&swapbuf * percent;
          } else {
            totals[k] += *(const GLint *)temp_index * percent;
          }
        }
        for (m = lowy_int + 1; m < highy_int; m++) {
          left += ysize;
          right += ysize;
          for (k = 0; k < components; k++, left += element_size, right += element_size) {
            if (myswap_bytes) {
              swapbuf = (GLuint)(((GLuint)((const GLubyte *)(left))[3]) << 24 | ((GLuint)((const GLubyte *)(left))[2]) << 16 | ((GLuint)((const GLubyte *)(left))[1]) << 8 | ((const GLubyte *)(left))[0]);
              totals[k] += *(const GLint *)&swapbuf * (1 - lowx_float);
              swapbuf = (GLuint)(((GLuint)((const GLubyte *)(right))[3]) << 24 | ((GLuint)((const GLubyte *)(right))[2]) << 16 | ((GLuint)((const GLubyte *)(right))[1]) << 8 | ((const GLubyte *)(right))[0]);
              totals[k] += *(const GLint *)&swapbuf * highx_float;
            } else {
              totals[k] += *(const GLint *)left * (1 - lowx_float) + *(const GLint *)right * highx_float;
            }
          }
        }
      } else if (highy_int > lowy_int) {
        x_percent = highx_float - lowx_float;
        percent = (1 - lowy_float) * x_percent;
        temp = (const char *)datain + xindex + lowy_int * ysize;
        for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
          if (myswap_bytes) {
            swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
            totals[k] += *(const GLint *)&swapbuf * percent;
          } else {
            totals[k] += *(const GLint *)temp_index * percent;
          }
        }
        for (m = lowy_int + 1; m < highy_int; m++) {
          temp += ysize;
          for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
            if (myswap_bytes) {
              swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
              totals[k] += *(const GLint *)&swapbuf * x_percent;
            } else {
              totals[k] += *(const GLint *)temp_index * x_percent;
            }
          }
        }
        percent = x_percent * highy_float;
        temp += ysize;
        for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
          if (myswap_bytes) {
            swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
            totals[k] += *(const GLint *)&swapbuf * percent;
          } else {
            totals[k] += *(const GLint *)temp_index * percent;
          }
        }
      } else if (highx_int > lowx_int) {
        y_percent = highy_float - lowy_float;
        percent = (1 - lowx_float) * y_percent;
        temp = (const char *)datain + xindex + lowy_int * ysize;
        for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
          if (myswap_bytes) {
            swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
            totals[k] += *(const GLint *)&swapbuf * percent;
          } else {
            totals[k] += *(const GLint *)temp_index * percent;
          }
        }
        for (l = lowx_int + 1; l < highx_int; l++) {
          temp += group_size;
          for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
            if (myswap_bytes) {
              swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
              totals[k] += *(const GLint *)&swapbuf * y_percent;
            } else {
              totals[k] += *(const GLint *)temp_index * y_percent;
            }
          }
        }
        temp += group_size;
        percent = y_percent * highx_float;
        for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
          if (myswap_bytes) {
            swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
            totals[k] += *(const GLint *)&swapbuf * percent;
          } else {
            totals[k] += *(const GLint *)temp_index * percent;
          }
        }
      } else {
        percent = (highy_float - lowy_float) * (highx_float - lowx_float);
        temp = (const char *)datain + xindex + lowy_int * ysize;
        for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
          if (myswap_bytes) {
            swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
            totals[k] += *(const GLint *)&swapbuf * percent;
          } else {
            totals[k] += *(const GLint *)temp_index * percent;
          }
        }
      }
      temp0 = (const char *)datain + xindex + group_size + (lowy_int + 1) * ysize;
      for (m = lowy_int + 1; m < highy_int; m++) {
        temp = temp0;
        for (l = lowx_int + 1; l < highx_int; l++) {
          for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) {
            if (myswap_bytes) {
              swapbuf = (GLuint)(((GLuint)((const GLubyte *)(temp_index))[3]) << 24 | ((GLuint)((const GLubyte *)(temp_index))[2]) << 16 | ((GLuint)((const GLubyte *)(temp_index))[1]) << 8 | ((const GLubyte *)(temp_index))[0]);
              totals[k] += *(const GLint *)&swapbuf;
            } else {
              totals[k] += *(const GLint *)temp_index;
            }
          }
          temp += group_size;
        }
        temp0 += ysize;
      }
      outindex = (j + (i * widthout)) * components;
      for (k = 0; k < components; k++) {
        dataout[outindex + k] = totals[k] / area;
      }
      lowx_int = highx_int;
      lowx_float = highx_float;
      highx_int += convx_int;
      highx_float += convx_float;
      if (highx_float > 1) {
        highx_float -= 1.0;
        highx_int++;
      }
    }
    lowy_int = highy_int;
    lowy_float = highy_float;
    highy_int += convy_int;
    highy_float += convy_float;
    if (highy_float > 1) {
      highy_float -= 1.0;
      highy_int++;
    }
  }
}
```