user: 下面的汇编指令对应的C源代码是什么：

```asm
<scale_internal_int>:
  endbr64
  push   %r15
  mov    %esi,%eax
  lea    (%r8,%r8,1),%esi
  push   %r14
  push   %r13
  mov    %edi,%r13d
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edx,%ebx
  sub    $0x118,%rsp
  mov    0x150(%rsp),%rdi
  mov    %edx,0xc4(%rsp)
  mov    %rcx,0x50(%rsp)
  movslq 0x158(%rsp),%r14
  mov    %rdi,0xb0(%rsp)
  mov    0x160(%rsp),%edi
  mov    %r8d,0x70(%rsp)
  mov    0x170(%rsp),%r12d
  mov    %edi,0xb8(%rsp)
  mov    0x168(%rsp),%edi
  mov    %r9d,0xc8(%rsp)
  mov    %edi,0x74(%rsp)
  mov    %fs:0x28,%rdx
  mov    %rdx,0x108(%rsp)
  xor    %edx,%edx
  cmp    %eax,%esi
  jne    L1608
  lea    (%r9,%r9,1),%edx
  cmp    %ebx,%edx
  je     L1219
L1608:
  pxor   %xmm6,%xmm6
  pxor   %xmm0,%xmm0
  mov    0x70(%rsp),%ebx
  pxor   %xmm1,%xmm1
  mov    0xc8(%rsp),%ebp
  cvtsi2ss %eax,%xmm1
  cvtsi2ssl 0xc4(%rsp),%xmm6
  cvtsi2ss %ebp,%xmm0
  divss  %xmm0,%xmm6
  pxor   %xmm0,%xmm0
  cvtsi2ss %ebx,%xmm0
  divss  %xmm0,%xmm1
  movaps %xmm6,%xmm0
  movss  %xmm6,(%rsp)
  movss  %xmm1,0x20(%rsp)
  call   <floor@plt>
  pxor   %xmm0,%xmm0
  movss  (%rsp),%xmm6
  movss  0x20(%rsp),%xmm1
  cvtsi2ss %eax,%xmm0
  mov    %eax,0xcc(%rsp)
  mov    %eax,%r15d
  movaps %xmm6,%xmm15
  movss  %xmm6,0x1c(%rsp)
  movss  %xmm1,(%rsp)
  subss  %xmm0,%xmm15
  movaps %xmm1,%xmm0
  movss  %xmm15,0x10(%rsp)
  call   <floor@plt>
  pxor   %xmm0,%xmm0
  movss  (%rsp),%xmm1
  movss  0x1c(%rsp),%xmm6
  cvtsi2ss %eax,%xmm0
  mov    %eax,0x80(%rsp)
  mulss  %xmm1,%xmm6
  movaps %xmm1,%xmm10
  subss  %xmm0,%xmm10
  test   %ebp,%ebp
  jle    L768
  movslq %r13d,%rax
  imul   %r13d,%ebx
  lea    (%r14,%r14,1),%rdi
  mov    %r15d,%edx
  shl    $0x2,%rax
  mov    %rdi,0x60(%rsp)
  pxor   %xmm4,%xmm4
  mov    %r14,%r15
  mov    %rax,0xa8(%rsp)
  mov    %r13d,%eax
  movss  0x10(%rsp),%xmm15
  movaps %xmm4,%xmm9
  and    $0xfffffffc,%eax
  mov    %ebx,0xd4(%rsp)
  lea    -0x1(%r13),%ebx
  movss  D7(%rip),%xmm7
  mov    %eax,0x44(%rsp)
  imul   %r14,%rax
  movaps %xmm15,%xmm1
  mov    %ebx,0x40(%rsp)
  movl   $0x0,0xc0(%rsp)
  mov    %rax,0x48(%rsp)
  mov    %ebx,%eax
  lea    0xf0(%rsp),%rbx
  add    $0x1,%rax
  mov    %rbx,0x38(%rsp)
  movl   $0x0,0x84(%rsp)
  imul   %r14,%rax
  movl   $0x0,0x9c(%rsp)
  mov    %rax,0x78(%rsp)
  movslq 0xb8(%rsp),%rax
  mov    %rax,0x28(%rsp)
  add    %rdi,%rax
  mov    %rax,0xd8(%rsp)
  add    %r14,%rax
  mov    %rax,0xe0(%rsp)
L992:
  mov    0xc4(%rsp),%ebx
  lea    -0x1(%rbx),%eax
  cmp    %edx,%ebx
  cmovle %eax,%edx
  mov    0x70(%rsp),%eax
  mov    %edx,0x1c(%rsp)
  test   %eax,%eax
  jle    L568
  mov    0x84(%rsp),%ebx
  mov    0xb8(%rsp),%edi
  movl   $0x0,0x5c(%rsp)
  movaps %xmm10,%xmm0
  movslq 0x74(%rsp),%rbp
  mov    0x80(%rsp),%r8d
  movaps %xmm4,%xmm8
  mov    %ebx,%eax
  imul   %edi,%eax
  movslq %eax,%rsi
  add    %edi,%eax
  mov    %rsi,0x88(%rsp)
  lea    0x1(%rbx),%esi
  cltq
  mov    %esi,0x58(%rsp)
  mov    0x1c(%rsp),%esi
  add    %rbp,%rax
  mov    %rax,0xa0(%rsp)
  mov    %esi,%eax
  imul   %edi,%eax
  mov    0xb0(%rsp),%rdi
  cmp    %ebx,%esi
  setg   0xd3(%rsp)
  xor    %r14d,%r14d
  mov    %r14d,(%rsp)
  mov    %r15,%r14
  cltq
  mov    %rax,0x90(%rsp)
  movslq 0xc0(%rsp),%rax
  mov    %rax,%rbx
  lea    (%rdi,%rax,4),%rax
  mov    %rax,0x68(%rsp)
  mov    %ebx,0x98(%rsp)
  mov    %r12d,%ebx
  mov    %r8d,%r12d
L43:
  mov    0x74(%rsp),%eax
  mov    (%rsp),%edi
  pxor   %xmm11,%xmm11
  mov    0x88(%rsp),%rsi
  movaps %xmm11,0xf0(%rsp)
  imul   %edi,%eax
  cltq
  add    %rax,%rsi
  mov    %rax,0x10(%rsp)
  mov    0x50(%rsp),%rax
  add    %rsi,%rax
  cmp    %r12d,%edi
  jge    L1813
  cmpb   $0x0,0xd3(%rsp)
  jne    L108
L1813:
  mov    0x84(%rsp),%ecx
  cmp    %ecx,0x1c(%rsp)
  jg     L1185
  movaps %xmm1,%xmm3
  subss  %xmm9,%xmm3
  cmp    %r12d,(%rsp)
  jge    L1284
  movaps %xmm7,%xmm2
  subss  %xmm8,%xmm2
  mulss  %xmm3,%xmm2
  test   %r13d,%r13d
  jle    L739
  test   %ebx,%ebx
  jne    L94
  cmpl   $0x2,0x40(%rsp)
  jbe    L540
  lea    (%rax,%r14,1),%rdx
  mov    0x44(%rsp),%r8d
  mov    0x48(%rsp),%rdi
  lea    (%rdx,%r14,1),%rcx
  mov    (%rdx),%edx
  movd   (%rcx,%r14,1),%xmm5
  movd   (%rcx),%xmm8
  mov    %r8d,%ecx
  add    %rax,%rdi
  movd   %edx,%xmm13
  punpckldq %xmm5,%xmm8
  movd   (%rax),%xmm5
  punpckldq %xmm13,%xmm5
  punpcklqdq %xmm8,%xmm5
  movaps %xmm2,%xmm8
  shufps $0x0,%xmm8,%xmm8
  cvtdq2ps %xmm5,%xmm5
  mulps  %xmm8,%xmm5
  pxor   %xmm8,%xmm8
  addps  %xmm8,%xmm5
  movaps %xmm5,0xf0(%rsp)
  cmp    %ecx,%r13d
  je     L338
L1499:
  mov    %r13d,%r9d
  sub    %ecx,%r9d
  cmp    $0x1,%r9d
  je     L1163
  mov    %r14,%rdx
  movaps %xmm2,%xmm8
  imul   %rcx,%rdx
  shufps $0xe0,%xmm8,%xmm8
  add    %rsi,%rdx
  add    0x50(%rsp),%rdx
  mov    0x38(%rsp),%rsi
  movd   (%rdx),%xmm5
  movd   (%rdx,%r14,1),%xmm14
  mov    %r9d,%edx
  lea    (%rsi,%rcx,4),%rcx
  and    $0xfffffffe,%edx
  punpckldq %xmm14,%xmm5
  add    %edx,%r8d
  cvtdq2ps %xmm5,%xmm5
  mulps  %xmm8,%xmm5
  movq   (%rcx),%xmm8
  addps  %xmm5,%xmm8
  movlps %xmm8,(%rcx)
  mov    %edx,%ecx
  imul   %r14,%rcx
  add    %rcx,%rdi
  cmp    %edx,%r9d
  je     L338
L1163:
  pxor   %xmm5,%xmm5
  movslq %r8d,%rdx
  cvtsi2ssl (%rdi),%xmm5
  mulss  %xmm5,%xmm2
  addss  0xf0(%rsp,%rdx,4),%xmm2
  movss  %xmm2,0xf0(%rsp,%rdx,4)
L338:
  mov    (%rsp),%edi
  lea    0x1(%rdi),%r15d
  cmp    %r15d,%r12d
  jle    L644
L636:
  mov    0x60(%rsp),%rdi
  movaps %xmm3,%xmm5
  movaps %xmm3,%xmm8
  mov    %rax,%rdx
  shufps $0xe0,%xmm5,%xmm5
  shufps $0x0,%xmm8,%xmm8
  add    %rbp,%rdi
  lea    (%rax,%rdi,1),%r11
  jmp    L1666
L1092:
  cmpl   $0x2,0x40(%rsp)
  jbe    L1141
  movd   (%r11,%r14,1),%xmm2
  movd   (%r11),%xmm11
  movd   (%rdx,%r14,1),%xmm14
  mov    0x48(%rsp),%rsi
  punpckldq %xmm2,%xmm11
  movd   (%rdi,%rbp,1),%xmm2
  mov    0x44(%rsp),%ecx
  lea    (%rdx,%rsi,1),%r8
  punpckldq %xmm14,%xmm2
  mov    %ecx,%esi
  punpcklqdq %xmm11,%xmm2
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm8,%xmm2
  addps  0xf0(%rsp),%xmm2
  movaps %xmm2,0xf0(%rsp)
  cmp    %esi,%r13d
  je     L390
L1111:
  mov    %r13d,%r9d
  sub    %esi,%r9d
  cmp    $0x1,%r9d
  je     L1828
  mov    0x38(%rsp),%r10
  lea    (%r10,%rsi,4),%r10
  imul   %r14,%rsi
  movq   (%r10),%xmm11
  add    %rbp,%rsi
  add    %rsi,%rdi
  mov    %r9d,%esi
  movd   (%rdi),%xmm2
  movd   (%rdi,%r14,1),%xmm13
  and    $0xfffffffe,%esi
  mov    %esi,%edi
  add    %esi,%ecx
  punpckldq %xmm13,%xmm2
  imul   %r14,%rdi
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm5,%xmm2
  add    %rdi,%r8
  addps  %xmm2,%xmm11
  movlps %xmm11,(%r10)
  cmp    %esi,%r9d
  je     L390
L1828:
  pxor   %xmm2,%xmm2
  movslq %ecx,%rcx
  cvtsi2ssl (%r8),%xmm2
  mulss  %xmm3,%xmm2
  addss  0xf0(%rsp,%rcx,4),%xmm2
  movss  %xmm2,0xf0(%rsp,%rcx,4)
L390:
  add    $0x1,%r15d
  add    %rbp,%r11
  cmp    %r12d,%r15d
  je     L1150
L1666:
  mov    %rdx,%rdi
  add    %rbp,%rdx
  test   %r13d,%r13d
  jle    L390
  test   %ebx,%ebx
  je     L1092
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm2,%xmm2
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm3,%xmm2
  addss  0xf0(%rsp),%xmm2
  movss  %xmm2,0xf0(%rsp)
  cmp    $0x1,%r13d
  je     L390
  mov    0xc(%rdx,%r14,1),%ecx
  mov    0x8(%rdx,%r14,1),%esi
  pxor   %xmm2,%xmm2
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx,%r14,1),%esi
  or     (%rdx,%r14,1),%ecx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm3,%xmm2
  addss  0xf4(%rsp),%xmm2
  movss  %xmm2,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L390
  mov    0xc(%r11),%ecx
  mov    0x8(%r11),%esi
  pxor   %xmm2,%xmm2
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%r11),%esi
  or     (%r11),%ecx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm3,%xmm2
  addss  0xf8(%rsp),%xmm2
  movss  %xmm2,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L390
  mov    0xc(%r11,%r14,1),%ecx
  mov    0x8(%r11,%r14,1),%esi
  pxor   %xmm2,%xmm2
  add    $0x1,%r15d
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%r11,%r14,1),%esi
  or     (%r11,%r14,1),%ecx
  add    %rbp,%r11
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm3,%xmm2
  addss  0xfc(%rsp),%xmm2
  movss  %xmm2,0xfc(%rsp)
  cmp    %r12d,%r15d
  jne    L1666
L1150:
  lea    -0x2(%r12),%edx
  mulss  %xmm0,%xmm3
  sub    (%rsp),%edx
  add    $0x1,%rdx
  imul   %rbp,%rdx
  add    %rdx,%rax
  lea    (%rax,%rbp,1),%rdx
  test   %r13d,%r13d
  jle    L245
  test   %ebx,%ebx
  jne    L948
  cmpl   $0x2,0x40(%rsp)
  jbe    L2104
L177:
  lea    (%rdx,%r14,1),%rcx
  mov    0x44(%rsp),%edi
  lea    (%rcx,%r14,1),%rsi
  mov    (%rcx),%ecx
  movd   (%rsi,%r14,1),%xmm2
  movd   (%rsi),%xmm5
  movd   %ecx,%xmm13
  mov    %edi,%ecx
  punpckldq %xmm2,%xmm5
  movd   (%rdx),%xmm2
  add    0x48(%rsp),%rdx
  punpckldq %xmm13,%xmm2
  punpcklqdq %xmm5,%xmm2
  movaps %xmm3,%xmm5
  cvtdq2ps %xmm2,%xmm2
  shufps $0x0,%xmm5,%xmm5
  mulps  %xmm5,%xmm2
  addps  0xf0(%rsp),%xmm2
  movaps %xmm2,0xf0(%rsp)
  cmp    %edi,%r13d
  je     L488
L1041:
  mov    %r13d,%r8d
  sub    %ecx,%r8d
  cmp    $0x1,%r8d
  je     L1633
  mov    0x38(%rsp),%rsi
  lea    (%rsi,%rcx,4),%rsi
  imul   %r14,%rcx
  add    %rbp,%rcx
L207:
  add    %rax,%rcx
  mov    %r8d,%eax
  movd   (%rcx,%r14,1),%xmm5
  movd   (%rcx),%xmm2
  and    $0xfffffffe,%eax
  mov    %eax,%ecx
  add    %eax,%edi
  punpckldq %xmm5,%xmm2
  imul   %r14,%rcx
  movaps %xmm3,%xmm5
  shufps $0xe0,%xmm5,%xmm5
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm5,%xmm2
  movq   (%rsi),%xmm5
  add    %rcx,%rdx
  addps  %xmm2,%xmm5
  movlps %xmm5,(%rsi)
  cmp    %eax,%r8d
  je     L488
L1633:
  pxor   %xmm2,%xmm2
  movslq %edi,%rax
  cvtsi2ssl (%rdx),%xmm2
  mulss  %xmm3,%xmm2
  addss  0xf0(%rsp,%rax,4),%xmm2
  movss  %xmm2,0xf0(%rsp,%rax,4)
  jmp    L488
L1284:
  movaps %xmm0,%xmm2
  subss  %xmm8,%xmm2
  mulss  %xmm3,%xmm2
  test   %r13d,%r13d
  jle    L245
  test   %ebx,%ebx
  jne    L630
  cmpl   $0x2,0x40(%rsp)
  jbe    L227
  lea    (%rax,%r14,1),%rdx
  mov    0x44(%rsp),%edi
  lea    (%rdx,%r14,1),%rcx
  mov    (%rdx),%edx
  movd   (%rcx,%r14,1),%xmm3
  movd   (%rcx),%xmm5
  mov    %edi,%ecx
  movd   %edx,%xmm14
  punpckldq %xmm3,%xmm5
  movd   (%rax),%xmm3
  add    0x48(%rsp),%rax
  punpckldq %xmm14,%xmm3
  punpcklqdq %xmm5,%xmm3
  movaps %xmm2,%xmm5
  shufps $0x0,%xmm5,%xmm5
  cvtdq2ps %xmm3,%xmm3
  mulps  %xmm5,%xmm3
  pxor   %xmm5,%xmm5
  addps  %xmm5,%xmm3
  movaps %xmm3,0xf0(%rsp)
  cmp    %edi,%r13d
  je     L488
L721:
  mov    %r13d,%r8d
  sub    %ecx,%r8d
  cmp    $0x1,%r8d
  je     L1819
  mov    %r14,%rdx
  imul   %rcx,%rdx
  add    %rsi,%rdx
  add    0x50(%rsp),%rdx
  mov    0x38(%rsp),%rsi
  movd   (%rdx,%r14,1),%xmm5
  movd   (%rdx),%xmm3
  mov    %r8d,%edx
  lea    (%rsi,%rcx,4),%rcx
  and    $0xfffffffe,%edx
  punpckldq %xmm5,%xmm3
  movaps %xmm2,%xmm5
  add    %edx,%edi
  shufps $0xe0,%xmm5,%xmm5
  cvtdq2ps %xmm3,%xmm3
  mulps  %xmm5,%xmm3
  movq   (%rcx),%xmm5
  addps  %xmm3,%xmm5
  movlps %xmm5,(%rcx)
  mov    %edx,%ecx
  imul   %r14,%rcx
  add    %rcx,%rax
  cmp    %edx,%r8d
  je     L488
L1819:
  pxor   %xmm3,%xmm3
  movslq %edi,%rdx
  cvtsi2ssl (%rax),%xmm3
  mulss  %xmm2,%xmm3
  addss  0xf0(%rsp,%rdx,4),%xmm3
  movss  %xmm3,0xf0(%rsp,%rdx,4)
L488:
  mov    0x10(%rsp),%r11
  add    0xa0(%rsp),%r11
  add    0x50(%rsp),%r11
  mov    0x58(%rsp),%edi
  mov    %r11,0x10(%rsp)
  cmp    %edi,0x1c(%rsp)
  jle    L1149
L210:
  mov    (%rsp),%eax
  add    $0x1,%eax
  mov    %eax,0x20(%rsp)
L21:
  cmp    0x20(%rsp),%r12d
  jle    L1786
  mov    0x58(%rsp),%edi
  mov    0x10(%rsp),%rax
  mov    %r14,0x30(%rsp)
  xor    %edx,%edx
  add    0x60(%rsp),%rax
  xor    %r10d,%r10d
  xor    %r9d,%r9d
  xor    %r11d,%r11d
  movss  0xf0(%rsp),%xmm2
  mov    %edi,(%rsp)
  mov    %rax,%r14
  movss  0xf4(%rsp),%xmm3
  movss  0xf8(%rsp),%xmm5
  movss  0xfc(%rsp),%xmm8
  nopl   0x0(%rax)
L1654:
  mov    0x10(%rsp),%rax
  mov    0x30(%rsp),%rsi
  mov    0x20(%rsp),%r8d
  mov    %rax,%rcx
  lea    (%rsi,%r14,1),%rdi
  add    %rsi,%rcx
  mov    %r14,%rsi
  jmp    L1452
  nopl   0x0(%rax)
L753:
  pxor   %xmm11,%xmm11
  cvtsi2ssl (%rax),%xmm11
  addss  %xmm11,%xmm2
  cmp    $0x1,%r13d
  je     L382
  pxor   %xmm11,%xmm11
  cvtsi2ssl (%rcx),%xmm11
  addss  %xmm11,%xmm3
  cmp    $0x2,%r13d
  je     L18
  pxor   %xmm11,%xmm11
  cvtsi2ssl (%rsi),%xmm11
  addss  %xmm11,%xmm5
  cmp    $0x3,%r13d
  je     L231
  pxor   %xmm11,%xmm11
  cvtsi2ssl (%rdi),%xmm11
L1480:
  addss  %xmm11,%xmm8
  mov    $0x1,%r10d
  mov    $0x1,%edx
  mov    $0x1,%r9d
  mov    $0x1,%r11d
L194:
  add    $0x1,%r8d
  add    %rbp,%rax
  add    %rbp,%rdi
  add    %rbp,%rcx
  add    %rbp,%rsi
  cmp    %r12d,%r8d
  je     L601
L1452:
  test   %r13d,%r13d
  jle    L194
  test   %ebx,%ebx
  je     L753
  mov    0x8(%rax),%edx
  mov    0xc(%rax),%r15d
  pxor   %xmm11,%xmm11
  shl    $0x18,%r15d
  shl    $0x10,%edx
  or     %r15d,%edx
  mov    0x4(%rax),%r15d
  or     (%rax),%edx
  shl    $0x8,%r15d
  or     %r15d,%edx
  cvtsi2ss %edx,%xmm11
  addss  %xmm11,%xmm2
  cmp    $0x1,%r13d
  je     L382
  mov    0x8(%rcx),%edx
  mov    0xc(%rcx),%r9d
  pxor   %xmm11,%xmm11
  shl    $0x18,%r9d
  shl    $0x10,%edx
  or     %r9d,%edx
  mov    0x4(%rcx),%r9d
  or     (%rcx),%edx
  shl    $0x8,%r9d
  or     %r9d,%edx
  cvtsi2ss %edx,%xmm11
  addss  %xmm11,%xmm3
  cmp    $0x2,%r13d
  je     L18
  mov    0x8(%rsi),%edx
  mov    0xc(%rsi),%r9d
  pxor   %xmm11,%xmm11
  shl    $0x18,%r9d
  shl    $0x10,%edx
  or     %r9d,%edx
  mov    0x4(%rsi),%r9d
  or     (%rsi),%edx
  shl    $0x8,%r9d
  or     %r9d,%edx
  cvtsi2ss %edx,%xmm11
  addss  %xmm11,%xmm5
  cmp    $0x3,%r13d
  je     L231
  mov    0xc(%rdi),%edx
  mov    0x8(%rdi),%r9d
  pxor   %xmm11,%xmm11
  shl    $0x10,%r9d
  shl    $0x18,%edx
  or     %r9d,%edx
  mov    0x4(%rdi),%r9d
  or     (%rdi),%edx
  shl    $0x8,%r9d
  or     %r9d,%edx
  cvtsi2ss %edx,%xmm11
  jmp    L1480
  nopl   0x0(%rax)
L231:
  mov    $0x1,%r10d
L18:
  mov    $0x1,%r9d
L382:
  mov    $0x1,%edx
  jmp    L194
  cs nopw 0x0(%rax,%rax,1)
L601:
  mov    0x28(%rsp),%rdi
  addl   $0x1,(%rsp)
  add    %rdi,0x10(%rsp)
  mov    (%rsp),%eax
  add    %rdi,%r14
  cmp    %eax,0x1c(%rsp)
  jg     L1654
  mov    0x30(%rsp),%r14
  test   %r10b,%r10b
  je     L1376
  movss  %xmm5,0xf8(%rsp)
L1376:
  test   %r9b,%r9b
  je     L744
  movss  %xmm3,0xf4(%rsp)
L744:
  test   %dl,%dl
  je     L512
  movss  %xmm2,0xf0(%rsp)
L512:
  test   %r11b,%r11b
  je     L1786
  movss  %xmm8,0xfc(%rsp)
L1786:
  test   %r13d,%r13d
  jle    L699
L1149:
  cmpl   $0x2,0x40(%rsp)
  jbe    L1364
  movaps 0xf0(%rsp),%xmm2
  movaps %xmm6,%xmm3
  mov    0x68(%rsp),%rax
  shufps $0x0,%xmm3,%xmm3
  divps  %xmm3,%xmm2
  cvttps2dq %xmm2,%xmm2
  movups %xmm2,(%rax)
  mov    0x44(%rsp),%eax
  cmp    %eax,%r13d
  je     L699
L1189:
  movslq %eax,%rcx
  mov    0x98(%rsp),%edi
  mov    0xb0(%rsp),%rsi
  movss  0xf0(%rsp,%rcx,4),%xmm2
  lea    (%rax,%rdi,1),%edx
  divss  %xmm6,%xmm2
  movslq %edx,%rdx
  cvttss2si %xmm2,%ecx
  mov    %ecx,(%rsi,%rdx,4)
  lea    0x1(%rax),%edx
  cmp    %edx,%r13d
  jle    L699
  lea    (%rdx,%rdi,1),%ecx
  movslq %edx,%rdx
  add    $0x2,%eax
  movss  0xf0(%rsp,%rdx,4),%xmm2
  movslq %ecx,%rcx
  divss  %xmm6,%xmm2
  cvttss2si %xmm2,%edx
  mov    %edx,(%rsi,%rcx,4)
  cmp    %eax,%r13d
  jle    L699
  lea    (%rax,%rdi,1),%edx
  cltq
  movss  0xf0(%rsp,%rax,4),%xmm2
  movslq %edx,%rdx
  divss  %xmm6,%xmm2
  cvttss2si %xmm2,%eax
  mov    %eax,(%rsi,%rdx,4)
L699:
  movaps %xmm10,%xmm2
  mov    0x80(%rsp),%eax
  addss  %xmm0,%xmm2
  add    %r12d,%eax
  comiss %xmm7,%xmm2
  jbe    L1621
  subss  %xmm7,%xmm2
  add    $0x1,%eax
L1621:
  mov    0xa8(%rsp),%rcx
  addl   $0x1,0x5c(%rsp)
  movaps %xmm0,%xmm8
  add    %r13d,0x98(%rsp)
  mov    0x5c(%rsp),%edi
  add    %rcx,0x68(%rsp)
  mov    %r12d,(%rsp)
  cmp    %edi,0x70(%rsp)
  je     L305
  movaps %xmm2,%xmm0
  mov    %eax,%r12d
  jmp    L43
L108:
  movaps %xmm7,%xmm3
  movaps %xmm7,%xmm5
  subss  %xmm8,%xmm3
  subss  %xmm9,%xmm5
  movaps %xmm3,%xmm8
  mulss  %xmm5,%xmm8
  test   %r13d,%r13d
  jle    L187
  test   %ebx,%ebx
  jne    L1638
  cmpl   $0x2,0x40(%rsp)
  jbe    L438
  lea    (%rax,%r14,1),%rdx
  mov    0x44(%rsp),%r8d
  mov    0x48(%rsp),%rdi
  lea    (%rdx,%r14,1),%rcx
  mov    (%rdx),%edx
  movd   (%rcx,%r14,1),%xmm2
  movd   (%rcx),%xmm12
  mov    %r8d,%ecx
  add    %rax,%rdi
  movd   %edx,%xmm13
  punpckldq %xmm2,%xmm12
  movd   (%rax),%xmm2
  punpckldq %xmm13,%xmm2
  punpcklqdq %xmm12,%xmm2
  movaps %xmm8,%xmm12
  cvtdq2ps %xmm2,%xmm2
  shufps $0x0,%xmm12,%xmm12
  mulps  %xmm12,%xmm2
  addps  %xmm11,%xmm2
  movaps %xmm2,0xf0(%rsp)
  cmp    %ecx,%r13d
  je     L1545
L1038:
  mov    %r13d,%r9d
  sub    %ecx,%r9d
  cmp    $0x1,%r9d
  je     L2089
  mov    %r14,%rdx
  movaps %xmm8,%xmm11
  imul   %rcx,%rdx
  shufps $0xe0,%xmm11,%xmm11
  add    %rsi,%rdx
  add    0x50(%rsp),%rdx
  mov    0x38(%rsp),%rsi
  movd   (%rdx),%xmm2
  movd   (%rdx,%r14,1),%xmm14
  mov    %r9d,%edx
  lea    (%rsi,%rcx,4),%rcx
  and    $0xfffffffe,%edx
  punpckldq %xmm14,%xmm2
  add    %edx,%r8d
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm11,%xmm2
  movq   (%rcx),%xmm11
  addps  %xmm2,%xmm11
  movlps %xmm11,(%rcx)
  mov    %edx,%ecx
  imul   %r14,%rcx
  add    %rcx,%rdi
  cmp    %edx,%r9d
  je     L1545
L2089:
  pxor   %xmm2,%xmm2
  movslq %r8d,%rdx
  cvtsi2ssl (%rdi),%xmm2
  mulss  %xmm8,%xmm2
  addss  0xf0(%rsp,%rdx,4),%xmm2
  movss  %xmm2,0xf0(%rsp,%rdx,4)
L1545:
  mov    (%rsp),%edi
  add    $0x1,%edi
  mov    %edi,0x20(%rsp)
  cmp    %edi,%r12d
  jle    L1323
L763:
  mov    0x60(%rsp),%rdi
  movaps %xmm5,%xmm8
  movaps %xmm5,%xmm11
  mov    %rax,%rdx
  mov    0x20(%rsp),%r15d
  shufps $0xe0,%xmm8,%xmm8
  shufps $0x0,%xmm11,%xmm11
  add    %rbp,%rdi
  mov    %rdi,0x30(%rsp)
  lea    (%rax,%rdi,1),%r11
  jmp    L941
L1872:
  cmpl   $0x2,0x40(%rsp)
  jbe    L1883
  movd   (%r11,%r14,1),%xmm2
  movd   (%r11),%xmm12
  movd   (%rdx,%r14,1),%xmm14
  mov    0x48(%rsp),%rsi
  punpckldq %xmm2,%xmm12
  movd   (%rdi,%rbp,1),%xmm2
  mov    0x44(%rsp),%ecx
  lea    (%rdx,%rsi,1),%r8
  punpckldq %xmm14,%xmm2
  mov    %ecx,%esi
  punpcklqdq %xmm12,%xmm2
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm11,%xmm2
  addps  0xf0(%rsp),%xmm2
  movaps %xmm2,0xf0(%rsp)
  cmp    %esi,%r13d
  je     L1525
L1647:
  mov    %r13d,%r9d
  sub    %esi,%r9d
  cmp    $0x1,%r9d
  je     L2084
  mov    0x38(%rsp),%r10
  lea    (%r10,%rsi,4),%r10
  imul   %r14,%rsi
  movq   (%r10),%xmm12
  add    %rbp,%rsi
  add    %rsi,%rdi
  mov    %r9d,%esi
  movd   (%rdi),%xmm2
  movd   (%rdi,%r14,1),%xmm13
  and    $0xfffffffe,%esi
  mov    %esi,%edi
  add    %esi,%ecx
  punpckldq %xmm13,%xmm2
  imul   %r14,%rdi
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm8,%xmm2
  add    %rdi,%r8
  addps  %xmm2,%xmm12
  movlps %xmm12,(%r10)
  cmp    %esi,%r9d
  je     L1525
L2084:
  pxor   %xmm2,%xmm2
  movslq %ecx,%rcx
  cvtsi2ssl (%r8),%xmm2
  mulss  %xmm5,%xmm2
  addss  0xf0(%rsp,%rcx,4),%xmm2
  movss  %xmm2,0xf0(%rsp,%rcx,4)
L1525:
  add    $0x1,%r15d
  add    %rbp,%r11
  cmp    %r12d,%r15d
  je     L1821
L941:
  mov    %rdx,%rdi
  add    %rbp,%rdx
  test   %r13d,%r13d
  jle    L1525
  test   %ebx,%ebx
  je     L1872
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm2,%xmm2
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm5,%xmm2
  addss  0xf0(%rsp),%xmm2
  movss  %xmm2,0xf0(%rsp)
  cmp    $0x1,%r13d
  je     L1525
  mov    0xc(%rdx,%r14,1),%ecx
  mov    0x8(%rdx,%r14,1),%esi
  pxor   %xmm2,%xmm2
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx,%r14,1),%esi
  or     (%rdx,%r14,1),%ecx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm5,%xmm2
  addss  0xf4(%rsp),%xmm2
  movss  %xmm2,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L1525
  mov    0xc(%r11),%ecx
  mov    0x8(%r11),%esi
  pxor   %xmm2,%xmm2
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%r11),%esi
  or     (%r11),%ecx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm5,%xmm2
  addss  0xf8(%rsp),%xmm2
  movss  %xmm2,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L1525
  mov    0xc(%r11,%r14,1),%ecx
  mov    0x8(%r11,%r14,1),%esi
  pxor   %xmm2,%xmm2
  add    $0x1,%r15d
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%r11,%r14,1),%esi
  or     (%r11,%r14,1),%ecx
  add    %rbp,%r11
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm5,%xmm2
  addss  0xfc(%rsp),%xmm2
  movss  %xmm2,0xfc(%rsp)
  cmp    %r12d,%r15d
  jne    L941
L1821:
  lea    -0x2(%r12),%edi
  mov    0x90(%rsp),%rsi
  mulss  %xmm0,%xmm5
  add    0x10(%rsp),%rsi
  mov    %edi,%edx
  sub    (%rsp),%edx
  mov    %edi,0xbc(%rsp)
  add    $0x1,%rdx
  mov    0x50(%rsp),%rdi
  imul   %rbp,%rdx
  lea    (%rdi,%rsi,1),%r9
  lea    (%rax,%rdx,1),%r11
  lea    (%r11,%rbp,1),%r15
  test   %r13d,%r13d
  jle    L657
  test   %ebx,%ebx
  jne    L150
L429:
  cmpl   $0x2,0x40(%rsp)
  jbe    L1753
  lea    (%r15,%r14,1),%rdx
  mov    0x48(%rsp),%rdi
  mov    0x44(%rsp),%r8d
  lea    (%rdx,%r14,1),%rcx
  mov    (%rdx),%edx
  movd   (%rcx,%r14,1),%xmm2
  movd   (%rcx),%xmm8
  add    %r15,%rdi
  movd   %edx,%xmm13
  mov    %r8d,%edx
  punpckldq %xmm2,%xmm8
  movd   (%r15),%xmm2
  punpckldq %xmm13,%xmm2
  punpcklqdq %xmm8,%xmm2
  movaps %xmm5,%xmm8
  cvtdq2ps %xmm2,%xmm2
  shufps $0x0,%xmm8,%xmm8
  mulps  %xmm8,%xmm2
  addps  0xf0(%rsp),%xmm2
  movaps %xmm2,0xf0(%rsp)
  cmp    %r8d,%r13d
  je     L1758
L1510:
  mov    %r13d,%r10d
  sub    %edx,%r10d
  cmp    $0x1,%r10d
  je     L642
  mov    0x38(%rsp),%rcx
  movaps %xmm5,%xmm8
  shufps $0xe0,%xmm8,%xmm8
  lea    (%rcx,%rdx,4),%rcx
  imul   %r14,%rdx
  add    %rbp,%rdx
  add    %r11,%rdx
  movd   (%rdx),%xmm2
  movd   (%rdx,%r14,1),%xmm14
  mov    %r10d,%edx
  and    $0xfffffffe,%edx
  punpckldq %xmm14,%xmm2
  add    %edx,%r8d
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm8,%xmm2
  movq   (%rcx),%xmm8
  addps  %xmm2,%xmm8
  movlps %xmm8,(%rcx)
  mov    %edx,%ecx
  imul   %r14,%rcx
  add    %rcx,%rdi
  cmp    %edx,%r10d
  je     L1964
L642:
  pxor   %xmm2,%xmm2
  movslq %r8d,%rdx
  cvtsi2ssl (%rdi),%xmm2
  mulss  %xmm5,%xmm2
  addss  0xf0(%rsp,%rdx,4),%xmm2
  movss  %xmm2,0xf0(%rsp,%rdx,4)
L1964:
  movaps %xmm3,%xmm5
  cmpl   $0x2,0x40(%rsp)
  mulss  %xmm1,%xmm5
  jbe    L1058
L1251:
  lea    (%r9,%r14,1),%rdx
  mov    0x48(%rsp),%rdi
  mov    0x44(%rsp),%r8d
  lea    (%rdx,%r14,1),%rcx
  mov    (%rdx),%edx
  movd   (%rcx,%r14,1),%xmm2
  movd   (%rcx),%xmm8
  add    %r9,%rdi
  movd   %edx,%xmm13
  mov    %r8d,%edx
  punpckldq %xmm2,%xmm8
  movd   (%r9),%xmm2
  punpckldq %xmm13,%xmm2
  punpcklqdq %xmm8,%xmm2
  movaps %xmm5,%xmm8
  cvtdq2ps %xmm2,%xmm2
  shufps $0x0,%xmm8,%xmm8
  mulps  %xmm8,%xmm2
  addps  0xf0(%rsp),%xmm2
  movaps %xmm2,0xf0(%rsp)
  cmp    %r8d,%r13d
  je     L1243
L1250:
  mov    %r13d,%r10d
  sub    %edx,%r10d
  cmp    $0x1,%r10d
  je     L55
  mov    0x38(%rsp),%rcx
  movaps %xmm5,%xmm8
  shufps $0xe0,%xmm8,%xmm8
  lea    (%rcx,%rdx,4),%rcx
  imul   %r14,%rdx
  add    %rsi,%rdx
  add    0x50(%rsp),%rdx
  movd   (%rdx),%xmm2
  movd   (%rdx,%r14,1),%xmm14
  mov    %r10d,%edx
  and    $0xfffffffe,%edx
  punpckldq %xmm14,%xmm2
  add    %edx,%r8d
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm8,%xmm2
  movq   (%rcx),%xmm8
  addps  %xmm2,%xmm8
  movlps %xmm8,(%rcx)
  mov    %edx,%ecx
  imul   %r14,%rcx
  add    %rcx,%rdi
  cmp    %edx,%r10d
  je     L1243
L55:
  pxor   %xmm2,%xmm2
  movslq %r8d,%rdx
  cvtsi2ssl (%rdi),%xmm2
  mulss  %xmm5,%xmm2
  addss  0xf0(%rsp,%rdx,4),%xmm2
  movss  %xmm2,0xf0(%rsp,%rdx,4)
L1243:
  mov    0x60(%rsp),%rdi
  add    %rbp,%rdi
  mov    %rdi,0x30(%rsp)
  lea    -0x2(%r12),%edi
  mov    %edi,0xbc(%rsp)
  cmp    0x20(%rsp),%r12d
  jle    L72
L657:
  mov    0x30(%rsp),%r11
  movaps %xmm1,%xmm5
  movaps %xmm1,%xmm8
  mov    %r9,%rdx
  mov    %r9,0x30(%rsp)
  mov    0x20(%rsp),%r10d
  shufps $0xe0,%xmm5,%xmm5
  shufps $0x0,%xmm8,%xmm8
  mov    %rax,0xe8(%rsp)
  add    %r9,%r11
  jmp    L1711
L714:
  cmpl   $0x2,0x40(%rsp)
  jbe    L348
  movd   (%r11,%r14,1),%xmm2
  movd   (%r11),%xmm11
  movd   (%rdx,%r14,1),%xmm14
  mov    0x48(%rsp),%rax
  punpckldq %xmm2,%xmm11
  movd   (%rsi,%rbp,1),%xmm2
  lea    (%rdx,%rax,1),%rdi
  mov    0x44(%rsp),%eax
  punpckldq %xmm14,%xmm2
  punpcklqdq %xmm11,%xmm2
  mov    %eax,%ecx
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm8,%xmm2
  addps  0xf0(%rsp),%xmm2
  movaps %xmm2,0xf0(%rsp)
  cmp    %eax,%r13d
  je     L1439
L1892:
  mov    %r13d,%r8d
  sub    %ecx,%r8d
  cmp    $0x1,%r8d
  je     L2149
  mov    0x38(%rsp),%r9
  lea    (%r9,%rcx,4),%r9
  imul   %r14,%rcx
  movq   (%r9),%xmm11
  add    %rbp,%rcx
  add    %rcx,%rsi
  mov    %r8d,%ecx
  movd   (%rsi),%xmm2
  movd   (%rsi,%r14,1),%xmm14
  and    $0xfffffffe,%ecx
  mov    %ecx,%esi
  add    %ecx,%eax
  punpckldq %xmm14,%xmm2
  imul   %r14,%rsi
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm5,%xmm2
  add    %rsi,%rdi
  addps  %xmm2,%xmm11
  movlps %xmm11,(%r9)
  cmp    %ecx,%r8d
  je     L1439
L2149:
  pxor   %xmm2,%xmm2
  cltq
  cvtsi2ssl (%rdi),%xmm2
  mulss  %xmm1,%xmm2
  addss  0xf0(%rsp,%rax,4),%xmm2
  movss  %xmm2,0xf0(%rsp,%rax,4)
L1439:
  add    $0x1,%r10d
  add    %rbp,%r11
  cmp    %r12d,%r10d
  je     L1443
L1711:
  mov    %rdx,%rsi
  add    %rbp,%rdx
  test   %r13d,%r13d
  jle    L1439
  test   %ebx,%ebx
  je     L714
  mov    0x8(%rdx),%ecx
  mov    0xc(%rdx),%eax
  pxor   %xmm2,%xmm2
  shl    $0x10,%ecx
  shl    $0x18,%eax
  or     %ecx,%eax
  mov    0x4(%rdx),%ecx
  or     (%rdx),%eax
  shl    $0x8,%ecx
  or     %eax,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm1,%xmm2
  addss  0xf0(%rsp),%xmm2
  movss  %xmm2,0xf0(%rsp)
  cmp    $0x1,%r13d
  je     L1439
  mov    0x8(%rdx,%r14,1),%ecx
  mov    0xc(%rdx,%r14,1),%eax
  pxor   %xmm2,%xmm2
  shl    $0x10,%ecx
  shl    $0x18,%eax
  or     %ecx,%eax
  mov    0x4(%rdx,%r14,1),%ecx
  or     (%rdx,%r14,1),%eax
  shl    $0x8,%ecx
  or     %eax,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm1,%xmm2
  addss  0xf4(%rsp),%xmm2
  movss  %xmm2,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L1439
  mov    0x8(%r11),%ecx
  mov    0xc(%r11),%eax
  pxor   %xmm2,%xmm2
  shl    $0x10,%ecx
  shl    $0x18,%eax
  or     %ecx,%eax
  mov    0x4(%r11),%ecx
  or     (%r11),%eax
  shl    $0x8,%ecx
  or     %eax,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm1,%xmm2
  addss  0xf8(%rsp),%xmm2
  movss  %xmm2,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L1439
  mov    0xc(%r11,%r14,1),%ecx
  mov    0x8(%r11,%r14,1),%eax
  pxor   %xmm2,%xmm2
  add    $0x1,%r10d
  shl    $0x18,%ecx
  shl    $0x10,%eax
  or     %ecx,%eax
  mov    0x4(%r11,%r14,1),%ecx
  or     (%r11,%r14,1),%eax
  add    %rbp,%r11
  shl    $0x8,%ecx
  or     %eax,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm1,%xmm2
  addss  0xfc(%rsp),%xmm2
  movss  %xmm2,0xfc(%rsp)
  cmp    %r12d,%r10d
  jne    L1711
L1443:
  mov    0xbc(%rsp),%edx
  sub    (%rsp),%edx
  movaps %xmm0,%xmm2
  mov    0x30(%rsp),%r9
  mulss  %xmm1,%xmm2
  add    $0x1,%rdx
  mov    0xe8(%rsp),%rax
  imul   %rbp,%rdx
  add    %rdx,%r9
  lea    (%r9,%rbp,1),%rsi
  test   %r13d,%r13d
  jle    L957
  test   %ebx,%ebx
  jne    L514
L278:
  cmpl   $0x2,0x40(%rsp)
  jbe    L7
  lea    (%rsi,%r14,1),%rdx
  mov    0x44(%rsp),%edi
  lea    (%rdx,%r14,1),%rcx
  mov    (%rdx),%edx
  movd   (%rcx,%r14,1),%xmm5
  movd   (%rcx),%xmm8
  movd   %edx,%xmm13
  mov    %edi,%edx
  punpckldq %xmm5,%xmm8
  movd   (%rsi),%xmm5
  add    0x48(%rsp),%rsi
  punpckldq %xmm13,%xmm5
  punpcklqdq %xmm8,%xmm5
  movaps %xmm2,%xmm8
  cvtdq2ps %xmm5,%xmm5
  shufps $0x0,%xmm8,%xmm8
  mulps  %xmm8,%xmm5
  addps  0xf0(%rsp),%xmm5
  movaps %xmm5,0xf0(%rsp)
  cmp    %edi,%r13d
  je     L1876
L1445:
  mov    %r13d,%r8d
  sub    %edx,%r8d
  cmp    $0x1,%r8d
  je     L46
  mov    0x38(%rsp),%rcx
  movaps %xmm2,%xmm8
  shufps $0xe0,%xmm8,%xmm8
  lea    (%rcx,%rdx,4),%rcx
  imul   %r14,%rdx
  add    %rbp,%rdx
  add    %r9,%rdx
  movd   (%rdx),%xmm5
  movd   (%rdx,%r14,1),%xmm14
  mov    %r8d,%edx
  and    $0xfffffffe,%edx
  punpckldq %xmm14,%xmm5
  add    %edx,%edi
  cvtdq2ps %xmm5,%xmm5
  mulps  %xmm8,%xmm5
  movq   (%rcx),%xmm8
  addps  %xmm5,%xmm8
  movlps %xmm8,(%rcx)
  mov    %edx,%ecx
  imul   %r14,%rcx
  add    %rcx,%rsi
  cmp    %edx,%r8d
  je     L1876
L46:
  pxor   %xmm5,%xmm5
  movslq %edi,%rdx
  cvtsi2ssl (%rsi),%xmm5
  mulss  %xmm5,%xmm2
  addss  0xf0(%rsp,%rdx,4),%xmm2
  movss  %xmm2,0xf0(%rsp,%rdx,4)
L1876:
  mov    0x58(%rsp),%esi
  cmp    %esi,0x1c(%rsp)
  jle    L1149
L1500:
  movaps %xmm0,%xmm11
  movaps %xmm3,%xmm12
  movaps %xmm0,%xmm14
  mov    %rbp,0x30(%rsp)
  movaps %xmm3,%xmm13
  mov    0x58(%rsp),%r10d
  mov    0x28(%rsp),%r11
  mov    %r12d,0xbc(%rsp)
  shufps $0x0,%xmm13,%xmm13
  shufps $0xe0,%xmm11,%xmm11
  movaps %xmm13,(%rsp)
  shufps $0xe0,%xmm12,%xmm12
  shufps $0x0,%xmm14,%xmm14
  jmp    L610
L718:
  cmpl   $0x2,0x40(%rsp)
  jbe    L295
  lea    (%rdi,%r14,1),%r8
  lea    (%rsi,%r14,1),%rdx
  lea    (%r8,%r14,1),%r9
  mov    (%r8),%r8d
  lea    (%rdx,%r14,1),%rcx
  mov    (%rdx),%edx
  movd   (%r9,%r14,1),%xmm2
  movd   (%r9),%xmm5
  movd   %r8d,%xmm8
  movd   %edx,%xmm13
  punpckldq %xmm2,%xmm5
  movd   (%rdi),%xmm2
  punpckldq %xmm8,%xmm2
  movd   (%rcx),%xmm8
  punpcklqdq %xmm5,%xmm2
  movd   (%rcx,%r14,1),%xmm5
  mov    0x48(%rsp),%rcx
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm14,%xmm2
  punpckldq %xmm5,%xmm8
  movd   (%rsi),%xmm5
  lea    (%rsi,%rcx,1),%r8
  lea    (%rdi,%rcx,1),%r9
  mov    0x44(%rsp),%ecx
  punpckldq %xmm13,%xmm5
  punpcklqdq %xmm8,%xmm5
  mov    %ecx,%edx
  cvtdq2ps %xmm5,%xmm5
  mulps  (%rsp),%xmm5
  addps  %xmm5,%xmm2
  addps  0xf0(%rsp),%xmm2
  movaps %xmm2,0xf0(%rsp)
  cmp    %ecx,%r13d
  je     L2164
L1343:
  mov    %r13d,%ebp
  sub    %edx,%ebp
  cmp    $0x1,%ebp
  je     L1001
  mov    0x38(%rsp),%r12
  lea    (%r12,%rdx,4),%r12
  imul   %r14,%rdx
  add    %r11,%rdx
  add    %rdx,%rax
  add    %r15,%rdx
  movd   (%rdx,%r14,1),%xmm5
  movd   (%rdx),%xmm2
  mov    %ebp,%edx
  movd   (%rax,%r14,1),%xmm8
  and    $0xfffffffe,%edx
  punpckldq %xmm5,%xmm2
  movd   (%rax),%xmm5
  mov    %edx,%eax
  add    %edx,%ecx
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm11,%xmm2
  imul   %r14,%rax
  punpckldq %xmm8,%xmm5
  cvtdq2ps %xmm5,%xmm5
  mulps  %xmm12,%xmm5
  add    %rax,%r8
  add    %rax,%r9
  addps  %xmm5,%xmm2
  movq   (%r12),%xmm5
  addps  %xmm2,%xmm5
  movlps %xmm5,(%r12)
  cmp    %edx,%ebp
  je     L2164
L1001:
  pxor   %xmm2,%xmm2
  pxor   %xmm5,%xmm5
  movslq %ecx,%rcx
  cvtsi2ssl (%r9),%xmm2
  cvtsi2ssl (%r8),%xmm5
  mulss  %xmm0,%xmm2
  mulss  %xmm3,%xmm5
  addss  %xmm5,%xmm2
  addss  0xf0(%rsp,%rcx,4),%xmm2
  movss  %xmm2,0xf0(%rsp,%rcx,4)
L2164:
  mov    0x78(%rsp),%rcx
  add    $0x1,%r10d
  lea    (%rsi,%rcx,1),%rax
  lea    (%rdi,%rcx,1),%r15
  cmp    %r10d,0x1c(%rsp)
  jle    L1199
L610:
  lea    (%rax,%r11,1),%rsi
  lea    (%r15,%r11,1),%rdi
  test   %r13d,%r13d
  jle    L1143
  test   %ebx,%ebx
  je     L718
  mov    0xc(%rsi),%eax
  mov    0x8(%rsi),%edx
  pxor   %xmm2,%xmm2
  pxor   %xmm5,%xmm5
  shl    $0x10,%edx
  shl    $0x18,%eax
  or     %edx,%eax
  mov    0x4(%rsi),%edx
  or     (%rsi),%eax
  shl    $0x8,%edx
  or     %edx,%eax
  mov    0xc(%rdi),%edx
  cvtsi2ss %eax,%xmm2
  mov    0x8(%rdi),%eax
  shl    $0x18,%edx
  shl    $0x10,%eax
  or     %edx,%eax
  mov    0x4(%rdi),%edx
  or     (%rdi),%eax
  mulss  %xmm3,%xmm2
  addss  0xf0(%rsp),%xmm2
  shl    $0x8,%edx
  or     %edx,%eax
  lea    (%rsi,%r14,1),%rdx
  cvtsi2ss %eax,%xmm5
  lea    (%rdi,%r14,1),%rax
  mulss  %xmm0,%xmm5
  addss  %xmm5,%xmm2
  movss  %xmm2,0xf0(%rsp)
  cmp    $0x1,%r13d
  je     L2164
  mov    0x8(%rdx),%r8d
  mov    0xc(%rdx),%ecx
  pxor   %xmm2,%xmm2
  pxor   %xmm5,%xmm5
  shl    $0x10,%r8d
  shl    $0x18,%ecx
  or     %r8d,%ecx
  mov    0x4(%rdx),%r8d
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%r8d
  or     %ecx,%r8d
  mov    0x8(%rax),%ecx
  cvtsi2ss %r8d,%xmm2
  mov    0xc(%rax),%r8d
  shl    $0x10,%ecx
  shl    $0x18,%r8d
  or     %r8d,%ecx
  mov    0x4(%rax),%r8d
  or     (%rax),%ecx
  add    %r14,%rax
  mulss  %xmm3,%xmm2
  addss  0xf4(%rsp),%xmm2
  shl    $0x8,%r8d
  or     %ecx,%r8d
  cvtsi2ss %r8d,%xmm5
  mulss  %xmm0,%xmm5
  addss  %xmm5,%xmm2
  movss  %xmm2,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L2164
  mov    0xc(%rdx),%r8d
  mov    0x8(%rdx),%ecx
  pxor   %xmm2,%xmm2
  pxor   %xmm5,%xmm5
  shl    $0x18,%r8d
  shl    $0x10,%ecx
  or     %r8d,%ecx
  mov    0x4(%rdx),%r8d
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%r8d
  or     %ecx,%r8d
  mov    0xc(%rax),%ecx
  cvtsi2ss %r8d,%xmm2
  mov    0x8(%rax),%r8d
  shl    $0x18,%ecx
  shl    $0x10,%r8d
  or     %r8d,%ecx
  mov    0x4(%rax),%r8d
  or     (%rax),%ecx
  add    %r14,%rax
  mulss  %xmm3,%xmm2
  addss  0xf8(%rsp),%xmm2
  shl    $0x8,%r8d
  or     %ecx,%r8d
  cvtsi2ss %r8d,%xmm5
  mulss  %xmm0,%xmm5
  addss  %xmm5,%xmm2
  movss  %xmm2,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L2164
  mov    0xc(%rdx),%r8d
  mov    0x8(%rdx),%ecx
  pxor   %xmm2,%xmm2
  pxor   %xmm5,%xmm5
  shl    $0x18,%r8d
  shl    $0x10,%ecx
  or     %r8d,%ecx
  or     (%rdx),%ecx
  mov    0x4(%rdx),%edx
  shl    $0x8,%edx
  or     %ecx,%edx
  mov    0xc(%rax),%ecx
  cvtsi2ss %edx,%xmm2
  mov    0x8(%rax),%edx
  shl    $0x18,%ecx
  shl    $0x10,%edx
  or     %ecx,%edx
  or     (%rax),%edx
  mov    0x4(%rax),%eax
  mulss  %xmm3,%xmm2
  addss  0xfc(%rsp),%xmm2
  shl    $0x8,%eax
  or     %eax,%edx
  cvtsi2ss %edx,%xmm5
  mulss  %xmm0,%xmm5
  addss  %xmm5,%xmm2
  movss  %xmm2,0xfc(%rsp)
  jmp    L2164
L1143:
  mov    %rdi,%r15
  mov    %rsi,%rax
  add    $0x1,%r10d
  cmp    %r10d,0x1c(%rsp)
  jg     L610
L1199:
  mov    0x10(%rsp),%r11
  add    0xa0(%rsp),%r11
  add    0x50(%rsp),%r11
  mov    0x30(%rsp),%rbp
  mov    %r11,0x10(%rsp)
  mov    0xbc(%rsp),%r12d
  jmp    L21
L1185:
  movaps %xmm0,%xmm3
  movaps %xmm7,%xmm2
  subss  %xmm8,%xmm3
  subss  %xmm9,%xmm2
  mulss  %xmm3,%xmm2
  test   %r13d,%r13d
  jle    L861
  test   %ebx,%ebx
  jne    L1809
  cmpl   $0x2,0x40(%rsp)
  jbe    L1485
  lea    (%rax,%r14,1),%rdx
  mov    0x44(%rsp),%r8d
  mov    0x48(%rsp),%rdi
  lea    (%rdx,%r14,1),%rcx
  mov    (%rdx),%edx
  movd   (%rcx,%r14,1),%xmm5
  movd   (%rcx),%xmm8
  mov    %r8d,%ecx
  add    %rax,%rdi
  movd   %edx,%xmm13
  punpckldq %xmm5,%xmm8
  movd   (%rax),%xmm5
  punpckldq %xmm13,%xmm5
  punpcklqdq %xmm8,%xmm5
  movaps %xmm2,%xmm8
  shufps $0x0,%xmm8,%xmm8
  cvtdq2ps %xmm5,%xmm5
  mulps  %xmm8,%xmm5
  pxor   %xmm8,%xmm8
  addps  %xmm8,%xmm5
  movaps %xmm5,0xf0(%rsp)
  cmp    %ecx,%r13d
  je     L861
L592:
  mov    %r13d,%r9d
  sub    %ecx,%r9d
  cmp    $0x1,%r9d
  je     L1012
  mov    %r14,%rdx
  movaps %xmm2,%xmm8
  imul   %rcx,%rdx
  shufps $0xe0,%xmm8,%xmm8
  add    %rsi,%rdx
  add    0x50(%rsp),%rdx
  mov    0x38(%rsp),%rsi
  movd   (%rdx),%xmm5
  movd   (%rdx,%r14,1),%xmm14
  mov    %r9d,%edx
  lea    (%rsi,%rcx,4),%rcx
  and    $0xfffffffe,%edx
  punpckldq %xmm14,%xmm5
  add    %edx,%r8d
  cvtdq2ps %xmm5,%xmm5
  mulps  %xmm8,%xmm5
  movq   (%rcx),%xmm8
  addps  %xmm5,%xmm8
  movlps %xmm8,(%rcx)
  mov    %edx,%ecx
  imul   %r14,%rcx
  add    %rcx,%rdi
  cmp    %edx,%r9d
  je     L861
L1012:
  pxor   %xmm5,%xmm5
  movslq %r8d,%rdx
  cvtsi2ssl (%rdi),%xmm5
  mulss  %xmm5,%xmm2
  addss  0xf0(%rsp,%rdx,4),%xmm2
  movss  %xmm2,0xf0(%rsp,%rdx,4)
L861:
  mov    0x58(%rsp),%esi
  cmp    %esi,0x1c(%rsp)
  jle    L1727
  mov    %esi,%r15d
  mov    0x28(%rsp),%rsi
  movaps %xmm3,%xmm5
  movaps %xmm3,%xmm8
  mov    %rbp,0x20(%rsp)
  mov    0xe0(%rsp),%rdi
  shufps $0xe0,%xmm5,%xmm5
  shufps $0x0,%xmm8,%xmm8
  lea    (%r14,%rsi,1),%rdx
  mov    %r12d,0x30(%rsp)
  lea    (%rax,%rdi,1),%r10
  mov    0xd8(%rsp),%rdi
  lea    (%rax,%rdx,1),%r11
  lea    (%rax,%rdi,1),%r8
  jmp    L1693
L1812:
  cmpl   $0x2,0x40(%rsp)
  jbe    L302
  movd   (%r10),%xmm2
  movd   (%r8),%xmm11
  movd   (%r11),%xmm13
  mov    0x48(%rsp),%rcx
  punpckldq %xmm2,%xmm11
  movd   (%rax),%xmm2
  mov    0x44(%rsp),%edx
  lea    (%rax,%rcx,1),%r9
  punpckldq %xmm13,%xmm2
  mov    %edx,%ecx
  punpcklqdq %xmm11,%xmm2
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm8,%xmm2
  addps  0xf0(%rsp),%xmm2
  movaps %xmm2,0xf0(%rsp)
  cmp    %ecx,%r13d
  je     L450
L1644:
  mov    %r13d,%ebp
  sub    %ecx,%ebp
  cmp    $0x1,%ebp
  je     L1112
  mov    0x38(%rsp),%r12
  lea    (%r12,%rcx,4),%r12
  imul   %r14,%rcx
  movq   (%r12),%xmm11
  add    %rsi,%rcx
  add    %rcx,%rdi
  mov    %ebp,%ecx
  movd   (%rdi),%xmm2
  movd   (%rdi,%r14,1),%xmm13
  and    $0xfffffffe,%ecx
  mov    %ecx,%edi
  add    %ecx,%edx
  punpckldq %xmm13,%xmm2
  imul   %r14,%rdi
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm5,%xmm2
  add    %rdi,%r9
  addps  %xmm2,%xmm11
  movlps %xmm11,(%r12)
  cmp    %ecx,%ebp
  je     L450
L1112:
  pxor   %xmm2,%xmm2
  movslq %edx,%rdx
  cvtsi2ssl (%r9),%xmm2
  mulss  %xmm3,%xmm2
  addss  0xf0(%rsp,%rdx,4),%xmm2
  movss  %xmm2,0xf0(%rsp,%rdx,4)
L450:
  add    $0x1,%r15d
  add    %rsi,%r10
  add    %rsi,%r11
  add    %rsi,%r8
  cmp    %r15d,0x1c(%rsp)
  jle    L1769
L1693:
  mov    %rax,%rdi
  add    %rsi,%rax
  test   %r13d,%r13d
  jle    L450
  test   %ebx,%ebx
  je     L1812
  mov    0xc(%rax),%ecx
  mov    0x8(%rax),%edx
  pxor   %xmm2,%xmm2
  shl    $0x18,%ecx
  shl    $0x10,%edx
  or     %ecx,%edx
  mov    0x4(%rax),%ecx
  or     (%rax),%edx
  shl    $0x8,%ecx
  or     %edx,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm3,%xmm2
  addss  0xf0(%rsp),%xmm2
  movss  %xmm2,0xf0(%rsp)
  cmp    $0x1,%r13d
  je     L450
  mov    0xc(%r11),%ecx
  mov    0x8(%r11),%edx
  pxor   %xmm2,%xmm2
  shl    $0x18,%ecx
  shl    $0x10,%edx
  or     %ecx,%edx
  mov    0x4(%r11),%ecx
  or     (%r11),%edx
  shl    $0x8,%ecx
  or     %edx,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm3,%xmm2
  addss  0xf4(%rsp),%xmm2
  movss  %xmm2,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L450
  mov    0xc(%r8),%ecx
  mov    0x8(%r8),%edx
  pxor   %xmm2,%xmm2
  shl    $0x18,%ecx
  shl    $0x10,%edx
  or     %ecx,%edx
  mov    0x4(%r8),%ecx
  or     (%r8),%edx
  shl    $0x8,%ecx
  or     %edx,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm3,%xmm2
  addss  0xf8(%rsp),%xmm2
  movss  %xmm2,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L450
  mov    0xc(%r10),%ecx
  mov    0x8(%r10),%edx
  pxor   %xmm2,%xmm2
  shl    $0x18,%ecx
  shl    $0x10,%edx
  or     %ecx,%edx
  mov    0x4(%r10),%ecx
  or     (%r10),%edx
  shl    $0x8,%ecx
  or     %edx,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm3,%xmm2
  addss  0xfc(%rsp),%xmm2
  movss  %xmm2,0xfc(%rsp)
  jmp    L450
L1769:
  mov    0x20(%rsp),%rbp
  mov    0x30(%rsp),%r12d
L1727:
  mov    0x28(%rsp),%rdi
  mulss  %xmm1,%xmm3
  lea    (%rax,%rdi,1),%rdx
  test   %r13d,%r13d
  jle    L245
  test   %ebx,%ebx
  jne    L58
  cmpl   $0x2,0x40(%rsp)
  jbe    L1160
  lea    (%rdx,%r14,1),%rcx
  mov    0x44(%rsp),%edi
  lea    (%rcx,%r14,1),%rsi
  mov    (%rcx),%ecx
  movd   (%rsi,%r14,1),%xmm2
  movd   (%rsi),%xmm5
  movd   %ecx,%xmm14
  mov    %edi,%ecx
  punpckldq %xmm2,%xmm5
  movd   (%rdx),%xmm2
  add    0x48(%rsp),%rdx
  punpckldq %xmm14,%xmm2
  punpcklqdq %xmm5,%xmm2
  movaps %xmm3,%xmm5
  cvtdq2ps %xmm2,%xmm2
  shufps $0x0,%xmm5,%xmm5
  mulps  %xmm5,%xmm2
  addps  0xf0(%rsp),%xmm2
  movaps %xmm2,0xf0(%rsp)
  cmp    %edi,%r13d
  je     L488
L606:
  mov    %r13d,%r8d
  sub    %ecx,%r8d
  cmp    $0x1,%r8d
  je     L1633
  mov    0x38(%rsp),%rsi
  lea    (%rsi,%rcx,4),%rsi
  imul   %r14,%rcx
  add    0x28(%rsp),%rcx
  jmp    L207
L739:
  mov    (%rsp),%edi
  lea    0x1(%rdi),%r15d
  cmp    %r12d,%r15d
  jl     L636
L245:
  mov    0x10(%rsp),%r11
  add    0xa0(%rsp),%r11
  add    0x50(%rsp),%r11
  mov    0x58(%rsp),%edi
  mov    %r11,0x10(%rsp)
  cmp    %edi,0x1c(%rsp)
  jg     L210
  jmp    L699
L305:
  mov    %r14,%r15
  mov    %ebx,%r12d
L568:
  movaps %xmm15,%xmm0
  mov    0x1c(%rsp),%edx
  add    0xcc(%rsp),%edx
  addss  %xmm1,%xmm0
  comiss %xmm7,%xmm0
  jbe    L15
  subss  %xmm7,%xmm0
  add    $0x1,%edx
L15:
  addl   $0x1,0x9c(%rsp)
  mov    0xd4(%rsp),%edi
  movaps %xmm1,%xmm9
  add    %edi,0xc0(%rsp)
  mov    0x9c(%rsp),%eax
  cmp    %eax,0xc8(%rsp)
  je     L768
  mov    0x1c(%rsp),%eax
  movaps %xmm0,%xmm1
  mov    %eax,0x84(%rsp)
  jmp    L992
L630:
  mov    0xc(%rax),%edx
  mov    0x8(%rax),%ecx
  pxor   %xmm3,%xmm3
  shl    $0x10,%ecx
  shl    $0x18,%edx
  or     %ecx,%edx
  mov    0x4(%rax),%ecx
  or     (%rax),%edx
  add    %r14,%rax
  shl    $0x8,%ecx
  or     %ecx,%edx
  cvtsi2ss %edx,%xmm3
  mulss  %xmm2,%xmm3
  addss  %xmm4,%xmm3
  movss  %xmm3,0xf0(%rsp)
  cmp    $0x1,%r13d
  je     L488
  mov    0xc(%rax),%edx
  mov    0x8(%rax),%ecx
  pxor   %xmm3,%xmm3
  shl    $0x10,%ecx
  shl    $0x18,%edx
  or     %ecx,%edx
  mov    0x4(%rax),%ecx
  or     (%rax),%edx
  add    %r14,%rax
  shl    $0x8,%ecx
  or     %ecx,%edx
  cvtsi2ss %edx,%xmm3
  mulss  %xmm2,%xmm3
  addss  %xmm4,%xmm3
  movss  %xmm3,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L488
  mov    0xc(%rax),%edx
  mov    0x8(%rax),%ecx
  pxor   %xmm3,%xmm3
  shl    $0x10,%ecx
  shl    $0x18,%edx
  or     %ecx,%edx
  mov    0x4(%rax),%ecx
  or     (%rax),%edx
  add    %r14,%rax
  shl    $0x8,%ecx
  or     %ecx,%edx
  cvtsi2ss %edx,%xmm3
  mulss  %xmm2,%xmm3
  addss  %xmm4,%xmm3
  movss  %xmm3,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L488
  mov    0xc(%rax),%edx
  mov    0x8(%rax),%ecx
  pxor   %xmm3,%xmm3
  shl    $0x18,%edx
  shl    $0x10,%ecx
  or     %ecx,%edx
  or     (%rax),%edx
  mov    0x4(%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  cvtsi2ss %edx,%xmm3
  mulss  %xmm2,%xmm3
  addss  %xmm4,%xmm3
  movss  %xmm3,0xfc(%rsp)
  jmp    L488
L94:
  mov    0xc(%rax),%edx
  mov    0x8(%rax),%ecx
  pxor   %xmm5,%xmm5
  shl    $0x10,%ecx
  shl    $0x18,%edx
  or     %ecx,%edx
  mov    0x4(%rax),%ecx
  or     (%rax),%edx
  shl    $0x8,%ecx
  or     %ecx,%edx
  cvtsi2ss %edx,%xmm5
  lea    (%rax,%r14,1),%rdx
  mulss  %xmm2,%xmm5
  addss  %xmm4,%xmm5
  movss  %xmm5,0xf0(%rsp)
  cmp    $0x1,%r13d
  je     L1682
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm5,%xmm5
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm5
  mulss  %xmm2,%xmm5
  addss  %xmm4,%xmm5
  movss  %xmm5,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L1682
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm5,%xmm5
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm5
  mulss  %xmm2,%xmm5
  addss  %xmm4,%xmm5
  movss  %xmm5,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L1682
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm5,%xmm5
  shl    $0x18,%ecx
  shl    $0x10,%esi
  or     %esi,%ecx
  or     (%rdx),%ecx
  mov    0x4(%rdx),%edx
  shl    $0x8,%edx
  or     %edx,%ecx
  cvtsi2ss %ecx,%xmm5
  mulss  %xmm5,%xmm2
  addss  %xmm4,%xmm2
  movss  %xmm2,0xfc(%rsp)
L1682:
  mov    (%rsp),%edi
  lea    0x1(%rdi),%r15d
  cmp    %r15d,%r12d
  jg     L636
  mulss  %xmm0,%xmm3
  lea    (%rax,%rbp,1),%rdx
L948:
  mov    0xc(%rdx),%eax
  mov    0x8(%rdx),%ecx
  pxor   %xmm2,%xmm2
  shl    $0x10,%ecx
  shl    $0x18,%eax
  or     %ecx,%eax
  mov    0x4(%rdx),%ecx
  or     (%rdx),%eax
  shl    $0x8,%ecx
  or     %ecx,%eax
  cvtsi2ss %eax,%xmm2
  lea    (%rdx,%r14,1),%rax
  mulss  %xmm3,%xmm2
  addss  0xf0(%rsp),%xmm2
  movss  %xmm2,0xf0(%rsp)
  cmp    $0x1,%r13d
  jle    L488
L1598:
  mov    0xc(%rax),%ecx
  mov    0x8(%rax),%edx
  pxor   %xmm2,%xmm2
  shl    $0x10,%edx
  shl    $0x18,%ecx
  or     %edx,%ecx
  mov    0x4(%rax),%edx
  or     (%rax),%ecx
  add    %r14,%rax
  shl    $0x8,%edx
  or     %edx,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm3,%xmm2
  addss  0xf4(%rsp),%xmm2
  movss  %xmm2,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L488
  mov    0xc(%rax),%edx
  mov    0x8(%rax),%ecx
  pxor   %xmm2,%xmm2
  shl    $0x10,%ecx
  shl    $0x18,%edx
  or     %ecx,%edx
  mov    0x4(%rax),%ecx
  or     (%rax),%edx
  add    %r14,%rax
  shl    $0x8,%ecx
  or     %ecx,%edx
  cvtsi2ss %edx,%xmm2
  mulss  %xmm3,%xmm2
  addss  0xf8(%rsp),%xmm2
  movss  %xmm2,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L488
  mov    0xc(%rax),%edx
  mov    0x8(%rax),%ecx
  pxor   %xmm2,%xmm2
  shl    $0x18,%edx
  shl    $0x10,%ecx
  or     %ecx,%edx
  or     (%rax),%edx
  mov    0x4(%rax),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  cvtsi2ss %edx,%xmm2
  mulss  %xmm3,%xmm2
  addss  0xfc(%rsp),%xmm2
  movss  %xmm2,0xfc(%rsp)
  jmp    L488
L1141:
  mov    %rdx,%r8
  xor    %ecx,%ecx
  xor    %esi,%esi
  jmp    L1111
L348:
  mov    %rdx,%rdi
  xor    %eax,%eax
  xor    %ecx,%ecx
  jmp    L1892
L1883:
  mov    %rdx,%r8
  xor    %ecx,%ecx
  xor    %esi,%esi
  jmp    L1647
L1638:
  mov    0xc(%rax),%edx
  mov    0x8(%rax),%ecx
  pxor   %xmm2,%xmm2
  shl    $0x10,%ecx
  shl    $0x18,%edx
  or     %ecx,%edx
  mov    0x4(%rax),%ecx
  or     (%rax),%edx
  shl    $0x8,%ecx
  or     %ecx,%edx
  cvtsi2ss %edx,%xmm2
  lea    (%rax,%r14,1),%rdx
  mulss  %xmm8,%xmm2
  addss  %xmm4,%xmm2
  movss  %xmm2,0xf0(%rsp)
  cmp    $0x1,%r13d
  je     L198
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm2,%xmm2
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm8,%xmm2
  addss  %xmm4,%xmm2
  movss  %xmm2,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L198
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm2,%xmm2
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm8,%xmm2
  addss  %xmm4,%xmm2
  movss  %xmm2,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L198
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm2,%xmm2
  shl    $0x18,%ecx
  shl    $0x10,%esi
  or     %esi,%ecx
  or     (%rdx),%ecx
  mov    0x4(%rdx),%edx
  shl    $0x8,%edx
  or     %edx,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm8,%xmm2
  addss  %xmm4,%xmm2
  movss  %xmm2,0xfc(%rsp)
L198:
  mov    (%rsp),%edi
  add    $0x1,%edi
  mov    %edi,0x20(%rsp)
  cmp    %edi,%r12d
  jg     L763
  mulss  %xmm0,%xmm5
  mov    0x50(%rsp),%rdi
  mov    0x90(%rsp),%rdx
  lea    (%rax,%rbp,1),%r15
  add    0x10(%rsp),%rdx
  lea    (%rdi,%rdx,1),%r9
L150:
  mov    0xc(%r15),%edx
  mov    0x8(%r15),%ecx
  pxor   %xmm2,%xmm2
  shl    $0x10,%ecx
  shl    $0x18,%edx
  or     %ecx,%edx
  mov    0x4(%r15),%ecx
  or     (%r15),%edx
  shl    $0x8,%ecx
  or     %ecx,%edx
  cvtsi2ss %edx,%xmm2
  lea    (%r15,%r14,1),%rdx
  mulss  %xmm5,%xmm2
  addss  0xf0(%rsp),%xmm2
  movss  %xmm2,0xf0(%rsp)
  cmp    $0x1,%r13d
  jle    L1623
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm2,%xmm2
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm5,%xmm2
  addss  0xf4(%rsp),%xmm2
  movss  %xmm2,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L1623
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm2,%xmm2
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm5,%xmm2
  addss  0xf8(%rsp),%xmm2
  movss  %xmm2,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L1623
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm2,%xmm2
  shl    $0x18,%ecx
  shl    $0x10,%esi
  or     %esi,%ecx
  or     (%rdx),%ecx
  mov    0x4(%rdx),%edx
  shl    $0x8,%edx
  or     %edx,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm5,%xmm2
  addss  0xfc(%rsp),%xmm2
  movss  %xmm2,0xfc(%rsp)
L1623:
  mov    0x8(%r9),%edx
  mov    0xc(%r9),%ecx
  movaps %xmm3,%xmm5
  pxor   %xmm2,%xmm2
  mulss  %xmm1,%xmm5
  shl    $0x18,%ecx
  shl    $0x10,%edx
  or     %ecx,%edx
  mov    0x4(%r9),%ecx
  or     (%r9),%edx
  shl    $0x8,%ecx
  or     %ecx,%edx
  lea    (%r9,%r14,1),%rcx
  cvtsi2ss %edx,%xmm2
  mulss  %xmm5,%xmm2
  addss  0xf0(%rsp),%xmm2
  movss  %xmm2,0xf0(%rsp)
  cmp    $0x1,%r13d
  jle    L700
  mov    0x8(%rcx),%edx
  mov    0xc(%rcx),%esi
  pxor   %xmm2,%xmm2
  shl    $0x18,%esi
  shl    $0x10,%edx
  or     %esi,%edx
  mov    0x4(%rcx),%esi
  or     (%rcx),%edx
  shl    $0x8,%esi
  or     %esi,%edx
  cvtsi2ss %edx,%xmm2
  lea    (%rcx,%r14,1),%rdx
  mulss  %xmm5,%xmm2
  addss  0xf4(%rsp),%xmm2
  movss  %xmm2,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L700
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm2,%xmm2
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm5,%xmm2
  addss  0xf8(%rsp),%xmm2
  movss  %xmm2,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L700
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm2,%xmm2
  shl    $0x18,%ecx
  shl    $0x10,%esi
  or     %esi,%ecx
  or     (%rdx),%ecx
  mov    0x4(%rdx),%edx
  shl    $0x8,%edx
  or     %edx,%ecx
  cvtsi2ss %ecx,%xmm2
  mulss  %xmm5,%xmm2
  addss  0xfc(%rsp),%xmm2
  movss  %xmm2,0xfc(%rsp)
L700:
  mov    0x60(%rsp),%rdi
  add    %rbp,%rdi
  mov    %rdi,0x30(%rsp)
  lea    -0x2(%r12),%edi
  mov    %edi,0xbc(%rsp)
  cmp    0x20(%rsp),%r12d
  jg     L657
  movaps %xmm0,%xmm2
  lea    (%r9,%rbp,1),%rsi
  mulss  %xmm1,%xmm2
L514:
  mov    0xc(%rsi),%edx
  mov    0x8(%rsi),%ecx
  pxor   %xmm5,%xmm5
  shl    $0x10,%ecx
  shl    $0x18,%edx
  or     %ecx,%edx
  mov    0x4(%rsi),%ecx
  or     (%rsi),%edx
  shl    $0x8,%ecx
  or     %ecx,%edx
  cvtsi2ss %edx,%xmm5
  lea    (%rsi,%r14,1),%rdx
  mulss  %xmm2,%xmm5
  addss  0xf0(%rsp),%xmm5
  movss  %xmm5,0xf0(%rsp)
  cmp    $0x1,%r13d
  jle    L1876
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm5,%xmm5
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm5
  mulss  %xmm2,%xmm5
  addss  0xf4(%rsp),%xmm5
  movss  %xmm5,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L1876
  mov    0x8(%rdx),%ecx
  mov    0xc(%rdx),%esi
  pxor   %xmm5,%xmm5
  shl    $0x18,%esi
  shl    $0x10,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm5
  mulss  %xmm2,%xmm5
  addss  0xf8(%rsp),%xmm5
  movss  %xmm5,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L1876
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm5,%xmm5
  shl    $0x18,%ecx
  shl    $0x10,%esi
  or     %esi,%ecx
  or     (%rdx),%ecx
  mov    0x4(%rdx),%edx
  shl    $0x8,%edx
  or     %edx,%ecx
  cvtsi2ss %ecx,%xmm5
  mulss  %xmm5,%xmm2
  addss  0xfc(%rsp),%xmm2
  movss  %xmm2,0xfc(%rsp)
  jmp    L1876
L295:
  mov    %rdi,%r9
  mov    %rsi,%r8
  xor    %ecx,%ecx
  xor    %edx,%edx
  jmp    L1343
L187:
  add    $0x1,%edi
  mov    %edi,0x20(%rsp)
  cmp    %r12d,%edi
  jl     L763
  lea    (%rax,%rbp,1),%r15
L957:
  mov    0x58(%rsp),%esi
  cmp    %esi,0x1c(%rsp)
  jg     L1500
  jmp    L699
  nopw   0x0(%rax,%rax,1)
L1364:
  xor    %eax,%eax
  jmp    L1189
L1809:
  mov    0xc(%rax),%edx
  mov    0x8(%rax),%ecx
  pxor   %xmm5,%xmm5
  shl    $0x10,%ecx
  shl    $0x18,%edx
  or     %ecx,%edx
  mov    0x4(%rax),%ecx
  or     (%rax),%edx
  shl    $0x8,%ecx
  or     %ecx,%edx
  cvtsi2ss %edx,%xmm5
  lea    (%rax,%r14,1),%rdx
  mulss  %xmm2,%xmm5
  addss  %xmm4,%xmm5
  movss  %xmm5,0xf0(%rsp)
  cmp    $0x1,%r13d
  je     L861
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm5,%xmm5
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm5
  mulss  %xmm2,%xmm5
  addss  %xmm4,%xmm5
  movss  %xmm5,0xf4(%rsp)
  cmp    $0x2,%r13d
  je     L861
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm5,%xmm5
  shl    $0x10,%esi
  shl    $0x18,%ecx
  or     %esi,%ecx
  mov    0x4(%rdx),%esi
  or     (%rdx),%ecx
  add    %r14,%rdx
  shl    $0x8,%esi
  or     %esi,%ecx
  cvtsi2ss %ecx,%xmm5
  mulss  %xmm2,%xmm5
  addss  %xmm4,%xmm5
  movss  %xmm5,0xf8(%rsp)
  cmp    $0x3,%r13d
  je     L861
  mov    0xc(%rdx),%ecx
  mov    0x8(%rdx),%esi
  pxor   %xmm5,%xmm5
  shl    $0x18,%ecx
  shl    $0x10,%esi
  or     %esi,%ecx
  or     (%rdx),%ecx
  mov    0x4(%rdx),%edx
  shl    $0x8,%edx
  or     %edx,%ecx
  cvtsi2ss %ecx,%xmm5
  mulss  %xmm5,%xmm2
  addss  %xmm4,%xmm2
  movss  %xmm2,0xfc(%rsp)
  jmp    L861
L302:
  mov    %rax,%r9
  xor    %edx,%edx
  xor    %ecx,%ecx
  jmp    L1644
L58:
  mov    0xc(%rdx),%eax
  mov    0x8(%rdx),%ecx
  pxor   %xmm2,%xmm2
  shl    $0x10,%ecx
  shl    $0x18,%eax
  or     %ecx,%eax
  mov    0x4(%rdx),%ecx
  or     (%rdx),%eax
  shl    $0x8,%ecx
  or     %ecx,%eax
  cvtsi2ss %eax,%xmm2
  lea    (%rdx,%r14,1),%rax
  mulss  %xmm3,%xmm2
  addss  0xf0(%rsp),%xmm2
  movss  %xmm2,0xf0(%rsp)
  cmp    $0x1,%r13d
  jne    L1598
  jmp    L488
L1758:
  movaps %xmm3,%xmm5
  mulss  %xmm1,%xmm5
  jmp    L1251
L540:
  mov    %rax,%rdi
  xor    %r8d,%r8d
  xor    %ecx,%ecx
  jmp    L1499
L7:
  xor    %edx,%edx
  xor    %edi,%edi
  jmp    L1445
L768:
  mov    0x108(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L236
  add    $0x118,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L644:
  mulss  %xmm0,%xmm3
  cmpl   $0x2,0x40(%rsp)
  lea    (%rax,%rbp,1),%rdx
  ja     L177
L2104:
  xor    %ecx,%ecx
  xor    %edi,%edi
  jmp    L1041
L1753:
  mov    %r15,%rdi
  xor    %edx,%edx
  xor    %r8d,%r8d
  jmp    L1510
L1058:
  mov    %r9,%rdi
  xor    %edx,%edx
  xor    %r8d,%r8d
  jmp    L1250
L72:
  movaps %xmm0,%xmm2
  lea    (%r9,%rbp,1),%rsi
  mulss  %xmm1,%xmm2
  jmp    L278
L227:
  xor    %edi,%edi
  xor    %ecx,%ecx
  jmp    L721
L1323:
  mov    0x50(%rsp),%rdi
  mulss  %xmm0,%xmm5
  lea    (%rax,%rbp,1),%r15
  mov    %rax,%r11
  mov    0x90(%rsp),%rsi
  add    0x10(%rsp),%rsi
  lea    (%rdi,%rsi,1),%r9
  jmp    L429
L438:
  mov    %rax,%rdi
  xor    %r8d,%r8d
  xor    %ecx,%ecx
  jmp    L1038
L1160:
  xor    %edi,%edi
  xor    %ecx,%ecx
  jmp    L606
L1485:
  mov    %rax,%rdi
  xor    %r8d,%r8d
  xor    %ecx,%ecx
  jmp    L592
L1219:
  mov    0x108(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L236
  mov    0xb8(%rsp),%eax
  mov    %r12d,0x160(%rsp)
  mov    %r14d,%r9d
  mov    %edi,0x158(%rsp)
  mov    0xb0(%rsp),%r8
  mov    %r13d,%edi
  mov    %eax,0x150(%rsp)
  add    $0x118,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1080 <halveImage_int@plt>
L236:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_tag: D7
type_infered: f32

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